diff --git a/lang/lexer.nex b/lang/lexer.nex index 967285c3..7eb1368d 100644 --- a/lang/lexer.nex +++ b/lang/lexer.nex @@ -384,8 +384,12 @@ yylex.pos(lval) // our pos s := yylex.Text() lp := yylex.cast() + e := ErrLexerUnrecognized + if s == "\r" { // windows! + e = ErrLexerUnrecognizedCR + } lp.lexerErr = &LexParseErr{ - Err: ErrLexerUnrecognized, + Err: e, Str: s, Row: yylex.Line(), Col: yylex.Column(), diff --git a/lang/lexparse.go b/lang/lexparse.go index 1541796d..8bc86c15 100644 --- a/lang/lexparse.go +++ b/lang/lexparse.go @@ -46,6 +46,7 @@ const ( // These constants represent the different possible lexer/parser errors. const ( ErrLexerUnrecognized = interfaces.Error("unrecognized") + ErrLexerUnrecognizedCR = interfaces.Error("unrecognized carriage return") ErrLexerStringBadEscaping = interfaces.Error("string: bad escaping") ErrLexerIntegerOverflow = interfaces.Error("integer: overflow") ErrLexerFloatOverflow = interfaces.Error("float: overflow")