Ejemplo n.º 1
0
def test_comments_in_quote():
    assert_parser_result_from_code(
        r"""
quote:
    # ignored
    x + y
# ignored
""",
        r"""
["quote":quote]
    [COLON::]
        [PLUS:+]
            [SYMBOL:x]
            [SYMBOL:y]
[EOF:]
""",
        r"""
PepQuote(
    (
        PepPlus(
            PepSymbol('x'),
            PepSymbol('y'))
        ,
    )
)
""",
    )
Ejemplo n.º 2
0
def test_comments_in_interface():
    assert_parser_result_from_code(
        r"""
interface MyInterface:
# ignored
    # ignored
    def void foo()
    # ignored
# ignored
""",
        r"""
["interface":interface]
    [SYMBOL:MyInterface]
    [COLON::]
        ["def":def]
            [SYMBOL:void]
            [SYMBOL:foo]
            [LPAREN:(]
[EOF:]
""",
        r"""
PepInterface(
    PepSymbol('MyInterface'),
    (),
    (PepInterfaceDef(PepSymbol('void'),PepSymbol('foo'),()),)
)
""" )
Ejemplo n.º 3
0
def test_comment_in_function():
    assert_parser_result_from_code(
        r"""
def void fn():
# ignored
    # ignored
    pass
# ignored
    # ignored
# ignored
""",
        r"""
["def":def]
    [SYMBOL:void]
    [SYMBOL:fn]
    [LPAREN:(]
    [COLON::]
        [SYMBOL:pass]
[EOF:]
""",
        r"""
PepDef(
    PepSymbol('void'),
    PepSymbol('fn'),
    (),
    (
        PepSymbol('pass'),
    )
)
""" )
Ejemplo n.º 4
0
def test_for_in_tuple():
    assert_parser_result_from_code(
        r"""
for int i in ( 1, 2, 3 ):
    pass
""",
        r"""
["for":for]
    [SYMBOL:int]
    [SYMBOL:i]
    [COMMA:,]
        [INT:1]
        [INT:2]
        [INT:3]
    [COLON::]
        [SYMBOL:pass]
[EOF:]
""",
        r"""
PepFor(
    PepSymbol('int'),
    PepSymbol('i'),
    PepTuple(
        (
            PepInt('1'), 
            PepInt('2'), 
            PepInt('3')
        )
    ),
    (
        PepSymbol('pass'),
    )
)
""" )
Ejemplo n.º 5
0
def Comma_separated_bracketed_expression_is_a_tuple__test():
    assert_parser_result_from_code(
        r"""
print( ( 1, 2, 3 ) )
""",
        r"""
[LPAREN:(]
    [SYMBOL:print]
    [COMMA:,]
        [INT:1]
        [INT:2]
        [INT:3]
[EOF:]
""",
        r"""
PepFunctionCall(
    PepSymbol('print'),
    (
        PepTuple(
            (
                PepInt('1'), 
                PepInt('2'), 
                PepInt('3')
            )
        ),
    )
)
""" )
Ejemplo n.º 6
0
def test_comments_in_if_else():
    assert_parser_result_from_code(
        r"""
if True:
    # ignored
    pass
# ignored
else:
# ignored
    # ignored
    pass
""",
        r"""
["if":if]
    [SYMBOL:True]
    [COLON::]
        [SYMBOL:pass]
    ["else":else]
    [COLON::]
        [SYMBOL:pass]
[EOF:]
""",
        r"""
PepIf(
    PepSymbol('True'),
    (
        PepSymbol('pass'),
    ),
    (
        PepSymbol('pass'),
    )
)
""" )
Ejemplo n.º 7
0
def test_var_block_with_empty_line():
    assert_parser_result_from_code(
        r"""
class MyClass:
    def_init():
        var:
            int self.x = 3

            int self.y = 4
""",
        r"""
["class":class]
    [SYMBOL:MyClass]
    [COLON::]
        ["def_init":def_init]
            [LPAREN:(]
            [COLON::]
                ["var":var]
                    [COLON::]
                        [EQUALS:=]
                            [SYMBOL:int]
                            [SYMBOL:self.x]
                            [INT:3]
                        [EQUALS:=]
                            [SYMBOL:int]
                            [SYMBOL:self.y]
                            [INT:4]
[EOF:]
""",
        r"""
PepClass(
    PepSymbol('MyClass'),
    (),
    (
        PepDefInit(
            (),
            (
                PepVar(
                    (
                        PepInit(
                            PepSymbol('int'),
                            PepSymbol('self.x'),
                            PepInt('3')
                        ), 
                        PepInit(
                            PepSymbol('int'),
                            PepSymbol('self.y'),
                            PepInt('4')
                        )
                    )
                ),
            )
        ),
    )
)
""" )
Ejemplo n.º 8
0
def test_empty_line_in_class():
    assert_parser_result_from_code(
        r"""
class MyClass:
    def void meth( MyClass self ):
        pass

    def void meth2( MyClass self ):
        pass
""",
        r"""
["class":class]
    [SYMBOL:MyClass]
    [COLON::]
        ["def":def]
            [SYMBOL:void]
            [SYMBOL:meth]
            [LPAREN:(]
                [SYMBOL:MyClass]
                [SYMBOL:self]
            [COLON::]
                [SYMBOL:pass]
        ["def":def]
            [SYMBOL:void]
            [SYMBOL:meth2]
            [LPAREN:(]
                [SYMBOL:MyClass]
                [SYMBOL:self]
            [COLON::]
                [SYMBOL:pass]
[EOF:]
""",
        r"""
PepClass(
    PepSymbol('MyClass'),
    (),
    (
        PepDef(
            PepSymbol('void'),
            PepSymbol('meth'),
            ((PepSymbol('MyClass'), PepSymbol('self')),),
            (
                PepSymbol('pass'),
            )
        ), 
        PepDef(
            PepSymbol('void'),
            PepSymbol('meth2'),
            ((PepSymbol('MyClass'), PepSymbol('self')),),
            (
                PepSymbol('pass'),
            )
        )
    )
)
""" )
Ejemplo n.º 9
0
def test_comments_in_init_and_var():
    assert_parser_result_from_code(
        r"""
class MyClass:
    def_init():
# ignored
        var:
        # ignored
            # ignored
# ignored
            int self.x = 3
""",
        r"""
["class":class]
    [SYMBOL:MyClass]
    [COLON::]
        ["def_init":def_init]
            [LPAREN:(]
            [COLON::]
                ["var":var]
                    [COLON::]
                        [EQUALS:=]
                            [SYMBOL:int]
                            [SYMBOL:self.x]
                            [INT:3]
[EOF:]
""",
        r"""
PepClass(
    PepSymbol('MyClass'),
    (),
    (
        PepDefInit(
            (),
            (
                PepVar(
                    (
                        PepInit(
                            PepSymbol('int'),
                            PepSymbol('self.x'),
                            PepInt('3')
                        ),
                    )
                ),
            )
        ),
    )
)
""" )
Ejemplo n.º 10
0
def test_def_init_with_empty_line():
    assert_parser_result_from_code(
        r"""
class MyClass:
    def_init():
        int x = 0

        int y =2
""",
        r"""
["class":class]
    [SYMBOL:MyClass]
    [COLON::]
        ["def_init":def_init]
            [LPAREN:(]
            [COLON::]
                [EQUALS:=]
                    [SYMBOL:int]
                    [SYMBOL:x]
                    [INT:0]
                [EQUALS:=]
                    [SYMBOL:int]
                    [SYMBOL:y]
                    [INT:2]
[EOF:]
""",
        r"""
PepClass(
    PepSymbol('MyClass'),
    (),
    (
        PepDefInit(
            (),
            (
                PepInit(
                    PepSymbol('int'),
                    PepSymbol('x'),
                    PepInt('0')
                ), 
                PepInit(
                    PepSymbol('int'),
                    PepSymbol('y'),
                    PepInt('2')
                )
            )
        ),
    )
)
""" )
Ejemplo n.º 11
0
def test_multipart_name():
    assert_parser_result_from_code(
        r"""
self.x += 4
""",
        r"""
[PLUSEQUALS:+=]
    [SYMBOL:self.x]
    [INT:4]
[EOF:]
""",
        r"""
PepModification(
    PepSymbol('self.x'),
    PepInt('4')
)
""" )
Ejemplo n.º 12
0
def test_comments_in_for():
    assert_parser_result_from_code(
        r"""
for int i in range( 0, 4 ):
    # ignored
    print( i )
# ignored
""",
        r"""
["for":for]
    [SYMBOL:int]
    [SYMBOL:i]
    [LPAREN:(]
        [SYMBOL:range]
        [INT:0]
        [COMMA:,]
        [INT:4]
    [COLON::]
        [LPAREN:(]
            [SYMBOL:print]
            [SYMBOL:i]
[EOF:]
""",
        r"""
PepFor(
    PepSymbol('int'),
    PepSymbol('i'),
    PepFunctionCall(
        PepSymbol('range'),
        (
            PepInt('0'), 
            PepInt('4')
        )
    ),
    (
        PepFunctionCall(
            PepSymbol('print'),
            (
                PepSymbol('i'),
            )
        ),
    )
)
""" )
Ejemplo n.º 13
0
def Double_bracketed_number_is_not_a_tuple__test():
    assert_parser_result_from_code(
        r"""
print( ( ( 3 ) ) )
""",
        r"""
[LPAREN:(]
    [SYMBOL:print]
    [INT:3]
[EOF:]
""",
        r"""
PepFunctionCall(
    PepSymbol('print'),
    (
        PepInt('3'),
    )
)
""" )
Ejemplo n.º 14
0
def test_multipart_name():
    assert_parser_result_from_code(
        r"""
int self.x = 4
""",
        r"""
[EQUALS:=]
    [SYMBOL:int]
    [SYMBOL:self.x]
    [INT:4]
[EOF:]
""",
        r"""
PepInit(
    PepSymbol('int'),
    PepSymbol('self.x'),
    PepInt('4')
)
""" )
Ejemplo n.º 15
0
def test_empty_line_in_function():
    assert_parser_result_from_code(
        r"""
def int fn():
    int x = 0

    return x
""",
        r"""
["def":def]
    [SYMBOL:int]
    [SYMBOL:fn]
    [LPAREN:(]
    [COLON::]
        [EQUALS:=]
            [SYMBOL:int]
            [SYMBOL:x]
            [INT:0]
        ["return":return]
            [SYMBOL:x]
[EOF:]
""",
        r"""
PepDef(
    PepSymbol('int'),
    PepSymbol('fn'),
    (),
    (
        PepInit(
            PepSymbol('int'),
            PepSymbol('x'),
            PepInt('0')
        ), 
        PepReturn(
            PepSymbol('x')
        )
    )
)
""" )
Ejemplo n.º 16
0
def test_define_interface_with_one_function():
    assert_parser_result_from_code(
        r"""
interface MyInterface:
    def void foo()
""",
        r"""
["interface":interface]
    [SYMBOL:MyInterface]
    [COLON::]
        ["def":def]
            [SYMBOL:void]
            [SYMBOL:foo]
            [LPAREN:(]
[EOF:]
""",
        r"""
PepInterface(
    PepSymbol('MyInterface'),
    (),
    (PepInterfaceDef(PepSymbol('void'),PepSymbol('foo'),()),)
)
""" )
Ejemplo n.º 17
0
def Basic_while_loop__test():
    assert_parser_result_from_code(
        r"""
int a = 0
while a > 5:
    pass
""",
        r"""
[EQUALS:=]
    [SYMBOL:int]
    [SYMBOL:a]
    [INT:0]
["while":while]
    [GT:>]
        [SYMBOL:a]
        [INT:5]
    [COLON::]
        [SYMBOL:pass]
[EOF:]
""",
        r"""
PepInit(
    PepSymbol('int'),
    PepSymbol('a'),
    PepInt('0')
)
PepWhile(
    PepGreaterThan(
        PepSymbol('a'),
        PepInt('5')
    ),
    (
        PepSymbol('pass'),
    )
)
""" )