html – 如何在C中有效地构建解释器(词法分析器)?
我正在尝试创建一种用于编写标记代码的元语言(例如xml和html),它可以直接嵌入到C/C++代码中.
这是一个用这种语言编写的简单示例,我称之为WDI(Web开发接口): /* * Simple wdi/html sample source code */ #include <mySite> string name = "myName"; string toCapital(string str); html { head { title { mySiteTitle; } link(rel="stylesheet",href="style.css"); } body(id="default") { // Page content wrapper div(id="wrapper",class="some_class") { h1 { "Hello," + toCapital(name) + "!"; } // Lists post ul(id="post_list") { for(post in posts) { li { a(href=post.getID()) { post.tilte; } } } } } } } 基本上它是一个修改过的C源,具有用户友好的html界面. 因此,例如标题1标记将像这样转换: h1 { "Hello," + toCapital(name) + "!"; } // would become: printf("<h1>Hello,%s!</h1>",toCapital(name)); 我的主要目标是创建一个解释器,将wdi源转换为html,如下所示: tag(attributes){content} => < tag attributes> content< / tag> 其次,解释器返回的html代码必须用printfs插入到C代码中. wdi中出现的变量和函数也应该进行排序,以便将它们用作printf参数(示例源中的toCapital(name)的情况). 我正在寻找有效的(我想创建一个快速解析器)方法来为wdi创建一个词法分析器和解析器.已经尝试过flex和bison,但我不确定它们是否是最好的工具.有什么好的选择吗?创建这样一个解释器的最佳方法是什么?你能就这个问题提供一些简短的文献吗? 解决方法
如果您对此非常认真,那么您要做的是修改现有的C解析器.
Edison Design Group C Front End可能是一个选项,虽然它真的只想成为C(C)前端.
另一种选择是我们的DMS Software Reengineering Toolkit.DMS可以用C Front End获得,其中包含完全由语法驱动的完整C语法分析器. DMS为构建语言方言提供直接支持,你想要做的是建立一个C方言,这样就可以支持你的目标. DMS还提供了许多用于构建翻译器的机器,因此将您的方言翻译成真正的C代码并将其发出相当容易. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |