上下文无关文法算法

布林

我正在尝试设计一种算法,将CFG G和终端符号a作为输入,如果S(G的起始规则)可以生成以aie开头的句子形式(如果存在字符串α),则输出yes在(TUN)*中使S => *aα,否则输出否。例如,如果语法为S-> [S] | SS | ε,如果a =],则答案为否。我不是在寻找代码,我只是在试图理解我应该如何使用伪代码来实现这一主题。

基因

有三种方法X可以得出以开头的字符串a

  1. 有形式的规则 X -> a...
  2. 有一个格式规则,X -> A...A派生一个以开头的字符串a
  3. 有一个形式规则,X -> B A...B派生εA...派生一个以开头的字符串a

您可以使用它们来构建一种算法,该算法从形式的语法规则开始S -> ...查看语法的所有规则,如果rhs以终结符开头,则应用check 1;如果非终结符开头,则应用check 2和3。每个检查都对应一个返回布尔值的(可能是递归的)函数。

一个有趣的细节是,处理周期在语法的需要,如单规则一样A -> A a,而且A -> B...B -> C...C -> A...如果您不小心,则相互递归检查将无限重复。我会把它交给你。考虑一下深度优先搜索如何永远避免图形中的后续循环。

另一个细节是如何确定给定的非末端B是否派生ε您应该可以自己解决这个问题,但是如果其他所有方法都失败了,请查找“可为空的非终结符”。您会发现一个著名的小算法。

如果任何检查为阳性,则返回“是”。找不到规则的其他详尽应用。退货编号

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

上下文无关文法的构建

来自分类Dev

使上下文无关文法不模糊

来自分类Dev

等效上下文无关文法

来自分类Dev

YACC和上下文无关文法

来自分类Dev

等效上下文无关文法

来自分类Dev

使上下文无关文法不模糊

来自分类Dev

语言的上下文无关文法

来自分类Dev

用于上下文无关文法的FIRST和FOLLOW集的计算算法

来自分类Dev

生成以下语言的上下文无关文法

来自分类Dev

以00开头和结尾的上下文无关文法

来自分类Dev

上下文无关文法和其他文法有什么区别?

来自分类Dev

在上下文无关文法中区分有符号数和运算

来自分类Dev

如何在上下文无关文法中判断运算符的优先级

来自分类Dev

基于上下文无关文法解析正则表达式

来自分类Dev

可能使用DCG的Prolog中上下文无关文法(CFG)的序列生成器

来自分类Dev

具有某些不等式的上下文无关文法

来自分类Dev

JavaScript是上下文无关语言吗?

来自分类Dev

证明上下文无关语法是规则的

来自分类Dev

与上下文无关的XML结构标记

来自分类Dev

如何创建上下文无关的语法?

来自分类Dev

设计上下文无关的语法

来自分类Dev

从语言生成上下文无关的语法

来自分类Dev

上下文无关的语法帮助

来自分类Dev

上下文无关语法中的歧义

来自分类Dev

证明上下文无关语法是规则的

来自分类Dev

轻度上下文相关文法

来自分类Dev

轻度上下文相关文法

来自分类Dev

关于根据上下文无关文法生成值列表(例如[1,1,1,2,2,2])

来自分类Dev

如何编写上下文无关文法方面的antlr4中的操作优先级