Ejemplo n.º 1
0
        /********************************************************************
        *** 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);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
        }