如何开发语言语法检查器?

How to develop language syntax checker?

我想为我的网络项目开发一个语法检查工具。目的是分析ECMAScript 6语法。

我知道,有一些像BabelJs这样的工具,那里有这样的工具(但是是在NodeJs环境下开发的),但是我想尝试制作这样的工具,因为得到了新的知识。

什么喊我开始看,哪些书和文章? 我会突出显示我想要的,我不需要 compiler/interpreter,我只想要一个语法检查器。

您需要:

  • 详细了解 ECMAScript 6 规范;
  • 构建词法分析器
  • 构建解析器

您需要从良好的理论资源中学习经典的词法分析和语法分析。有了这些背景,您可以考虑为 ECMAScript 6 构建词法分析器和解析器,这是进行基本语法检查的。

参见 https://en.wikipedia.org/wiki/Parsing,尤其是参考文献。理想的是 Aho/Ullman/Sethi 有关编译的书。

不要期望这很容易(大多数解析器新手都会犯这个错误);解析实际上是一个相当复杂的话题。期望花费大量的努力来学习如何正确地做到这一点。如果要检查语法并抱怨,您还需要学习如何在解析器中构建语法错误恢复;做这件事的技巧并不好 documented/taught.

强烈提示:如果使用词法分析器生成器和解析器生成器工具,构建词法分析器和解析器会容易得多。您仍然需要编译器基础知识才能理解它们的作用。

这是可供选择的词法分析器 ("regular expression") 和解析器生成器列表:http://en.wikipedia.org/wiki/Comparison_of_parser_generators

JavaScript 具有一些特征 ("semicolon insertion"),这使得它很难用大多数传统方法进行解析。所以你需要做的是学习理论以获得正确的基础知识,然后学习如何改变解析器来处理像 JavaScript.

这样的奇怪情况

您还需要特殊的解析器来从构成您的 "web project".

的 HTML 页面中提取 JavaScript