diff options
Diffstat (limited to 'src/parser/grammar/expressions.rs')
-rw-r--r-- | src/parser/grammar/expressions.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/parser/grammar/expressions.rs b/src/parser/grammar/expressions.rs index 3704cb16f..2145b8d8b 100644 --- a/src/parser/grammar/expressions.rs +++ b/src/parser/grammar/expressions.rs | |||
@@ -14,7 +14,20 @@ pub(super) fn literal(p: &mut Parser) -> bool { | |||
14 | } | 14 | } |
15 | 15 | ||
16 | pub(super) fn expr(p: &mut Parser) { | 16 | pub(super) fn expr(p: &mut Parser) { |
17 | if !literal(p) { | 17 | if literal(p) { |
18 | p.error("expected expression"); | 18 | return; |
19 | } | 19 | } |
20 | |||
21 | match p.current() { | ||
22 | L_PAREN => tuple_expr(p), | ||
23 | _ => p.error("expected expression"), | ||
24 | } | ||
25 | } | ||
26 | |||
27 | fn tuple_expr(p: &mut Parser) { | ||
28 | assert!(p.at(L_PAREN)); | ||
29 | let m = p.start(); | ||
30 | p.expect(L_PAREN); | ||
31 | p.expect(R_PAREN); | ||
32 | m.complete(p, TUPLE_EXPR); | ||
20 | } | 33 | } |