Riz*_*izo 8 html c parsing interpreter lexer
我正在尝试编写一种用于编写标记代码的元语言(例如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; } }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上它是一个修改过的C源代码,具有用户友好的html界面.正如您所看到的,传统的基于标签的样式被类似C的命令所取代,其中的块由花括号分隔.我需要构建一个解释器来将此代码转换为html,然后将其插入到C中,以便可以编译它.C部分保持不变.在wdi源代码内部没有必要使用print,每个return语句都将用于输出(在printf函数中).该程序的输出将是干净的HTML代码.
因此,例如标题1标记将被转换为:
h1 { "Hello, " + toCapital(name) + "!"; }
// would become:
printf("<h1>Hello, %s!</h1>", toCapital(name));
Run Code Online (Sandbox Code Playgroud)
我的主要目标是创建一个解释器来将wdi源转换为html,如下所示:
tag(attributes) {content} => <tag attributes>content</tag>
其次,解释器返回的html代码必须用printfs插入到C代码中.wdi中发生的变量和函数也应该进行排序,以便将它们用作printf参数(示例源中的toCapital(name)的情况).
我正在寻找有效的(我想创建一个快速解析器)方法来为wdi创建词法分析器和解析器.已经尝试过flex和bison,但我不确定它们是否是最好的工具.有什么好的选择吗?创建这样一个解释器的最佳方法是什么?你能就这个问题提供一些简短的文献吗?
如果您真的对此很认真,那么您想要做的就是修改现有的 C 解析器。Edison Design Group C 前端可能是一个选择,尽管它确实希望只是一个 C (C++) 前端。
另一个选择是我们的DMS 软件重组工具包。可以通过C 前端获得 DMSDMS 可以通过包含完全由语法驱动的完整 C 解析器的
DMS 提供了对构建语言方言的直接支持,而您想要做的是构建 C 方言,因此它将支持您的目标。DMS 还提供了许多用于构建翻译器的机制,因此将您的方言翻译成真正的 C 代码并发出它会相当容易。
| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |