module ddc.lexer.exceptions; import std.conv; import ddc.lexer.textsource; class ParserException : Exception { protected string _msg; protected SourceFile _file; protected int _line; protected int _pos; @property SourceFile file() { return _file; } @property string msg() { return _msg; } @property int line() { return _line; } @property int pos() { return _pos; } this(string msg, SourceFile file, int line, int pos) { super(msg ~ " at " ~ file.toString ~ " line " ~ to!string(line) ~ " column " ~ to!string(pos)); _msg = msg; _file = file; _line = line; _pos = pos; } } class LexerException : ParserException { this(string msg, SourceFile file, int line, int pos) { super(msg, file, line, pos); } } class SourceEncodingException : LexerException { this(string msg, SourceFile file, int line, int pos) { super(msg, file, line, pos); } }