什么是 @invisible/pegjs-import?
@invisible/pegjs-import 是一个 npm 包,它可以帮助前端开发者在编写 PEG (Parsing Expression Grammar) 语法时,使用 import 语句来引入其他 PEG 语法文件。使用这个包,我们可以让 PEG 语法变得更加模块化,易于维护和扩展。
如何安装和使用?
安装 @invisible/pegjs-import 可以通过以下命令:
npm install --save-dev @invisible/pegjs-import
安装成功后,我们就可以在 PEG 语法文件中使用 import 语句来引入其他 PEG 语法文件了。下面是一个使用示例:
/** * example.pegjs */ import { foo } from './foo.pegjs' start = foo / bar bar = 'bar'
在这个示例中,我们通过 import 语句,引入了另外一个 PEG 语法文件 foo.pegjs,并在 start 规则中使用了 foo 规则。这样,我们就可以将 PEG 语法拆分成多个文件,避免大量复杂的规则集中在一个文件中,并且可以很方便地扩展和修改。
但是需要注意的是,在使用 import 语句引入其他 PEG 语法文件时,需要在 import 语句之前指定 @invisible/pegjs-import 这个 npm 包作为解析器。可以使用如下代码:
/** * example.pegjs */ @import { foo } from './foo.pegjs' start = foo / bar bar = 'bar'
这样,就可以使用 @import 语句来引入其他 PEG 语法文件了。
示例代码
下面是一个完整的示例,用于解析简单的四则运算表达式:
-- -------------------- ---- ------- --- - ---------- -- ------- - ------ - ---- ---------------- ----- - -------- -------- - ------------------- --- -------------- - ------ ---- - ------ - - ------------------- --- -------------- - ------ ---- - ------ - - -------------- -------------- - ------------ --- -------------------- - ------ ---- - ------ - - ------------ --- -------------------- - ------ ---- - ------ - - ------- ------- - --- ------------- --- - ------ ----- - - ----------
number.pegjs:
/** * number.pegjs */ number = digits:[0-9]+ { return parseInt(digits.join(''), 10); }
使用 @invisible/pegjs-import 来引入 number.pegjs:
-- -------------------- ---- ------- --- - ---------- -- ------- - ------ - ---- ---------------- ----- - -------- -------- - ------------------- --- -------------- - ------ ---- - ------ - - ------------------- --- -------------- - ------ ---- - ------ - - -------------- -------------- - ------------ --- -------------------- - ------ ---- - ------ - - ------------ --- -------------------- - ------ ---- - ------ - - ------- ------- - --- ------------- --- - ------ ----- - - ----------
总结
使用 @invisible/pegjs-import 包,可以让 PEG 语法变得更加模块化,避免大量复杂的规则集中在一个文件中,并且可以很方便地扩展和修改。需要注意的是,在使用 import 语句引入其他 PEG 语法文件时,需要在 import 语句之前指定 @invisible/pegjs-import 这个 npm 包作为解析器。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedcbdbb5cbfe1ea061269b