为什么在线解析器似乎停在正则表达式处?

2024-06-27

我一直想知道为什么似乎没有任何解析器,比如说,BNF http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form,其行为类似于各种库中的正则表达式。

当然,还有类似的事情ANTLR http://www.antlr.org/, Yacc http://en.wikipedia.org/wiki/Yacc和许多其他人生成代码反过来,它可以解析CFG http://en.wikipedia.org/wiki/Context-free_grammar,但似乎没有一个库可以在没有中间步骤的情况下做到这一点。

我有兴趣写一个Packrat 解析器 http://en.wikipedia.org/wiki/Packrat_parser#Implementing_parsers_from_parsing_expression_grammars,启动所有与正则表达式相关的嵌套括号怪癖(并且,也许更重要的是,为了它的运动),但不知何故,我有这种感觉,我只是走进了另一个停滞的问题 - 就像沼泽类一样。

这些解析器是否存在技术/理论限制,或者我只是错过了一些东西?


我认为这更多是一种文化问题。上下文无关语法的使用主要限于编译器,编译器通常具有与每个产生规则相关联的代码。在某些语言中,输出代码比模拟回调更容易。在其他情况下,您将看到解析器库:例如 Haskell 中的解析器组合器。另一方面,正则表达式在 grep 等工具中得到广泛使用,每次用户给出新的正则表达式时都运行 C 编译器很不方便。

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

为什么在线解析器似乎停在正则表达式处? 的相关文章

  • 删除重复字符

    我如何删除重复字符 例如删除字母k in cakkkke让它成为cake 执行此操作的一种简单方法是循环遍历字符串的每个字符 如果该字符不是前一个字符的重复 则将字符串的每个字符附加到新字符串 下面是一些可以执行此操作的代码 newStri
  • sed:用匹配的模式替换第 n 个单词?

    我有一个具有以下特征的文本文件 每行至少有三个由空格分隔的 单词 单词 可以是任何字符或字符串 我在一些行中附加了一些注释 并提出了对原始单词进行更改的初步建议 现在想使用 sed 为我进行这些更改 因此 为了提供更清晰的图片 我的文件如下
  • 仅匹配单词或字符串中的撇号

    我正在寻找一个可以匹配的Python正则表达式 didn t 并仅返回紧接在撇号前面的字符 例如 t 但不是 d or t 在开始和结束时 我努力了 w w 但它只匹配开头的撇号 更多示例 I m 应该只匹配 m并不是 I Erick s
  • 在 SQL 中查询行序列

    假设我正在存储events有关联users如下表 其中dt代表事件的时间戳 dt user event 1 1 A 2 1 D 3 1 B 4 1 C 5 1 B 6 2 B 7 2 B 8 2 A 9 2 A 10 2 C 这样我们就可以
  • PHP正则表达式在wordpress短代码标签之间替换

    我有一个短代码 我希望能够根据帖子的上下文将其删除 例如 tooltip slug test Test Text tooltip 我希望输出是 span class dummy Test Text span 我已经用 preg replac
  • 从子字符串中提取的映射运算符

    I have list of dicts print L 0 x 1 1 y 2 2 z 1 0 x 1 1 y lt 3 2 z gt 1 我想创建元组 其值位于运算符之前 运算符之后 值之后 first step wanted x 1
  • 如何使用正则表达式选择字符串中每个单词的第一个字母

    我试图使用正则表达式选择字符串中每个单词的第一个字母 但遇到了问题 我能够使用选择第一个单词的第一个字母 w igm 我如何修改它以选择字符串中每个单词的第一个字母 举个例子 我有字符串 我喜欢狗 我想要代码选择 I L 和 D Use a
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 忽略正则表达式匹配的嵌套括号内的逗号

    我有以下正则表达式 s s g这允许我匹配由逗号分隔的元素 同时忽略内部的逗号 有这个 a b c aaa bbb ccc d 我明白了 a b c aaa bbb ccc d 现在 我想升级它以考虑另一个级别的括号 我不想考虑任何级别 我
  • RegEX 匹配方括号之外的所有内容

    我正在使用 WP 编辑器 我想创建一个 RegEX 模式来匹配方括号之外的所有内容 如下所示 foo Some selected text here foo More selected text here 并替换为 foo text box
  • 在 C# 中解析 Json Rest api 响应[重复]

    这个问题在这里已经有答案了 我正在尝试使用 C 从 Rest api json 响应中提取值 我有以下代码 client BaseUrl https api cloud appcelerator com request Resource v
  • strsplit 与 gregexpr 不一致

    一条评论 https stackoverflow com questions 23961022 split strings on first and last commas 23964843 noredirect 1 comment3692
  • 正则表达式“只分组,不捕获”似乎不起作用

    x abcdefg x x match ab cd ef x 不应该是 abef 吗 不是 它实际上是 abcdef 为什么我的 没有任何效果 当然我的理解很可能是错误的 still matches 它只是不会出于以下目的创建新组 1 1
  • Haskell 中的模式匹配正则表达式模式

    在 Scala 中 我有一个正则表达式模式匹配 如下所示 val Regex d 4 d 2 d 2 r val Regex year month day 2013 01 06 结果是 year String 2013 month Stri
  • 如何解析带引号字段中嵌入逗号的 CSV?

    我已经尝试了其他答案中提到的一些修复 但它们对我的输出没有影响 我不打算使用Boost Spirit 因为我不确定它是满足我需求的最佳选择 此外 类似的帖子不处理包含逗号的引用材料 这是我此时要解决的最后一个问题 这是一个 C 程序 我使用
  • 有条件的正则表达式替换

    使用Python 您可以在替换文本之前检查组是否为空 Example user John Marshal gt user br strong Jonh Marshal strong John Marshal gt strong Jonh M
  • 是否有一个应用程序可以通过选择所需区域来从文本中创建正则表达式?

    我希望这是与程序员相关的问题 我的爱好是 C 编程 出于我自己的目的 我需要解析 html 文件 最好的想法是 正则表达式 正如许多人发现的那样 学习它们非常耗时 因此如果您知道一些能够使用它们的应用程序 我很感兴趣input 任何代码的一
  • 正则表达式替换多个组

    我想使用正则表达式将多个组替换为相应的替换字符串 更换表 gt amp gt hsh 1 gt 5 5 gt 6 例如 对于以下输入字符串 a1asda fj ahdk5adfls 对应的输出字符串是 a5asda ampfj hshahd
  • 如何避免正则表达式中除空格之外的所有特殊字符?

    我正在使用行过滤器构建自动完成编辑器 并且正在使用正则表达式删除特殊字符 但空格也被删除 Regex Regex Replace currentText 0 9A Za z 我只想忽略空格但替换剩余的特殊字符 只需在否定字符类中添加空格即可
  • Java(正则表达式)-获取句子中的所有单词

    我需要将 java 字符串拆分为单词数组 假设该字符串是 Hi I need to split this string into a serie s of words 目前我正在尝试使用这个String strs str split w 但

