diff options
author | John Hodge <tpg@mutabah.net> | 2015-09-26 19:28:49 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2015-09-26 19:28:49 +0800 |
commit | 0121cefaec3f14a5f35ac84321787e01849585e0 (patch) | |
tree | 3b1109d2be98b62703e673bfd4462839dc0abb79 | |
parent | 29f62819ac26ea27c02a9ac8adbb6470fcd056a1 (diff) | |
download | mrust-0121cefaec3f14a5f35ac84321787e01849585e0.tar.gz |
Successfully parses libcore
-rw-r--r-- | bnf/main.cpp | 2 | ||||
-rw-r--r-- | bnf/rust.lex | 3 | ||||
-rw-r--r-- | bnf/rust.y | 6 | ||||
-rw-r--r-- | bnf/rust_expr.y.h | 2 | ||||
-rw-r--r-- | bnf/rust_expr.y_tree.h | 26 | ||||
-rw-r--r-- | bnf/rust_tts.y.h | 2 |
6 files changed, 22 insertions, 19 deletions
diff --git a/bnf/main.cpp b/bnf/main.cpp index 020ff0f6..37d84985 100644 --- a/bnf/main.cpp +++ b/bnf/main.cpp @@ -131,6 +131,8 @@ int main(int argc, char *argv[]) { post_process_module(*mod, base_filename, base_path); + printf("Crate parsed\n"); + return 0; } void yyerror(ParserContext& context, const char *s) { diff --git a/bnf/rust.lex b/bnf/rust.lex index 6d744485..1151aa32 100644 --- a/bnf/rust.lex +++ b/bnf/rust.lex @@ -32,7 +32,7 @@ void handle_block_comment(); dec_digit [0-9_] ident_c [a-zA-Z_] -int_suffix ([ui](size|8|16|32))? +int_suffix ([ui](size|8|16|32|64))? %% @@ -96,6 +96,7 @@ int_suffix ([ui](size|8|16|32))? "|=" { return PIPEEQUAL; } "&=" { return AMPEQUAL; } +"^=" { return CARETEQUAL; } "&&" { return DOUBLEAMP; } "||" { return DOUBLEPIPE; } @@ -25,7 +25,7 @@ %token HASHBANG %token DOUBLECOLON THINARROW FATARROW DOUBLEDOT TRIPLEDOT %token DOUBLEEQUAL EXCLAMEQUAL DOUBLEPIPE DOUBLEAMP -%token PIPEEQUAL AMPEQUAL +%token PIPEEQUAL AMPEQUAL CARETEQUAL %token GTEQUAL LTEQUAL %token PLUSEQUAL MINUSEQUAL STAREQUAL SLASHEQUAL PERCENTEQUAL %token DOUBLELT DOUBLEGT DOUBLELTEQUAL DOUBLEGTEQUAL @@ -125,7 +125,7 @@ opt_pub | RWD_pub { $$ = true; bnf_trace(context, "public"); } ; opt_comma: | ','; -opt_semicolon: | ';'; +/*opt_semicolon: | ';';*/ opt_unsafe: | RWD_unsafe; opt_lifetime: { $$ = nullptr; } | LIFETIME; @@ -440,7 +440,7 @@ type_path_segs type_path_seg : IDENT | IDENT type_args - | IDENT type_args + /*| IDENT type_args*/ ; type_exprs: type_exprs ',' type_arg | type_arg; type_arg: type | LIFETIME | IDENT '=' type; diff --git a/bnf/rust_expr.y.h b/bnf/rust_expr.y.h index 7b3494c8..9cb3621f 100644 --- a/bnf/rust_expr.y.h +++ b/bnf/rust_expr.y.h @@ -1,5 +1,5 @@ -assign_op: '=' | PLUSEQUAL | MINUSEQUAL | STAREQUAL | SLASHEQUAL | DOUBLELTEQUAL | DOUBLEGTEQUAL | PIPEEQUAL | AMPEQUAL; +assign_op: '=' | PLUSEQUAL | MINUSEQUAL | STAREQUAL | SLASHEQUAL | DOUBLELTEQUAL | DOUBLEGTEQUAL | PIPEEQUAL | AMPEQUAL | CARETEQUAL; closure_arg_list: | closure_arg_list_; closure_arg_list_ diff --git a/bnf/rust_expr.y_tree.h b/bnf/rust_expr.y_tree.h index 756e5e4a..0687790d 100644 --- a/bnf/rust_expr.y_tree.h +++ b/bnf/rust_expr.y_tree.h @@ -55,23 +55,23 @@ _(expr_8) | _(expr_8) DOUBLEGT _(expr_9) {} ; _(expr_9) - : _(expr_cast) - | _(expr_9) '+' _(expr_cast) {} - | _(expr_9) '-' _(expr_cast) {} + : _(expr_10) + | _(expr_9) '+' _(expr_10) {} + | _(expr_9) '-' _(expr_10) {} ; -/* 10: Cast */ +/* 10: Times/Div/Modulo */ +_(expr_10) + : _(expr_10n) + | _(expr_10) '*' _(expr_10n) {} + | _(expr_10) '/' _(expr_10n) {} + | _(expr_10) '%' _(expr_10n) {} + ; +_(expr_10n): _(expr_cast); +/* 11: Cast */ _(expr_cast) - : _(expr_11) + : _(expr_12) | _(expr_cast) RWD_as type_ele { bnf_trace(context, "expr:cast"); } ; -/* 11: Times/Div/Modulo */ -_(expr_11) - : _(expr_11n) - | _(expr_11) '*' _(expr_11n) {} - | _(expr_11) '/' _(expr_11n) {} - | _(expr_11) '%' _(expr_11n) {} - ; -_(expr_11n): _(expr_12); _(expr_12) : _(expr_fc) | '-' _(expr_12) diff --git a/bnf/rust_tts.y.h b/bnf/rust_tts.y.h index dc930120..1cd84318 100644 --- a/bnf/rust_tts.y.h +++ b/bnf/rust_tts.y.h @@ -20,7 +20,7 @@ tt_tok | _C('&') | _T(DOUBLEAMP) | _T(AMPEQUAL) | _C('|') | _T(DOUBLEPIPE) | _T(PIPEEQUAL) | _C(':') | _T(DOUBLECOLON) - | _C('^') + | _C('^') | _T(CARETEQUAL) | _C('=') | _T(DOUBLEEQUAL) | _T(FATARROW) | _C('<') | _T(DOUBLELT) | _T(LTEQUAL) | _T(DOUBLELTEQUAL) | _C('>') | _T(DOUBLEGT) | _T(GTEQUAL) | _T(DOUBLEGTEQUAL) |