js的acorn如何返回上一个token
时间: 2023-06-14 19:07:00 浏览: 51
Acorn 可以通过 `acorn.getTokenAt()` 方法返回指定位置上一个 token 的信息。该方法需要传入两个参数:`line` 和 `column`,分别表示行数和列数。它将返回一个对象,包含了上一个 token 的相关信息,如类型、值等。你可以在代码中使用这个方法来获取上一个 token,例如:
```
const acorn = require('acorn');
const code = 'const a = 1;';
const tokens = acorn.tokenizer(code); // 获取所有 token
let pos = 0;
let lastToken = null;
while (lastToken === null || pos < code.length) { // 遍历 code
const token = tokens.getToken(); // 获取当前 token
if (token.end > pos) { // 当前 token 位置在 pos 之后,说明上一个 token 为 lastToken
lastToken = token;
}
pos = token.end;
}
console.log(lastToken); // 输出上一个 token 的信息
```
在上面的代码中,我们先调用 `acorn.tokenizer()` 方法获取所有 token,然后通过遍历代码的方式找到指定位置之前的上一个 token。具体来说,我们维护一个 `pos` 变量表示当前遍历的位置,通过比较 token 的 `end` 属性和 `pos` 的大小来判断当前 token 的位置是否在 `pos` 之后,如果是,则说明上一个 token 为 `lastToken`。最后输出 `lastToken` 的信息即可。