/******************************************************************** *** FUNCTION Main *** ********************************************************************* *** DESCRIPTION : This is the main function that starts by calling*** *** the BeginProgramParser *** *** INPUT ARGS : - *** *** OUTPUT ARGS : - *** *** IN/OUT ARGS : string[] *** *** RETURN : int *** ********************************************************************/ static int Main(string[] args) { Console.WriteLine("Assignment 6 - Java Recursive Descent Parser Expression"); Console.WriteLine("Name - Aditya Harshvardhan"); Console.WriteLine("Due date - 4/3/2020"); Console.WriteLine(""); Console.Write("Press any key to begin... "); Console.ReadKey(); Console.Clear(); if (args.Length != 1) { Console.Write("Usage : ", args[0]); Console.WriteLine("filename"); return(1); } else { LexAnalyzer.stream = new StreamReader(args[0]); LexAnalyzer.Token = LexAnalyzer.Symbol.unknownt; LexAnalyzer.LineNo = 1; var sourceFileName = args[0]; RecursiveDescentParser.BeginProgramParser(sourceFileName); } Console.WriteLine(); Console.Write("Parsing complete. Press any key to exit... "); Console.ReadKey(); return(0); }
public static void Main(string [] args) { var EG = Test3(); var expansionRun = new ExpansionsionRun(EG); var EG2 = expansionRun.After; var c = new FromEbnfToBnf_ByCopying(EG2); var text = new SymbolReader("cad"); var pc = new RecursiveDescentParser(text); var res = pc.RecusiveDescent(c.Bnf ["S"]); Console.WriteLine(res); }
private static void SingleRun() { try { IEnumerable<char> input = new ConsoleInputStream(); ILexicalAnalyzer lexer = new SimpleLexicalAnalyzer(); IParser parser = new RecursiveDescentParser(); IEnumerable<IToken> tokens = lexer.Analyze(input); Option<IAbstractSyntaxTree> ast = parser.TryParse(tokens); ProcessTree(ast); } catch (Exception ex) { Console.WriteLine("ERROR: {0}", ex.Message); } }
public void ParseMatchedBracketsWithRecursiveDescent() { Grammar g = new MatchedBracketsWithContent("(", ")"); Parser parser = new RecursiveDescentParser(g); var p = parser.Parse("()"); Assert.IsNotNull(p); Assert.IsFalse(p.Root.IsLeaf); Assert.AreEqual("Root'", p.Root.NonTerminal.Name); Assert.AreEqual(1, p.Root.Children.Count); Assert.IsNotNull(p.Root.Children[0]); Assert.IsFalse(p.Root.Children[0].IsLeaf); Assert.AreEqual("S", p.Root.Children[0].NonTerminal.Name); Assert.AreEqual(3, p.Root.Children[0].Children.Count); Assert.IsTrue(p.Root.Children[0].Children[0].IsLeaf); Assert.AreEqual("(", p.Root.Children[0].Children[0].Token.Value); Assert.IsFalse(p.Root.Children[0].Children[1].IsLeaf); Assert.IsTrue(p.Root.Children[0].Children[2].IsLeaf); Assert.AreEqual(")", p.Root.Children[0].Children[2].Token.Value); }