假设我为其中一个托管代码环境(.NET/JVM)设计了一种新的编程语言。我现在可以通过简单地编写将这种新语言的源代码到平台(C#/ Java的)的主要语言翻译,然后让该平台的编译器和其它工具处理过程的其余部分实现它?有没有简单的概念证明,这种方法的例子?实现新的编程语言
实现新的编程语言
回答
是的,你可以做到这一点,只要语义地图正确(必须小心,例如,在映射JavaScript代码的语言,如C#,因为范围的规则是不同的)。
这不是一个管理平台上,但你可以看看Vala。它是一种类似C#的语言,编译为C. Eiffel也编译为C(并支持编译为Java)。
如果你是一个管理平台上,然而,你可能想在看直接发射字节码。 Java字节码不难发出,因为VM负责并为更复杂的编译部分(如管理堆栈帧)提供指令,并且VM消除了其他毛病如角色分配等问题。
是的,你当然可以这样做。您将遇到的主要问题是,为您的语言提供源级运行时诊断/调试很困难。
这不像起初看起来那么难。只需要有一个“调试”模式编译,在新代码执行时存储原始行号。然后你只需要编写一个简单的调试器来捕获顶级异常并输出最后一个传入的行标记。然后你可以看中它,并允许单步执行标记或将它们追踪到日志文件。与开发新语言的主要任务相比,我认为这相对容易。 – JOTN 2010-11-10 01:16:36
当然,第一C++编译器我用翻译的代码C,然后使用的系统编译器和汇编以创建可执行文件。我相信它来自Sun,但它已经有一段时间了。真的,组装C是做同样的事情。
我不知道这是否是一个很好的例子与否:http://www.mozilla.org/rhino/jsc.html
我建议2个步骤:
首先,请从您的语言翻译或编译器C#或Java。 其次,将转换器转换为.NET代码(CIL或MSIL)或Java字节码。
(另一个编译器&编程语言设计hobbyst)为努力
- 1. 以新的编程语言实现xunit
- 2. 徽标编程语言的实现
- 3. 如何实现中去编程语言
- 4. 俄语编程语言“Rapira”的现代实现?
- 5. Osek实现语言
- 6. 使用不同的GPL(通用编程语言)实现的DSL(域特定编程语言)
- 7. 编程语言
- 8. 在现实世界中的D编程语言?
- 9. 编程语言的原语
- 10. 编写的编程语言
- 11. Swift编程语言枚举实验
- 12. 如何通过编程语言实现异常处理?
- 13. 如何为编程语言实现自动完成器
- 14. 你将如何实现一个函数式编程语言?
- 15. 如何实现使用Java作为编程语言
- 16. 如何设计和实现编程语言?
- 17. 如何以lc3汇编语言实现PRINT子程序?
- 18. 在解释性编程语言中实现函数
- 19. 可以用相同的语言L来实现语言L的编译器吗?
- 20. 语言在Apache Solr实现
- 21. 实现多语言PHP
- 22. 实现语言选择器
- 23. 编程语言C
- 24. NesC编程语言
- 25. C编程语言
- 26. Siri编程语言
- 27. .NET编程语言
- 28. R语言编程
- 29. SIMD编程语言
- 30. Scheme编程语言
资源(词法,语法分析,构建一个AST,如果你愿意的话,等...):学习写一个编译器(HTTP:/ /stackoverflow.com/q/1669/2509)。 – dmckee 2010-11-10 00:48:17