Files
bfc/grammar/bfe.g4

83 lines
855 B
Plaintext
Raw Normal View History

2020-10-01 13:14:57 +05:30
grammar bfe;
2020-09-29 23:16:42 +05:30
2020-09-30 00:50:00 +05:30
program
: statements? EOF;
2020-09-30 00:50:00 +05:30
statements
: eligibleStmt+;
2020-09-30 00:50:00 +05:30
eligibleStmt
: stmt
| numberedStmt
2020-09-30 00:50:00 +05:30
;
numberedStmt
: stmt NUMBER
2020-09-30 00:50:00 +05:30
;
stmt
: basicStmt
| groupedStmt
| loopStmt
;
groupedStmt
: GRPSTART statements GRPEND
;
loopStmt
: LOOPSTART statements LOOPEND
;
basicStmt
: ptrIncr
| ptrDecr
| ptrLeft
| ptrRight
2020-09-30 00:50:00 +05:30
| inputStmt
| outputStmt
;
ptrIncr
: INC
;
ptrDecr
: DEC
;
ptrLeft
: LEFT
;
ptrRight
: RIGHT
;
2020-09-30 00:50:00 +05:30
inputStmt
: INPUT
;
outputStmt
: OUTPUT
2020-09-29 23:30:58 +05:30
;
2020-09-29 23:16:42 +05:30
2020-09-29 23:30:58 +05:30
NEWLINE: '\n' -> skip;
2020-09-30 00:50:00 +05:30
COMMENT: '//' ~[\r\n]* '\r'? '\n'? -> channel(HIDDEN);
WS: [ \r\n] -> skip;
DEF: '#';
2020-09-30 00:50:00 +05:30
LOOPSTART: '[';
LOOPEND:']';
GRPSTART:'(';
GRPEND:')';
2020-09-30 00:50:00 +05:30
NUMBER: [0-9]+;
2020-10-01 19:33:47 +05:30
INPUT: ',';
2020-09-29 23:16:42 +05:30
OUTPUT: '.';
DEC: '-';
INC: '+';
2020-10-01 19:33:47 +05:30
LEFT: '<';
RIGHT: '>';