diff options
author | Aleksey Kladov <[email protected]> | 2018-07-31 22:19:04 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-07-31 22:19:04 +0100 |
commit | 2bbd4c510d2da5c78f566b28e90548102bb107dc (patch) | |
tree | e830242471940c556d3feb5e0cf20fdd8aaec8bc /src/grammar | |
parent | a750135a0ac5a42035a1baa808e0af8ae562cd72 (diff) |
not expr
Diffstat (limited to 'src/grammar')
-rw-r--r-- | src/grammar/expressions.rs | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/grammar/expressions.rs b/src/grammar/expressions.rs index ed9236b02..c638e8b99 100644 --- a/src/grammar/expressions.rs +++ b/src/grammar/expressions.rs | |||
@@ -103,11 +103,13 @@ fn let_stmt(p: &mut Parser) { | |||
103 | } | 103 | } |
104 | 104 | ||
105 | fn prefix_expr(p: &mut Parser) -> Option<CompletedMarker> { | 105 | fn prefix_expr(p: &mut Parser) -> Option<CompletedMarker> { |
106 | match p.current() { | 106 | let done = match p.current() { |
107 | AMPERSAND => Some(ref_expr(p)), | 107 | AMPERSAND => ref_expr(p), |
108 | STAR => Some(deref_expr(p)), | 108 | STAR => deref_expr(p), |
109 | _ => atom_expr(p), | 109 | EXCL => not_expr(p), |
110 | } | 110 | _ => return atom_expr(p), |
111 | }; | ||
112 | Some(done) | ||
111 | } | 113 | } |
112 | 114 | ||
113 | // test ref_expr | 115 | // test ref_expr |
@@ -136,6 +138,18 @@ fn deref_expr(p: &mut Parser) -> CompletedMarker { | |||
136 | m.complete(p, DEREF_EXPR) | 138 | m.complete(p, DEREF_EXPR) |
137 | } | 139 | } |
138 | 140 | ||
141 | // test not_expr | ||
142 | // fn foo() { | ||
143 | // !!true; | ||
144 | // } | ||
145 | fn not_expr(p: &mut Parser) -> CompletedMarker { | ||
146 | assert!(p.at(EXCL)); | ||
147 | let m = p.start(); | ||
148 | p.bump(); | ||
149 | expr(p); | ||
150 | m.complete(p, NOT_EXPR) | ||
151 | } | ||
152 | |||
139 | fn atom_expr(p: &mut Parser) -> Option<CompletedMarker> { | 153 | fn atom_expr(p: &mut Parser) -> Option<CompletedMarker> { |
140 | match literal(p) { | 154 | match literal(p) { |
141 | Some(m) => return Some(m), | 155 | Some(m) => return Some(m), |