Example #1
0
from lisp_parser import parser

#if __name__ == "main":
print parser.parse('(hex 200)')
Example #2
0
def rc(str):
    return compile_lisp(parser.parse(str))
Example #3
0
    pass


def list_callback(node):
    if node.car.cdr:
        node.car.cdr = node.car.cdr.car
    assert node.car.name == "s_expr"
    for child in iter_cdr(node.car, reverse=True):
        if child.name == "s_expr":
            s_expr = child
            assert s_expr.name == "s_expr"
            if s_expr.cdr and s_expr.cdr.name == "s_expr":
                s_expr.cdr = s_expr.cdr.car
            s_expr.car.cdr = s_expr.cdr
    assert node.car.name == "s_expr"
    node.car = node.car.car


def s_expr_callback(node):
    pass


parser.callback_map["list"] = list_callback
parser.callback_map["s_expr"] = s_expr_callback
parser.callback_map["program"] = program_callback

parse_tree = Graph(parser.parse())
ast_tree = create_ast(parse_tree)
convert_lists(ast_tree)
print_tree(ast_tree)