随机推荐

  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • 在 iPhone 和 Cocos2d 中从类类型(+)方法访问对象?

    我有一个类方法 在其中创建并返回类对象 但我想访问同一类中该对象的某些属性 作为一个类方法 我无法在 h 文件中声明该变量 然后在其他方法中访问它 以下是代码 我如何在下面的实例方法中访问 backsprite 或 hudlayer 对象的
  • 更改 Angular 模型以更新 Kendo

    我一直在一个项目中使用 Angular 最近才发现 Kendo Angular 项目位于http kendo labs github io angular kendo http kendo labs github io angular ke
  • 后端验证轨

    如何验证文本列不包含网站 示例可以是 www google com google com http gooogle com http www google com https www google com https google com
  • 标签中的文字大小

    如何限制标签中的字符数 您可以通过设置自动截断带有省略号的文本frame of the UILabel NSInteger newSize 10 label frame CGRectMake label frame origin x lab
  • JSON 语法:传输数组

    A validJSON 语法是这样的 username admin password 123 但是如果我想传输一组 用户 给出的例子 而不是单个 用户 根据规范 下面的代码是有效的 JSON 吗 username admin passwor
  • 需要 mysqli_fetch_all 的替代方案

    我有一个 php mysqli 代码 可以找到一个我的本地服务器 但是在我的服务器上使用它时 我得到了一个 Fatal error Call to undefined function mysqli fetch all in home3 t
  • 如何将变量传递给 ddply 中的自定义函数?

    考虑以下数据 d data frame experiment as factor c foo foo foo bar bar si runif 5 ti runif 5 我想进行相关性测试si and ti 对于每个experiment因素
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • Django ORM:使用具有“and”功能的对象列表进行过滤

    新手问题 Models Item model Models attributes models ManyToManyField Attributes null True Attributes models Models title mode
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • spring mvc 跟踪引用页面

    在基于注释的弹簧控制器中 如果用户正在url com first page并点击一个链接或提交一份表格指出url com second page 如何制作second page知道url of first page所以这样second pa
  • 登录后所有页面都应该是https吗?

    这有点难以解释 但我会尽力 有一个网站 每个页面上都有登录表单 其中包含用户名 密码字段 这些页面未使用 SSL 用户填写用户名 密码并提交表单后 表单将被发送到 https 的身份验证页面 对于这种情况我有几个疑问 向 https 页面提
  • 旋转 Google 地图中的两层标记图标

    在我的应用程序中 我向地图添加了一定数量的标记 如下所示 private fun addMarker googleMap GoogleMap location Location val options MarkerOptions optio
  • 将 GitLab CI 变量注入 Terraform 变量

    我有一组 Terraform 文件 特别是一个 Variables tf 文件 它保存了我的变量 如 aws 访问密钥 aws 访问令牌等 我现在想使用 GitLab CI CD 在 AWS 上自动创建资源 我的计划如下 编写 gitlab
  • 从主机名中提取域名

    是否有一种编程方式可以从给定的主机名查找域名 给出 gt www yahoo co jp 返回 gt yahoo co jp 有效但非常慢的方法是 拆分为 并从左侧删除 1 个组 使用 dnspython 加入并查询 SOA 记录 当返回有
  • 无效的 PDO 查询不会返回错误

    下面的第二条 SQL 语句在 phpMyAdmin 中返回错误 SET num 2000040 INSERT INTO artikel artikel nr lieferant nr bezeichnung 1 bezeichnung 1
  • 为什么在线解析器似乎停在正则表达式处?

    我一直想知道为什么似乎没有任何解析器 比如说 BNF http en wikipedia org wiki Backus E2 80 93Naur Form 其行为类似于各种库中的正则表达式 当然 还有类似的事情ANTLR http www