问题标签 [parse-recdescent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
404 浏览

perl - 为什么我的 Parse::RecDescent 会给我所有这些警告和错误?

对下面的 Perl 文件解析代码 [最后回复 PM @ http://www.perlmonks.org/index.pl?node_id=754947]感到很痛苦:

输出:

这是标准错误:

有什么建议么?我真的很困惑吗?

谁能弄清楚出了什么问题(ActivePerl 5.10 和 WinXP SP2 的选择除外)?

0 投票
2 回答
475 浏览

perl - Parse::RecDescent - 从中​​获取信息

我正在使用 Perl 中的Parse::RecDescent解析器,我似乎在从中获取信息的时间最糟糕。网上现成的信息似乎没有重要的例子。

这是代码:

这是输出

输入文件解析正确。

应该输出以“stuff”、“stuff2”为键的散列。

想法?

编辑:

edit2:Merge_hash_refs,以防万一。:-)

0 投票
1 回答
265 浏览

perl - 在 Parse::RecDescent 正则表达式中插值变量

我正在研究 Parse::RecDescent 语法来读取给定的人类可读的规则集,然后吐出一个计算机更容易阅读的文件。

其中一个标记是“关键字”列表;大约 26 个不同的关键字。这些可能会随着时间而改变,并且可能被多段代码引用。因此,我想将关键字-y 的东西存储在数据文件中并加载它们。

Parse::RecDescent 的一个特性是能够在正则表达式中插入变量,我想使用它。

我写了一些代码作为概念证明:

这工作正常。当我转到我的主程序来实现它时,我写道:

在这一点上,我从 P::RD: 收到了这个错误ERROR (line 18): Invalid event: Was expecting /($dataarrstr)/

我不知道为什么。有没有人有任何可以帮助我的想法?

编辑:这不是范围问题-我已经尝试过了。我也尝试过 m{...} 语法。

0 投票
1 回答
148 浏览

perl - Perl 的 Parse::RecDescent 线程安全吗?

我有一个使用 Parse::RecDescent 创建的解析器的 Web 应用程序。应用程序的几个部分都需要一个解析器对象,并且由于解析器占用了相当多的内存,所以到目前为止我已经将解析器对象视为一个单例。这在纯 CGI 环境中运行良好,因为同一对象一次只解析一个表达式。但是,我不确定在同一对象解析器同时解析多个字符串的环境中运行时这是否仍然有效。

例如,如果我尝试在 FastCGI 下运行应用程序,如果两个请求同时使用相同的解析器对象解析为不同的字符串,它会成为问题吗?

如果需要,我可以更改应用程序以使解析器不再是单例,但是我不希望因为当前的解决方案更简单。

0 投票
1 回答
166 浏览

perl - 使用 Parse::RecDescent 打印和连接

我正在测试P::RD 教程中的语法,以便开发自己的语法。我还没有弄清楚如何打印字符串声明并将“$”附加到它的前面。例如“STRING sDir”应该打印出“$sDir”。只需执行 $string =~ s/STRING /\$/ 就足够简单了,但是有赋值的情况呢?例如。“字符串 sDir = aNewDir”。

这是语法

我开始认为正则表达式就足够了,但想知道如何为逗号分隔的声明创建一个复杂的表达式,例如 "STRING, foo, bar" -> $foo; $酒吧;

0 投票
2 回答
215 浏览

perl - 解析相同语法的不同文件并计算文件到文件的相似度

我有一堆 ACPI 源语言文件,我想计算它们之间的文件到文件的相似性。我想过使用 Perl 的 Parse::RecDescent 之类的东西,但我被困在:

1) 将 ACPI 语法 (www.acpi.info/DOWNLOADS/ACPIspec40a.pdf) 翻译成 Parse::RecDescent 可以理解的内容 2) 有一个度量来比较 2 个解析的文件

有任何想法吗?

0 投票
1 回答
387 浏览

perl - 我应该使用 Parse::RecDescent 还是 Regexp::Grammars 从文档中提取表格?

我有很多希望用 perl 解析的大型纯文本文档。每个文档中主要包含英文段落,每个文档中都有几个纯文本标记的表格。

我创建了一个语法来描述表结构,但不确定是否最好使用 Parse::RecDescent 或 Regexp::Grammars 来提取表。

我最初倾向于 Parse::RecDescent,但我不确定在语法中你将如何处理我想忽略的 90% 的文档文本,以便找到我想要提取的几个表隐藏在每个表中文档。

也许我需要 Regexp::Grammars 以便我可以通过文档“拉”我的表达式,直到找到匹配项?

谢谢

0 投票
1 回答
131 浏览

perl - Parse::RecDescent 解析子名称

我使用模块 Parse::RecDescent
并尝试构建语法以捕获 perl 子名称,为什么在我的代码中 https://gist.github.com/1595532

不工作语法 get_sub: NOWORD TEST NOWORD

在 '>test1$' 上?(变量 $perl_code1 )

0 投票
3 回答
449 浏览

perl - Parse::RecDescent 性能问题

我正在使用 Parse::RecDescent 来解析 Cisco IOS ACL 中的行。ACL用在大型网络的边缘路由器上,所以它包含了政府规定的近8k条线路。我正在遍历每一行并将值放入哈希中。虽然它是 8k 行,但我仍然花费超过 14 秒来解析这些行?这听起来合理吗?对我来说似乎很慢。使用散列与其他数据结构是否有一些开销?

样本输入:(大约 8k 个或类似的)

这是我的整个解析器:

0 投票
2 回答
1306 浏览

perl - 如何跳过 Parse::RecDescent 解析器中的所有单行和多行注释

在 Parse::RecDescent 中,我如何有效地忽略 C++/Java 样式的注释?这包括单行('//' 直到行尾)和多行(/此处/之间的所有内容)。