tlang/source/tlang/compiler/parsing/exceptions.d

38 lines
910 B
D
Raw Normal View History

2021-06-08 09:37:38 +01:00
module compiler.parsing.exceptions;
2021-06-08 09:45:14 +01:00
import compiler.parsing.core;
import compiler.lexer;
import misc.exceptions;
import compiler.symbols.check;
import compiler.symbols.data;
import compiler.lexer : Token;
import std.conv : to;
2021-06-08 09:45:14 +01:00
2021-06-08 09:37:38 +01:00
public class ParserException : TError
{
private Parser parser;
2021-06-08 09:37:38 +01:00
this(Parser parser, string message)
{
super(message);
this.parser = parser;
2021-06-08 09:37:38 +01:00
}
2021-06-08 09:37:38 +01:00
}
2021-06-08 09:37:43 +01:00
public final class SyntaxError : ParserException
{
private SymbolType expected;
private SymbolType provided;
private Token providedToken;
2021-06-08 09:37:43 +01:00
this(Parser parser, SymbolType expected, Token providedToken)
2021-06-08 09:37:43 +01:00
{
this.expected = expected;
provided = getSymbolType(providedToken);
this.providedToken = providedToken;
super(parser, "Syntax error: Expected "~to!(string)(expected)~" but got "~to!(string)(provided)~", see "~providedToken.toString());
2021-06-08 09:37:43 +01:00
}
}