npm 包 pegts 使用教程

如果你正在开发一个需要解析复杂文本的前端应用,你最好使用 peg-ts 这个 npm 包。Peg-ts 是一种基于语法树的解析器生成器,用于处理文本的语法分析。

本教程将带你深入了解 peg-ts,并通过几个示例来提高你的技能。

安装

你可以通过 npm 安装 peg-t,命令如下:

--- ------- ------ ------

用法

Peg-ts 处理解析的方法与正则表达式相似。首先你需要定义一个语法文件,然后使用 peg-ts 解析器将其转换为解析器,最后使用解析器解析给定的文本。

以下是一个基本示例:

Grammar 文件:

----------
  - ---------- --- ----
  - ---------- --- ----
  - ----

----
  - ---- --- ------
  - ---- --- ------
  - ------

------
  - ---  ----------  ---
  - ------

------
  - ------

解析器示例:

------ - -- --- ---- ---------

----- ------- - -
----------
  - ---------- --- ----
  - ---------- --- ----
  - ----

----
  - ---- --- ------
  - ---- --- ------
  - ------

------
  - ---  ----------  ---
  - ------

------
  - --------

----- ------ - ----------------------
----- ------ - --------------- - - - ----
-------------------- -- -

这个示例中,我们定义了一个简单的数学表达式语言的文法。我们使用解析器生成器创建了一个解析器,然后使用 parser.parse() 方法来解析一个表达式。

实战示例

解析 JSON 字符串

我们可以使用 peg-ts 来解析 JSON 字符串。下面是一个 JSON 字符串的语法:

----------
  - --- ---------- -------------- ---

-------------
  - ------ --- ----- ---- ---------- -------------- --

-----------
  - --- ---------- ------ ---------- ---

-----
  - ------
  - ------
  - ----------
  - -----------
  - ------
  - -------
  - ------

------
  - ---- -------------- ---- -
      ------ ---------------
    -

------
  - ---------- ------------- ---------- ------- - ------ ----- --- --------------- ------- - ------ ---- --- -
      ------ ----------- - ------ - ----- -- --- - ---- -- -----
    -

---------- ------------
  - - --------------

解析器代码:

------ - -- --- ---- ---------

----- ----------- - -
  ----------
    - --- ---------- -------------- ---

  -------------
    - ------ --- ----- ---- ---------- -------------- --

  -----------
    - --- ---------- ------ ---------- ---

  -----
    - ------
    - ------
    - ----------
    - -----------
    - ------
    - -------
    - ------

  ------
    - ----- ------------------- ----- -
        ------ ---------------
    --

  ------
    - ---------- ------------- ---------- ------- - ------ ----- --- --------------- ------- - ------ ---- --- -
        ------ --------------- - ------ - ----- -- --- - ---- -- -----
    -  

  ---------- ------------ 
    - - --------------
--

----- ------ - --------------------------

----- ---------- - --
  --------- -
      ------- ----- -----
      ------ ---
      -------- ----------------------
      ------------ -
          -
              -------- ---- ---- --------
              -------- ---- ---
              ------- ----------
              -------- -----
              ------ -------
          --
          -
              -------- ---- --- --------
              -------- ---
              ------- ------ ------
              -------- -----
              ------ -------
          -
      -
  -
---

----- ------ - -------------------------
-------------------------------------------- -- -

在此示例中我们定义了一个 JSON 对象的语法。我们定义了整数、浮点数、字符串、对象、数组、布尔型和 null 类型的值的语法。

解析自定义文件格式

下面这个示例是一个用于解析某种自定义文件格式的解析器。

文法文件:

----- - ------- ----- -------

------ - -------- ---------- ---------- ---------- ------
---------- - ------
------ - ----------

----
  - --------
  - -----------

--------
  - ---------- ---------- ---------- ---------- ------

-----------
  - ------------- ---------- ---------- ---------- -----------
-----------
  - ---------
  
------ - -------- ---------- ----------

解析器代码:

------ - -- --- ---- ---------

----- ----------- - -
----- - ------- ----- -------

------ - -------- ---------- ---------- ---------- ------
---------- - ------
------ - ----------

----
  - --------
  - -----------

--------
  - ---------- ---------- ---------- ---------- ------

-----------
  - ------------- ---------- ---------- ---------- -----------
-----------
  - ---------

------ - -------- ---------- ----------
--

----- ------ - --------------------------

----- ---------- - -------   -   ------ ---- -
--------   -   ---- ---- ----
--------   -   ---- ---- 
-----------   -   -------  
--------   -   ----
------   -
--

----- ------ - -------------------------
--------------------

在此示例中,我们定义了一种自定义格式的文本文件。在文件的一开始,我们有一个头部,然后有一些使用 TEXTLINECONTROLLINE 指定的行。在文件的结尾,我们有一个脚注。通过解析该文本文件,我们可以为每个行分别获取行号和文本内容。

至此,便介绍了 peg-ts 的基础用法,具体内容可以参考官方文档进行更多深入学习。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60057c5981e8991b448ebd9b


