是否有工具来验证ECMAScript并确认它与ECMAScript语言规范第3版兼容?

时间:2013-09-16 23:45:52

标签: javascript eclipse validation ecma262

我目前正在试图弄清楚为什么JSDT会发布“JavaScript error on valid regex”之类的错误。

在我测试时,我意识到它适用于这样的简单文件:

var a = {
    urlParseRE: /^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
    test: b.replace(/^\/|(\/[^\/]*|[^\/]+)$/g, "")
};

并报告jQuery.mobile-1.3.1.min.js等复杂文件的错误。

我使用在线工具格式化了模仿的jQuery脚本,然后删除了几乎所有内容,以制作一个有助于复制问题的简单示例。当文件大小从大约3000行减少到300行时,在上面的原始文件之前发布了一些新的验证错误。我最终完成了不同问题的实验。验证错误发布在',',如下例所示:

!function(){
    window.alert("passed 1");
}(),
function(){
    window.alert("passed 2");
}();
window.alert("passed 3");

我理解JSDT项目暂时休眠并仅支持ECMAScript v3所以在创建新问题之前,我想确定最后一个简单的js示例对于ECMAScript语言规范第3版是正确的。是否有任何在线或离线工具来验证?

2 个答案:

答案 0 :(得分:2)

您可以使用Esprima

“用于多功能分析的ECMAScript解析基础设施”

如果您将最后一个块提供给Esprima的验证器,它会说“代码在语法上是有效的。”

Esprima遵循ES5,因此从技术上讲,它可以传递与ES5相关的语法,而ES3兼容的解析器将无法理解。

但在这种情况下,我没有看到任何与ES5有关的内容,所以它一定是JSDT中的一个错误。

答案 1 :(得分:0)

有些过时,但是https://jshint.com/指出了ES3和ES5问题