在我不断寻求更多编程知识的努力中,我想出了一种尝试编写(至少现在)编译成字节码的简单编程语言的想法。问题是我不知道关于语言设计的第一件事。有没有人对构建解析器的方法以及每种语言应具备的基本功能有什么建议?你会为语言设计推荐什么样的读物?我的拍摄水平有多高?希望能够包含一个功能以允许内联字节码以类似于允许内联汇编程序的gcc的方式是不现实的吗?看到我主要使用C和Java编写代码,这对编译器编写会更好吗?
答案 0 :(得分:3)
有很多方法......
您可以查看堆栈语言和Forth。在设计其他语言时它并不是很有用,但它可以很快完成。
您可以查看函数式语言。它们中的大多数都基于一些简单的概念,并且具有简单的解析。然而,它们非常强大。
然后,传统语言。他们是最难的。您需要了解词法分析器,解析器,LALR语法,LL语法,EBNF和常规语言才能通过解析。
定位字节码不仅仅是一个好主意 - 在学习练习中,做其他方面只是疯了,而且大多没用。
帮自己一个忙,查阅有关编译器的书籍和教程。
C或Java都可以。 Java可能具有优势,因为面向对象非常适合此类任务。我的个人推荐是Scala。这种类型的东西是一种很好的语言,它将教会你有关语言设计的有趣信息。
答案 1 :(得分:1)
您可能希望先阅读a book on compilers。
为了真正了解正在发生的事情,您可能希望用C编写代码。
如果你想编写一种解释性语言,例如Jython,Java就不是一个糟糕的选择。但是,因为它听起来像是要编译成机器代码,所以在C中可能更容易。
答案 2 :(得分:1)