[FE] 使用pegjs-loader加载语法文件

PEG.js是一个parser generator,
它根据语言的parsing expression grammar生成parser。

在node中使用

算术表达式的语法如下:arithmetics.pegjs

在node中使用,需要安装pegjspackage.jsondependencies中,

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也支持在前端使用,
需要安装pegjspegjs-loaderpackage.jsondevDependencies中,

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。


参考

Github: pegjs
Github: pegjs-loader

你可能感兴趣的:([FE] 使用pegjs-loader加载语法文件)