def test_ast_single_statement(self): self.assertEqual( map_tree_to_values(ast(''' = a 5 ''')), [['=', 'a', '5']] )
def wrapper(self, *args, **kwargs): global log_indent #args_string = str(args) indent_string = '-' * log_indent pretty_args = [] for a in args: if isinstance(a, str): pretty_args.append(a) else: pretty_args.append(str(map_tree_to_values(a))) args_string = ', '.join(pretty_args), logging.info( '%s>:%s: %s', indent_string, fn.__name__, args_string, ) log_indent += 1 r = fn(self, *args, **kwargs) log_indent -= 1 logging.info( '<%s:%s: %s', indent_string, fn.__name__, r, ) return r
def test_sexp_def_function(self): self.assertEqual( map_tree_to_values(ast(''' def test + 5 5 ''')[0]), ['def', 'test', [], 'int', ['+','5', '5']] )
def test_sexp_def_function(self): self.assertEqual( map_tree_to_values(ast(''' (c-def main () void (prn "hello")) ''')[0]), ['c-def', 'main', [], 'void', ['prn','"hello"']] )
def test_ast_block(self): self.assertEqual( map_tree_to_values(ast(''' c-def test return 5 ''')), [['c-def', 'test', [], 'void', ['return', '5']]] )
def test_lexp_def_function(self): a = map_tree_to_values(ast(''' c-def main prn "hello" ''')[0]) self.assertEqual( a, ['c-def', 'main', [], 'void', ['prn','"hello"']] )
def test_lexp_cond(self): self.assertEqual( map_tree_to_values(ast(''' cond (> 1 0) 1 (< 1 0) 0 else -1 ''')[0]), [ 'cond', [['>', '1', '0'], '1'], [['<', '1', '0'], '0'], ['else', '-1'] ] )
def parse_to_values(code): return map_tree_to_values(parse(code))
def parse_type(type_expression): if isinstance(type_expression, Token): return [type_expression.value] else: return map_tree_to_values(type_expression)