Tiny python添加跳过空行规则Antlr4

2024-06-12 14:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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:[ \t\r\n]+ -> 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}

Tags: 代码httpsgithubmastercomifliness
1条回答
网友
1楼 · 发布于 2024-06-12 14:24:30

通过执行WS:[ \t\r\n]+ '\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之后的新行不会被删除

相关问题 更多 >