コード例 #1
0
ファイル: test_parser.py プロジェクト: willbr/likec
    def test_ast_single_statement(self):
        self.assertEqual(
                map_tree_to_values(ast('''
= a 5
''')),
                [['=', 'a', '5']]
                )
コード例 #2
0
ファイル: prefix_compiler.py プロジェクト: willbr/likec
 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
コード例 #3
0
ファイル: test_parser.py プロジェクト: willbr/likec
    def test_sexp_def_function(self):
        self.assertEqual(
                map_tree_to_values(ast('''
def test
    + 5 5
                ''')[0]),
                ['def', 'test', [], 'int', ['+','5', '5']]
                )
コード例 #4
0
ファイル: test_parser.py プロジェクト: willbr/likec
    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"']]
                )
コード例 #5
0
ファイル: test_parser.py プロジェクト: willbr/likec
    def test_ast_block(self):
        self.assertEqual(
                map_tree_to_values(ast('''
c-def test
    return 5
''')),
                [['c-def', 'test', [], 'void',
                    ['return', '5']]]
                )
コード例 #6
0
ファイル: test_parser.py プロジェクト: willbr/likec
    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"']]
                )
コード例 #7
0
ファイル: test_parser.py プロジェクト: willbr/likec
    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']
                    ]
                )
コード例 #8
0
ファイル: test_compiler.py プロジェクト: willbr/likec
def parse_to_values(code):
    return map_tree_to_values(parse(code))
コード例 #9
0
ファイル: prefix_compiler.py プロジェクト: willbr/likec
def parse_type(type_expression):
    if isinstance(type_expression, Token):
        return [type_expression.value]
    else:
        return map_tree_to_values(type_expression)