diff options
| author | Paul Stansifer <paul.stansifer@gmail.com> | 2012-07-10 16:37:44 -0700 |
|---|---|---|
| committer | Paul Stansifer <paul.stansifer@gmail.com> | 2012-07-11 12:06:47 -0700 |
| commit | f3e874635fa4acb021947d482a7c3a32090e5910 (patch) | |
| tree | 43a65d7589ba1903f86172cbae90825b366d605f /src/libsyntax | |
| parent | bf88ff52178d1703c473c4ee9461348bbf4be7a2 (diff) | |
| download | rust-f3e874635fa4acb021947d482a7c3a32090e5910.tar.gz rust-f3e874635fa4acb021947d482a7c3a32090e5910.zip | |
Fix (I think!) the ACTUALLY expr parsing situation.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 36 |
1 files changed, 4 insertions, 32 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 89854f19600..1a60d46f5e5 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -101,24 +101,7 @@ type item_info = (ident, item_, option<~[attribute]>); fn dummy() { -/* We need to position the macros to capture the ACTUALLY tokens before they -get bumped away. So two bumps in a row is bad. (the first lookahead also -counts as a bump). - -Events happen L to R; 'B' indicates a bump before hand: - ._____________________________.________________________. - ↓ B| | - parse_expr -> parse_expr_res -> parse_assign_expr | - ↓ | - parse_binops -> parse_more_binops | - ↓ B↓ B| - parse_prefix_expr B-> parse_dot_or_call_expr - B|_↑ ↓ - parse_bottom_expr - B↓ - ⋯->parse_ident -...so we've hit parse_prefix_expr, parse_more_binops, and parse_bottom_expr. -*/ + #macro[[#maybe_whole_item[p], alt copy p.token { @@ -136,18 +119,9 @@ Events happen L to R; 'B' indicates a bump before hand: alt copy p.token { ACTUALLY(token::w_pat(pt)) { p.bump(); ret pt; } _ {} }]]; - #macro[[#maybe_whole_expr[p], - alt copy p.token { - ACTUALLY(token::w_expr(e)) { - p.bump(); - ret e; - } - ACTUALLY(token::w_path(pt)) { - p.bump(); - ret p.mk_expr(p.span.lo, p.span.lo, - expr_path(pt)); - } - _ {} }]]; + /* The expr situation is not as complex as I thought it would be. + The important thing is to make sure that lookahead doesn't balk + at ACTUALLY tokens */ #macro[[#maybe_whole_expr_pexpr[p], /* ack! */ alt copy p.token { ACTUALLY(token::w_expr(e)) { @@ -1302,7 +1276,6 @@ class parser { fn parse_prefix_expr() -> pexpr { - #maybe_whole_expr_pexpr[self]; let lo = self.span.lo; let mut hi; @@ -1380,7 +1353,6 @@ class parser { fn parse_more_binops(plhs: pexpr, min_prec: uint) -> @expr { - #maybe_whole_expr[self]; let lhs = self.to_expr(plhs); if self.expr_is_complete(plhs) { ret lhs; } let peeked = self.token; |
