Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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));
            }
        }
                )
        { }