def main(argv): input = FileStream(argv[1]) print("\033[92mCompiling and executing {}\033[0m".format(argv[1])) lexer = C_GrammarLexer(input) stream = CommonTokenStream(lexer) parser = C_GrammarParser(stream) tree = parser.start() printer = GrammarListener() walker = ParseTreeWalker() walker.walk(printer, tree) symbol_table = SymbolTable() symbol_table.fill_tree(printer.AST_Root) CG = CodeGenerator(printer.AST_Root, symbol_table) CG.generate() symbol_table.to_dot() CG.writeToFile(argv[2])
def process(self): ''' Process the assembly code ''' lexicalAnalyzer = LexicalAnalyzer(self.args) syntaxAnalyzer = SyntaxAnalyzer(self.args) codeGenerator = CodeGenerator(self.args) # lexical analysis ok = lexicalAnalyzer.analyze() if not ok: return False # syntax analysis ok = syntaxAnalyzer.analyze(lexicalAnalyzer.tokens) if not ok: return False # code generation ok = codeGenerator.generate(syntaxAnalyzer.expressions) if not ok: return False return True
def process(self): ''' Process the assembly code ''' lexicalAnalyzer = LexicalAnalyzer(self.args) syntaxAnalyzer = SyntaxAnalyzer(self.args) codeGenerator = CodeGenerator(self.args) # lexical analysis ok = lexicalAnalyzer.analyze() if not ok: return False # syntax analysis ok = syntaxAnalyzer.analyze(lexicalAnalyzer.tokens) if not ok: return False # code generation ok = codeGenerator.generate(syntaxAnalyzer.expressions) if not ok: return False return True