コード例 #1
0
        static void Main(string[] args)
        {
            // if (args.Length <= 0) {
            //     System.Console.WriteLine("fatal error: no input files");
            //     return;
            // }
            string name = "../UnitTests/TestFiles/correctfile3.ml"; //args[0];

            using (var source = new FileSource(name)) {
                try {
                    var scanner = new Scanner(source);
                    var parser  = new Parser.Parser(scanner);
                    var program = parser.Parse();
                    program.Execute();
                }
                catch (LexerException e) {
                    System.Console.WriteLine(e.Message);
                }
                catch (UnexpectedToken e) {
                    var sb = new StringBuilder(e.Message);
                    sb.Append(" at line: "); sb.Append(e.Position.Row);
                    sb.Append(", column: "); sb.Append(e.Position.Column);
                    sb.Append("\nSource:\n"); sb.Append(source.GetLineFromPosition(e.Position));
                    sb.Append("\n");
                    for (int i = 1; i < e.Position.Column; ++i)
                    {
                        sb.Append(" ");
                    }
                    sb.Append("^");
                    System.Console.WriteLine(sb.ToString());
                }
                catch (ExecutionException e) {
                    System.Console.WriteLine(e.Message);
                }
            }
        }