VarDeclaration |
::= |
Type Identifier ";" |
Type |
::= |
Identifier |
|
|
| BooleanType |
|
|
| IntegerType |
|
|
| RealType |
|
|
| ArrayType |
ArrayType |
::= |
"int" "[" "]" |
==(与Java类似)== |
|
| "real" "[" "]" |
|
|
| "bool" "[" "]" |
BooleanType |
::= |
"bool" |
IntegerType |
::= |
"int" |
Statement |
::= |
Block |
|
|
| AssignmentStatement |
|
|
| ArrayAssignmentStatement |
|
|
| IfStatement |
|
|
| WhileStatement |
|
|
| ReadStatement |
|
|
| WriteStatement |
Block |
::= |
"{" ( Statement )* "}" |
AssignmentStatement |
::= |
Identifier "=" Expression ";" |
ArrayAssignmentStatement |
::= |
Identifier "[" Expression "]" "=" Expression ";" |
IfStatement |
::= |
"if" "(" Expression ")" Statement "else" Statement |
WhileStatement |
::= |
"while" "(" Expression ")" Statement |
WriteStatement |
::= |
"write" "(" Expression ")" ";" |
ReadStatement |
::= |
"read" "(" Expression ")" ";" |
Expression |
::= |
PlusExpression |
|
|
| MinusExpression |
|
|
| TimesExpression |
|
|
| DivideExpression |
|
|
| CompareExpression |
|
|
| ArrayLookup |
|
|
| ArrayLength |
|
|
| PrimaryExpression |
CompareExpression |
::= |
PrimaryExpression "<" PrimaryExpression |
|
|
| PrimaryExpression ">" PrimaryExpression |
|
|
| PrimaryExpression "<>" PrimaryExpression |
PlusExpression |
::= |
PrimaryExpression "+" PrimaryExpression |
MinusExpression |
::= |
PrimaryExpression "-" PrimaryExpression |
TimesExpression |
::= |
PrimaryExpression "*" PrimaryExpression |
DivideExpression |
::= |
PrimaryExpression "/" PrimaryExpression |
ArrayLookup |
::= |
PrimaryExpression "[" PrimaryExpression "]" |
ArrayLength |
::= |
PrimaryExpression "." "length" |
ExpressionList |
::= |
Expression ( ExpressionRest )* |
ExpressionRest |
::= |
"," Expression |
PrimaryExpression |
::= |
IntegerLiteral |
|
|
| RealLiteral |
|
|
| TrueLiteral |
|
|
| FalseLiteral |
|
|
| BracketExpression |
|
|
| Identifier |
IntegerLiteral |
::= |
|
RealLiteral |
::= |
|
TrueLiteral |
::= |
"true" |
FalseLiteral |
::= |
"false" |
Identifier |
::= |
\ |
BracketExpression |
::= |
"(" Expression ")" |