diff --git a/tree-sitter-p4/grammar.js b/tree-sitter-p4/grammar.js index 5bff43c..1d86d8e 100644 --- a/tree-sitter-p4/grammar.js +++ b/tree-sitter-p4/grammar.js @@ -105,7 +105,7 @@ export default grammar({ conditionalStatement: $ => choice(prec(1, seq($.if, '(', $.expression, ')', $.statement)), prec(2, seq($.if, '(', $.expression, ')', $.statement, $.else, $.statement))), expressionStatement: $=> seq($.expression, $._semicolon), assignmentStatement: $=> seq($.expression, $.assignment, $.expression, $._semicolon), - return_statement: $=> seq($.return, $.expression, $._semicolon), + return_statement: $=> seq($._return, $.expression, $._semicolon), // Parser statements parserStatements: $ => repeat1($.parserStatement), @@ -189,7 +189,7 @@ export default grammar({ parser: $ => "parser", package: $ => "package", pragma: $ => "pragma", - return: $ => "return", + _return: $ => "return", select: $ => "select", state: $ => "state", string: $ => "string", diff --git a/tree-sitter-p4/test/corpus/statements.txt b/tree-sitter-p4/test/corpus/statements.txt index 89228fb..640ecb1 100644 --- a/tree-sitter-p4/test/corpus/statements.txt +++ b/tree-sitter-p4/test/corpus/statements.txt @@ -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) ========================= parser simple() {