regex - 常规与 LALR(1) : what is faster

标签 regex parsing lalr

假设我们有两种定义相同语言的语法:常规语法和 LALR(1) 语法。

常规算法和 LALR(1) 算法都是 O(n),其中 n 是输入长度。

正则表达式通常是解析常规语言的首选。为什么?是否有正式的证据(或者可能是显而易见的)表明它们更快?

最佳答案

您应该更喜欢无堆栈自动机而不是下推式自动机,因为常规语言自动机有更发达的数学。

我们能够对两种类型的自动机执行确定化,但我们无法对 PDA 执行有效的最小化。众所周知的事实是,对于每个 PDA,都存在具有唯一状态的等效 PDA。这意味着我们应该根据转换计数/最大堆栈深度/其他一些标准来最小化它。

检查两个不同的 PDA 就其识别的语言是否等效的问题也是无法确定的。

关于regex - 常规与 LALR(1) : what is faster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14532118/

相关文章:

regex - sed 用于用 ""替换特殊字符

java - 使用 Talend 根据输入的关键字将 HTML 搜索页面提取到 .txt 文件中。如何端到端解析这些数据并将其写入 MySQL?

grammar - 如何解决移位/减少冲突?

regex - 在 PowerShell/PowerCLI 中将前缀附加到字符串

Python - 使用正则表达式解析 apache 配置

python - Scrapy:ValueError:需要超过 0 个值才能解压

Java日期解析错误地增加了一个小时

parsing - 方案 - LALR 解析器生成 - 来自字符串的输入

parsing - 解析器的性能 : PEG vs LALR(1) or LL(k)

jquery - 货币正则表达式