PEG.js是一个parser generator,
它根据语言的parsing expression grammar生成parser。
在node中使用
算术表达式的语法如下:arithmetics.pegjs
在node中使用,需要安装pegjs到package.json的dependencies中,
npm install --save pegjs
然后读取语法文件的内容,使用peg.generate生成parser。
const fs = require('fs');
const peg = require('pegjs');
const grammar = fs.readFileSync('./arithmetics.pegjs', 'utf-8');
const parser = peg.generate(grammar);
const code = '2 * (3 + 4)';
const result = parser.parse(code); // 14
注意,
parser.parse得到的结果result不是一个AST,而是算术表达式的值。
这是由parsing expression grammar的特点决定的。
在前端使用
peg.js也支持在前端使用,
需要安装pegjs和pegjs-loader到package.json的devDependencies中,
npm install --save-dev pegjs pegjs-loader
然后在webpack.config.js中增加loader,
module.exports = {
...
module: {
rules: [
...
{
test: /\.pegjs$/,
loader: 'pegjs-loader'
}
]
}
}
使用parser的地方只需要require或者import语法文件即可,
const parser = require('./arithmetics.pegjs');
// 或者
import parser from './arithmetics.pegjs';
注意,
require或者import得到的结果不是语法文件的内容,
而是peg.generate后的parser。