public Lexer() : base(error => new SyntaxError((IssueId) error)) { var alpha = Match.Letter.Else("_"); var symbol1 = "({[)}];,".AnyChar(); var textFrame = "'\"".AnyChar(); var symbol = "°^!²§³$%&/=?\\@€*+~><|:.-".AnyChar(); var identifier = (alpha + alpha.Else(Match.Digit).Repeat()).Else(symbol.Repeat(1)); _any = symbol1.Else(identifier); _whiteSpaces = Match.WhiteSpace.Repeat(1); _comment = ("#" + " \t".AnyChar() + Match.LineEnd.Find) .Else("#(" + Match.WhiteSpace + (Match.WhiteSpace + ")#").Find) .Else("#(" + _any.Value(id => (Match.WhiteSpace + id + ")#").Box().Find)) .Else("#(" + Match.End.Find + _invalidComment) .Else("#" + Match.End.Find + _invalidLineComment) ; _number = Match.Digit.Repeat(1); _text = textFrame.Value ( head => { var textEnd = head.Else(Match.LineEnd + _invalidTextEnd); return textEnd.Find + (head + textEnd.Find).Repeat(); }); }