首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编程语言语法分析器(将Perl脚本转换为Lua)

编程语言语法分析器(将Perl脚本转换为Lua)
EN

Stack Overflow用户
提问于 2012-07-16 21:44:21
回答 3查看 1.5K关注 0票数 0

有没有一个通用的词法分析器,可以用来将100-1000个perl脚本转换成包含API更改的lua脚本?

例如,我有一个c++程序,它使用perl作为脚本接口-它使用子按钮之类的东西

button.addEventLister(...)

结束

现在我想把我的脚本接口改为lua -我有所有这些perl脚本-我可以写一个基于regexp等的手动解析器,以获得良好的对话速率我相信-但是我更喜欢一个智能的解决方案,它将不可能在语言之间出现对话错误(不同的数据类型,语言语法关键字等)

也许是这样的?http://irony.codeplex.com/wikipage?title=expression%20grammar%20sample&referringTitle=Home

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-18 00:07:10

没有现成的解决方案可以完全满足您的需求(特别是考虑到您需要的"API更改“)。

您的下一个最佳选择是找到一个可以生成Abastract语法树的perl解析器,然后可以将其转换为Lua。

当然,您也可以派生perl解析器并从中开始工作,但是使用已经构建好的Perl解析器可能会更简单,比如PPI。它将允许你在更高的层次上操纵语言。

您仍然需要通过更多的perl将PPI生成的内存中数据结构转换为Lua代码。这一部分丢失了,您必须自己编写它。

如果您正在处理100个脚本,那么可能不值得尝试这条路线,而是手动进行翻译。如果你更接近1000,我会说值得一试。

然而,我希望你有一种自动测试你的脚本的方法。否则,你会得到很多乐趣。

票数 1
EN

Stack Overflow用户

发布于 2012-07-16 22:01:04

我的回答很简短:No,除非您的Perl代码看起来和行为都像带有符号的C ;-)

(但是,您可以尝试通过应用加载的Regexes来辅助手动翻译,例如

s/ sub \s+ (\w+) \s* \{ /function $1/x

s/ \} \s* elsif \s* \{ /elseif/x

s/[@\$%]//和排序)

票数 0
EN

Stack Overflow用户

发布于 2012-07-17 01:10:32

首先,您必须用Lua编写与Perl运算符相同的函数。即使像加法这样简单的事情,在Perl和Lua中的表现也不同,更不用说像split和匹配操作符这样更复杂的事情了。

完成此操作后,将Perl脚本转换为Lua实际上相当容易。问题是,第一步需要几年时间才能完成。

一个更好的选择是在你的Lua进程中embed一个Perl解释器(假设Lua允许你链接到C代码,但是如果你不能,我会非常惊讶)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11505685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档