假设我为其中一个托管代码环境(.NET / JVM)设计了一种新的编程语言。我现在可以通过简单地编写一个将这种新语言的源代码翻译成平台主语言(C#/ Java)的翻译器来实现它,然后让平台的编译器和其他工具处理剩下的工作这个过程?是否有任何简单的概念证明,这种方法的例子?
答案 0 :(得分:6)
是的,只要语义映射正确,就可以这样做(例如,在将JavaScript代码映射到C#等语言时必须小心,因为范围规则不同)。
它不在托管平台上,但您可以查看Vala。它是一种类似C#的语言,编译为C.Eiffel也编译为C(并支持编译为Java)。
但是,如果您使用的是托管平台,则可能需要直接查找字节码。 Java字节码并不难发出,因为VM负责处理并为更复杂的编译提供指令(例如管理堆栈帧),VM消除了其他毛茸茸的角落,例如寄存器分配。
答案 1 :(得分:1)
是的,你当然可以这样做。您将遇到的主要问题是难以为您的语言提供源级别的运行时诊断/调试。
答案 2 :(得分:1)
当然,我使用的第一个C ++编译器将代码转换为C,然后使用系统编译器和汇编器来创建可执行文件。我相信这是来自Sun,但已经有一段时间了。实际上,C to assembly正在做同样的事情。
答案 3 :(得分:0)
我不确定这是不是一个好例子:http://www.mozilla.org/rhino/jsc.html
答案 4 :(得分:0)
我建议采取两个步骤:
首先,将您的语言翻译或编译器改为C#或Java。 其次,翻译成.NET代码(CIL或MSIL)或Java字节码。
(另一个编译器和编程语言设计爱好者)