コード例 #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
ファイル: WriteParser.cs プロジェクト: ianpas/npms
 public WriteParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #4
0
 public ProcedureDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #5
0
ファイル: IfStatementParser.cs プロジェクト: ianpas/npms
 public IfStatementParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #6
0
 public VariableDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #7
0
 public ConstDeclarationParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #8
0
ファイル: ExpressionParser.cs プロジェクト: ianpas/npms
 public ExpressionParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #9
0
ファイル: RepeatStatementParser.cs プロジェクト: ianpas/npms
 public RepeatStatementParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #10
0
 public PascalAssignmentStatementParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #11
0
ファイル: ProgramParser.cs プロジェクト: ianpas/npms
 public ProgramParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #12
0
ファイル: ProcedureParser.cs プロジェクト: ianpas/npms
 public ProcedureParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #13
0
ファイル: CompoundParser.cs プロジェクト: ianpas/npms
 public CompoundParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #14
0
ファイル: ConditionParser.cs プロジェクト: ianpas/npms
 public ConditionParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #15
0
ファイル: WhileStatementParser.cs プロジェクト: ianpas/npms
 public WhileStatementParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #16
0
ファイル: ReadParser.cs プロジェクト: ianpas/npms
 public ReadParser(PascalParser parent)
     : base(parent)
 {
 }
コード例 #17
0
ファイル: AssignmentParser.cs プロジェクト: ianpas/npms
 public AssignmentParser(PascalParser parent)
     : base(parent)
 {
 }