Example #1
0
        public void Compile(string file_path)
        {
            Source source  = new Source(file_path);
            var    scanner = new PascalScanner(source);

            ErrorReporter.m_Scanner = scanner;
            var parser = new PascalParser(scanner);

            parser.Parse();

            //SymbolTablePrinter.Print();

            if (ErrorReporter.m_Errors.Count != 0)
            {
                Console.WriteLine("\n errors: ");

                for (int i = 0; i < ErrorReporter.m_Errors.Count; ++i)
                {
                    var error = ErrorReporter.m_Errors[i];
                    Console.WriteLine($"{i}: {error.Item1} in line {error.Item2}");
                }
            }
            else
            {
                Console.WriteLine("\ncompile succeed without errors.\n");

                for (int i = 0; i < CodeGenerator.m_Code.Count; ++i)
                {
                    var code = CodeGenerator.m_Code[i];
                    Console.WriteLine($"{i,-5}{code.Item1,-5}{code.Item2,-5}{code.Item3,-5}");
                }
            }
        }
Example #2
0
 /// <summary>
 /// Constructor for subclass.
 /// </summary>
 /// <param name="parent">The parent.</param>
 public PascalParser(PascalParser parent)
     : base(parent.m_Scanner)
 {
     m_SymbolTableStack = parent.m_SymbolTableStack;
 }
Example #3
0
 public WriteParser(PascalParser parent)
     : base(parent)
 {
 }
 public ProcedureDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
Example #5
0
 public IfStatementParser(PascalParser parent)
     : base(parent)
 {
 }
Example #6
0
 public VariableDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
Example #7
0
 public ConstDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
Example #8
0
 public ExpressionParser(PascalParser parent)
     : base(parent)
 {
 }
Example #9
0
 public RepeatStatementParser(PascalParser parent)
     : base(parent)
 {
 }
Example #10
0
 public PascalAssignmentStatementParser(PascalParser parent)
     : base(parent)
 {
 }
Example #11
0
 public ProgramParser(PascalParser parent)
     : base(parent)
 {
 }
Example #12
0
 public ProcedureParser(PascalParser parent)
     : base(parent)
 {
 }
Example #13
0
 public CompoundParser(PascalParser parent)
     : base(parent)
 {
 }
Example #14
0
 public ConditionParser(PascalParser parent)
     : base(parent)
 {
 }
Example #15
0
 public WhileStatementParser(PascalParser parent)
     : base(parent)
 {
 }
Example #16
0
 public ReadParser(PascalParser parent)
     : base(parent)
 {
 }
Example #17
0
 public AssignmentParser(PascalParser parent)
     : base(parent)
 {
 }