为了账号安全,请及时绑定邮箱和手机立即绑定

Tiny python 添加跳过空行规则,Antlr4

Tiny python 添加跳过空行规则,Antlr4

蝴蝶刀刀 2022-12-06 15:38:51
我正在使用https://github.com/antlr/grammars-v4/blob/master/python/tiny-python/tiny-grammar-without-actions/Python3.g4语法,我想添加一个规则来跳过空行(第 6 行)a = 0b = 2sum = 0if b > a:    i = b    sum += iprint(sum)我已经测试了这段代码,但对我不起作用WS:[ \t\r\n]+ -> skip;line 8:4     : missing NEWLINE at 'sum'编辑:ss = 4if 3>1:    ss = 3    #dddd    ss = 4当我添加上面的代码时,它会报告另一个错误line 4:9 : extraneous input '\n ' expecting {'break', 'continue', 'if', 'while', 'for', 'print', 'def', 'return', NAME, '(', DEDENT}
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

通过这样做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不会被删除。


查看完整回答
反对 回复 2022-12-06
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号