我正在编写脚本语言,并希望为我的语言编写编译器/解释器。
我已经选择在标准ML
中进行编译我现在的问题是,是否存在进行此类设计过程的“模式”?
我从头开始编写了一个java编译器作为计算机科学课程的一部分,但这是一种作弊,因为语言是给定的,这意味着有参考实现和语法,语法和其他规范。
如果从头开始,只有问题域如何开始?
我正在寻找关于这个主题的书或教程。
答案 0 :(得分:4)
关于功能语言中现代编译器构造的经典书籍是:
答案 1 :(得分:2)
Concepts, Techniques and Models of Computer Programming。本书不是直接关于如何设计语言,而是深入探索一种有趣语言(Oz)的功能,它们如何交互,以及它们如何实现各种使用模式和功能。它非常适合了解各种设计决策和功能的含义。阅读一些这样的书籍,观察所产生的语言,并从中综合,是学习如何设计语言的一种不错的方式。
同样地,但更实际的是,Programming Scala能够很好地解释语言功能如何实现风格。
许多语言设计最终都是品味和良好感觉。阅读对现有语言的深入探索是培养和磨练这种品味的好方法。