Parse::RecDescent 语法未按预期工作

2024-05-14

我所能做的就是 STRING、PARAMS、VARIABLE 和 FUNCNAME FUNCTION 似乎有问题,但我就是看不到它。

use strict;
use Parse::RecDescent;

$::RD_ERRORS = 1; # Make sure the parser dies when it encounters an error
$::RD_WARN   = 1; # Enable warnings. This will warn on unused rules &c.
$::RD_HINT   = 1; # Give out hints to help fix problems.

my $grammar = <<'_GRAMMAR_';
            SCRIPT : INSTRUCTION(s /;/)

            INSTRUCTION: FUNCTION | VARIABLE "=" FUNCTION

            FUNCTION : FUNCNAME "[" PARAMETERS "]"

            FUNCNAME : "print" | "add2" | "save" # ok

            PARAMETERS : STRING | STRING /\s*\,\s*/ PARAMETERS # ok

            VARIABLE : /\w[A-Za-z-0-9]{0,10}/i # ok

            STRING : /'(?:[^'\\]|\\.)*'/ # ok
    _GRAMMAR_
my $parser2 = Parse::RecDescent->new($grammar);
#i test every rule here
print "STRING OK\n" if $parser2->STRING("'asd'");
print "PARAMS OK\n" if $parser2->PARAMETERS("'asd','XCV','vfgdg'");
print "SCRIPT OK\n" if $parser2->SCRIPT(q(print['hola','asd'];save['hello'];));
print "VARIABLE OK \n" if $parser2->VARIABLE("a1");
print "FUNCTION OK\n" if $parser2->FUNCTION(q(print['hola','asd']));
print "FUNCNAME OK\n" if $parser2->FUNCNAME(q(print));
print "INSTRUCTION OK\n" if $parser2->FUNCTION(q(a0=print['hola','asd'];));

有什么帮助吗? 顺便说一句,我的目标是这样的:

variable=functioname['param1','param2','paramN'];
function2['param1'];
etc etc

这对我有用(特别是,看看[A-Za-z0-9]):

my $grammar = <<'_GRAMMAR_';
            SCRIPT : INSTRUCTION(s /;/) /\Z/

            INSTRUCTION: VARIABLE EQ FUNCTION | FUNCTION

            FUNCTION : FUNCNAME '[' PARAMETERS ']'

            FUNCNAME : "print" | "add2" | "save" 

            PARAMETERS : STRING(s /,/) 

            VARIABLE : /(\w[A-Za-z0-9]{0,10})/i 

            EQ: '=' 

            STRING : /'(?:[^'\\]|\\.)*'/ # ok
