grammar: Add exit statement
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
This commit is contained in:
@@ -100,12 +100,13 @@ export default grammar({
|
|||||||
|
|
||||||
// General statements
|
// General statements
|
||||||
statements: $ => repeat1($.statement),
|
statements: $ => repeat1($.statement),
|
||||||
statement: $ => choice($.conditionalStatement, $.blockStatement, $.expressionStatement, $.assignmentStatement, $.variableDeclaration, $.return_statement),// Limited, so far.
|
statement: $ => choice($.conditionalStatement, $.blockStatement, $.expressionStatement, $.assignmentStatement, $.variableDeclaration, $.return_statement, $.exit_statement),// Limited, so far.
|
||||||
blockStatement: $ => seq(optional($.annotations), '{', optional($.statements), '}'),
|
blockStatement: $ => seq(optional($.annotations), '{', optional($.statements), '}'),
|
||||||
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),
|
||||||
|
exit_statement: $=> seq($._exit, $._semicolon),
|
||||||
|
|
||||||
// Parser statements
|
// Parser statements
|
||||||
parserStatements: $ => repeat1($.parserStatement),
|
parserStatements: $ => repeat1($.parserStatement),
|
||||||
@@ -172,7 +173,7 @@ export default grammar({
|
|||||||
entries: $ => "entries",
|
entries: $ => "entries",
|
||||||
enum: $ => "enum",
|
enum: $ => "enum",
|
||||||
error: $ => "error",
|
error: $ => "error",
|
||||||
exit: $ => "exit",
|
_exit: $ => "exit",
|
||||||
exact: $ => "exact",
|
exact: $ => "exact",
|
||||||
extern: $ => "extern",
|
extern: $ => "extern",
|
||||||
false: $ => "false",
|
false: $ => "false",
|
||||||
|
|||||||
@@ -1,4 +1,32 @@
|
|||||||
=========================
|
=========================
|
||||||
|
Exit Statement
|
||||||
|
=========================
|
||||||
|
control T() {
|
||||||
|
apply {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
---
|
||||||
|
(p4program
|
||||||
|
(declaration
|
||||||
|
(control_declaration
|
||||||
|
(control)
|
||||||
|
(identifier)
|
||||||
|
(parameters)
|
||||||
|
(apply)
|
||||||
|
(statement
|
||||||
|
(blockStatement
|
||||||
|
(statements
|
||||||
|
(statement
|
||||||
|
(exit_statement)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
=========================
|
||||||
Return Statement
|
Return Statement
|
||||||
=========================
|
=========================
|
||||||
int fun() {
|
int fun() {
|
||||||
|
|||||||
Reference in New Issue
Block a user