Beispiel #1
0
def test_parse_expression():
    parser = MuddParser('tests/bpl_files/test_parse_expression.bpl')
    tree = parser.parse()
    fun_dec = tree.children[0].children[0].children[0]
    statement_list = fun_dec.children[5].children[2]
    statement1 = statement_list.children[1]
    expression1 = statement1.children[0].children[0]
    assert expression1.children[0].kind == N_VAR
    assert expression1.children[0].children[0].kind == T_MUL
    assert expression1.children[0].children[1].kind == T_ID
    assert expression1.children[1].kind == T_ASSIGN
    assert expression1.children[2].kind == N_EXPRESSION
    statement2 = statement_list.children[0].children[1]
    expression2 = statement2.children[0].children[0]
    assert expression2.children[0].kind == N_VAR
    assert expression2.children[0].children[0].kind == T_ID
    assert expression2.children[0].children[2].kind == N_EXPRESSION
    assert expression2.children[1].kind == T_ASSIGN
    assert expression2.children[2].kind == N_EXPRESSION
    statement3 = statement_list.children[0].children[0].children[1]
    expression3 = statement3.children[0].children[0]
    assert expression3.children[0].kind == N_VAR
    assert expression3.children[0].children[0].kind == T_ID
    assert expression3.children[1].kind == T_ASSIGN
    assert expression3.children[2].kind == N_EXPRESSION
    print(expression1)
    print(expression2)
    print(expression3)
Beispiel #2
0
def test_parse_var_dec():
    parser = MuddParser('tests/bpl_files/test_parse_variable_declaration.bpl')
    tree = parser.parse()
    assert tree.kind == N_PROGRAM
    assert tree.children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[1].kind == N_DECLARATION
    declaration1 = tree.children[0].children[1]
    assert declaration1.children[0].kind == N_VAR_DEC
    assert declaration1.children[0].children[0].kind == N_TYPE_SPECIFIER
    assert declaration1.children[0].children[1].kind == T_ID
    assert declaration1.children[0].children[2].kind == T_SEMICOL
    declaration2 = tree.children[0].children[0].children[1]
    assert declaration2.children[0].kind == N_VAR_DEC
    assert declaration2.children[0].children[0].kind == N_TYPE_SPECIFIER
    assert declaration2.children[0].children[1].kind == T_MUL
    assert declaration2.children[0].children[2].kind == T_ID
    assert declaration2.children[0].children[3].kind == T_SEMICOL
    declaration3 = tree.children[0].children[0].children[0].children[0]
    assert declaration3.children[0].kind == N_VAR_DEC
    assert declaration3.children[0].children[0].kind == N_TYPE_SPECIFIER
    assert declaration3.children[0].children[1].kind == T_ID
    assert declaration3.children[0].children[2].kind == T_LBRACK
    assert declaration3.children[0].children[3].kind == T_NUM
    assert declaration3.children[0].children[4].kind == T_RBRACK
    assert declaration3.children[0].children[5].kind == T_SEMICOL
    print(declaration1)
    print(declaration2)
    print(declaration3)
Beispiel #3
0
def test_parse_expression():
    parser = MuddParser(
        'tests/bpl_files/test_parse_expression.bpl'
        )
    tree = parser.parse()
    fun_dec = tree.children[0].children[0].children[0]
    statement_list = fun_dec.children[5].children[2]
    statement1 = statement_list.children[1]
    expression1 = statement1.children[0].children[0]
    assert expression1.children[0].kind == N_VAR
    assert expression1.children[0].children[0].kind == T_MUL
    assert expression1.children[0].children[1].kind == T_ID
    assert expression1.children[1].kind == T_ASSIGN
    assert expression1.children[2].kind == N_EXPRESSION
    statement2 = statement_list.children[0].children[1]
    expression2 = statement2.children[0].children[0]
    assert expression2.children[0].kind == N_VAR
    assert expression2.children[0].children[0].kind == T_ID
    assert expression2.children[0].children[2].kind == N_EXPRESSION
    assert expression2.children[1].kind == T_ASSIGN
    assert expression2.children[2].kind == N_EXPRESSION
    statement3 = statement_list.children[0].children[0].children[1]
    expression3 = statement3.children[0].children[0]
    assert expression3.children[0].kind == N_VAR
    assert expression3.children[0].children[0].kind == T_ID
    assert expression3.children[1].kind == T_ASSIGN
    assert expression3.children[2].kind == N_EXPRESSION
    print(expression1)
    print(expression2)
    print(expression3)
