public void LeftRecursionCheckerTest() { Exception exception = null; string filename = @"..\..\LeftRecursion.txt"; string grammar; using (StreamReader reader = new StreamReader(filename)) { grammar = reader.ReadToEnd(); } if (grammar == null || grammar == "") { Assert.Fail(); } var lexer = new IntArithmetics.Lexer(); try { var parser = new LL1GrammarParser <int, IntArithmetics.AbstractToken>( grammar, lexer, lexer.NameTokenTBL, new System.Reflection.Assembly[] { typeof(IntArithmetics).Assembly }); Assert.Fail(); } catch (LeftRecursionGrammarException exc) { exception = exc; } if (exception == null || exception.GetType() != typeof(LeftRecursionGrammarException)) { Assert.Fail(); } }
public void ListGrammarTest() { string filename = @"..\..\SequenceGrammar.txt"; string grammar; using (StreamReader reader = new StreamReader(filename)) { grammar = reader.ReadToEnd(); } if (grammar == null || grammar == "") { Assert.Fail(); } Dictionary <string, AbstractToken> kvp = new Dictionary <string, AbstractToken> { { "int", new TokenInt(default(int)) } }; var parser = new LL1GrammarParser <ArrayN, AbstractToken>(grammar, new Lexer(), kvp, new System.Reflection.Assembly[] { typeof(ArrayN).Assembly }); var parsed = parser.Parse("1 2 3"); Assert.AreEqual("1, 2, 3", parsed.ToString()); parsed = parser.Parse(""); Assert.AreEqual("", parsed.ToString()); parsed = parser.Parse("-123"); Assert.AreEqual("-123", parsed.ToString()); }
static void Main(string[] args) { string filename = @"C:\Users\Paul\Desktop\prg\cs\SemesterProject\LL1_Parser\LamdaExpressionComparement\Lamda_calc_grammar.txt"; string l_expr = @"(\x.(\y.(x(y((\z.t)z)))))"; LLexer lexer = new LLexer(); string grammar; using (System.IO.StreamReader reader = new System.IO.StreamReader(filename)) { grammar = reader.ReadToEnd(); } var parser = new LL1GrammarParser <LExprBasic, AbstractLToken>(grammar, lexer, lexer.NameTokenTBL, new System.Reflection.Assembly[] { typeof(LExprBasic).Assembly }); Console.WriteLine("Expected\t\tActual"); var expr = parser.Parse(l_expr); Console.WriteLine($"{l_expr}\t\t{expr.ToString()}"); }
public void ParseLambdaExpr() { string filename = @"C:\Users\Paul\Desktop\prg\cs\SemesterProject\LL1_Parser\BasicTests\Lamda_calc_grammar.txt"; string[] lambda_expressions = @"(\x.(xy)) ((\y.y)(\x.(xy))) (x(\x.(λx.x))) (\x.(yz))".Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); LLexer lexer = new LLexer(); string grammar; using (System.IO.StreamReader reader = new System.IO.StreamReader(filename)) { grammar = reader.ReadToEnd(); } if (grammar == null || grammar == "") { Assert.Fail("Cannot read a grammar file"); } var parser = new LL1GrammarParser <LExprBasic, AbstractLToken>(grammar, lexer, lexer.NameTokenTBL, new System.Reflection.Assembly[] { typeof(LExprBasic).Assembly }); foreach (var str_expr in lambda_expressions) { var expr = parser.Parse(str_expr); Assert.AreEqual(str_expr, expr.ToString()); } }