我想在C++项目中包含脚本语言。Lua vs Bison/Yacc。

我想在我的应用程序中实现一种脚本语言,用于控制某些行为、定义规则等。

我还没有找到使用 Lua 而不是 bison/yacc,或者反过来的理由。这些工具的优缺点是什么?

从实现角度来看,Lua 似乎更容易实现,而 yacc/bison 则需要学习编写解析器标记,但然后我就有一个独立的解析器。除此之外还有什么区别?

点赞
用户21755
用户21755

他们是完全不同的东西,没有可比性。Lua 是一种(可嵌入的)脚本语言,Bison/yacc 则是你可以用来为某种语言编写词法分析器和解析器的工具。

使用 Bison/Yacc,你仍需要实现实际的执行引擎(虚拟机等)来运行你的脚本语言。

因此,如果你想要一个嵌入在你的应用程序中的脚本语言,Lua 可以直接提供一个给你使用。Bison/yacc 给你(一些)用于实现一个脚本语言的工具。

如果你确实需要一个解析器,你可以使用 bison/yacc,或者根据你的用例,你可能想要查看 Lua 中的 lpeg。

2014-11-11 15:28:40