AST抽象语法树
解析器 Parser
这个步骤分为2个阶段,词法分析和语法分析
词法分析:
词法分析阶段把字符串形式的代码转换为 令牌(tokens)流。
分词:将整个代码字符串分割成最小语法单元数组,每个不可分割的最小单元为一个token,最终为tokens组成的一维数组
例如 var 这三个字符,它只能作为一个整体,语义上不能再被分解,因此它是一个 Token。
[
{ type: { ... }, value: "n", start: 0, end: 1, loc: { ... } },
{ type: { ... }, value: "*", start: 2, end: 3, loc: { ... } },
{ type: { ... }, value: "n", start: 4, end: 5, loc: { ... } },
]
语法分析:
语法分析会将分析出来的 Token 流转化成有语法含义的AST抽象语法树。同时,验证语法,语法如果有错的话,抛出语法错误。
function square(n) {
return n * n;
}
语法分析生成的ast结构:
{
type: "FunctionDeclaration",
id: {
type: "Identifier",
name: "square"
},
params: [{
type: "Identifier",
name: "n"
}],
body: {
type: "BlockStatement",
body: [{
type: "ReturnStatement",
argument: {
type: "BinaryExpression",
operator: "*",
left: {
type: "Identifier",
name: "n"
},
right: {
type: "Identifier",
name: "n"
}
}
}]
}
}
阅读剩余
版权声明:
作者:chun
链接:https://chun53.top/1536.html
文章版权归作者所有,未经允许请勿转载。
THE END