来自https://github.com/google/caja/blob/master/src/com/google/caja/parser/js/Parser.java
下面的语法是此解析器解析的语法的上下文无关表示。它与Ecmascript 262 Edition 3(ES3)不同,在Ecmascript 262
Edition
3中,实现与ES3不同。代码中已详细注释了分号插入的规则以及正确处理回溯所需的表达式中可能发生的回溯,因为分号插入需要来自词法分析器和解析器的信息,并且无法通过有限的超前方式确定。值得注意的功能
- 在错误不会阻止任何进一步错误的队列上报告警告,以便我们可以在一次编译过程中报告多个错误,而不是强迫开发人员玩弄乱子。
- 不解析Firefox样式,
catch (<Identifier> if <expression>)因为它们不适用于IE和许多其他解释器。- 可以识别,
const因为许多口译员会这样做(不是IE),但会发出警告。- 允许但警告在
Array和Object构造函数中的尾部逗号。- 允许使用关键字作为标识符名称,但是会因为不同的解释器具有不同的关键字集而发出警告。这使我们可以使用扩展关键字集。
要解析严格的代码,请传入
PedanticWarningMessageQueue并将转换MessageLevel#WARNING为的MessageLevel#FATAL_ERROR。
CajaTestCase.js演示如何设置解析器,同一类中的[
fromResource]和[
fromString]显示如何获取正确类型的输入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)