我尝试对所有C到硬件编译器进行调查/历史记录.
对于所有不了解它们的人:他们采用C代码然后将其转换为某种硬件描述语言(如VHDL或Verilog),然后可用于生成硬件(通常它被映射到FPGA - 但我不限于此,作为目标的ASIC也会很好).
我已经收集了一些(+关于它们的信息).所以我的问题是:你知道任何其他编译器(如果有的话,有任何引用,指针,有关它们的信息)?
到目前为止我的清单:
(我知道列表中并不是所有人都有C作为源,有些人使用类似C语言的方言,而且几乎所有人都只支持一个子集,我也对此感兴趣).
编辑:我知道如何使用谷歌,所以我已经检查了因果嫌疑人,并已包括结果.因此,如果他真的知道一些纸张或异国情调的工具(或者可能不那么奇特,但实现了某种程度上隐藏的功能,并且编译器没有被广告),那么很可能有人只能回答这里.
我用一种旧的自我构思的脚本语言得到了大量遗留代码,我们将其编译/转换为javascript.
该语言有条件跳转,跳转到标签.与常见的goto语句的区别在于,不能进行向后跳转.该语言中没有嵌套的if语句和循环.
由于goto中不存在goto,我正在寻找一种转换goto mylabel
并mylabel:
进入语义等效结构的算法.
我想使用ifs
但发现它不是微不足道的,因为goto标签的任意嵌套.
例:
if cond1 goto a
do something1
if cond2 goto b
do something2
a:
do something3
if cond3 goto c
do something4
c:
do something5
b:
Run Code Online (Sandbox Code Playgroud)
可以改写为:
lbl_b=false;
lbl_c=false;
lbl_a = cond1;
if (!cond1) {
do something1;
lbl_b = cond2;
if (!lbl_b) {
do something2;
}
}
if (!lbl_b) {
do something3;
lbl_c = cond3;
if (!lbl_c) {
do something4;
}
do something5;
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法从中推导出一般算法.
有人知道从ANTLR生成EBNF的工具吗?ANTLR已接近EBNF,但出于文档目的,我希望有一个干净的EBNF描述(中间没有代码).
使用antlrworks,这已经很好地获取语法图:
java -cp antlrworks-1.1.4.jar org.antlr.works.Console -f yql.g -o output/ -sd eps
Run Code Online (Sandbox Code Playgroud)
但它希望有一个简单的文本描述,更好的文本,tex,html,xml或类似.