Add more samples, simplify grammar, add groups
This commit is contained in:
@@ -1,28 +1,62 @@
|
||||
grammar bf;
|
||||
|
||||
program
|
||||
: statements* EOF;
|
||||
: statements? EOF;
|
||||
|
||||
statements
|
||||
: (statement|numberedStatement|loopStmt)+;
|
||||
: eligibleStmt+;
|
||||
|
||||
eligibleStmt
|
||||
: stmt
|
||||
| numberedStmt
|
||||
;
|
||||
|
||||
numberedStmt
|
||||
: stmt NUMBER
|
||||
;
|
||||
|
||||
|
||||
stmt
|
||||
: basicStmt
|
||||
| groupedStmt
|
||||
| loopStmt
|
||||
;
|
||||
|
||||
|
||||
groupedStmt
|
||||
: GRPSTART statements GRPEND
|
||||
;
|
||||
|
||||
loopStmt
|
||||
: LOOPSTART statements LOOPEND
|
||||
: LOOPSTART statements LOOPEND
|
||||
;
|
||||
|
||||
numberedStatement
|
||||
: statement NUMBER
|
||||
;
|
||||
|
||||
statement
|
||||
: INC
|
||||
| DEC
|
||||
| LEFT
|
||||
| RIGHT
|
||||
basicStmt
|
||||
: ptrIncr
|
||||
| ptrDecr
|
||||
| ptrLeft
|
||||
| ptrRight
|
||||
| inputStmt
|
||||
| outputStmt
|
||||
;
|
||||
|
||||
|
||||
ptrIncr
|
||||
: INC
|
||||
;
|
||||
|
||||
ptrDecr
|
||||
: DEC
|
||||
;
|
||||
|
||||
ptrLeft
|
||||
: LEFT
|
||||
;
|
||||
|
||||
ptrRight
|
||||
: RIGHT
|
||||
;
|
||||
|
||||
inputStmt
|
||||
: INPUT
|
||||
;
|
||||
@@ -34,8 +68,11 @@ outputStmt
|
||||
NEWLINE: '\n' -> skip;
|
||||
COMMENT: '//' ~[\r\n]* '\r'? '\n'? -> channel(HIDDEN);
|
||||
WS: [ \r\n] -> skip;
|
||||
DEF: '#';
|
||||
LOOPSTART: '[';
|
||||
LOOPEND:']';
|
||||
GRPSTART:'(';
|
||||
GRPEND:')';
|
||||
NUMBER: [0-9]+;
|
||||
INPUT: '?';
|
||||
OUTPUT: '.';
|
||||
|
Reference in New Issue
Block a user