program

Function_DefinitionFunction_Definition functions 'functions' DatatypeDatatype 'return_type' 'main' [suppress] '(' [suppress] ')' [suppress] Function_BodyFunction_Body 'body' main 'main'

Function_Definition

Function_DeclarationFunction_Declaration 'decl' Function_BodyFunction_Body 'body'

Function_Declaration

DatatypeDatatype 'return_type' identifieridentifier 'name' '(' [suppress] DatatypeDatatype 'type' identifieridentifier 'name' ',' [suppress] DatatypeDatatype 'type' identifieridentifier 'name' 'parameters' ')' [suppress]

Datatype

'int' 'float' 'string'

identifier

RESERVEDRESERVED [NOT] W:(A-Za-z, 0-9A-Z_a-z) [combine]

Function_Body

'{' [suppress] stmt_seqstmt_seq 'stmts' '}' [suppress]

statement

Declaration_StatementDeclaration_Statement Assignment_StatementAssignment_Statement If_StatementIf_Statement Repeat_StatementRepeat_Statement Read_StatementRead_Statement Write_StatementWrite_Statement Return_StatementReturn_Statement Function_Call_StatementFunction_Call_Statement

Declaration_Statement

DatatypeDatatype 'datatype' identifieridentifier 'name' ':=' [suppress] exprexpr 'init' ',' [suppress] identifieridentifier 'name' ':=' [suppress] exprexpr 'init' 'decls' ';' [suppress]

condition_stmt

term_expression_expression_expressionterm_expression_expression_expression

term_expression_expression_expression

'||' operations'||' operations

'||' operations

'&&' operations'&&' operations '||' '&&' operations'&&' operations '&&' operations'&&' operations

'&&' operations

term_expression_expressionterm_expression_expression nested_term_expression_expression_expressionnested_term_expression_expression_expression '&&' term_expression_expressionterm_expression_expression nested_term_expression_expression_expressionnested_term_expression_expression_expression term_expression_expressionterm_expression_expression nested_term_expression_expression_expressionnested_term_expression_expression_expression

term_expression_expression

'<>' | '<=' | '<' | '>=' | '>' | '=' operations'<>' | '<=' | '<' | '>=' | '>' | '=' operations

'<>' | '<=' | '<' | '>=' | '>' | '=' operations

term_expressionterm_expression nested_term_expression_expressionnested_term_expression_expression '<>' | '<=' | '<' | '>=' | '>' | '=''<>' | '<=' | '<' | '>=' | '>' | '=' term_expressionterm_expression nested_term_expression_expressionnested_term_expression_expression term_expressionterm_expression nested_term_expression_expressionnested_term_expression_expression

term_expression

'+' | '-' operations'+' | '-' operations

'*' | '/' operations

'+' | '-' operations'+' | '-' operations '*' | '/''*' | '/' '+' | '-' operations'+' | '-' operations '+' | '-' operations'+' | '-' operations

'+' | '-' operations

'+' | '-''+' | '-' '+' | '-' operations'+' | '-' operations termterm nested_term_expressionnested_term_expression

term

real number with scientific notationreal number with scientific notation real numberreal number signed integersigned integer StringString function_callfunction_call identifieridentifier

real number with scientific notation

[+-]?(?:\d+(?:[eE][+-]?\d+)|(?:\d+\.\d*|\.\d+)(?:[eE][+-]?\d+)?)

real number

[+-]?(?:\d+\.\d*|\.\d+)

signed integer

[+-]?\d+

String

string enclosed in '"'

function_call

identifieridentifier 'name' '(' [suppress] exprexpr ',' [suppress] exprexpr 'args' ')' [suppress]

expr

condition_stmtcondition_stmt

nested_term_expression

'(' [suppress] term_expressionterm_expression ')' [suppress]

'*' | '/'

[*/]

'+' | '-'

[+\-]

nested_term_expression_expression

'(' [suppress] term_expression_expressionterm_expression_expression ')' [suppress]

'<>' | '<=' | '<' | '>=' | '>' | '='

<>|<=|<|>=|>|=

nested_term_expression_expression_expression

'(' [suppress] term_expression_expression_expressionterm_expression_expression_expression ')' [suppress]

Assignment_Statement

identifieridentifier 'target' ':=' [suppress] exprexpr 'value' ';' [suppress]

If_Statement

'if' [suppress] condition_stmtcondition_stmt 'cond' 'then' [suppress] stmt_seqstmt_seq then 'then' 'elseif' [suppress] condition_stmtcondition_stmt 'cond' 'then' [suppress] stmt_seqstmt_seq then 'then' 'elseif' 'else' [suppress] stmt_seqstmt_seq else 'else' 'end' [suppress]

stmt_seq

statementstatement 'stmts'

Repeat_Statement

'repeat' [suppress] stmt_seqstmt_seq 'body' 'until' [suppress] condition_stmtcondition_stmt 'cond'

Read_Statement

'read' [suppress] identifieridentifier 'var' ';' [suppress]

RESERVED

'if' 'then' 'else' 'elseif' 'end' 'repeat' 'until' 'read' 'write' 'return' 'endl' 'int' 'float' 'string' 'main'

Write_Statement

'write' [suppress] 'endl' exprexpr 'expr' ';' [suppress]

Return_Statement

'return' [suppress] exprexpr 'expr' ';' [suppress]

Function_Call_Statement

function_callfunction_call ';' [suppress]