猜你喜欢

  • npm 包 text-mask-rut-test 使用教程

    在前端开发中,我们经常需要对用户输入的数据进行校验和格式化。在智能表单和数据输入场景中,有一个非常常见的需求就是对 Chile(智利)国家的身份证号码进行格式化处理。

    3 年前
  • npm包@micro-os-plus/c-libs的使用教程

    介绍 @micro-os-plus/c-libs是一个专业的C语言程序库,它为您提供了许多强大的功能来构建和开发前端应用程序。它可以快速、简单地解决各种常规问题。它的使用非常方便,其中包括常用函数、常...

    3 年前
  • npm 包 @micro-os-plus/cpp-libs 使用教程

    在前端开发中,我们常常需要使用一些 C++ 语言的函数和库,比如数学计算库和图像处理库等。此时,可以使用 @micro-os-plus/cpp-libs 这个 npm 包。

    3 年前
  • npm 包 @uppy/fs-tail-stream 使用教程

    在前端开发中,经常需要通过上传文件来实现某些功能,例如上传图片、上传视频等。而在上传文件的过程中,有时候需要对文件进行处理,例如监测文件变化,进行格式转换等。而这些都需要借助于一些工具来实现。

    3 年前
  • npm 包 primo-explore-getit-to-link-resolver-studio 使用教程

    在前端开发中,我们经常需要使用一些第三方库来实现自己的功能需求,这时会用到 npm 包管理工具来安装和管理这些第三方库。本篇文章介绍一款名为 primo-explore-getit-to-link-r...

    3 年前
  • npm 包 vue-fullcalendar-hql 使用教程

    前言 Vue-fullcalendar-hql 是一个基于 Vue.js 的开源项目,它是为了让前端开发者可以方便的使用 FullCalendar.js 进行全日历的开发而编写的。

    3 年前
  • npm 包 react-scrollback 使用教程

    前言 在前端开发中,我们经常需要实现页面滚动到顶部的功能。一种简单易用的实现方式就是使用 react-scrollback 这个 npm 包。本文将详细介绍该包的使用方法,帮助大家学习使用该包,实现滚...

    3 年前
  • npm 包 verx 使用教程

    简介 npm 是前端开发中常用的包管理工具,它提供了方便快捷的安装和管理第三方包的方式。而 verx 则是一个 npm 包,通过它可以在项目中轻松地实现数据的验证和变换。

    3 年前
  • npm 包 light-countdown 使用教程

    随着现代 Web 应用的日益普及,倒计时功能在我们的产品中变得越来越重要。而 npm 包 light-countdown 可以为我们提供一个简单、灵活、高度可定制的倒计时组件。

    3 年前
  • npm 包 rary_utils 使用教程

    rary_utils 是一个前端常用的 JavaScript 工具类库,它包含了多个实用的函数和方法,可以帮助我们提高开发效率,减少重复代码的编写。在这篇文章中,我们将会介绍如何使用 rary_uti...

    3 年前
  • npm 包 @mrayanne113/tdd 使用教程

    在前端开发中,自动化测试是一个重要的流程,可以大大提高我们的代码质量和效率。@mrayanne113/tdd 是一个专为前端自动化测试而设计的 npm 包,本文将介绍如何使用它来进行测试,以及其它相关...

    3 年前
  • npm 包 bryanmedinagarcia 使用教程

    前言 bryanmedinagarcia 是一款非常好用的 npm 包,尤其适合前端开发。该 npm 包提供了很多有用的功能和组件,可以让我们更加轻松和高效地开发 Web 应用程序。

    3 年前
  • npm 包 perfmor 使用教程

    perfmor 是一个优化 Web 性能的工具集合,可以帮助前端工程师分析页面性能并提供相应的优化建议。它集成了 Lighthouse、PageSpeed Insights 和 Chrome 开发者工...

    3 年前
  • npm 包 minimal-electron-react-app 使用教程

    前言:electron 可以让我们使用前端的技术栈来构建桌面应用程序,minimal-electron-react-app 是一个极简的 electron+react 模板项目,让我们可以快速的使用 ...

    3 年前
  • npm 包 @markusylisiurunen/md-table 使用教程

    在前端开发的过程中,我们经常需要展示数据表格。而使用 markdown 格式来写表格非常方便,尤其是在撰写技术文档时。@markusylisiurunen/md-table 就是一款很好的 npm 包...

    3 年前
  • npm 包 in1t-react-native-voice 使用教程

    介绍 in1t-react-native-voice 是一个用于 React Native 的语音识别组件,可以用于识别用户的语音并将其转换为文本,同时也支持多种语言。

    3 年前
  • npm 包 insight-tealcoin-api 使用教程

    简介 insight-tealcoin-api 是一个通过 Tealcoin 钱包接口获取区块链信息的 npm 包。它为开发人员提供了一种简单的方法来获取有关 Tealcoin 区块链的数据,包括块,...

    3 年前
  • npm 包 siwi-oauth 使用教程

    本教程将介绍如何使用 siwi-oauth npm 包,它是一个用于在 Node.js 应用程序中实现 OAuth2 授权的开源包。OAuth2 是一种用于安全地授权第三方应用程序访问用户数据的流行协...

    3 年前
  • npm 包 @kobi-kadosh/enzyme-adapter-react-16 使用教程

    简介 在开发前端应用的过程中,我们经常使用 React 框架。React 有很多测试工具,其中一个非常受欢迎的工具是 Enzyme。Enzyme 是一个 React 组件测试工具,具有易于使用、兼容性...

    3 年前
  • npm 包 egg-oauth2-plugin 使用教程

    在 Web 应用开发过程中,授权登录是一个很常见的需求。为了方便前端和后端开发者在实现授权登录时节省时间和精力,有很多前后端通用的授权登录库。其中,egg-oauth2-plugin 是基于 Egg ...

    3 年前

相关推荐

    暂无文章