29 lines
488 B
ANTLR
29 lines
488 B
ANTLR
grammar Hemar;
|
|
|
|
// ----------------- parser rules -----------------
|
|
|
|
hemar: elements? EOF ;
|
|
|
|
elements: element+ ;
|
|
|
|
element
|
|
: segment
|
|
| interpoltion
|
|
;
|
|
|
|
segment : for elements? end ;
|
|
|
|
for : 'for' 'in' ;
|
|
|
|
end: 'end' ;
|
|
|
|
interpoltion : 'mcha' ;
|
|
|
|
OPEN : '{[' ;
|
|
CLOSE : ']}' ;
|
|
|
|
WS : [ \t\n\r]+ -> skip ;
|
|
LEADING_TEXT : { getCharPositionInLine() == 0 }? (~'{'|'{'~'[')* OPEN -> skip;
|
|
MIDLE_TEXT : CLOSE (~'{'|'{'~'[')* OPEN -> skip;
|
|
ENDING_TEXT : CLOSE (~'{'|'{'~'[')* EOF -> skip ;
|