我对诸如操作系统、算法、数学证明软件正确性等底层概念很感兴趣。
最让我感兴趣的是编译器。我开始学习它们,并希望为了学习而实现一个玩具编译器,也许它会变成一些大东西(你永远不会知道,对吧?)
我的目标是实现类似lua的静态类型的线程感知编程语言(第一个目标当然是具有基本堆栈操作的解释器)。我的问题是,我对低级语言如c、c++或pascal几乎没有兴趣,我想知道是否有可能在动态类型的环境中实现静态类型语言的编译器?
我对用lua或python实现这样的语言很感兴趣(lua更适合我)。
发布于 2012-07-30 07:56:45
简单的问题:是的,绝对是,它一直都在做。大多数编译语言最终都是“自举”的,这样它们自己的编译器就是用语言本身编写的:例如,标准的javac编译器就是用Java语言编写的。
发布于 2012-07-30 08:01:08
是的。事实上,最新版本的C#的编译器将会被实现...在C#中:http://blogs.msdn.com/b/csharpfaq/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx
(我说的是Roslyn C#库:)
这项工作的基础是用C#编写的新的C#编译器(也是用VB编写的新的VB编译器,详细信息请参阅VB团队的博客)。
编辑
看看这个:https://bitbucket.org/pypy/pypy
它是用Python编写的Python的一个实现。
发布于 2012-08-02 03:20:23
正如其他人所指出的,是的,这是可能的,但是……
1-使用编译器,通常被实现的编程语言和用于实现的编程语言之间的耦合性很弱。另一方面,不同的语言有不同的社区和不同的“专业领域”。对于编写编译器,前端函数式编程语言(Haskell、Ocaml等)有更多丰富的用例和实例库,你可能想探索that.Also他们的社区充满了编程语言极客,他们非常乐意分享他们的经验。
2-如果你对编写一个解释器(或翻译器)感兴趣,那么这个故事就是different.Some主机语言的特性强烈影响你的解释型语言的易用性。例如,你的解释型语言中的一些特性可以是implemented.For,应用程序顺序,动态作用域和闭包更容易在主机中实现,并且解释型语言遵循相同的规则。
https://stackoverflow.com/questions/11713964
复制相似问题