有没有用JavaScript或Java编写的C语言解释器?
我不需要完整的解释器,但我需要能够逐步执行程序并能够在Web界面中查看变量、堆栈等所有内容。
这个想法是通过展示程序的逐步执行来帮助C语言初学者。
我们正在使用GWT构建界面,因此如果Java中存在某些东西,我们应该能够使用它。
我可以修改它以满足我的需求,但如果我可以避免编写解析器/抽象语法树遍历器/堆栈操作...那就太好了。
编辑:
明确一下,我不想模拟完整的C语言,因为有些程序可能非常棘手。
所谓“逐步”,指的是基本操作,如:表达式求值、赋值、函数调用。
我想要模拟的C语言将包含:变量、for循环、while循环、函数、数组、指针、数学函数。没有goto、字符串函数、ctypes.h、setjmp.h...(至少目前没有)。
以下是一个原型:http://www.di.ens.fr/~fevrier/war/simu.html
在这个例子中,我们已经手动将C代码转换为javascript表示,但它是有限的(例如,a == 2 || a = 1
等表达式未处理),并且仅限于手动转换的程序。我们可以使用远程服务器上的C编译器来检查代码是否正确(并且没有任何未定义的行为)。解析/AST构建也可以在远程完成(因此可以使用任何语言),但AST遍历需要在javascript中进行,以便在客户端上运行。
tcc
。TCC将C程序直接编译为x86可执行文件,而该x86代码再次由上述堆栈运行。祝你在JavaScript中使用它好运! - user395760C
是一种非常小的语言。你的要求要求“不是整个C”并不能真正给你带来任何松动。我认为这并不是轻而易举就能做到的。 - Noufal Ibrahim