Go 在Ragel中使用带有扫描块的堆栈的正确方法是什么?
我正在使用Ragel 6.10和Go。我确信这可能是我的代码有问题,但当我尝试使用带有扫描块的堆栈时,会出现一些奇怪的错误。我正在尝试设置括号匹配,我的代码大致如下所示Go 在Ragel中使用带有扫描块的堆栈的正确方法是什么?,go,fsm,ragel,Go,Fsm,Ragel,我正在使用Ragel 6.10和Go。我确信这可能是我的代码有问题,但当我尝试使用带有扫描块的堆栈时,会出现一些奇怪的错误。我正在尝试设置括号匹配,我的代码大致如下所示 ObjectValues := |* # other stuff '}' => { fret; }; *| main := ('{' @{fcall ObjectValues;})*; 看看指南第46页,看起来这应该是可能的。当我运行RagelRagel-G2-zmain.rl时。我在尝试编译时遇到以下错误(它只
ObjectValues := |*
# other stuff
'}' => { fret; };
*|
main := ('{' @{fcall ObjectValues;})*;
看看指南第46页,看起来这应该是可能的。当我运行RagelRagel-G2-zmain.rl
时。我在尝试编译时遇到以下错误(它只发生在-G2 FSM生成中)
注释掉fret行将删除错误,并警告无法访问POSTOP和prepush
完整的代码在这里
这里有一个工作的最小测试用例
测试用例错误
main.rl:13[/Users/nathanfisher/workspace/go/src/github.com/nfisher/gir/command/runner/main.go:119:2]: syntax error: unexpected goto at end of statement
main.go:59[/Users/nathanfisher/workspace/go/src/github.com/nfisher/gir/command/runner/main.go:59:1]: label _again defined and not used
看起来这是一个与Ragel在V6.10中生成的代码有关的问题。使用ragel-6分支的负责人解决了这个问题。感谢Adrian Thurston通过Twitter做出的超级响应/帮助。:) 重新格式化此文件中的代码 对这一错误进行修正
main.rl:13[/Users/nathanfisher/workspace/go/src/github.com/nfisher/gir/command/runner/main.go:119:2]: syntax error: unexpected goto at end of statement
main.go:59[/Users/nathanfisher/workspace/go/src/github.com/nfisher/gir/command/runner/main.go:59:1]: label _again defined and not used