我写了一个包含更多类型的test.y文件。经过一定限制后,当我用命令编译文件时, 去工具yacc测试
恐慌,“yacc.go指数超出范围:891” 当我查看文件https://golang.org/src/cmd/yacc/yacc.go时,我在定义常量时看到了这个注释 “以下内容可根据内存大小进行调整” 是否有理由将第74行中的类型定义数量限制为63(NTYPES = 63)(在上面链接中提到的文件中)
答案 0 :(得分:1)
有趣 - 我已经使用go tool yacc
了很多,并没有注意到这个限制。
这就是yacc.go
从C程序移植而来的原因,你看到的是明显的直接端口。
查看yacc.go
的代码,删除该限制并将typeset
数组转换为切片将非常简单。
我要做的是open an issue(检查一下现有的一个 - 我没有看到一个,但我没有仔细看)。接下来,如果您感觉勇敢,请使用go contribution guidelines提交补丁。这是一个为自己做出贡献的好方法。
答案 1 :(得分:1)
"恐慌,"指数超出范围yacc.go:891" "
我遇到了同样的问题,因为我需要更多类型(非术语和术语类型),而我所采取的措施是改变我的情况。
请参阅我的GitHub page documenting my change。
或者只需点击下面的网址即可。
https://github.com/MagnusTiberius/go/commit/d4eeb860229867c76d99e67d69bdbd7cc729ce2c