_GRAMMAR_
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Parse::RecDescent 语法未按预期工作 的相关文章

  • 如何从 Perl 中的 Subversion 预提交挂钩访问提交的文件?

    我需要执行以下操作 用 Perl 编写预提交钩子 Hook 应检查所有提交的文件是否存在某些文本 如果未找到该文本则失败 基本上 我需要一个读取正在提交的文件的 Perl 钩子示例 我真的在寻找一些代码量最少的优雅解决方案 笔记 钩子应该使
  • 在 Perl 中优雅地确定系统架构

    我正在寻找一种简单的方法来确定 Perl 5 中的系统是 32 位还是 64 位 我已阅读perlvar来回翻阅手册页 并没有发现包含系统 CPU 架构的变量 编译 Perl 的 CPU 架构将足够接近 这是我最接近的 chomp my a
  • 更新命令行输出

    我的程序 碰巧是用 Perl 编写的 尽管我不认为这个问题是 Perl 特定的 在程序中的某一点输出状态消息 Progress x yy where x and yy是一个数字 例如 Progress 4 38 我想在打印新的状态消息时 覆
  • 真实设备中的 Android strace

    我有以下情况 我想监控Android手机上的系统调用 所以 我编写了一个脚本来做到这一点 使用 Android 模拟器可以完美地工作 将应用程序的痕迹写入我的 Ubuntu 上的特定文件中 问题是当我连接一个真实的手机来分析它时 它在结果文
  • C# 中 PHP 的快速解析

    我需要用 C 解析 PHP 文件 我们本质上要求另一个国家的一些开发人员上传 PHP 文件 上传后我们需要检查 php 文件并获取所有方法和类 函数等的列表 我想过使用正则表达式 但我无法确定一个函数是否属于一个类等 所以我想知道是否已经有
  • 在 JavaScript 中解析 PHP 数组

    我有一些 PHP 源代码 它们是简单的键值数组 如下所示 return array var1 gt var2 And return array sub gt array var1 gt var2 我需要将它们解析为 JavaScript 对
  • 如何检测已更改的网页?

    在我的应用程序中 我使用 LWP 定期获取网页 无论如何 是否要检查两次连续提取之间网页是否在某些方面发生了变化 除了明确进行比较之外 是否有在较低协议层生成的任何签名 例如 CRC 可以提取并与旧签名进行比较以查看可能的更改 有两种可能的
  • 是否有更快的方法来检查 LINQ to XML 中的 XML 元素并解析 bool?

    仅供参考 这与我的上一个问题非常相似 是否有更快的方法来检查 LINQ to XML 中的 XML 元素 https stackoverflow com questions 2065665 is there a faster way to
  • 为什么我不应该使用 UNIVERSAL::isa?

    根据这个 http perldoc perl org UNIVERSAL html http perldoc perl org UNIVERSAL html 我不应该使用 UNIVERSAL isa 而应该使用 obj gt isa 或 C
  • 使用 PEG.js 忽略空格

    我想忽略空格 and 新线路按照我的语法 所以它们在PEG js http pegjs majda cz online输出 此外 括号内的文字应在新数组中返回 Grammar start a sep cat dog sep sep stmt
  • ANTLR4 在导入时找不到语法

    我正在尝试将 ANTLR4 语法拆分为多个文件 以便我可以更轻松地测试它们 我在 java 项目中使用 gradle 作为构建工具 两种语法都单独正确编译 但是当我将导入添加到我的主语法中时 我收到下一个编译错误 错误 110 kaneko
  • 是否可以使用 fparsec 解析“越位”(基于缩进)语言?

    我希望将 FParsec 用于基于缩进的类似 python 的语言 我知道这必须在词法分析阶段完成 但 FParsec 没有词法分析阶段 是否可以使用 FParsec 或者 词法分析后如何提供它 P D 我是 F 新手 但在其他语言方面经验
  • 如何在 Android Lollipop 中使用注释修复 Android Jackson 解析期间的 IncompleteClassChangeError?

    在我们的 Android 应用程序中 我们在模型中使用 Jackson Annotations JsonTypeInfo use JsonTypeInfo Id NAME include JsonTypeInfo As PROPERTY p
  • 正则表达式会减慢程序速度

    我正在尝试创建一个程序来解析游戏聊天日志中的数据 到目前为止 我已经设法让程序运行并解析我想要的数据 但我的问题是程序变得越来越慢 目前解析 10MB 文本文件需要 5 秒 我注意到如果我将 RegexOptions Compiled 添加
  • 如何比较两个文件中的多列并在找​​到匹配时从另一列检索相应的值

    我有两个文件 File1 txt 和 File2 txt 我需要将 File1 中的三列 1 2 和 3 分别与 File2 的 4 5 和 6 进行比较 如果找到匹配项 我想从 File2 的第 2 列中检索相应的值并将其粘贴到输出中 T
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • 解析 (yyyy-MM-dd) 格式的字符串日期

    我有一个 2013 09 18 形式的字符串 我想将其转换为 java util Date 我正在做这个 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd Date converted
  • less.js - 在解析器回调中获取变量值

    我正在使用 less js 1 3 0 在客户端将 less 解析为 css 在解析器的回调中 我想获取每个变量的值 我尝试了以下方法但没有成功 var data colour red example background color co
  • Perl 非贪婪

    我遇到非贪婪正则表达式 regex 的问题 我已经看到有关于非贪婪正则表达式的问题 但它们没有回答我的问题 Problem 我正在尝试匹配 lol 锚点的 href Note 我知道这可以通过 Perl HTML 解析模块来完成 我的问题是
  • 根据插入顺序迭代哈希?

    不想对条目进行排序 使用它也不会保留顺序 foreach my val keys hash 默认情况下 Perl 5 中的哈希值是无序的 您可以使用tie http perldoc perl org functions tie html a

