javascript词法

普通词法

LineTerminator 换行符

Comment 注释

CommonToken 词

IdentifierName 标识符名称,典型案例是我们使用的变量名,注意这里关键字也包含在内了。

Punctuator 符号,我们使用的运算符和大括号等符号。

NumericLiteral 数字直接量,就是我们写的数字。

StringLiteral 字符串直接量,就是我们用单引号或者双引号引起来的直接量。

Template 字符串模板,用反引号` 括起来的直接量。

WhiteSpace 空白字符

特殊词法

意义:对于一些容易混淆的符号容易弄混乱。譬如"/"可能是除号或者正则。而字符串模板中,${}内部可以放任何javascript表达式代码,这些代码以"}"结尾,所以这部分词法不允许出现"}"运算符

其他部分大多一致,但是上述的两例被Token单独拿出来CommonToken

其它特殊Token

字符串模板 Template

正则表达式直接量 RegularExpressionLiteral

InputElementRegExpOrTemplateTail;

InputElementTemplateTail

InputElementRegExp;

InputElementDiv;

探究:试着写一个javascript的解释器(编译原理角度)