Line: Number Statements Line ::= Number? Statements no referencesStatements: Statement : Statements ::= Statement ( ':' Statement )* referenced by: Line Statement Statement: REM ' Character PRINT ? String Expression , ; String Expression AT Expression , PUT LINE POKE Expression , GOTO LET Variable ( Expression ) = FOR Variable = Expression TO GOSUB MODE Expression CLS IF Expression RelOp Expression THEN Statements INPUT Variable , NEXT Variable RETURN NEW LIST RUN END SAVE Statement ::= ( 'PRINT' | '?' ) ( ( String | Expression ) [,;] )* ( String | Expression )? | ( 'AT' ( Expression ',' )? | 'PUT' | ( 'LINE' | 'POKE' ) Expression ',' | 'GOTO' | 'LET'? Variable ( '(' Expression ')' )? '=' | 'FOR' Variable '=' Expression 'TO' | 'GOSUB' | 'MODE' ) Expression | 'CLS' | 'IF' Expression RelOp Expression 'THEN'? Statements | ( 'INPUT' ( Variable ',' )* | 'NEXT' ) Variable | 'RETURN' | ( 'REM' | "'" ) Character* | 'NEW' | 'LIST' | 'RUN' | 'END' | 'SAVE' referenced by: Statements Expression: + - Term + - Expression ::= [+#x2D]? Term ( [+#x2D] Term )* referenced by: Factor Statement Term: Factor * / % Term ::= Factor ( [*/%] Factor )* referenced by: Expression Factor: Variable Number Variable PEEK RND USR ( Expression ) Factor ::= Variable | Number | ( Variable | 'PEEK' | 'RND' | 'USR' )? '(' Expression ')' referenced by: Term RelOp: = < > <= >= <> RelOp ::= '=' | '<' | '>' | '<=' | '>=' | '<>' referenced by: Statement Number: [0-9] Number ::= [0-9]+ referenced by: Factor Line Variable: [A-Z] @ Variable ::= [A-Z@] referenced by: Factor Statement String: " [#x0020-#x0021] [#x0023-#x007E] " String ::= '"' [#x0020-#x0021#x0023-#x007E]* '"' referenced by: Statement Character: [#x0020-#x007E] Character ::= [#x0020-#x007E] referenced by: Statement   ... generated by Railroad Diagram Generator R R