这是我需要解析为AST的代码:
one
two
three
four
five
six
seven
正如您所见,它是缩进驱动的。我真的找不到解释我的解析器的方法(我正在使用Antlr4),前导空格是子级别的指示符。
答案 0 :(得分:3)
基本上,如果没有lexer的帮助,你无法向解析器解释它。
相反,你所做的就是破解词法分析器,以便在扫描空间时跟踪开始行的空格数。如果空间计数从前一行更改,则词法分析器会发出令牌。如果计数增加,则发出一个INDENT令牌。如果计数下降,则发出DEDENT令牌。
现在,您可以将INDENT和DEDENT标记添加到解析器规则中。它们在逻辑上与C语言中的{和}相似。