def compile(self, source, env=None, library=False): if env == None: env = Environment() # parse input (definitions, errors) = Parser().parse(source) # check for errors if len(errors) > 0: return ("", errors) # type checking for definition in definitions: TypeChecker().check(errors, env, definition) # check for errors if len(errors) > 0: return ("", errors) # code generation code = "" generator = CodeGenerator() for node in definitions: symbol = node[0].value() code += generator.generateDefinition(env, symbol, template) # generate library if library: code += generator.generateLibrary(template) return (code, errors)
def compile(self, source, env=None, library=False): if env == None: env = Environment() # parse input (definitions, errors) = Parser().parse(source) # check for errors if len(errors) > 0: return ("", errors) # type checking for definition in definitions: TypeChecker().check(errors, env, definition) # check for errors if len(errors) > 0: return ("", errors) # code generation code = "" generator = CodeGenerator() for node in definitions: symbol = node[0].value() code += generator.generateDefinition(env, symbol, template) # generate library if library: code += generator.generateLibrary(template) return (code, errors)
def printGeneratedCode(self, line): tokens = line.strip().split(" ") if len(tokens) < 2: print("No symbol specified") for symbol in tokens[1:]: if not symbol in self.env.elements: print("No symbol " + symbol) continue # code generation generator = CodeGenerator() code = generator.generateDefinition(self.env, symbol, template) if code == None: print("Native function") else: print(code.strip())
def printGeneratedCode(self, line): tokens = line.strip().split(' ') if len(tokens) < 2: print("No symbol specified") for symbol in tokens[1:]: if not symbol in self.env.elements: print("No symbol " + symbol) continue # code generation generator = CodeGenerator() code = generator.generateDefinition(self.env, symbol, template) if code == None: print("Native function") else: print(code.strip())