问题标签 [regexp-grammars]
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 - 减少 perl 启动时间的最佳方法
几年来我一直在断断续续地研究 Perl 解析器,但由于它一直处于 pre-alpha 阶段,我从不担心加速它。然而,我已经开始研究优化它的方法,并对我的发现感到惊讶。
经过一些算法和正则表达式优化后,正常执行大约需要 3.5 秒,其中,大约 2.3 是 Perl 启动所需的时间(我用 "time perl scriptname.pl" 在放置 "die("Done “);”在第一行)。我知道 Regexp::Grammars 并不是目前最快的 Perl 模块,但它的初始化似乎比实际执行脚本花费的时间要长得多。
因此,我开始研究一种在运行之前将其编译为字节码的简单方法。似乎 B::Bytecode,唯一的功能性方法,不再维护或包含在主要的 Perl 发行版中。有什么简单的方法可以减少启动时间吗?
谢谢!
perl - Perl:正则表达式::语法
我尝试了 Regexp::Grammars 并且遇到了 2 个问题。也许有人可以帮助我。
这是输出。
据我所知,它工作正常。令牌中的 MATCH 只是为了让我有更好的调试。
但我不确定2分。
- 为什么这条 [eos] 线还在那里?我禁用了调试。
- 如何在根元素和结果哈希中获得结果(CALC=13)?我期望根= 13。
感谢帮助!
最好的问候,克里斯
regex - Perl:正则表达式获取重复模式之间的所有文本
我想为以下内容创建一个正则表达式。
我有一些如下文本:
基本上我正在尝试创建一个正则表达式,它将获取从第一个“field =”开头到第二个“field =”开头的所有文本。它必须跳过函数调用中使用的字段文本。
我目前有以下内容:
但是,这只是获得文本“field =”。没有“?” 它从第一个实例一直到最后一个实例获取所有数据。
我也试过:
但是,这会让我每隔一个实例,因为它是第二个“field =”字符串的所有格。有什么建议么?
regex - Regexp::Grammars 中不区分大小写的哈希键
在 perl 模块 Regexp::Grammars 中,考虑以下标记:
这个标记是复杂语法的一部分,解析各种不同的句子。
这个标记匹配哈希 %commands 中的任何单词,我定义如下(当然,在任何函数之外):
这适用于匹配“Basic_import”、“Wait”等关键字。但是,我也希望它匹配“basic_import”、“wait”等词。
如何使此哈希不区分大小写,而不必多次复制和粘贴每个关键字?因为这是复杂语法的一部分,所以我想使用 Regexp::Grammars,并且我不想为这个特殊的异常恢复到 grep。
json - Perl6:将匹配对象转换为 JSON 可序列化哈希
我目前正在弄脏一些 Perl6。具体来说,我正在尝试编写基于语法的 Fortran 解析器(Fortran::Grammar模块)
出于测试目的,我希望能够将Match
对象转换为 JSON-serializable Hash
。
谷歌搜索/官方 Perl6 文档没有帮助。如果我忽略了什么,我深表歉意。
到目前为止我的尝试:
- 我知道可以将 a 转换
Match $m
为Hash
via$m.hash
。但这会保留嵌套Match
对象。 - 因为这只能通过递归来解决,所以我尝试但放弃了,而是先在此处询问是否存在更简单/现有的解决方案
- 处理
Match
对象的内容显然最好通过make
/来完成made
。我很想有一个超级简单的Actions
对象来处理所有匹配.parse
的默认方法,基本上只是做一个make $/.hash
或类似的事情。我只是不知道如何指定默认方法。
c - Yacc 不解析 txt 文件中的第二个表达式
我正在尝试从 .txt 文件中解析一组算术表达式。(每行一个。)我能够为第一行获得正确的逻辑,但解析器为第二个表达式给出 0。此外,我想在输出中打印整个字符串,但从哪里开始感到困惑。
莱克斯
雅克
文本文件
输出
预期产出
即使我从文本文件的第二行中删除了错误的表达式,解析器也会给出结果
代替
我尝试读取数据并将其存储在变量中并使用 while 循环中的文件处理选项显示算术表达式,并在循环中使用 yyparse() 逐行扫描。由于源代码有点复杂,我无法找到问题所在,而且我从 20 天就开始研究这个东西。
使用命令运行代码
c - 如何在 YACC 语法中回显输入文本?
我正在尝试从文本文件及其结果中显示整个算术表达式,我尝试使用文件处理选项但它不起作用。
亚克:
莱克斯
我的文本文件包含这两个表达式:
我想要输出为:
但输出是:
因为解析器将一次完成所有计算,所以这个(注释代码)是不合法的。因此,需要在 Calc 块中显示将输入表达式传递给语法和打印。我无法在谷歌上找到任何有关在语法中显示输入的相关内容。提前感谢您的意见和建议。
regex - 如何使用 Regexp::Grammars 替换匹配项?
我正在使用Regexp::Grammars
从复杂的文本源中搜索和提取信息,但最终我还想在该源上进行替换。有没有办法直接或间接使用来实现这一点Regexp::Grammars
?
例如,假设我有以下定义:
我如何将所有<target>
s 替换为一些替换,即<word>
括号之间的函数?
perl - 正则表达式::语法处理 \n
我正在运行幻灯片 15中的示例:
针对多行文本运行时:
我得到:
到目前为止,我还没有成功摆脱捕获的第二行前面的 '\n' 。
在 Strawberry perl 5.26.1 之上运行 Regexp::Grammers 1.048。
更新/澄清 (过早地 - 抱歉!)提出了一个针对模块的错误,Damian 澄清如下(回复略有调整以匹配上面的示例):
包含空格的规则在该点匹配输入中的任何空格(包括换行符)。所以像这样的规则:
真的相当于:
含义:匹配但不捕获任何前导空格,然后匹配除换行符之外的任何字符。
如果您希望忽略规则中的空格(正如您在此处所希望的那样),那么您需要将规则声明为令牌。令牌没有规则的神奇“空白匹配空白”行为。因此你会写:
在这种情况下,您还需要显式地使用分隔每一行的换行符,例如:
perl - 使用 Marpa:r2 perl 解析单引号字符串
如何使用 Marpa:r2 解析单引号字符串?在我下面的代码中,单引号字符串在解析时附加了“\”。
代码:
输出:
以上是所有输入的输出,我不希望第三个附加“\”和单引号。我希望它像 OUTPUT2 一样被解析。请指教。
理想情况下,它应该只根据 Param ::= (') Quoted (') 选择单引号之间的内容