语法约定

最新更新: 2019-08-23 11:24:52 阅读: 38次

ECMAScript 程序的源代码文本首先被转换为一个输入元素的序列,其中的每一项是托肯、行结束符、注释或空白中的一个。源代码文本被从左到右扫描,重复地把最长的可能的 字符序列作为下一个输入元素。
    词法文法中有两个目标符。符号输入分隔元素在其它语法文法中上下文中可以是一个除号(/) 或除法赋值(/=)运算符。符号输入元素正则表达式在其 它语法文法上 下文中使用。
   需要注意的是,除号和正则表达式常量存在于语法文法中的上下文中,且都被语法文法允许;不论如 何,在斜线号不被识别为正则表达式常量的开始这一情况下,词法文法使用输入分
隔元素目标符。为了使它能在任何情况 下正常工作,可以把正则表达式常量用括号括起。

ECMAScript 程序的源文本首先转换成一个输入元素序列;tokens,行终结符,注释,空白构成输入元素序列。从左到右扫描源文本,反复获取作为下一个输入元素的尽可能长的字符序列。

 词法文法有两个目标符。InputElementDiv 目标符用在允许除法 (/) 或除赋值 (/=) 运算符开始的语法文法上下文中。InputElementRegExp 目标符用在其他语法文法上下文。

 没有允许除法或除赋值运算符开头,同时又允许 RegularExpressionLiteral 开头的语法文法上下文。这不会被分号插入(见 7.9)影响;如下面的例子:

a = b /hi/g.exec(c).map(d);

 其中 LineTerminator 后的第一个非空白,非注释字符是斜线(/),并且这个语法上下文允许除法或除赋值运算符,所以不会在这个 LineTerminator 位置插入分号。也就是说,上面的例子解释为:

a = b / hi / g.exec(c).map(d);