小蟒蛇添加跳过空行规则,Antlr4



我正在使用 https://github.com/antlr/grammars-v4/blob/master/python/tiny-python/tiny-grammar-without-actions/Python3.g4

语法,我想添加一个规则来跳过空行(行:6(

a = 0
b = 2
sum = 0
if b > a:
i = b
sum += i
print(sum)

我已经测试了这段代码,但对我不起作用

WS:[ trn]+ -> skip;
line 8:4     : missing NEWLINE at 'sum'

编辑:

ss = 4
if 3>1:
ss = 3
#dddd
ss = 4

当我添加上面的代码时,它会报告另一个错误

line 4:9 : extraneous input 'n ' expecting {'break', 'continue', 'if', 'while', 'for', 'print', 'def', 'return', NAME, '(', DEDENT}

通过执行WS:[ trn]+ 'n'-> skip;,您实际上是在删除(跳过(i = b之后的新行和之后的空行:

i = b
sum += i

结果是:

i = b sum += i

这不好:您需要在i = b之后换一行.

您可以尝试让空行成为NEWLINE令牌的一部分,而不是跳过空行。因此,与其这样做:

NEWLINE
: ( 'r'? 'n' | 'r' | 'f' ) SPACES?
;

你会做:

NEWLINE
: ( 'r'? 'n' | 'r' | 'f' ) (SPACES? ( 'r'? 'n' | 'r' | 'f' ))* SPACES?
;

这将确保不会删除i = b之后的新行。

相关内容

  • 没有找到相关文章

最新更新