Facile grammar, by Alex Thornton The start variable is [program]. { [program] [statement] NL . NL ; [statement] NL [program] ; [statement] NL [program] ; [statement] NL [program] ; [statement] NL [program] ; [statement] NL [program] ; [statement] NL [program] ; [statement] NL [program] ; [statement] NL [program] ; [statement] NL [program] ; [statement] NL [program] ; } { [statement] LET [variableName] [number] ; PRINT [variableName] ; GOTO [number] ; END ; ADD [variableName] [number] ; SUB [variableName] [number] ; MUL [variableName] [number] ; DIV [variableName] [number] ; IF [variableName] [comparisonOp] [number] THEN [number] ; GOSUB [number] ; RETURN ; } { [variableName] A ; B ; C ; D ; E ; F ; G ; H ; I ; J ; K ; L ; M ; N ; O ; P ; Q ; R ; S ; T ; U ; V ; W ; X ; Y ; Z ; } { [number] 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ; 10 ; 11 ; 12 ; 13 ; 14 ; 15 ; 16 ; 17 ; 18 ; 19 ; 20 ; } { [comparisonOp] < ; > ; <= ; >= ; = ; <> ; }