Javascript语法测试用例

| 我正在创建一个文本编辑器,并且我刚刚完成了突出显示算法的编写,以使每种语法以不同的颜色显示,并使用正确的解析树在正确的位置进行渲染。 我想知道是否有人可以提供给我,或者一个测试或一系列测试用例的位置,以确保没有任何损坏。测试用例应涵盖网络上使用的所有JavaScript语法,包括边缘用例(即包括ѭ0including这样的语法,尽管很少使用),DOM创建和操作等。 我添加了以下静态测试用例。它应该涵盖所有语法。 有几件事要注意:由于代码是在语法级别上递归解析的,因此仅需要基本用例。例如,对于编辑器: a [1];和a [1] [2] [3] [4] [5];将是相同的语法。由于第二行,递归地包含了比第一行更多的子。 我创建的测试用例已移至下面的答案。     
已邀请:
有趣的问题。我认为,除这里其他有趣的建议外,我最初的方法是从相当主要的库中获取一堆JavaScript。我在考虑jQuery,Mootools,Prototype等。 然后,一旦您完成了一些主要的库,就做一些较小的库。我要结帐Github。也许在https://github.com/languages/JavaScript上查看Underscore,HeadJS以及其他一些内容。 我还将使用几个缩小的库,通过JSBeautifier运行它们。不知道美化的JS语法是否可能与原始语法略有不同。 最后,我将考虑通过JSLint运行这些库中的一些,然后手动遍历并修改源,以明确命中JSLint所布置的某些“规则”。 编辑:并且通过\“ hit \”,我的意思是确保您涵盖每个规则提供的两种情况,而不仅仅是\'clean \'版本。     
一种可能的方法:有各种各样的应用程序将从某种语言的BNF语法(例如这种语言)开始生成随机的代码段,并且有可用的javascript语法文件。 这不会给您带来一个静态测试用例,您可以用它编写脚本以对测试产生已知的预期结果,这肯定是必要的,但是这可能是一种针对意外(但合法)字符串测试解析器并确保其不会损坏的好方法。     
这是迄今为止我能想到的最好的测试用例。 编辑:添加了正则表达式,并抛出。这种情况在语法上是有效的,应该涵盖所有JS情况。如果您发现任何遗漏,请直接给我发消息,以便我可以在此处添加。
a = 1;
b = { \'a\' : a };
c = \'a\';
d = this;
var patt1=/w3ghouls/i;
throw \"Err3\";
function e(a,b,c){
    d += a + b + c++;
    return d;
}
this.xy.z = function(a, b){
    var x = null;
}
var f = function(a,b){
    if(a == b || (b === a && a)){
        var f = [a,b];
        try{
            f = f.slice(0);
        }catch(e){
            console.log(e * e + \'\');
        }
    }else if(a){
        a = null;
        a = undefined;
        b = typeof a;
        b = true;
        b = false;
    }else{
        switch(c){
           case \'c\':
             break;
           default:
             null;
             break;
        }
    }
}
for(var i =0; i <= a.length; i++){
    do{
       continue;
       null;
      }while(a != b);
}
if(a == b)
  (a) ? null : null;
/* This is a finished 
   test case */
    
一个很好的开始方法是通过JSLint运行此命令,以查看您的JavaScript是否有效。这是我所知道的最好的检查工具,但是我不确定检查代码是否损坏。 :( 希望能有所帮助。     

要回复问题请先登录注册