为什么在定义更多类型时会出现yacc解析器恐慌?

时间:2015-02-17 06:10:56

标签: go yacc

我写了一个包含更多类型的test.y文件。经过一定限制后,当我用命令编译文件时, 去工具yacc测试

恐慌,“yacc.go指数超出范围:891” 当我查看文件https://golang.org/src/cmd/yacc/yacc.go时,我在定义常量时看到了这个注释 “以下内容可根据内存大小进行调整” 是否有理由将第74行中的类型定义数量限制为63(NTYPES = 63)(在上面链接中提到的文件中)

2 个答案:

答案 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