在我不断努力满足我对更多编程知识的无尽渴望的过程中,我想出了尝试编写一种(至少目前是)简单的编程语言来编译成字节码的想法。问题是我不知道关于语言设计的第一件事。是否有人对构建解析器的方法以及每种语言应具有的基本功能有什么建议?对于语言设计,你会推荐什么读物?我应该拍摄多高的水平?希望能够包含一种允许以类似于 gcc 允许内联汇编程序的方式内联字节码的功能是不现实的吗?看到我主要用 C 和 Java 编写代码,哪个更适合编译器编写?
问问题
1327 次
3 回答
3
有很多方法...
您可以查看堆栈语言和 Forth。在设计其他语言时它不是很有用,但它可以很快完成。
你可以看看函数式语言。它们大多基于一些简单的概念,并具有简单的解析。然而,它们非常强大。
然后是传统语言。他们是最难的。您需要了解词法分析器、解析器、LALR 语法、LL 语法、EBNF 和常规语言才能通过解析。
以字节码为目标不仅仅是一个好主意——否则在学习练习中是疯狂的,而且大多是无用的。
帮自己一个忙,并查找有关编译器的书籍和教程。
C 或 Java 都可以。Java 可能有一个优势,因为面向对象非常适合这种类型的任务。我个人的推荐是 Scala。做这类事情是一门很好的语言,它会一路教你关于语言设计的有趣事情。
于 2009-07-30T18:21:24.593 回答
1
你可能想先读一本关于编译器的书。
为了真正了解正在发生的事情,您可能希望用 C 编写代码。
如果您想编写解释型语言(例如Jython),Java 不会是一个糟糕的选择。但是因为听起来你想编译成机器代码,所以在 C 中可能更容易。
于 2009-07-30T18:17:19.187 回答