public void MultiLineComment() { var p = from v in Tok.MultiLineComment(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 WhiteSpace(LanguageDef def) : base( inp => { var simpleSpace = Tok.SimpleSpace(); if (String.IsNullOrEmpty(def.CommentLine) && String.IsNullOrEmpty(def.CommentStart)) { return(Prim.SkipMany( simpleSpace.Fail("") ).Parse(inp)); } else if (String.IsNullOrEmpty(def.CommentLine)) { return(Prim.SkipMany <Unit>( simpleSpace | Tok.MultiLineComment(def).Fail("") ).Parse(inp)); } else if (String.IsNullOrEmpty(def.CommentStart)) { return(Prim.SkipMany <Unit>( simpleSpace | Tok.OneLineComment(def).Fail("") ) .Parse(inp)); } else { return(Prim.SkipMany <Unit>( simpleSpace | Tok.OneLineComment(def) | Tok.MultiLineComment(def).Fail("") ) .Parse(inp)); } } ) { }