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。