from co import bootstrap, send from la import setUpTransformEngine from metaii import comp object_vt, vtvt = bootstrap() symbol_vt, ast_vt = setUpTransformEngine(object_vt, vtvt) ######################################################################### ## Simple Syntax to AST ## ######################################################################### # Helper functions. def allocate(vt): return send(vt, 'allocate') def make_kind(kind): return send(allocate(symbol_vt), 'setName', kind) def make_ast(KIND, value): return send(allocate(ast_vt), 'init', KIND, value) def name_of_symbol_of(ast): return send(send(ast, 'typeOf'), 'getName') # Some AST symbol types. SYMBOL = make_kind('symbol') LITERAL = make_kind('literal') LIST = make_kind('list') # Helper functions to generate AST for the simple compiler below. def symbol(name): return make_ast(SYMBOL, name) def literal(value): return make_ast(LITERAL, value) def list_(*values): return make_ast(LIST, list(values))
from co import bootstrap, send from la import setUpTransformEngine from metaii import comp object_vt, vtvt = bootstrap() symbol_vt, ast_vt = setUpTransformEngine(object_vt, vtvt) ######################################################################### ## Simple Syntax to AST ## ######################################################################### # Helper functions. def allocate(vt): return send(vt, 'allocate') def make_kind(kind): return send(allocate(symbol_vt), 'setName', kind) def make_ast(KIND, value): return send(allocate(ast_vt), 'init', KIND, value) def name_of_symbol_of(ast): return send(send(ast, 'typeOf'), 'getName') # Some AST symbol types. SYMBOL = make_kind('symbol')