Add more samples, simplify grammar, add groups

This commit is contained in:
2020-09-30 16:54:58 +05:30
parent c72fa7de25
commit 86359ebc54
6 changed files with 164 additions and 49 deletions

View File

@@ -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: '.';