随机推荐

  • ExpandableLabel iOS 中的“少看”

    我正在使用第三方库可扩展标签 https github com apploft ExpandableLabel实施一个see more特征 我正在寻找仅快速的解决方案 其中包含标签中的文本而不是按钮中的文本 因此这可以完美地工作 添加库并更
  • 如何在 numpy 数组中查找并保存重复的行?

    我有一个数组 例如 Array 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 1 1 1 2 2 2 我想要输出以下内容的东西 Repeated 1 1 1 2 2 2 保留重复行的数量也可以 例如 Repeated 1 1
  • 如何清除Android剪贴板?

    我发现的方法都不起作用 这是我尝试过的 1 使用clearPrimaryClip 的方法ClipboardManager class ClipboardManager clipboard ClipboardManager getSystem
  • 将错误保存到 MySQL 数据库

    我有一个 php 查询来更新 MySQL 数据库 请参见下文 sql update hr payroll set payroll number payroll number tax code tax bacs ref bacs ref pa
  • 将多索引转换为行式多维 NumPy 数组。

    假设我有一个类似于以下示例的 MultiIndex DataFrame多索引文档 http pandas pydata org pandas docs stable advanced html gt gt gt df 0 1 2 3 fir
  • 无法识别的选择器调用静态 iOS 库中的类别方法

    我正在使用一些第三方软件来帮助使用 Xcode 4 3 2 编写 iPad 应用程序 该软件是开源的 通常经过设置 因此其代码将与开发人员为应用程序编写的任何代码一起编译 因为我在很多地方使用该软件 所以我决定将其构建为 iOS 模拟器的静
  • 垂直对齐两个弹性项目[重复]

    这个问题在这里已经有答案了 我有一个弹性容器 container和两个弹性项目 item one and item two 我想将第一个项目垂直居中并将第二个项目粘在底部 我不知道如何在这种情况下垂直对齐第一项 HTML div class
  • ListView 和快照 - 错误 - 错误状态:DocumentSnapshotPlatform 中不存在字段[重复]

    这个问题在这里已经有答案了 我对快照和 ListView 有一个小问题 到目前为止 它运行得很好 但自从我更新了 flutter 和 Dart 后 我 收到了一个错误 构建 StreamBuilder gt 时抛出以下 StateError
  • Drupal 视图 - 自定义/修改 SQL

    我遇到了 配置文件复选框 模块的问题 该模块存储以逗号分隔的自定义配置文件字段 问题是我是否创建一个视图来按值过滤 SQL 结果最终是这样的 AND profile values profile interests value in Bus
  • 对不存在的资源进行 GET 的 REST 标准

    资源 user 12345 不存在 假设消费者随机尝试不同的 id 没有授权 任何用户都可以查看任何用户 从更广泛的意义上来说 我的问题是 如果对不存在的资源执行 GET 操作 您应该返回什么 我应该为不存在的 id 返回空用户 还是应该返
  • 如何在 gridview 控件的项目模板内显示列表视图。

    如何在 gridview 控件的项目模板内显示列表视图 gridview 将列出 table bill 中的所有 bill id 列表视图将绑定 table bill details 中具有特定 item bill id 的所有 item
  • 如何在映射中将字符串转换为 Seq[String]

    我有一个Map String String 以及需要的第三方功能Map String Seq String 有没有一种简单的方法来转换它 以便我可以将地图传递给函数 original mapValues Seq 注意mapValues返回地
  • 如何将事件对象传递给 JavaScript 中的函数?

  • 将 SQL Server 日期时间转换为较短的日期格式

    我有一个datetimeSQL Server 中的列为我提供了这样的数据10 27 2010 12 57 49 pm我想查询此列 但只需让 SQL Server 返回年月日 例如 2010 10 27或类似的东西 我应该研究哪些功能 我应该
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • 在 C++ 中通过引用传递 std 算法谓词

    我正在尝试从 a 中删除元素std list并保留已删除元素的一些统计信息 为此 我使用列表中的remove if 函数 并且我有一个谓词 我想使用这个谓词来收集统计数据 这是谓词的代码 class TestPredicate privat
  • 使用 Jquery 附加链接

    我正在尝试根据您所在的页面添加指向我的页面的链接 我使用 Squarespace 来构建这个网站 因此对我来说最简单的方法是使用 Javascript 或 Jquery 我认为我缺少的这个语法有问题 我已经尝试用 来打破引号 但这不起作用
  • 样本()和r样本()有什么区别?

    当我从 PyTorch 中的发行版中采样时 两者sample and rsample似乎给出了类似的结果 import torch seaborn as sns x torch distributions Normal torch tens
  • Spring boot 2.3 中找不到 javax.validation [重复]

    这个问题在这里已经有答案了 升级到 Spring Boot 2 3 1 后javax validation找不到包
  • Parse::RecDescent 语法未按预期工作

    我所能做的就是 STRING PARAMS VARIABLE 和 FUNCNAME FUNCTION 似乎有问题 但我就是看不到它 use strict use Parse RecDescent RD ERRORS 1 Make sure