我正在考虑在haskell中编写一个编译器,为了获得一些知识和经验,我将尝试为现有语言实现编译器。有人能给我一份适合这个的语言清单吗?
提前致谢
答案 0 :(得分:8)
Pascal可能是一个好的开始 - 你可以一次编译它。 Lisp的一个子集可能对于掌握lambda提升的想法很有用。 ML或甚至是Haskell的一个子集可能有助于您理解类型推断。考虑使用LLVM作为后端,它将为您节省一些时间来实现无聊的东西。
答案 1 :(得分:5)
Scheme通常用于此目的。对于Haskell,甚至还有一个名为Write Yourself a Scheme in 48 hours的教程。
答案 2 :(得分:3)
编写编译器的最简单语言是现有的“深奥语言”,如brainfuck,因为它们具有最小的指令集和最简单的语法。您可以尝试使用更复杂的语言,但最好还是先用简单的方法来理解基础知识,然后再进一步了解。
答案 3 :(得分:2)
世界总是需要另一个c编译器:)
答案 4 :(得分:2)
PL / 0是一种用于教授编译器构造的简单语言。为了学生的利益,Samuel Williams在Python中编写了一个编译器(以及一个虚拟机):http://www.oriontransfer.co.nz/learn/pl0-language-tools/index
答案 5 :(得分:1)
据我所知,最容易编译的语言之一是Forth。我认为即使对于相对新手来说,为Forth编写一个编译器也是可以实现的。
答案 6 :(得分:1)