我正在创建一种新的特定于域的语言。你如何测试语言,或者你可以用语言做什么(转换,编译,检查)。 学习最佳实践有哪些好的参考或出发点?
答案 0 :(得分:1)
您可以以测试优先的方式构建编程语言:
如果您想了解有关如何创建编程语言的更多信息,“The Definitive ANTLR Reference”一书是一个很好的起点。
测试新语言语法的一个非常有用的模式如下:
有时断言从两个AST生成的代码是相同的更方便。
像构建语言一样构建测试:
答案 1 :(得分:1)
我喜欢劫持其他项目的工作单元测试。例如,如果我知道boost单元测试正在运行,那么我可以在XYZ新的编译时操作之后重新运行测试并确保它们仍然通过。我不确定其他语言有什么用,但IMO for C ++,boost是最终的编译器压力测试。
对于一种新语言,我会将其置于我的标准评估程序之下:
它远非完美,但它会迫使您构建各种算法/策略,结果是一个紧凑的验证测试。如果您对语言规范进行了更改,那么更新您的解决方案以容纳它们并不困难。
答案 2 :(得分:0)
这可能与您尝试提出的内容完全无关,但PHP附带自动化测试脚本,因此任何人都可以测试基本语言功能(变量,'if'语句,循环等)是否正常工作。 / p>
答案 3 :(得分:0)
传统的方法是使用您正在实现的语言来引导您的实现。这样你就可以获得一个“免费”的大型测试套件(当然相对而言),你有很强的动力来解决问题并进行优化。
答案 4 :(得分:0)
要研究的第一件事是unit testing,因为这是开发人员应该从一开始就做的事情。事实上,有些人甚至提倡在编写任何实际代码之前编写单元测试。
对于大多数流行语言(如Java,Python等),有许多单元测试框架。 This blog post提供了Javascript单元测试框架的完整列表。
下一步是了解lint
程序,这些程序检查代码库是否存在错误或不清楚的结构。这通常不包含在构建过程中,但是是测试的重要部分。有C,Javascript和Python等lint程序。