aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-07-31 10:32:53 +0100
committerAleksey Kladov <[email protected]>2018-07-31 10:32:53 +0100
commitff71cb1f6de07479610fb0f45e740b249e8a01c6 (patch)
tree29df6315075f7e0339e8687a78a5bfcef776f900 /src
parentc244dd10343ff96a73879c593bd9253c4073cb90 (diff)
Introduce param & arg list
Diffstat (limited to 'src')
-rw-r--r--src/grammar.ron3
-rw-r--r--src/parser/grammar/expressions.rs9
-rw-r--r--src/parser/grammar/mod.rs2
-rw-r--r--src/syntax_kinds/generated.rs4
4 files changed, 17 insertions, 1 deletions
diff --git a/src/grammar.ron b/src/grammar.ron
index 5b8a9219c..f640ccb7b 100644
--- a/src/grammar.ron
+++ b/src/grammar.ron
@@ -151,5 +151,8 @@ Grammar(
151 "LIFETIME_PARAM", 151 "LIFETIME_PARAM",
152 "TYPE_PARAM_LIST", 152 "TYPE_PARAM_LIST",
153 "TYPE_ARG_LIST", 153 "TYPE_ARG_LIST",
154
155 "PARAM_LIST",
156 "ARG_LIST",
154 ] 157 ]
155) 158)
diff --git a/src/parser/grammar/expressions.rs b/src/parser/grammar/expressions.rs
index 92aaafa3d..7991b1921 100644
--- a/src/parser/grammar/expressions.rs
+++ b/src/parser/grammar/expressions.rs
@@ -70,6 +70,13 @@ fn tuple_expr(p: &mut Parser) -> CompletedMarker {
70fn call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { 70fn call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
71 assert!(p.at(L_PAREN)); 71 assert!(p.at(L_PAREN));
72 let m = lhs.precede(p); 72 let m = lhs.precede(p);
73 arg_list(p);
74 m.complete(p, CALL_EXPR)
75}
76
77fn arg_list(p: &mut Parser) {
78 assert!(p.at(L_PAREN));
79 let m = p.start();
73 p.bump(); 80 p.bump();
74 while !p.at(R_PAREN) && !p.at(EOF) { 81 while !p.at(R_PAREN) && !p.at(EOF) {
75 expr(p); 82 expr(p);
@@ -78,7 +85,7 @@ fn call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
78 } 85 }
79 } 86 }
80 p.eat(R_PAREN); 87 p.eat(R_PAREN);
81 m.complete(p, CALL_EXPR) 88 m.complete(p, ARG_LIST);
82} 89}
83 90
84// test path_expr 91// test path_expr
diff --git a/src/parser/grammar/mod.rs b/src/parser/grammar/mod.rs
index 63ad2782e..c2da775a2 100644
--- a/src/parser/grammar/mod.rs
+++ b/src/parser/grammar/mod.rs
@@ -99,6 +99,7 @@ fn abi(p: &mut Parser) {
99// fn d(x: i32, y: ()) {} 99// fn d(x: i32, y: ()) {}
100fn fn_value_parameters(p: &mut Parser) { 100fn fn_value_parameters(p: &mut Parser) {
101 assert!(p.at(L_PAREN)); 101 assert!(p.at(L_PAREN));
102 let m = p.start();
102 p.bump(); 103 p.bump();
103 while !p.at(EOF) && !p.at(R_PAREN) { 104 while !p.at(EOF) && !p.at(R_PAREN) {
104 value_parameter(p); 105 value_parameter(p);
@@ -107,6 +108,7 @@ fn fn_value_parameters(p: &mut Parser) {
107 } 108 }
108 } 109 }
109 p.expect(R_PAREN); 110 p.expect(R_PAREN);
111 m.complete(p, PARAM_LIST);
110 112
111 fn value_parameter(p: &mut Parser) { 113 fn value_parameter(p: &mut Parser) {
112 let m = p.start(); 114 let m = p.start();
diff --git a/src/syntax_kinds/generated.rs b/src/syntax_kinds/generated.rs
index 1d0f1b724..986df7814 100644
--- a/src/syntax_kinds/generated.rs
+++ b/src/syntax_kinds/generated.rs
@@ -140,6 +140,8 @@ pub enum SyntaxKind {
140 LIFETIME_PARAM, 140 LIFETIME_PARAM,
141 TYPE_PARAM_LIST, 141 TYPE_PARAM_LIST,
142 TYPE_ARG_LIST, 142 TYPE_ARG_LIST,
143 PARAM_LIST,
144 ARG_LIST,
143 // Technical SyntaxKinds: they appear temporally during parsing, 145 // Technical SyntaxKinds: they appear temporally during parsing,
144 // but never end up in the final tree 146 // but never end up in the final tree
145 #[doc(hidden)] 147 #[doc(hidden)]
@@ -287,6 +289,8 @@ impl SyntaxKind {
287 LIFETIME_PARAM => &SyntaxInfo { name: "LIFETIME_PARAM" }, 289 LIFETIME_PARAM => &SyntaxInfo { name: "LIFETIME_PARAM" },
288 TYPE_PARAM_LIST => &SyntaxInfo { name: "TYPE_PARAM_LIST" }, 290 TYPE_PARAM_LIST => &SyntaxInfo { name: "TYPE_PARAM_LIST" },
289 TYPE_ARG_LIST => &SyntaxInfo { name: "TYPE_ARG_LIST" }, 291 TYPE_ARG_LIST => &SyntaxInfo { name: "TYPE_ARG_LIST" },
292 PARAM_LIST => &SyntaxInfo { name: "PARAM_LIST" },
293 ARG_LIST => &SyntaxInfo { name: "ARG_LIST" },
290 TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" }, 294 TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" },
291 EOF => &SyntaxInfo { name: "EOF" }, 295 EOF => &SyntaxInfo { name: "EOF" },
292 } 296 }