public void WhiteSpaceTest() { var p = from v in Tok.WhiteSpace(new HaskellDef()) select v; var res = p.Parse( @" {- This whole {- line is a comment and so is -} this one with nested comments this too -} let x=1"); var left = res.Value.Head().Item2.AsString(); Assert.True(!res.IsFaulted && left == "let x=1"); }
public GenTokenParser(LanguageDef def) { Identifier = Tok.Id.Identifier(def); reserved = def.ReservedNames.ToDictionary(name => name, name => Tok.Id.Reserved(name, def) as Parser <ReservedToken>); Operator = Tok.Ops.Operator(def); reservedOp = def.ReservedOpNames.ToDictionary(name => name, name => Tok.Ops.ReservedOp(name, def) as Parser <ReservedOpToken>); CharLiteral = Tok.Chars.CharLiteral(); StringLiteral = Tok.Strings.StringLiteral(); Natural = Tok.Numbers.Natural(); Integer = Tok.Numbers.Integer(); // floating = Tok.Numbers.Floating(); TODO // naturalOrFloat = Tok.Numbers.NaturalOrFloating(); TODO WhiteSpace = Tok.WhiteSpace(def); Decimal = Tok.Numbers.Decimal(); Hexadecimal = Tok.Numbers.Hexadecimal(); Octal = Tok.Numbers.Octal(); Symbol = (string name) => Tok.Symbol(name); Lexeme = (Parser <A> p) => Tok.Lexeme(p); Parens = (Parser <A> p) => Tok.Bracketing.Parens(p); Braces = (Parser <A> p) => Tok.Bracketing.Braces(p); Angles = (Parser <A> p) => Tok.Bracketing.Angles(p); Brackets = (Parser <A> p) => Tok.Bracketing.Brackets(p); Semi = Tok.Symbol(";"); Comma = Tok.Symbol(","); Colon = Tok.Symbol(":"); Dot = Tok.Symbol("."); CommaSep = (Parser <A> p) => Prim.SepBy(p, Comma); SemiSep = (Parser <A> p) => Prim.SepBy(p, Semi); CommaSep1 = (Parser <A> p) => Prim.SepBy1(p, Comma); SemiSep1 = (Parser <A> p) => Prim.SepBy1(p, Semi); Reserved = name => reserved[name]; ReservedOp = name => reservedOp[name]; }