diff --git a/tree-sitter-p4/grammar.js b/tree-sitter-p4/grammar.js index 8307220..59b8440 100644 --- a/tree-sitter-p4/grammar.js +++ b/tree-sitter-p4/grammar.js @@ -83,7 +83,7 @@ export default grammar({ variableDeclaration: $ => seq(optional($.annotations), $.typeRef, field('variable_name', $.identifier), optional(seq($.assignment, $.expression)), $._semicolon), // Control declarations - control_declaration: $ => seq($.control, $.identifier, $.parameters, '{', repeat(choice($.table_declaration, $.action_declaration)), $.apply, $.statement, '}'), + control_declaration: $ => seq($.control, $.identifier, $.parameters, '{', repeat(choice($.table_declaration, $.action_declaration)), $.apply_statement, '}'), action_declaration: $ => seq($.action, $.identifier, $.parameters, $.statement), table_declaration: $ => seq($.table, $.identifier, '{', optional($.table_property_list), '}'), @@ -107,6 +107,7 @@ export default grammar({ assignmentStatement: $=> seq($.expression, $.assignment, $.expression, $._semicolon), return_statement: $=> seq($._return, $.expression, $._semicolon), exit_statement: $=> seq($._exit, $._semicolon), + apply_statement: $=> seq($.apply, $.statement), // Parser statements parserStatements: $ => repeat1($.parserStatement), diff --git a/tree-sitter-p4/test/corpus/control.txt b/tree-sitter-p4/test/corpus/control.txt index eb03494..30dc98b 100644 --- a/tree-sitter-p4/test/corpus/control.txt +++ b/tree-sitter-p4/test/corpus/control.txt @@ -49,9 +49,11 @@ control simple() { ) ) ) - (apply) - (statement - (blockStatement) + (apply_statement + (apply) + (statement + (blockStatement) + ) ) ) ) diff --git a/tree-sitter-p4/test/corpus/statements.txt b/tree-sitter-p4/test/corpus/statements.txt index 52caba1..70f0855 100644 --- a/tree-sitter-p4/test/corpus/statements.txt +++ b/tree-sitter-p4/test/corpus/statements.txt @@ -13,12 +13,14 @@ control T() { (control) (identifier) (parameters) - (apply) - (statement - (blockStatement - (statements - (statement - (exit_statement) + (apply_statement + (apply) + (statement + (blockStatement + (statements + (statement + (exit_statement) + ) ) ) )