Tiny python 添加跳过空行规则,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:[ \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}


蝴蝶刀刀
浏览 174回答 1
1回答

森栏

通过这样做WS:[ \t\r\n]+ '\n'-> skip;,您实际上是在删除(跳过)后面的新行i = b和后面的空行:i = bsum += 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不会被删除。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python