Files
bfc/grammar/bfe.g4
2020-10-01 19:46:39 +05:30

84 lines
901 B
ANTLR

grammar bfe;
program
: statements? EOF;
statements
: eligibleStmt+;
eligibleStmt
: stmt
| numberedStmt
;
numberedStmt
: stmt NUMBER
;
stmt
: basicStmt
| groupedStmt
| loopStmt
;
groupedStmt
: GRPSTART statements GRPEND
;
loopStmt
: LOOPSTART statements LOOPEND
;
basicStmt
: ptrIncr
| ptrDecr
| ptrLeft
| ptrRight
| inputStmt
| outputStmt
;
ptrIncr
: INC
;
ptrDecr
: DEC
;
ptrLeft
: LEFT
;
ptrRight
: RIGHT
;
inputStmt
: INPUT
;
outputStmt
: OUTPUT
;
NEWLINE: '\n' -> skip;
COMMENT: '//' ~[\r\n]* '\r'? '\n'? -> channel(HIDDEN);
ML_COMMENT: '/*' .*? '*/' ->channel(HIDDEN);
WS: [ \r\n] -> skip;
DEF: '#';
LOOPSTART: '[';
LOOPEND:']';
GRPSTART:'(';
GRPEND:')';
NUMBER: [0-9]+;
INPUT: ',';
OUTPUT: '.';
DEC: '-';
INC: '+';
LEFT: '<';
RIGHT: '>';