Files
Will Hawkins d39127ac17 Support Function Calls
Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
2026-04-09 23:16:27 -04:00

437 lines
7.1 KiB
Plaintext

=========================
Simple boolean Equality
=========================
parser simple() {
state start {
if (true == false) {
}
transition accept;
}
};
---
(p4program
(declaration
(parserDeclaration
(parserType
(parser)
(identifier)
(parameters)
)
(parserStates
(parserState
(state)
(identifier)
(parserStatements
(parserStatement
(conditionalStatement
(if)
(expression
(simple_expression
(binaryOperatorExpression
(binaryEqualOperatorExpression
(expression
(simple_expression
(booleanLiteralExpression
(true)
)
)
)
(double_equal)
(expression
(simple_expression
(booleanLiteralExpression
(false)
)
)
)
)
)
)
)
(statement
(blockStatement)
)
)
)
)
(parserTransitionStatement
(transition)
(transitionSelectionExpression
(identifier)
)
)
)
)
)
)
)
=========================
Simple Integer Equality
=========================
parser simple() {
state start {
if (1 == 2) {
}
transition accept;
}
};
---
(p4program
(declaration
(parserDeclaration
(parserType
(parser)
(identifier)
(parameters)
)
(parserStates
(parserState
(state)
(identifier)
(parserStatements
(parserStatement
(conditionalStatement
(if)
(expression
(simple_expression
(binaryOperatorExpression
(binaryEqualOperatorExpression
(expression
(simple_expression
(integer)
)
)
(double_equal)
(expression
(simple_expression
(integer)
)
)
)
)
)
)
(statement
(blockStatement)
)
)
)
)
(parserTransitionStatement
(transition)
(transitionSelectionExpression
(identifier)
)
)
)
)
)
)
)
=========================
Simple Array Access
=========================
parser simple() {
state start {
undeclared_array[5];
transition accept;
}
};
---
(p4program
(declaration
(parserDeclaration
(parserType
(parser)
(identifier)
(parameters)
)
(parserStates
(parserState
(state)
(identifier)
(parserStatements
(parserStatement
(expressionStatement
(expression
(simple_expression
(arrayAccessExpression
(expression
(simple_expression
(identifier)
)
)
(open_bracket)
(expression
(simple_expression
(integer)
)
)
(close_bracket)
)
)
)
)
)
)
(parserTransitionStatement
(transition)
(transitionSelectionExpression
(identifier)
)
)
)
)
)
)
)
=========================
Simple Struct Access
=========================
parser simple() {
state start {
abc.xyz;
transition accept;
}
};
---
(p4program
(declaration
(parserDeclaration
(parserType
(parser)
(identifier)
(parameters)
)
(parserStates
(parserState
(state)
(identifier)
(parserStatements
(parserStatement
(expressionStatement
(expression
(simple_expression
(fieldAccessExpression
(expression
(simple_expression
(identifier)
)
)
(field_access)
(identifier)
)
)
)
)
)
)
(parserTransitionStatement
(transition)
(transitionSelectionExpression
(identifier)
)
)
)
)
)
)
)
=========================
Nested Struct Access
=========================
parser simple() {
state start {
abc.cde.xyz;
transition accept;
}
};
---
(p4program
(declaration
(parserDeclaration
(parserType
(parser)
(identifier)
(parameters)
)
(parserStates
(parserState
(state)
(identifier)
(parserStatements
(parserStatement
(expressionStatement
(expression
(simple_expression
(fieldAccessExpression
(expression
(simple_expression
(fieldAccessExpression
(expression
(simple_expression
(identifier)
)
)
(field_access)
(identifier)
)
)
)
(field_access)
(identifier)
)
)
)
)
)
)
(parserTransitionStatement
(transition)
(transitionSelectionExpression
(identifier)
)
)
)
)
)
)
)
=========================
Simple Function Call
=========================
parser simple() {
state start {
func();
transition accept;
}
};
---
(p4program
(declaration
(parserDeclaration
(parserType
(parser)
(identifier)
(parameters)
)
(parserStates
(parserState
(state)
(identifier)
(parserStatements
(parserStatement
(expressionStatement
(expression
(simple_expression
(function_call
(identifier)
(arguments)
)
)
)
)
)
)
(parserTransitionStatement
(transition)
(transitionSelectionExpression
(identifier)
)
)
)
)
)
)
)
=========================
Simple Function Call (With Arguments)
=========================
parser simple() {
state start {
func(1, true, variable);
transition accept;
}
};
---
(p4program
(declaration
(parserDeclaration
(parserType
(parser)
(identifier)
(parameters)
)
(parserStates
(parserState
(state)
(identifier)
(parserStatements
(parserStatement
(expressionStatement
(expression
(simple_expression
(function_call
(identifier)
(arguments
(argument_list
(argument_list
(argument_list
(argument
(expression
(simple_expression
(integer)
)
)
)
)
(argument
(expression
(simple_expression
(booleanLiteralExpression
(true)
)
)
)
)
)
(argument
(expression
(simple_expression
(identifier)
)
)
)
)
)
)
)
)
)
)
)
(parserTransitionStatement
(transition)
(transitionSelectionExpression
(identifier)
)
)
)
)
)
)
)