我正在尝试在antlr中为类似python的语言编写语法,语言如下:
if condition:
if condition:
pass;
if condtion:
pass;
if condtion:
pass;
pass;
if condtion:
pass;
我的问题是我找不到带空格的块。所以我想知道是否有办法实现这一点而无需在语法中编写任何代码?
答案 0 :(得分:1)
如果我没记错的话,我所做的就是在词法分析器中创建一堆空格,但当然需要在词法分析器中进行操作。
另一种处理此问题的方法是创建一个字符流处理器,它将不仅仅8位的Unicode 16字符发送给词法分析器。然后,使用特殊的位模式来指示字符实际上是嵌套深度。然后,词法分析器可以将INDENT和DEDENT令牌发送给解析器。