39 lines
1.4 KiB
EBNF
39 lines
1.4 KiB
EBNF
/*
|
|
* Gigatron's Tiny BASIC definition
|
|
* EBNF in W3C notation
|
|
* Recommended railroad diagram generator: http://www.bottlecaps.de/rr/ui
|
|
*/
|
|
Line ::= Number Statements | Statements
|
|
Statements ::= Statement (':' Statement)*
|
|
Statement ::= ('PRINT'|'?') ((String|Expression) [,;])*
|
|
(String|Expression)?
|
|
| 'AT' Expression (',' Expression)?
|
|
| 'PUT' Expression
|
|
| 'CLS'
|
|
| 'LINE' Expression ',' Expression
|
|
| 'IF' Expression RelOp Expression 'THEN'? Statements
|
|
| 'GOTO' Expression
|
|
| 'INPUT' Variable (',' Variable)*
|
|
| 'LET'? Variable ('(' Expression ')')? '=' Expression
|
|
| 'FOR' Variable '=' Expression 'TO' Expression
|
|
| 'NEXT' Variable
|
|
| 'POKE' Expression ',' Expression
|
|
| 'GOSUB' Expression
|
|
| 'RETURN'
|
|
| ('REM'|"'") Character*
|
|
| 'MODE' Expression
|
|
| 'NEW'
|
|
| 'LIST'
|
|
| 'RUN'
|
|
| 'END'
|
|
| 'SAVE'
|
|
Expression ::= [+-]? Term ([+-] Term)*
|
|
Term ::= Factor ([*/%] Factor)*
|
|
Factor ::= Variable | Number
|
|
| (Variable|'PEEK'|'RND'|'USR')? '(' Expression ')'
|
|
RelOp ::= '=' | '<' | '>' | '<=' | '>=' | '<>'
|
|
Number ::= [0-9]+
|
|
Variable ::= [A-Z] | '@'
|
|
String ::= '"' ([#x20-#x21] | [#x23-#x7E])* '"'
|
|
Character ::= [#x20-#x7E]
|