|
|
|
@ -1,22 +1,22 @@
|
|
|
|
|
#lang brag
|
|
|
|
|
;; program & lines
|
|
|
|
|
b-program : [b-line] (/NEWLINE [b-line])*
|
|
|
|
|
b-line : b-line-number [b-statement] (/":" [b-statement])* [b-rem]
|
|
|
|
|
@b-line-number : INTEGER
|
|
|
|
|
b-line : b-line-num [b-statement] (/":" [b-statement])* [b-rem]
|
|
|
|
|
@b-line-num : INTEGER
|
|
|
|
|
b-rem : REM
|
|
|
|
|
|
|
|
|
|
;; statements
|
|
|
|
|
@b-statement : b-end | b-print | b-let | b-input | b-def
|
|
|
|
|
| b-goto | b-gosub | b-return | b-for | b-next | b-if
|
|
|
|
|
@b-statement : b-rem | b-end | b-print | b-goto | b-let
|
|
|
|
|
| b-input | b-def | b-gosub
|
|
|
|
|
| b-return | b-for | b-next | b-if
|
|
|
|
|
b-end : /"end"
|
|
|
|
|
b-print : /"print" [STRING | b-expr] (/";" [STRING | b-expr])*
|
|
|
|
|
b-print : /"print" [b-printable] (/";" [b-printable])*
|
|
|
|
|
@b-printable : STRING | b-expr
|
|
|
|
|
b-goto : /"goto" b-expr
|
|
|
|
|
b-let : [/"let"] b-id /"=" (STRING | b-expr)
|
|
|
|
|
b-if : /"if" b-expr /"then" b-expr [/"else" b-expr]
|
|
|
|
|
b-gosub : /"gosub" b-expr
|
|
|
|
|
b-return : /"return"
|
|
|
|
|
b-input : /"input" b-id
|
|
|
|
|
b-def : /"def" b-id /"(" b-id /")" /"=" b-expr
|
|
|
|
|
b-let : [/"let"] b-id /"=" [STRING | b-expr]
|
|
|
|
|
b-for : /"for" b-id /"=" b-expr /"to" b-expr [/"step" b-expr]
|
|
|
|
|
b-next : /"next" [b-id]
|
|
|
|
|
|
|
|
|
|