rustlr 0.3.0

LR/LALR parser generator that can automatically create abstract syntax trees
Documentation
1
2
3
test2.c, c11.grammar (with manually set type for Declarator)

abstract syntax tree after parse: translation_unit([external_declaration_276(DecSpecList(declaration_specifiers([storage(TYPEDEF), typespec(UNSIGNED), typespec(INT)]), [init_declarator { declarator: Declarator(None, IDENTIFIER("uint")), initializer: None }])), external_declaration_276(DecSpecList(declaration_specifiers([storage(TYPEDEF), typespec(LONG), typespec(LONG)]), [init_declarator { declarator: Declarator(Some(pointer { tql: [], ptr: None }), IDENTIFIER("intp64")), initializer: None }])), external_declaration_276(DecSpecList(declaration_specifiers([storage(TYPEDEF), typespec(INT)]), [init_declarator { declarator: Declarator(None, direct_declarator_169(direct_declarator_159(Declarator(Some(pointer { tql: [], ptr: None }), IDENTIFIER("predicate"))), parameter_type_list { parameters: [parameter_declaration_188(declaration_specifiers([typespec(INT)]))], ellipsis: None })), initializer: None }])), external_declaration_275(function_definition(declaration_specifiers([typespec(INT)]), Declarator(None, direct_declarator_171(IDENTIFIER("main"))), [], compound_statement { statements: [Declaration(DecSpecList(declaration_specifiers([typespec(INT)]), [init_declarator { declarator: Declarator(None, IDENTIFIER("x")), initializer: Some(initializer_224(Iconst(32))) }])), Statement(statement_241(expression_statement(Some(expressionS(expression_list([Assign(ID("uint"), Iconst(16))])))))), Statement(statement_241(expression_statement(Some(expressionS(expression_list([Assign(ID("intp64"), Iconst(324322))])))))), Statement(statement_241(expression_statement(Some(expressionS(expression_list([Assign(ID("zint"), Iconst(0))]))))))] }))])