示例#1
0
文件: Program.cs 项目: ianpas/npms
        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}");
                }
            }
        }
示例#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;
 }
示例#3
0
 public WriteParser(PascalParser parent)
     : base(parent)
 {
 }
示例#4
0
 public ProcedureDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
示例#5
0
 public IfStatementParser(PascalParser parent)
     : base(parent)
 {
 }
示例#6
0
 public VariableDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
示例#7
0
 public ConstDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
示例#8
0
 public ExpressionParser(PascalParser parent)
     : base(parent)
 {
 }
示例#9
0
 public RepeatStatementParser(PascalParser parent)
     : base(parent)
 {
 }
示例#10
0
 public PascalAssignmentStatementParser(PascalParser parent)
     : base(parent)
 {
 }
示例#11
0
 public ProgramParser(PascalParser parent)
     : base(parent)
 {
 }
示例#12
0
 public ProcedureParser(PascalParser parent)
     : base(parent)
 {
 }
示例#13
0
 public CompoundParser(PascalParser parent)
     : base(parent)
 {
 }
示例#14
0
 public ConditionParser(PascalParser parent)
     : base(parent)
 {
 }
示例#15
0
 public WhileStatementParser(PascalParser parent)
     : base(parent)
 {
 }
示例#16
0
文件: ReadParser.cs 项目: ianpas/npms
 public ReadParser(PascalParser parent)
     : base(parent)
 {
 }
示例#17
0
 public AssignmentParser(PascalParser parent)
     : base(parent)
 {
 }