示例#1
0
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))
示例#2
0
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')