ClassDeclaration | ::= | "class" Identifier ClassBody EOF |
ClassBody | ::= | "{" [ MethodDeclaration] ... ConstructorDeclaration [ MethodDeclaration] ... "}" |
MethodDeclaration | ::= | ResultType MethodDeclarator Block |
ConstructorDeclaration | ::= | MethodDeclarator Block |
MethodDeclarator | ::= | Identifier OptionalFormalParameter |
OptionalFormalParameter | ::= | "(" [ Identifier ] ")" |
ResultType | ::= | { "void" | "define" } |
EmptyArguments | ::= | "(" ")" |
OptionalArgument | ::= | "(" [ IntExp ] ")" |
Statement | ::= | ( Block | EmptyStatement | IfStatement | WhileStatement | IterateStatement | TurnoffStatement | TurnleftStatement | MoveStatement | PickbeeperStatement | PutbeeperStatement | CallStatement ) |
Block | ::= | "{" [ Statement ] ... "}" |
EmptyStatement | ::= | ";" |
CallStatement | ::= | Identifier OptionalArgument ";" |
IntExp | ::= | { Decimal | Identifier | "pred" "(" IntExp ")" | "succ" "(" IntExp ")" } |
Expression | ::= | AndClause [ "||" AndClause ] ... |
AndClause | ::= | NotClause [ "&&" NotClause ] ... |
NotClause | ::= | [ "!" ] AtomClause |
AtomClause | ::= | { "iszero" "(" IntExp ")" | BooleanFunction EmptyArguments | "(" Expression ")" } |
IfStatement | ::= | "if" "(" Expression ")" Statement ["else" Statement ] |
WhileStatement | ::= | "while" "(" Expression ")" Statement |
IterateStatement | ::= | "iterate" "(" IntExp ")" Statement |
TurnoffStatement | ::= | "turnoff" EmptyArguments ";" |
TurnleftStatement | ::= | "turnleft" EmptyArguments ";" |
MoveStatement | ::= | "move" EmptyArguments ";" |
PickbeeperStatement | ::= | "pickbeeper" EmptyArguments ";" |
PutbeeperStatement | ::= | "putbeeper" EmptyArguments ";" |
Identifier | ::= | Letter [ Letter | Digit | "-" ] ... |
Decimal | ::= | { {"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"}
[ Digit ] ... | "0" } |
String | ::= | anything in quotes on a single line |
BooleanFunction | ::= | {"frontIsClear" | "frontIsBlocked" | "leftIsClear" | "leftIsBlocked" | "rightIsClear" | "rightIsBlocked" | "nextToABeeper" | "notNextToABeeper" | "anyBeepersInBeeperBag" | "noBeepersInBeeperBag" | "facingNorth" | "facingSouth" | "facingEast" | "facingWest" | "notFacingNorth" | "notFacingSouth" | "notFacingEast" | "notFacingWest"} |
Digit | ::= | {"0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"} |
Letter | ::= | a letter of the alphabet |
EOF | ::= | end of file mark |
Instant Pane Definition |
||
InstantProgram | ::= | [ MethodDeclaration | NativeDeclaration | Statement ] ... EOF |
The two Java/C++ comment styles are supported:
|
End-Of-Page