-
Program -> { Function } MainFunction
-
MainFunction -> Datatype main() FunctionBody
-
Function -> FunctionDeclaration FunctionBody
-
FunctionDeclaration -> Datatype Identifier ( Parameters? )
-
FunctionBody -> { Statements ReturnStatement }
-
Parameter -> Datatype Identifier
-
Parameters -> Parameter { , Parameter }
-
FunctionCall -> Identifier ( Arguments? )
-
Argument -> Expression
-
Arguments -> Argument { , Argument }
-
Statements -> { Statement }
-
Statement -> DeclarationStatement ; | AssignmentStatement ; | WriteStatement ; | ReadStatement ; | IfStatement | RepeatStatement
-
RepeatStatement -> repeat Statements until LogicalOr
-
IfStatement -> if LogicalOr then Statements [ ElseIfStatement | ElseStatement ] end
-
ElseIfStatement -> elseif LogicalOr then Statements [ ElseIfStatement | ElseStatement ]
-
ElseStatement -> else Statements
-
WriteStatement -> write ( Expression | endl )
-
ReadStatement -> read Identifier
-
AssignmentStatement -> Identifier := Expression
-
Condition -> Identifier ( > | < | = | <> ) Expression
-
LogicalOr -> LogicalAnd ( || LogicalOr )?
-
LogicalAnd -> Cond ( && Cond )?
-
DeclarationStatement -> Datatype Declarations
-
Declaration -> AssignmentStatement | Identifier
-
Declarations -> Declaration { Declaration , }
-
ReturnStatement -> return Expression ;
-
Datatype -> int | float | string
-
Expression -> Term ( ( - | + ) Expression )?
-
Term -> Factor ( ( * | / ) Term )?
-
Factor -> FunctionCall | Number | String | Identifier | ( Expressions )