Exemple #1
0
        public void BuildIfStatement()
        {
            var grammer = new AndyStructuralGrammar();
            var p = new ParserState("if");

            Assert.That(grammer.if_keyword.Match(p), Is.True);

            p = new ParserState("if()");
            var rule = grammer.if_keyword + grammer.Delimiter("(") + grammer.Delimiter(")");
            Assert.That(rule.Match(p), Is.True);

            p = new ParserState("if (a == b)");
            Assert.That(grammer.if_condition.Match(p), Is.True);

            p = new ParserState("if(a == 10){a=20;}");
            var if_block = grammer.if_condition + grammer.block;
            Assert.That(if_block.Match(p), Is.True);

            p = new ParserState("if(a == 10){a=20;}");
            if_block = grammer.if_condition + new RecursiveRule(() => grammer.block);
            Assert.That(if_block.Match(p), Is.True);

            p = new ParserState("if(a == 10){a=20;}");
            Assert.That(grammer.control_statement.Match(p), Is.True);
        }
Exemple #2
0
        public void BuildWhileStatement()
        {
            var grammer = new AndyStructuralGrammar();
            var p = new ParserState("while");

            Assert.That(grammer.while_keyword.Match(p), Is.True);

            p = new ParserState("while()");
            var rule = grammer.while_keyword + grammer.Delimiter("(") + grammer.Delimiter(")");
            Assert.That(rule.Match(p), Is.True);

            p = new ParserState("while (a == b)");
            Assert.That(grammer.while_condition.Match(p), Is.True);

            p = new ParserState("while(a == 10){a=20;}");
            var while_block = grammer.while_condition + grammer.block;
            Assert.That(while_block.Match(p), Is.True);

            p = new ParserState("while(a == 10){a=20;}");
            Assert.That(grammer.while_statement.Match(p), Is.True);

            p = new ParserState("while(a == 10){a=20;}");
            Assert.That(grammer.control_statement.Match(p), Is.True);
        }