parsing - 所有上下文无关语法都可以转换为 NFA/DFA 吗?

标签 parsing context-free-grammar dfa nfa

我看过这篇关于如何将上下文无关语法转换为 DFA 的文章: Automata theory : Conversion of a Context free grammar to a DFA

但是,只是想知道所有上下文无关语法都可以转换为 DFA/NFA 吗?无法表达为正则表达式的上下文无关语法又如何呢?前任。 S->(S)| ()

谢谢!

最佳答案

只有常规语言可以转换为 DFA,并且并非所有 CFG 都代表常规语言,包括问题中的语言。

所以答案是“不”。

NFA 并不比 DFA 更具表现力,因此如果将 DFA 替换为 NFA,上述陈述仍然成立

如果 CFG 是右线性或左线性的,则表示它是正则语言。但 CFG 不是左线性或右线性这一事实并不能证明什么。例如,S→a | a S a 恰好生成与 S→a | 相同的语言S a a.

关于parsing - 所有上下文无关语法都可以转换为 NFA/DFA 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41128425/

相关文章:

c++ - Boost.Spirit语法问题

java - 我可以使用 DFA 来跟踪特定语言的字符串吗?

使用 Golang 解析 yaml 文件

computer-science - 是语言 {0^n 1^n 0^k | k != n} 上下文无关?

nlp - CKY 真的需要 CNF 吗?

java - 词法语法和句法语法有什么区别?

regex - DFA -> RE 使用状态消除

java - 实现 DFA 的最佳方法有哪些?

java - 解析 map JSON 值并重新插入回 map

python - 使用lxml html从嵌套元素中提取特定元素