【发布时间】:2010-10-17 12:38:54
【问题描述】:
我看到了所有这些用于 .NET 和 JVM 的新语言。一个人如何开始制作一个?
我找不到任何关于 JVM 或 MSIL 规范的好的文档。
编辑
我已经知道如何解析,我更感兴趣的是为什么有这么多人基于这些平台制作新语言。
【问题讨论】:
标签: .net compiler-construction jvm
我看到了所有这些用于 .NET 和 JVM 的新语言。一个人如何开始制作一个?
我找不到任何关于 JVM 或 MSIL 规范的好的文档。
编辑
我已经知道如何解析,我更感兴趣的是为什么有这么多人基于这些平台制作新语言。
【问题讨论】:
标签: .net compiler-construction jvm
对于 .NET,您可以使用 DLR 的表达式树,甚至可以编译成现有的高级语言,如 C# 或 Java,然后对其进行编译。一些高级非 VM 语言(如 Haskell 和 Eiffel)编译为 C。如果您想编译为 MSIL 或 JVM 字节码,可以使用Mono.Cecil 或BCEL 使这更容易做到。
【讨论】:
MSIL 不再称为 MSIL,作为公共标准,它是 CIL(通用中间语言),是 CLI(通用语言基础结构)标准的一部分。
这是ECMA-335 CLI 标准规范。
【讨论】:
你有点走运。为 .NET 开发的语言呈爆炸式增长,并且有针对像您这样的个人的文章/资源(不仅仅是有大量资金可以投资的大公司)。
搜索“动态语言运行时”,然后从那里开始。
这里有一些链接:
Blog of the guy who is the brain behind IronPython
The home of the Dynamic Language Runtime
An article about how IronPython was implemented
A blog posting talking about abstract syntax trees and the DLR
【讨论】:
Java Virtual Machine Specifications, Second Edition 可在线获取。
可以通过编写一个生成 Java 字节码(在 JVM 规范中定义)的编译器来定位 JVM。
或者,通过利用现有的库,例如 Apache BCEL,可以通过 Java 程序生成有效的 class 文件,而无需在字节级别实际操作字节码。
【讨论】: