def evaluate(self, code): self.cpu, self.mem = CPU(), VirtualMemory() symbol_table = SymbolTable( ( ('__ LABELS __', SymbolTable()), ('__ GOTOS __', defaultdict(list)), ('__ stack __', Stack()), ('__ expression __', expression), ('__ statement __', statement) ) ) load( set_addresses( chain( emitter.statement( next(parser.statement( preprocess(tokenize(source(code))), SymbolTable((('__ LABELS __', SymbolTable()),))) ), symbol_table ), (Halt('__EOP__'),) ) ), self.mem, ) evaluate(self.cpu, self.mem)
def test_executable(self): source_codes = """ extern int b; int main() { b = 10; return 0; } """, 'int b;' mem = VirtualMemory() cpu = CPU() symbol_table = SymbolTable() load( set_addresses( resolve( executable( chain.from_iterable(emit(parse(preprocess(tokenize(source(code))))) for code in source_codes), symbol_table ), symbol_table ), ), mem ) evaluate(cpu, mem)
def evaluate_expr(self, code): self.mem, self.cpu = VirtualMemory(), CPU() load( set_addresses( chain(emit_expression(parser.expression(preprocess(tokenize(source(code))))), (Halt('__EOP__'),)), ), self.mem ) evaluate(self.cpu, self.mem)
def evaluate_expr(self, code): self.mem, self.cpu = VirtualMemory(), CPU() load( set_addresses( chain( emit_expression( parser.expression(preprocess(tokenize(source(code))))), (Halt('__EOP__'), )), ), self.mem) evaluate(self.cpu, self.mem)
def evaluate(self, code, cpu=None, mem=None, os=None): self.cpu, self.mem, self.os = cpu or CPU(), mem or VirtualMemory(), os or Kernel(CALLS) load(set_addresses( instrs( (StringIO(code),), std_include_dirs, libraries=ifilter(path.isfile, starmap(path.join, product(std_libraries_dirs, std_libraries))) ) ), self.mem) evaluate(self.cpu, self.mem, self.os)
def assembly(files, includes=(), libraries=(), optimizer=identity): mem = OrderedDict() load_binaries( linker.set_addresses(instrs(files, includes, libraries, optimizer)), mem) for addr, instr in ifilter(lambda i: isinstance(i[1], Instruction), mem.iteritems()): yield '{l}:{addr}: {elem}\n'.format(l=loc(instr), addr=addr, elem=instr)
def evaluate(self, code): symbol_table, self.cpu, self.mem = SymbolTable(), CPU(), VirtualMemory() load( set_addresses( resolve(executable(emit(parse(preprocess(tokenize(source(code))))), symbol_table), symbol_table) ), self.mem, ) evaluate(self.cpu, self.mem)
def evaluate(self, code, cpu=None, mem=None, os=None): self.cpu, self.mem, self.os = cpu or CPU(), mem or VirtualMemory( ), os or Kernel(CALLS) load( set_addresses( instrs((StringIO(code), ), std_include_dirs, libraries=ifilter( path.isfile, starmap(path.join, product(std_libraries_dirs, std_libraries))))), self.mem) evaluate(self.cpu, self.mem, self.os)
def evaluate(self, code): self.cpu, self.mem = CPU(), VirtualMemory() symbol_table = SymbolTable( (('__ LABELS __', SymbolTable()), ('__ GOTOS __', defaultdict(list)), ('__ stack __', Stack()), ('__ expression __', expression), ('__ statement __', statement))) load( set_addresses( chain( emitter.statement( next( parser.statement( preprocess(tokenize(source(code))), SymbolTable( (('__ LABELS __', SymbolTable()), )))), symbol_table), (Halt('__EOP__'), ))), self.mem, ) evaluate(self.cpu, self.mem)
def test_executable(self): source_codes = """ extern int b; int main() { b = 10; return 0; } """, 'int b;' mem = VirtualMemory() cpu = CPU() symbol_table = SymbolTable() load( set_addresses( resolve( executable( chain.from_iterable( emit(parse(preprocess(tokenize(source(code))))) for code in source_codes), symbol_table), symbol_table), ), mem) evaluate(cpu, mem)
def assembly(files, includes=(), libraries=(), optimizer=identity): mem = OrderedDict() load_binaries(linker.set_addresses(instrs(files, includes, libraries, optimizer)), mem) for addr, instr in ifilter(lambda i: isinstance(i[1], Instruction), mem.iteritems()): yield '{l}:{addr}: {elem}\n'.format(l=loc(instr), addr=addr, elem=instr)
def start(instrs): mem = VirtualMemory() cpu = CPU() os = Kernel(CALLS) load(set_addresses(instrs), mem) evaluate(cpu, mem, os)