Beispiel #4
0
def test_parse_var_dec():
    parser = MuddParser(
        'tests/bpl_files/test_parse_variable_declaration.bpl'
        )
    tree = parser.parse()
    assert tree.kind == N_PROGRAM
    assert tree.children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[1].kind == N_DECLARATION
    declaration1 = tree.children[0].children[1]
    assert declaration1.children[0].kind == N_VAR_DEC
    assert declaration1.children[0].children[0].kind == N_TYPE_SPECIFIER
    assert declaration1.children[0].children[1].kind == T_ID
    assert declaration1.children[0].children[2].kind == T_SEMICOL
    declaration2 = tree.children[0].children[0].children[1]
    assert declaration2.children[0].kind == N_VAR_DEC
    assert declaration2.children[0].children[0].kind == N_TYPE_SPECIFIER
    assert declaration2.children[0].children[1].kind == T_MUL
    assert declaration2.children[0].children[2].kind == T_ID
    assert declaration2.children[0].children[3].kind == T_SEMICOL
    declaration3 = tree.children[0].children[0].children[0].children[0]
    assert declaration3.children[0].kind == N_VAR_DEC
    assert declaration3.children[0].children[0].kind == N_TYPE_SPECIFIER
    assert declaration3.children[0].children[1].kind == T_ID
    assert declaration3.children[0].children[2].kind == T_LBRACK
    assert declaration3.children[0].children[3].kind == T_NUM
    assert declaration3.children[0].children[4].kind == T_RBRACK
    assert declaration3.children[0].children[5].kind == T_SEMICOL
    print(declaration1)
    print(declaration2)
    print(declaration3)
Beispiel #5
0
def test_parse_declaration():
    parser = MuddParser('tests/bpl_files/test_parse_variable_declaration.bpl')
    tree = parser.parse()
    assert tree.kind == N_PROGRAM
    assert tree.children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[1].kind == N_DECLARATION
    print(tree)
Beispiel #6
0
def test_parse_comp_exp():
    parser = MuddParser('tests/bpl_files/test_parse_expression.bpl')
    tree = parser.parse()
    fun_dec = tree.children[0].children[0].children[0]
    base_statement_list = fun_dec.children[5].children[2]
    statement_list = base_statement_list.children[0].children[0].children[0]
    statement = statement_list.children[1]
    expression = statement.children[0].children[0]
    comp_exp = expression.children[0]
    assert comp_exp.kind == N_COMP_EXP
Beispiel #7
0
def test_parse_declaration():
    parser = MuddParser(
        'tests/bpl_files/test_parse_variable_declaration.bpl'
        )
    tree = parser.parse()
    assert tree.kind == N_PROGRAM
    assert tree.children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[1].kind == N_DECLARATION
    print(tree)
Beispiel #8
0
def test_parse_comp_exp():
    parser = MuddParser(
        'tests/bpl_files/test_parse_expression.bpl'
        )
    tree = parser.parse()
    fun_dec = tree.children[0].children[0].children[0]
    base_statement_list = fun_dec.children[5].children[2]
    statement_list = base_statement_list.children[0].children[0].children[0]
    statement = statement_list.children[1]
    expression = statement.children[0].children[0]
    comp_exp = expression.children[0]
    assert comp_exp.kind == N_COMP_EXP
Beispiel #9
0
def test_parse_while_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl')
    tree = parser.parse()
    compound_stmt = tree.children[0].children[0].children[0].children[5]
    while_statement = compound_stmt.children[2].children[1].children[0]
    assert while_statement.children[0].kind == T_WHILE
    assert while_statement.children[1].kind == T_LPAREN
    assert while_statement.children[2].kind == N_EXPRESSION
    assert while_statement.children[3].kind == T_RPAREN
    assert while_statement.children[4].kind == N_STATEMENT
    print(while_statement)
Beispiel #10
0
def test_parse_while_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl'
        )
    tree = parser.parse()
    compound_stmt = tree.children[0].children[0].children[0].children[5]
    while_statement = compound_stmt.children[2].children[1].children[0]
    assert while_statement.children[0].kind == T_WHILE
    assert while_statement.children[1].kind == T_LPAREN
    assert while_statement.children[2].kind == N_EXPRESSION
    assert while_statement.children[3].kind == T_RPAREN
    assert while_statement.children[4].kind == N_STATEMENT
    print(while_statement)
Beispiel #11
0
def test_parse_local_decs():
    parser = MuddParser('tests/bpl_files/test_parse_local_decs.bpl')
    tree = parser.parse()
    fun_dec1 = tree.children[0].children[1].children[0]
    assert fun_dec1.children[5].kind == N_COMPOUND_STMT
    compound_stmt1 = fun_dec1.children[5]
    local_decs1 = compound_stmt1.children[1]
    assert not local_decs1.children
    fun_dec2 = tree.children[0].children[0].children[0].children[0]
    assert fun_dec2.children[5].kind == N_COMPOUND_STMT
    compound_stmt2 = fun_dec2.children[5]
    local_decs2 = compound_stmt2.children[1]
    assert local_decs2.children[1].kind == N_VAR_DEC
    assert local_decs2.children[0].children[1].kind == N_VAR_DEC
    print(local_decs1)
    print(local_decs2)
Beispiel #12
0
def test_parse_return_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl')
    tree = parser.parse()
    compound_stmt = tree.children[0].children[0].children[0].children[5]
    return_statement = compound_stmt.children[2].children[0].children[
        0].children[0].children[1].children[0]
    assert return_statement.children[0].kind == T_RETURN
    assert return_statement.children[1].kind == T_SEMICOL
    return_statement2 = compound_stmt.children[2].children[0].children[
        0].children[0].children[0].children[1].children[0]
    assert return_statement2.children[0].kind == T_RETURN
    assert return_statement2.children[1].kind == N_EXPRESSION
    assert return_statement2.children[2].kind == T_SEMICOL
    print(return_statement)
    print(return_statement2)
Beispiel #13
0
def test_parse_local_decs():
    parser = MuddParser(
        'tests/bpl_files/test_parse_local_decs.bpl'
        )
    tree = parser.parse()
    fun_dec1 = tree.children[0].children[1].children[0]
    assert fun_dec1.children[5].kind == N_COMPOUND_STMT
    compound_stmt1 = fun_dec1.children[5]
    local_decs1 = compound_stmt1.children[1]
    assert not local_decs1.children
    fun_dec2 = tree.children[0].children[0].children[0].children[0]
    assert fun_dec2.children[5].kind == N_COMPOUND_STMT
    compound_stmt2 = fun_dec2.children[5]
    local_decs2 = compound_stmt2.children[1]
    assert local_decs2.children[1].kind == N_VAR_DEC
    assert local_decs2.children[0].children[1].kind == N_VAR_DEC
    print(local_decs1)
    print(local_decs2)
Beispiel #14
0
def test_parse_return_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl'
        )
    tree = parser.parse()
    compound_stmt = tree.children[0].children[0].children[0].children[5]
    return_statement = compound_stmt.children[
        2].children[0].children[0].children[0].children[1].children[0]
    assert return_statement.children[0].kind == T_RETURN
    assert return_statement.children[1].kind == T_SEMICOL
    return_statement2 = compound_stmt.children[
        2].children[0].children[0].children[0].children[
            0].children[1].children[0]
    assert return_statement2.children[0].kind == T_RETURN
    assert return_statement2.children[1].kind == N_EXPRESSION
    assert return_statement2.children[2].kind == T_SEMICOL
    print(return_statement)
    print(return_statement2)
Beispiel #15
0
def test_parse_statement_only_compound_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl')
    tree = parser.parse()

    assert tree.kind == N_PROGRAM
    assert tree.children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[0].kind == N_DECLARATION
    assert tree.children[0].children[0].children[0].kind == N_FUN_DEC
    fun_dec = tree.children[0].children[0].children[0]
    assert fun_dec.children[5].kind == N_COMPOUND_STMT
    compound_stmt = fun_dec.children[5]
    assert compound_stmt.children[0].kind == T_LCURLY
    assert compound_stmt.children[1].kind == N_LOCAL_DECS
    assert compound_stmt.children[2].kind == N_STATEMENT_LIST
    assert compound_stmt.children[2].children[0].kind == N_STATEMENT_LIST
    assert compound_stmt.children[2].children[1].kind == N_STATEMENT
    assert compound_stmt.children[3].kind == T_RCURLY
Beispiel #16
0
def test_parse_fun_call():
    parser = MuddParser('tests/bpl_files/test_parse_expression.bpl')
    tree = parser.parse()
    fun_dec = tree.children[0].children[0].children[0]
    base_statement_list = fun_dec.children[5].children[2]
    statement_list = base_statement_list.children[0].children[0].children[
        0].children[0]
    statement = statement_list.children[1]
    expression = statement.children[0].children[0]
    comp_exp = expression.children[0]
    fun_call = comp_exp.children[0].children[0].children[0].children[
        0].children[0]
    assert fun_call.kind == N_FUN_CALL
    assert fun_call.children[0].kind == T_ID
    assert fun_call.children[2].kind == N_ARGS
    arg_list = fun_call.children[2].children[0]
    assert arg_list.children[2].kind == N_EXPRESSION
    assert arg_list.children[0].children[0].kind == N_EXPRESSION
    print(fun_call)
Beispiel #17
0
def test_parse_statement_only_compound_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl'
        )
    tree = parser.parse()

    assert tree.kind == N_PROGRAM
    assert tree.children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[0].kind == N_DECLARATION
    assert tree.children[0].children[0].children[0].kind == N_FUN_DEC
    fun_dec = tree.children[0].children[0].children[0]
    assert fun_dec.children[5].kind == N_COMPOUND_STMT
    compound_stmt = fun_dec.children[5]
    assert compound_stmt.children[0].kind == T_LCURLY
    assert compound_stmt.children[1].kind == N_LOCAL_DECS
    assert compound_stmt.children[2].kind == N_STATEMENT_LIST
    assert compound_stmt.children[2].children[0].kind == N_STATEMENT_LIST
    assert compound_stmt.children[2].children[1].kind == N_STATEMENT
    assert compound_stmt.children[3].kind == T_RCURLY
Beispiel #18
0
def test_parse_fun_call():
    parser = MuddParser(
        'tests/bpl_files/test_parse_expression.bpl'
        )
    tree = parser.parse()
    fun_dec = tree.children[0].children[0].children[0]
    base_statement_list = fun_dec.children[5].children[2]
    statement_list = base_statement_list.children[
        0].children[0].children[0].children[0]
    statement = statement_list.children[1]
    expression = statement.children[0].children[0]
    comp_exp = expression.children[0]
    fun_call = comp_exp.children[
        0].children[0].children[0].children[0].children[0]
    assert fun_call.kind == N_FUN_CALL
    assert fun_call.children[0].kind == T_ID
    assert fun_call.children[2].kind == N_ARGS
    arg_list = fun_call.children[2].children[0]
    assert arg_list.children[2].kind == N_EXPRESSION
    assert arg_list.children[0].children[0].kind == N_EXPRESSION
    print(fun_call)
Beispiel #19
0
def test_parse_write_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl')
    tree = parser.parse()
    compound_stmt = tree.children[0].children[0].children[0].children[5]
    write_statement = compound_stmt.children[2].children[0].children[
        0].children[0].children[0].children[0].children[1].children[0]
    assert write_statement.children[0].kind == T_WRITE
    assert write_statement.children[1].kind == T_LPAREN
    assert write_statement.children[2].kind == N_EXPRESSION
    assert write_statement.children[3].kind == T_RPAREN
    assert write_statement.children[4].kind == T_SEMICOL
    writeln_statement = compound_stmt.children[2].children[0].children[
        0].children[0].children[0].children[0].children[0].children[
            1].children[0]
    assert writeln_statement.children[0].kind == T_WRITELN
    assert writeln_statement.children[1].kind == T_LPAREN
    assert writeln_statement.children[2].kind == T_RPAREN
    assert writeln_statement.children[3].kind == T_SEMICOL
    print(write_statement)
    print(writeln_statement)
Beispiel #20
0
def test_parse_fun_dec():
    parser = MuddParser(
        'tests/bpl_files/test_parse_function_declaration.bpl'
        )
    tree = parser.parse()
    assert tree.kind == N_PROGRAM
    assert tree.children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[1].kind == N_DECLARATION
    declaration1 = tree.children[0].children[1]
    assert declaration1.children[0].kind == N_FUN_DEC
    assert declaration1.children[0].children[0].kind == N_TYPE_SPECIFIER
    assert declaration1.children[0].children[1].kind == T_ID
    assert declaration1.children[0].children[2].kind == T_LPAREN
    assert declaration1.children[0].children[3].kind == N_PARAMS
    assert declaration1.children[0].children[4].kind == T_RPAREN
    assert declaration1.children[0].children[5].kind == N_COMPOUND_STMT
    void_params = declaration1.children[0].children[3]
    assert void_params.children[0].kind == T_VOID
    declaration2 = tree.children[0].children[0].children[0]
    param_list_params = declaration2.children[0].children[3]
    assert param_list_params.children[0].kind == N_PARAM_LIST
    array_param = param_list_params.children[0].children[2]
    assert array_param.children[0].kind == N_TYPE_SPECIFIER
    assert array_param.children[1].kind == T_ID
    assert array_param.children[2].kind == T_LBRACK
    assert array_param.children[3].kind == T_RBRACK
    pointer_param = param_list_params.children[0].children[0].children[2]
    assert pointer_param.children[0].kind == N_TYPE_SPECIFIER
    assert pointer_param.children[1].kind == T_MUL
    assert pointer_param.children[2].kind == T_ID
    id_param = param_list_params.children[
        0].children[0].children[0].children[0]
    assert id_param.children[0].kind == N_TYPE_SPECIFIER
    assert id_param.children[1].kind == T_ID
    print(void_params)
    print(array_param)
    print(pointer_param)
    print(id_param)
Beispiel #21
0
def test_parse_if_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl')
    tree = parser.parse()
    compound_stmt = tree.children[0].children[0].children[0].children[5]
    if_statement = compound_stmt.children[2].children[0].children[0].children[
        1].children[0]
    assert if_statement.children[0].kind == T_IF
    assert if_statement.children[1].kind == T_LPAREN
    assert if_statement.children[2].kind == N_EXPRESSION
    assert if_statement.children[3].kind == T_RPAREN
    assert if_statement.children[4].kind == N_STATEMENT
    if_else_statement = compound_stmt.children[2].children[0].children[
        1].children[0]
    assert if_else_statement.children[0].kind == T_IF
    assert if_else_statement.children[1].kind == T_LPAREN
    assert if_else_statement.children[2].kind == N_EXPRESSION
    assert if_else_statement.children[3].kind == T_RPAREN
    assert if_else_statement.children[4].kind == N_STATEMENT
    assert if_else_statement.children[5].kind == T_ELSE
    assert if_else_statement.children[6].kind == N_STATEMENT
    print(if_statement)
    print(if_else_statement)
Beispiel #22
0
def test_parse_write_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl'
        )
    tree = parser.parse()
    compound_stmt = tree.children[0].children[0].children[0].children[5]
    write_statement = compound_stmt.children[
        2].children[0].children[0].children[0].children[
            0].children[0].children[1].children[0]
    assert write_statement.children[0].kind == T_WRITE
    assert write_statement.children[1].kind == T_LPAREN
    assert write_statement.children[2].kind == N_EXPRESSION
    assert write_statement.children[3].kind == T_RPAREN
    assert write_statement.children[4].kind == T_SEMICOL
    writeln_statement = compound_stmt.children[
        2].children[0].children[0].children[0].children[
            0].children[0].children[0].children[1].children[0]
    assert writeln_statement.children[0].kind == T_WRITELN
    assert writeln_statement.children[1].kind == T_LPAREN
    assert writeln_statement.children[2].kind == T_RPAREN
    assert writeln_statement.children[3].kind == T_SEMICOL
    print(write_statement)
    print(writeln_statement)
Beispiel #23
0
def test_parse_fun_dec():
    parser = MuddParser('tests/bpl_files/test_parse_function_declaration.bpl')
    tree = parser.parse()
    assert tree.kind == N_PROGRAM
    assert tree.children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[0].kind == N_DECLARATION_LIST
    assert tree.children[0].children[1].kind == N_DECLARATION
    declaration1 = tree.children[0].children[1]
    assert declaration1.children[0].kind == N_FUN_DEC
    assert declaration1.children[0].children[0].kind == N_TYPE_SPECIFIER
    assert declaration1.children[0].children[1].kind == T_ID
    assert declaration1.children[0].children[2].kind == T_LPAREN
    assert declaration1.children[0].children[3].kind == N_PARAMS
    assert declaration1.children[0].children[4].kind == T_RPAREN
    assert declaration1.children[0].children[5].kind == N_COMPOUND_STMT
    void_params = declaration1.children[0].children[3]
    assert void_params.children[0].kind == T_VOID
    declaration2 = tree.children[0].children[0].children[0]
    param_list_params = declaration2.children[0].children[3]
    assert param_list_params.children[0].kind == N_PARAM_LIST
    array_param = param_list_params.children[0].children[2]
    assert array_param.children[0].kind == N_TYPE_SPECIFIER
    assert array_param.children[1].kind == T_ID
    assert array_param.children[2].kind == T_LBRACK
    assert array_param.children[3].kind == T_RBRACK
    pointer_param = param_list_params.children[0].children[0].children[2]
    assert pointer_param.children[0].kind == N_TYPE_SPECIFIER
    assert pointer_param.children[1].kind == T_MUL
    assert pointer_param.children[2].kind == T_ID
    id_param = param_list_params.children[0].children[0].children[0].children[
        0]
    assert id_param.children[0].kind == N_TYPE_SPECIFIER
    assert id_param.children[1].kind == T_ID
    print(void_params)
    print(array_param)
    print(pointer_param)
    print(id_param)
Beispiel #24
0
def test_parse_if_statement():
    parser = MuddParser(
        'tests/bpl_files/test_parse_statement_only_compound_statement.bpl'
        )
    tree = parser.parse()
    compound_stmt = tree.children[0].children[0].children[0].children[5]
    if_statement = compound_stmt.children[
        2].children[0].children[0].children[1].children[0]
    assert if_statement.children[0].kind == T_IF
    assert if_statement.children[1].kind == T_LPAREN
    assert if_statement.children[2].kind == N_EXPRESSION
    assert if_statement.children[3].kind == T_RPAREN
    assert if_statement.children[4].kind == N_STATEMENT
    if_else_statement = compound_stmt.children[
        2].children[0].children[1].children[0]
    assert if_else_statement.children[0].kind == T_IF
    assert if_else_statement.children[1].kind == T_LPAREN
    assert if_else_statement.children[2].kind == N_EXPRESSION
    assert if_else_statement.children[3].kind == T_RPAREN
    assert if_else_statement.children[4].kind == N_STATEMENT
    assert if_else_statement.children[5].kind == T_ELSE
    assert if_else_statement.children[6].kind == N_STATEMENT
    print(if_statement)
    print(if_else_statement)