Flex отправляет новые строки (один или несколько) в виде одного NEWLINE
токена:
[\n]+ { return NL; }
[ \r\t]+ { /* ignore whitespace */ }
. { /* ignore all other characters */ }
Вот что я пытаюсь достичь:
- несколько операторов должны быть разделены либо
NEWLINE
, либо COMMA
statement, statement
- OR
statement
statement
- Все остальные найденные
NEWLINE
должны игнорироваться (или, по крайней мере, не бросаться ошибка).
{
statement
statement
}
^ should still be correct (despite the leading and trailing newlines)
Вот мой Зубр код:
separator : NL
| COMMA
;
statement_section : statement_section separator statement
| statement
;
statements : NL statement_section
| statement_section
;
//==============================
// Entry point
//==============================
program : statements { emitOp(END); }
;
Есть идеи, как заставить эту работу работать правильно?