public Pascal(String operation, String filePath, String flags) { try{ bool intermediate = flags.IndexOf('i') > 1; bool xref = flags.IndexOf('x') > 1; source = new Source(new StreamReader(filePath)); source.AddMessageListener(new SourceMessageListener()); parser = FrontEndFactory.CreateParser("pascal","top-down",source); parser.AddMessageListener(new ParserMessageListener()); backend = BackendFactory.CreateBackend("compile"); backend.AddMessageListener(new BackendMessageListener()); parser.Parse(); source.close(); intermediateCode = parser.IntermediateCode; symbolTable = Parser.SymbolTable; backend.Process(intermediateCode,symbolTable); } catch(Exception ex){ Console.WriteLine ("Internal translation error"); Console.WriteLine (ex.StackTrace); } }