Margins: Binding: 13
Debugger Interpreter Grammar
Version 6.0
StatementList::= Statement | StatementList; | StatementList; Statement
Statement::= LeftSide Interval | LeftSide ← Expression |
MEMORY Interval | Expression | Expression ?
LeftSide::= identifier | ( Expression ) | LeftSide Qualifier |
identifier $ identifier | number $ identifier |

MEMORY [ Expression ] | LOOPHOLE [ Expression ] |
LOOPHOLE [ Expression , TypeExpression ]
Qualifier::= | . identifier | [ ExpressionList ]
Interval::= [ Bounds ] | [ Bounds ) | ( Bounds ] | ( Bounds ) |
[ Expression ! Expression ]
Bounds::= Expression .. Expression
Expression::= Sum
Sum::= Product | Sum AddOp Product
AddOp::= + |
Product::= Factor | Product MultOp Factor
MultOp::= * | / | MOD
Factor::= ̄ Primary | Primary
Primary::= Literal | LeftSide | @ LeftSide | BuiltinCall |
Primary % | Primary % ( TypeExpression )
Literal::= number | character | string
BuiltinCall::= NIL | NIL [ TypeExpression ] | PrefixOp [ ExpressionList ] |
TypeOp [ TypeExpression ]
PrefixOp::= ABS | BASE | LENGTH | LONG | MAX | MIN
ExpressionList::= empty | Expression | ExpressionList, Expression
TypeOp::= SIZE
TypeExpression::= identifier | TypeIdentifier | TypeConstructor
TypeIdentifier::= BOOLEAN | INTEGER | CARDINAL | WORD | REAL | CHARACTER |
STRING | UNSPECIFIED | PROC | PROCEDURE | SIGNAL | ERROR |
identifier identifier | identifier TypeIdentifier |
identifier . identifier | identifier $ identifier
TypeConstructor::= LONG TypeExpression | @ TypeExpression |
POINTER TO TypeExpression