乘积
设A和B是符号串的集合,则A和B的乘积定义为
AB = {xy | x∈A and y∈B}。
eg:若A={a,b},B={b,c},则AB = {ab,ac,bb,bc}。
对任意符号串集合A,有{ε}A = A{ε} = A。
幂运算
设A是符号串的集合,则A的幂运算定义为
A0 = {ε} A1 = A An = AAn-1(n>0)
eg:若A={0,1},则A0={ε},A1={0,1},A2={00,01,10,11}。
4)正闭包与闭包
设A是符号串的集合,则集合A的正闭包A+和闭包A*定义为
A+ = A1∪A2∪…∪An∪…
A* = A0∪A1∪…∪An∪…
eg:若A={0,1},则A+={0,1,00,01,10,11,000,001,…},A*={ε,0,1,00,01,10,11,000,001,…}。
推导:
若存在一个直接推导序列:α0⇒α1⇒α2⇒…⇒αn,则称这个序列是一个从α0至αn的长度为n的推导。
当n>0时,α0至αn的推导记为α0 ⇒+ αn,表示从α0出发,经过1步或者若干步可推导出αn。
当n≥0时,α0至αn的推导记为α0 ⇒* αn,表示从α0出发,经过0步或者若干步可推导出αn。
句型和句子 设有文法G[Z],Z是文法G的开始符号。
1)句型:若Z ⇒* x,x∈(VN∪VT)*,则称符号串x为文法G[Z]的句型。
2)句子:若Z ⇒* x,x∈VT*,则称符号串x为文法G[Z]的句子。
3)句子一定是句型,句型不一定是句子。
语言
1)定义:文法G[Z]产生的所有句子的集合称为文法G所定义的语言,记为L(G[Z]),简写为L(G)。L(G)={x| Z ⇒+ x且x∈VT*}。
2)语言L(G)是VT*的子集。
文法递归
1)定义:对于文法中的任一非终结符,若能建立一个推导过程,在推导所得的符号串中又出现该终结符本身,则称文法是递归的。
2)种类:左递归、右递归、递归。
3)左递归:A ⇒+ A…
4)右递归:A ⇒+ …A
5)递归:A ⇒+ …A…
原文链接:https://blog.csdn.net/qq_38428886/article/details/93197490
1. 根据句型画语法推导树【对句型的推导】。
2. 判断短语:短语是语法推导树中每一个非叶子节点作为根的子树,从左到右的叶子节点。注意:短语可以是非终结符。
3. 判断直接短语:直接短语在短语中找,它们作为子树的叶子节点,根节点必须是它们所有节点的父亲节点。
4. 判断句柄:最左直接短语。
5. 判断素短语:素短语递归定义,满足三个条件:
① 素短语是短语。
② 素短语中必须包含至少一个终结符。
③ 素短语中不能包含其它素短语。
6. 最左素短语:在语法推导树中最靠左的素短语。
原文链接:https://blog.csdn.net/LeeDuoZuiShuai/article/details/104882488