我使用来自here的Python3.g4语法并尝试修改它。我想添加类型提示,从3个字符开始#34; #t"。它们可以在单独的行上和后面的陈述中 添加和修改规则:
IDisposable
其他相关规则:
using
输入
simple_stmt
: small_stmt ( ';' small_stmt )* ';'? type_comment? NEWLINE
| type_comment NEWLINE
;
type_comment
: TYPE_COMMENT
;
TYPE_COMMENT
: '#' 't' ' ' ~[\r\n]*
;
我收到以下错误:
stmt
: simple_stmt
| compound_stmt
;
fragment COMMENT
: '#' ~[\r\n]*
;
compound_stmt
: if_stmt
| while_stmt
| for_stmt
| try_stmt
| with_stmt
| funcdef
| classdef
| decorated
;
while_stmt
: WHILE test ':' suite ( ELSE ':' suite )?
;
suite
: simple_stmt
| NEWLINE INDENT stmt+ DEDENT
;
行
a = 1 #t int
#t int
#t str
s = "string"
更改为
line 3:0 missing NEWLINE at '#t int'
line 5:0 extraneous input '#t str' expecting NEWLINE
我收到其他类似的错误。这个语法的正确版本是什么?
答案 0 :(得分:0)
我的猜测是#t ...
与TYPE_COMMENT
之前定义的规则相匹配。尝试将TYPE_COMMENT
定义为第一个词法分析器规则。如果这没有帮助,请发表你的整个语法。