简介
vsl-nearley 是一个在 JavaScript 程序中使用 Nearley 语法分析器的包,支持用户自定义的语法生成器,以及文法脚本的在线编辑和测试。该包最初是为 Visual Studio Live Share 项目开发的,旨在为编写自定义编程语言的开发者提供方便。
安装
在使用 vsl-nearley 之前,需要先安装 Node.js 和 npm。如果你已经安装了 Node.js 和 npm,可以直接输入以下命令安装 vsl-nearley:
--- ------- -- -----------
为了全局安装警告,你需要在安装命令前使用 sudo
命令。
使用
生成语法
要生成语法,请创建一个 .ne
文件,该文件将包含自定义的 Nearley 文法。例如,以下是一个简单的 Nearley 文法:
-- ------ ---- -------- -------- -------- -------- -------- ------------ -- --- -------- ---------- ---------- ---------- -- ------ - - -------- - - ------ -- ---- -- --------- -- --- -- - ------ ---------- - ---- ---- ------ - - -- ---- ---- ------ - - -- ---- ---- ------ - - -- ---- ---- ------ - - -- - - --
在此示例中,引用了 Nearley 内置的三个词汇:number
、whitespace
和 operator
,然后定义了表达式的规则,该规则由两个数字、一个操作符和一个可选的空格字符表示。该规则还包含一个 JavaScript 函数,该函数使用所定义的表达式计算结果。
在线编译器和测试器
vsl-nearley 还包含一个在线编译器和测试器,该工具可用于在不离开命令行界面的情况下编辑和测试 Nearley 文法。
要使用在线编译器,请使用以下命令:
----------- ------
此命令将启动一个 Web 服务器,监听在端口 5000
上。要访问在线编译器,请在浏览器中输入以下地址:
----------------------
该页面将显示一个文本编辑器,您可以使用该编辑器编辑 Nearley 文件。您可以在页面底部的“生成输出”区域中测试语法。
使用解析器
要在 JavaScript 程序中使用 vsl-nearley 生成的语法,请按照以下步骤进行操作:
导入 vsl-nearley。
----- ------- - -----------------------
从文件系统或字符串中加载语法。
----- ------- - ------------------------------------------
这里的
grammarData
可以是一个字符串或通过以下方式从文件系统中读取:----- -- - -------------- ----- ----------- - -------------------------------- --------
创建解析器。
----- ------ - --- ------------------------
向解析器中提供输入数据。
-------------- - ----
获取解析结果。
----- ------ - ------------------ -------------------- -- -
注意:解析器不会在输入数据未完成时自动解析数据,因此您需要自行决定何时调用 parser.feed()
。
示例
以下是一个使用 vsl-nearley 的完整示例。该示例将 Nearley 文件中定义的数学语法用于一个简单的计算器。
文件:calculator.ne
-- ------ ---- -------- -------- -------- -------- -------- ------------ -- --- -------- ---------- ---------- ---------- -- ------ - - -------- - - ------ -- ---- -- --------- -- --- -- - ------ ---------- - ---- ---- ------ - - -- ---- ---- ------ - - -- ---- ---- ------ - - -- ---- ---- ------ - - -- - - --
文件:calculator.js
----- -- - -------------- ----- ------- - ----------------------- -- ---- ------- ---- ----- ----------- - ---------------------------------- -------- ----- ------- - ------------------------------------------ -- ------ ------ ----- ------ - --- ------------------------ -- ------- ----- ---- -------------- - ---- -- ----- ----- ------ ------------------------------- -- -
结论
vsl-nearley 是一个优秀的包,它使自定义编程语言的编写变得非常容易。使用它,您可以快速构建自定义的语法解析器,并轻松地在您的程序中使用该解析器。感谢您的阅读,祝您成功!
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60055b8481e8991b448d918d