Python 3.x github上的antlr4 python3语法

Python 3.x github上的antlr4 python3语法,python-3.x,antlr,antlr4,Python 3.x,Antlr,Antlr4,我正在使用这里发布的语法: 它有时会在发出正确的令牌之前返回部分令牌或多个令牌。我正在使用TestRig工具打印以下输出 这是预期的行为吗?多谢各位 @0,0:4='#3.31',<92>,channel=2,1:0] ****[@1,6:7='de',<34>,2:0] [@2,6:8='def',<1>,2:0]**** [@3,10:23='reverse_string',<35>,2:4] [@4,24:24='(',<47>

我正在使用这里发布的语法:

它有时会在发出正确的令牌之前返回部分令牌或多个令牌。我正在使用TestRig工具打印以下输出

这是预期的行为吗?多谢各位

@0,0:4='#3.31',<92>,channel=2,1:0]
****[@1,6:7='de',<34>,2:0]
[@2,6:8='def',<1>,2:0]****
[@3,10:23='reverse_string',<35>,2:4]
[@4,24:24='(',<47>,2:18]
[@5,25:30='answer',<35>,2:19]
[@6,31:31=')',<48>,2:25]
[@7,32:32=':',<50>,2:26]
****[@8,38:39='an',<34>,3:4]
[@9,38:42='answe',<94>,3:4]
[@10,38:43='answer',<35>,3:4]****
[@11,45:45='=',<53>,3:11]
[@12,47:51='input',<35>,3:13]
[@13,52:52='(',<47>,3:18]
[@14,53:82=''Enter a three-letter string:'',<36>,3:19]
[@15,83:83=')',<48>,3:49]
*[@16,89:90='re',<34>,4:4]
[@17,89:94='return',<2>,4:4]*
[@18,96:101='answer',<35>,4:11]
....

[@25,114:118='#3.32',<92>,channel=2,6:4]
*[@26,124:125='de',<34>,7:4]
[@27,124:126='def',<1>,7:4]*
...

**[@42,183:184='re',<34>,9:12]
[@43,183:195='return rate *',<94>,9:12]
[@44,183:188='return',<2>,9:12]
[@45,190:193='rate',<35>,9:19]
[@46,195:195='*',<46>,9:24]**
@0,0:4='#3.31',通道=2,1:0]
****[@1,6:7='de',2:0]
[@2,6:8='def',2:0]****
[@3,10:23='reverse_string',2:4]
[@4,24:24='(',,2:18]
[@5,25:30='answer',2:19]
[@6,31:31=')',,2:25]
[@7,32:32=':',,2:26]
****[@8,38:39='an',3:4]
[@9,38:42='answe',3:4]
[@10,38:43='answer',3:4]****
[@11,45:45='=',,3:11]
[@12,47:51='input',3:13]
[@13,52:52='(',,3:18]
[@14,53:82=''输入一个三个字母的字符串:“”,3:19]
[@15,83:83=')',,3:49]
*[@16,89:90='re',4:4]
[@17,89:94='return',4:4]*
[@18,96:101='answer',4:11]
....
[@25114:118='#3.32',频道=2,6:4]
*[@26124:125='de',7:4]
[@27124:126='def',7:4]*
...
**[@42183:184='re',9:12]
[@43183:195='returnrate*',9:12]
[@44183:188='return',9:12]
[@45190:193='rate',9:19]
[@46,195:195='*',,9:24]**

不,这不是预期的行为

在创建令牌的过程中,我为自定义令牌分配了错误的开始和停止索引(请参见
Python3.g4
中的
private CommonToken CommonToken(int-type,String-text)

这些
re
ret
节点实际上是
NEWLINE
INDENT
标记。因此,只有它们的内部文本有错误的数据,它们的标记类型是正确的
换行
缩进


已修复拉取请求:将很快合并到
master
中。我还建议对官方ANTLR4语法报告进行修改:

谢谢。它在大部分情况下都能工作,但仍然存在一个问题:它在结尾返回一个类型为-1的标记:python源代码中的最后一条语句是:“return x”@3801250:1255='return',63:8][@3811257:1257='x',63:15][@3821257:1257='x',63:16][@3841257:1257='x',63:16][@3851253:1257='urn x',63:16]@用户4848830注意,-1只是EOF令牌。你能不能到银行的总行结账试试?如果EOF标记中仍然显示
“urn”
,请使用您使用的python输入再次创建一个问题,以便我可以重现它。