grammar: Hide the return keyword in the grammar

And, add a grammar test for the return keyword.

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
This commit is contained in:
Will Hawkins
2026-04-20 02:25:28 -04:00
parent 23e0bf5de3
commit fa1f694d76
2 changed files with 37 additions and 2 deletions
+2 -2
View File
@@ -105,7 +105,7 @@ export default grammar({
conditionalStatement: $ => choice(prec(1, seq($.if, '(', $.expression, ')', $.statement)), prec(2, seq($.if, '(', $.expression, ')', $.statement, $.else, $.statement))), conditionalStatement: $ => choice(prec(1, seq($.if, '(', $.expression, ')', $.statement)), prec(2, seq($.if, '(', $.expression, ')', $.statement, $.else, $.statement))),
expressionStatement: $=> seq($.expression, $._semicolon), expressionStatement: $=> seq($.expression, $._semicolon),
assignmentStatement: $=> seq($.expression, $.assignment, $.expression, $._semicolon), assignmentStatement: $=> seq($.expression, $.assignment, $.expression, $._semicolon),
return_statement: $=> seq($.return, $.expression, $._semicolon), return_statement: $=> seq($._return, $.expression, $._semicolon),
// Parser statements // Parser statements
parserStatements: $ => repeat1($.parserStatement), parserStatements: $ => repeat1($.parserStatement),
@@ -189,7 +189,7 @@ export default grammar({
parser: $ => "parser", parser: $ => "parser",
package: $ => "package", package: $ => "package",
pragma: $ => "pragma", pragma: $ => "pragma",
return: $ => "return", _return: $ => "return",
select: $ => "select", select: $ => "select",
state: $ => "state", state: $ => "state",
string: $ => "string", string: $ => "string",
+35
View File
@@ -1,4 +1,39 @@
========================= =========================
Return Statement
=========================
int fun() {
return 1;
};
---
(p4program
(declaration
(function_declaration
(typeRef
(baseType
(int)
)
)
(identifier)
(parameters)
(statement
(blockStatement
(statements
(statement
(return_statement
(expression
(simple_expression
(integer)
)
)
)
)
)
)
)
)
)
)
=========================
Simple If Statement (No Else) Simple If Statement (No Else)
========================= =========================
parser simple() { parser simple() {