Pegjs: 特点:pegjs文件的运行时要求

创建于 2019-12-03  ·  8评论  ·  资料来源: pegjs/pegjs

问题类型

  • 错误报告:没有
  • 功能要求:
  • 问:没有
  • 不是问题:没有

先决条件

  • 你能重现这个问题吗?:不适用
  • 您是否搜索了存储库问题?:是的
  • 你检查过论坛吗?:我没有看到论坛的链接
  • 您是否执行过网络搜索(谷歌、雅虎等)?:是的

描述

虽然可能有其他用例可以在运行时直接在 Node 中要求 PEGJS 文件,但此问题的主要目的是代码覆盖(例如,用于 Mocha 测试)。

后一种代码覆盖用例首先需要首先实现#93(提供源映射)。 如果实施,可以避免需要一个单独的测试副本 + peg 代码。

我看到 Node 的require.extensions用于ts-node完成此操作,尽管根据围绕https://stackoverflow.com/的讨论,在 Node 中技术上不推荐使用require.extensions questions/28884377/better-way-to-require-extensions-with-node-js (特别是在这个答案的脉络中),这似乎是这里唯一实用的机制,根据评论,我不认为我们不得不担心 Node 会破坏 Babel。

feature

最有用的评论

@brettz9 - 我正要说“我正在和其他人谈论同样的事情”,然后我意识到是你,所以,我将停止这个讨论的例子,转而支持我们的类似例子在#633 上,如果你觉得还可以的话

我现在在那里写很长的东西

所有8条评论

我宁愿不允许这样。

@ExE-Boss:对于我们的用例,它只是用于测试(另外,不确定您是否注意到这是 pegjs 存储库。)

我知道这是PEG.js 存储库,这正是我反对在这里实现它的原因。

好的,很酷......(我有时可以点击另一个仓库的链接而不会注意到它不是一个单独的问题,所以只需确保):)

直到 2017 年让我们使用 es6 模块和箭头的两行代码出来之前,没有更多的功能。

此外,看起来您真正想要的是测试

您不会将覆盖挂钩放在库中。 你把它们放在测试文件中。

如果你想要覆盖,你可以安装jest就可以了。 它自动包含您需要的所有内容,无需对库进行任何修改。 覆盖工具旨在从外部添加,而不是从内部添加。

这个解析器生成器不应该突然作为内部功能与node.js包生态系统联系在一起。

此外,覆盖是解析器的错误愿望。 考虑以下:

Food
    / "Peanuts"
    / "Shellfish"
    / "Rice"

现在,只需为大米写一个测试。 peg将首先尝试Peanuts ,然后当它不起作用时peg将尝试Shellfish然后peg将尝试Rice

请注意,您只为Rice编写了一个测试,但是您错误地显示了所有三个的覆盖率

Packrat 解析器的工作方式(老实说,我能想到的解析器的方式)意味着覆盖是假的

不要浪费你的时间

至于将覆盖挂钩放入库中,通常会将它们放入测试中,是的,但是当解析器自动生成时,一些分支相关而一些不相关,那么自动生成器产生这个是有意义的这样那些不想忽略其解析器文件的项目就可以这样做。 它与 pegjs 库的覆盖率无关(它有自己的覆盖率要求),而是与生成的解析器对语法的使用的覆盖率有关。

在您的示例中,生成的解析器有几行代码来检查“花生”、“贝类”和“大米”,如果它们没有被覆盖,它们确实可以被报告。

ruleA = ruleB / ruleC这样的规则是否应该检查“ruleA”是否同时具有“ruleB”和“ruleC”的情况,或者检查“ruleA”、“ruleB”是否足以成为一个开放的问题, 和 "ruleC" 都以某种方式被覆盖(例如,如果有一个ruleD = ruleB / ruleF ,它对ruleB的覆盖可能会被某些项目视为足以避免检查它是否被覆盖的需要“ruleA”,尤其是在有很多替代方案和组合的情况下)。

就这个问题而言,可能有一个入口文件添加了该功能,而另一个没有。

@brettz9 - 我正要说“我正在和其他人谈论同样的事情”,然后我意识到是你,所以,我将停止这个讨论的例子,转而支持我们的类似例子在#633 上,如果你觉得还可以的话

我现在在那里写很长的东西

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

StoneCypher picture StoneCypher  ·  8评论

dmajda picture dmajda  ·  15评论

richb-hanover picture richb-hanover  ·  7评论

audinue picture audinue  ·  13评论

futagoza picture futagoza  ·  13评论