为什么在定义更多类型时 go yacc 解析器会崩溃?
why does go yacc parser panic while defining more types?
我写了一个 test.y 文件,类型更多。经过一定的限制,当我用命令编译文件时,
去工具 yacc 测试
它恐慌,"Index out of range in yacc.go:891"
当我查看文件 https://golang.org/src/cmd/yacc/yacc.go 时,我在定义常量中看到了这个注释
"the following are adjustable according to memory size"
他们在第 74 行(在上面 link 中提到的文件中)
中将类型定义的数量限制为 63(NTYPES = 63) 是有原因的吗
有趣 - 我使用 go tool yacc
相当多但没有注意到这个限制。
之所以如此,是因为 yacc.go
是从 C 程序移植而来的,您看到的是明显的直接移植。
查看 yacc.go
的代码,删除该限制并将 typeset
数组转换为切片会非常简单。
我会做的是open an issue (check a that there isn't an existing one - I didn't see one but I didn't look very carefully). Next if you are feeling brave submit a patch using the go contribution guidelines。这是为 go 本身做出贡献的好方法。
"It panics,"索引超出范围 yacc.go:891" "
我遇到了同样的问题,因为我需要更多类型(非术语和术语类型),而我为了解决这个问题所做的是更改几个值。
请看我的GitHub page documenting my change.
或者直接点击下面的URL。
https://github.com/MagnusTiberius/go/commit/d4eeb860229867c76d99e67d69bdbd7cc729ce2c
我写了一个 test.y 文件,类型更多。经过一定的限制,当我用命令编译文件时, 去工具 yacc 测试
它恐慌,"Index out of range in yacc.go:891" 当我查看文件 https://golang.org/src/cmd/yacc/yacc.go 时,我在定义常量中看到了这个注释 "the following are adjustable according to memory size" 他们在第 74 行(在上面 link 中提到的文件中)
中将类型定义的数量限制为 63(NTYPES = 63) 是有原因的吗有趣 - 我使用 go tool yacc
相当多但没有注意到这个限制。
之所以如此,是因为 yacc.go
是从 C 程序移植而来的,您看到的是明显的直接移植。
查看 yacc.go
的代码,删除该限制并将 typeset
数组转换为切片会非常简单。
我会做的是open an issue (check a that there isn't an existing one - I didn't see one but I didn't look very carefully). Next if you are feeling brave submit a patch using the go contribution guidelines。这是为 go 本身做出贡献的好方法。
"It panics,"索引超出范围 yacc.go:891" "
我遇到了同样的问题,因为我需要更多类型(非术语和术语类型),而我为了解决这个问题所做的是更改几个值。
请看我的GitHub page documenting my change.
或者直接点击下面的URL。
https://github.com/MagnusTiberius/go/commit/d4eeb860229867c76d99e67d69bdbd7cc729ce2c