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 包 tlsdnebular 使用教程

    前言 在前端开发中,我们经常需要使用到一些依赖,这些依赖有时会涉及到一些复杂的配置和操作,而 npm 包的出现就为我们的开发带来了很大的便利。本文将介绍一款名为 tlsdnebular 的 npm 包...

    3 年前
  • npm 包 `malaysia` 使用教程

    介绍 在前端开发中,我们经常需要处理日期、时间和时区等相关问题,malaysia 包就是专门用来解决马来西亚时区的问题的一个 npm 包,它可以很方便地将本地时间转换为马来西亚时间。

    3 年前
  • npm 包 singapore 使用教程

    引言 随着前端技术的发展,我们开发应用程序中使用的许多工具都需要通过 npm 包来安装和使用。其中,一些优秀的 npm 包为我们提供了很多便利,比如可以让我们更好地处理日期和时间。

    3 年前
  • npm包@gradecam/exceljs使用教程

    前言 Excel在商业数据处理、财务管理中扮演着极为重要的角色,前端中也需要经常使用Excel进行相关的数据处理,@gradecam/exceljs是一个基于JavaScript的客户端Excel读写...

    3 年前
  • npm 包 mongeral-widget-authenticator 使用教程

    介绍 mongeral-widget-authenticator 是一个基于 React 开发的认证组件,旨在帮助开发者快速接入认证功能。它提供了快速的接入流程,并支持多种认证方式,包括短信验证码、邮...

    3 年前
  • npm包relative-domodule使用教程

    介绍 relative-domodule 是一个用于处理基于 DOM 树相对路径的 JavaScript 模块引用的工具,它可以在前端的项目中帮助我们更好的管理模块的相对路径问题,提高项目维护性和开发...

    3 年前
  • NPM 包 Sagas 使用教程

    NPM 包 Sagas 是一种用于处理复杂异步流程的库。它是 Redux 的一个插件,可以帮助 Redux 处理副作用。本文将详细介绍 Sagas 的使用教程,包括安装、配置和示例代码等内容。

    3 年前
  • npm 包 dump-git-logs 使用教程

    前言 在前端开发中,经常会使用 Git 作为代码版本控制工具。而对于 Git 所产生的日志,我们通常需要进行分析和整理,以帮助我们更好地了解代码的历史记录。如果手动处理 Git 日志,工作量可能会非常...

    3 年前
  • npm 包 inchworm 使用教程

    在前端开发过程中,我们经常会使用到各种各样的工具及库来辅助我们完成任务。而在 npm 生态圈中,有许多优秀的包可以提高我们的开发效率。本篇文章主要介绍一款名为 inchworm 的 npm 包,该包可...

    3 年前
  • npm 包 one-utils 使用教程

    前言 在前端开发过程中,我们常常需要用到工具库来帮助我们完成一些常见的操作。而 npm 包是常用的前端工具库之一。其中,one-utils 是一个轻量级的工具库,它包含了一些常用的 JavaScrip...

    3 年前
  • npm包@axa-ch/node-sass-import-once 使用教程

    前言 在前端开发中,经常需要使用sass进行样式开发,而node-sass是sass编译工具中的一种,非常常用。但是在开发过程中,经常会遇到样式中引入了多个sass文件,导致编译速度变慢的问题。

    3 年前
  • npm 包 @axa-ch/stylelint-config-axa-base 使用教程

    前言 在前端开发中,一般情况下我们都需要进行代码风格检查和格式化,目的是为了避免在多人协作时因为格式不统一导致代码可读性变差,从而提高代码质量。而为了方便维护,我们通常会把这些规则集成到代码编辑器或者...

    3 年前
  • npm 包 @axa-ch/stylelint-config-axa-bem 使用教程

    在前端开发中,编写高质量的样式代码是非常重要的。为了保证代码质量,我们可以使用 stylelint 工具来自动化检查样式代码。本文将介绍 @axa-ch/stylelint-config-axa-be...

    3 年前
  • NPM 包 @axa-ch/stylelint-config-axa-scss 使用教程

    前言 在 Web 前端开发中,CSS 是一个非常重要的部分。CSS 代码通常占到前端代码的相当一部分,而且对页面的样式和性能都有着重要的影响。因此,为了保证 CSS 代码的可维护性、可读性和可扩展性,...

    3 年前
  • npm 包 @cleerio/cleerio-icons 使用教程

    简介 @cleerio/cleerio-icons 是一个基于 SVG 的图标库。该库包含多个常见的图标,支持自适应大小和颜色,且易于使用和定制。 安装 在项目中安装该包可以使用 npm 或 yarn...

    3 年前
  • npm 包 eventx-core 使用教程

    简介 eventx-core 是一个轻量级的事件库,可用于前端和 Node.js 等 JavaScript 环境。它提供了一个简单但功能强大的 API 来处理事件及其相关的行为。

    3 年前
  • npm 包 duallist-box-empretec 使用教程

    介绍 duallist-box-empretec 是一个帮助开发者快速实现双向选择器的 npm 包。双向选择器通常用于选择某一元素或者一组元素来进行处理,比如回收站中的文件,或者多选框。

    3 年前
  • npm 包 postbem 使用教程

    如果你是一个前端工程师,想要写出可维护性强的 CSS 代码,那么你应该了解 postbem 这个 npm 包。本文将详细介绍如何使用 postbem 并深入探讨 postbem 的学习指导意义。

    3 年前
  • npm 包 kt-outlook 使用教程

    在前端开发中,我们经常需要在 Web 应用程序中使用邮件功能。为了简化邮件处理过程,现在有许多 NPM 包和库可以使用。其中,kt-outlook 包提供了一系列方法,用于发送和处理 Outlook ...

    3 年前
  • npm 包 bitcoin-converter 使用教程

    简介 bitcoin-converter 是一个 npm 包,用于将比特币和各种货币之间进行转换。在前端开发中,使用 bitcoin-converter 可以方便地将比特币转换为常见的货币,或者将常见...

    3 年前

相关推荐

    暂无文章