问题标签 [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.
perl - 使用 Parse::RecDescent 解析带有嵌套括号的字符串
我正在尝试使用Parse::RecDescent
可以解析括号表达式和一元运算符的解析器?
。
到目前为止,我在创建解析器时失败了,因为规则expression
是左递归的:
perl - Parse::RecDescent 语法未按预期工作
我设法开始工作的只是 STRING、PARAMS、VARIABLE 和 FUNCNAME FUNCTION 似乎有问题,但我就是看不到它。
有什么帮助吗?顺便说一句,我的目标是:
perl - 使用 perl 解析 abnf 语法
感谢您在链接Parse::ABNF perl usage上发布的问题输入。我仍然面临解决问题的困难。请求在下面检查我的问题并提供解决方案的指示。
现在我已经在一个文件中创建了 ABNF 格式的 sip 语法(命名为sip.abnf
)。我在如下文件(recd_message.txt
)中有带有标题的 sip 消息:
我创建了一个 Perl 程序来使用 ABNF 语法来验证上述标题消息,并将其命名为testSipHeader.pl
以下内容:
Perl 调用和输出/错误如下
注意:目前我有生成 SIP 标头的 C 程序,我正在尝试通过这个 perl 函数验证标头的内容。我正在尝试使用类似于链接Parse::RecDescent 语法未按预期工作的用法
我不得不在您的脚本中进行一些修改以包含 Parse::ABNF 并处理输入文件,然后收到的输出出现在路径https://drive.google.com/file/d/0B8KDQDXsCKR_ZERzV3IyY1M2NW8/edit?usp=sharing中
perl - 使用 Parse::RecDescent 收集数据
我有一个字符串列表(30,000+),它们是语句的集合。从逻辑上讲,Parse::RecDescent
是用于解析字符串以收集数据的工具,但我无法理解语法规范的构造。
以下代码正在构建一个祝福节点的大列表,但是我只是不知道如何实际创建更有用的数据结构(我想要的只是Year
, Vol
&Iss
值)
在旁注中,如何编写语法语句以便不需要循环中的替换?
perl - 使用 Parse::RecDescent 进行空白重要解析(例如 HAML、Python)
我正在尝试使用Parse::RecDescent解析 HAML ( haml.info ) 。如果您不知道haml,那么问题与解析Python 相同——语法块按缩进级别分组。
从一个非常简单的子集开始,我尝试了一些方法,但我认为我不太了解 P::RD 的贪婪或递归顺序。鉴于haml:
我认为应该工作的最简单的语法是(上面的代码片段不需要一些位):
问题在于block
定义。如上所述,它不捕获任何文本,但它确实正确捕获了以下内容:
如果我从上面删除第二reject
行(第一条block
规则中的那一行),那么它确实会捕获所有内容,但当然会错误地分组,因为第一个块会吞掉所有行,而与缩进无关。
我也尝试过使用前瞻动作来检查$text
和其他一些没有运气的方法。
任何人都可以(a)解释为什么上述方法不起作用和/或(b)如果有一种方法不使用 perl 操作/拒绝?我尝试获取缩进中的空格数,然后在下一行中的空格数的插值前瞻条件中使用它,但我永远无法完全正确地获得插值语法(因为它需要箭头运算符)。
perl - Parse::RecDescent :解析嵌套算术表达式?
目前我用它来解析算术表达式:
它适用于简单的表达式,但不能处理嵌套的括号表达式。任何想法如何扩展/修改它以便它可以处理嵌套表达式。
例如这有效:
但这不起作用:
perl - 用 Perl 解析语法
我正在使用 Parse::RecDescent( 下面的代码) 来解析这样的东西
这 x=2 和 y=2 和 z=3
为什么下面的代码只打印 x!=2 而不是上面的所有行(即 x!=2 和 y!=2 和 z!=3),即使上面的行也被下面的代码解析,知道下面有什么问题代码 ?
perl - 禁用整个文件的评论家 - Parse::RecDescent 预编译解析器和 PerlCritic/Tidyall
我正在尝试从我的健全性检查中删除一个错误[当我将代码推送到我的 git 存储库时,有一个钩子可以使用perltidy
& critic
...tidyall
用作处理程序来检查代码。]
我遇到的具体问题是使用预编译的语法解析器......这不是我想深入研究和修复的东西(抱歉 - 这超出了我的舒适区)
如果我## no critic
在文件的开头添加一个简单的,那么
回来
然而
回来了
tidyall.ini
我知道我可以在文件中解决这个问题:
....但是我觉得应该有一个更清洁的解决方案。
(或者,为什么tidyall
批评不一样critic
?)
perl - Parse::RecDescent 和语法
我使用 Parse::RecDescent 定义了以下语法
我希望它处理以下情况:
X = 2 -> 应该打印 2
X = "2" -> 应该打印 2
x = '2' -> 应该打印 2
但上述语法提供了不同的结果:
对于 x=2 它无法解析它
对于 x="2" -> 它打印 "2"
对于 x ='2' -> 它会触发 '2'
将上述语法更改为在上述所有 3 种情况下打印 2 的任何想法,即删除引号
perl - Parse::RecDescent 和带引号的运算符
我有以下内容:
我定义:
但是我在解析上述条件时遇到问题,知道如何解析上述条件吗?