Regex 我们可以使用DFA解析上下文无关语法指定的常规语言并生成解析树吗?
如我们所知,DFA可用于以常规语言验证字符串 例1。L=ac(b)*bcb | ad(b)*bb。DFA可以验证字符串“acbbbcb”是否正确 此外,有时,一种规则语言可以用CFG表示 例2Regex 我们可以使用DFA解析上下文无关语法指定的常规语言并生成解析树吗?,regex,context-free-grammar,regular-language,dfa,parse-tree,Regex,Context Free Grammar,Regular Language,Dfa,Parse Tree,如我们所知,DFA可用于以常规语言验证字符串 例1。L=ac(b)*bcb | ad(b)*bb。DFA可以验证字符串“acbbbcb”是否正确 此外,有时,一种规则语言可以用CFG表示 例2 S->“a”a“b” A->“c”B“c”|“d”B B->“B”B |“B” 上述CFG生成的语言就是示例1中的正则表达式 这意味着,我们可以使用DFA来验证此CFG生成的(常规)字符串。但是,我们如何生成相应的解析树呢?所有常规语言都有一个CFG 因为DFA除了接受/拒绝之外没有任何输出,所以严格
- S->“a”a“b”
- A->“c”B“c”|“d”B
- B->“B”B |“B”
这意味着,我们可以使用DFA来验证此CFG生成的(常规)字符串。但是,我们如何生成相应的解析树呢?所有常规语言都有一个CFG 因为DFA除了接受/拒绝之外没有任何输出,所以严格来说它不能构建解析树。然而,我不明白为什么不能为每种语言至少提供一些DFA,这些DFA可以通过生成树的副作用来增强(假设语法是明确的)。这可能需要DFA的构建反映语法的结构,因此不一定是最小的
如果语法不明确,那么正如Gunther所写,DFA很可能不足以用于构建树。所有常规语言都有CFG 因为DFA除了接受/拒绝之外没有任何输出,所以严格来说它不能构建解析树。然而,我不明白为什么不能为每种语言至少提供一些DFA,这些DFA可以通过生成树的副作用来增强(假设语法是明确的)。这可能需要DFA的构建反映语法的结构,因此不一定是最小的 如果语法模棱两可,那么正如Gunther所写,DFA很可能不足以用于构建树。
- S->“a”a“b”
- A->“c”B“c”|“d”B
- B->“B”B |“B”
- S->“a”a“b”
- A->“c”B“c”|“d”B
- B->“B”B |“B”
这个方案可能并不完全正确。如果您发现任何问题,请让我知道。您好,同上,我认为您的观点是,这要求DFA根据语法的产生式规则进行镜像。您好,同上,我认为您的观点是,这要求DFA根据语法的产生式规则进行镜像,这不是对您的问题的回答,但不久前我发现了一个“在线正则表达式可视化工具”:这不是对您的问题的回答,但不久前我发现了一个“在线正则表达式可视化工具”: