Exemplo n.º 1
0
def _assert_parser_result_from_token_stream(
    token_stream, expected_ast, expected_parsed
):
    tokens_list = [token for token in token_stream]

    tokens = Iterable2TokenStream( tokens_list )
    parser = PepperParser.Parser( tokens )
    parser.program()

    actual_ast = "\n"
    ast = parser.getAST()
    while ast is not None:
        actual_ast += _ast_to_string( ast )
        ast = ast.getNextSibling()

    assert_multiline_equal( expected_ast, actual_ast )

    tokens = Iterable2TokenStream( tokens_list )
    actual_parsed = "\n".join( repr( s ) for s in PepperStatements( tokens ) )
    actual_parsed += "\n"

    # TODO: format actual nicely, instead of expected nastily
    assert_multiline_equal(
        _unprettify( expected_parsed ).strip(),
        actual_parsed.strip() )