From d4366940976a3d150a8b5bf92dc24f0162d4d62c Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 30 Jul 2018 17:02:51 +0300 Subject: Path expressions --- src/parser/grammar/expressions.rs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/parser/grammar/expressions.rs') diff --git a/src/parser/grammar/expressions.rs b/src/parser/grammar/expressions.rs index 40f41535e..ece698248 100644 --- a/src/parser/grammar/expressions.rs +++ b/src/parser/grammar/expressions.rs @@ -2,7 +2,16 @@ use super::*; // test expr_literals // fn foo() { -// let _ = 92; +// let _ = true; +// let _ = false; +// let _ = 1; +// let _ = 2.0; +// let _ = b'a'; +// let _ = 'b'; +// let _ = "c"; +// let _ = r"d"; +// let _ = b"e"; +// let _ = br"f"; // } pub(super) fn literal(p: &mut Parser) -> bool { match p.current() { @@ -21,6 +30,9 @@ pub(super) fn expr(p: &mut Parser) { if literal(p) { return; } + if paths::is_path_start(p) { + return path_expr(p); + } match p.current() { L_PAREN => tuple_expr(p), @@ -35,3 +47,16 @@ fn tuple_expr(p: &mut Parser) { p.expect(R_PAREN); m.complete(p, TUPLE_EXPR); } + +// test path_expr +// fn foo() { +// let _ = a; +// let _ = a::b; +// let _ = ::a::; +// } +fn path_expr(p: &mut Parser) { + assert!(paths::is_path_start(p)); + let m = p.start(); + paths::expr_path(p); + m.complete(p, PATH_EXPR); +} -- cgit v1.2.3