我正在开发一个具有阶段的解析器。在每个阶段,它将分析一些数据,并为下一阶段做好准备。输入可能已经为下一阶段准备好了数据。我不想让阶段1的语法与第2阶段的结构复杂化。
或者如果我有一个看起来像这样的文件:
some complex constructions that I do not care at this phase about specifics
but I know that they will not have line starting with <
...
...
< line: 0 foo bar
< line: 1 blah blah
more constructions
< line: 0 foo bar
< line: 1 blah blah
我的语法应该是用这样的规则来解析行
line
: SERIALIZE_BRACKET KW_LINE
NUMBER # indent
.*? # content
( EOL | EOF ) # the end of the line
;
以及在通用未知块中返回的所有其他内容。注意我不希望跳过数据,我希望能够访问它,我只是不想在这个阶段解析它。
我的语法应该是什么样的......?