文法是语法的抽象,语句是文法的实例
::=意思是左式由右式组成的.
是可替换部件.
∣ | ∣是or.
< a > = < b > < c > ∣ < d > → < a > = < b > < c > , < a > = < d > =
约定:抽象部件用大写标识,实例用小写标识
• 语法规则的形式化
• 语法规则含有语法单位符号 抽象
• 语法规则含有构成语句的单词符号 实例
• 特殊的语法单位符号:开始符号
字母表(charset)
符号串是字母表的闭包( S ∗ S^* S∗).单词和源程序都是符号串
length
符号串集合
是基于字符集的形如 α : : = β \alpha::=\beta α::=β的式子.也称重写规则,生成式.
该式规定了由抽象的形式部件向实例转化的规则.
文法G定义为一个四元组(VN,VT,P,S),记为 G = ( V N , V T , P , S ) G=(V_N,V_T,P,S) G=(VN,VT,P,S)。其中,
按照规则对符号式进行一步/多部推导
eg.
∵ S → a S b ∴ a a S b b → a a a S b b b → a a a a a a S b b b b b b \because S\rightarrow aSb\\ \therefore aaSbb\rightarrow aaaSbbb\rightarrow aaaaaaSbbbbbb ∵S→aSb∴aaSbb→aaaSbbb→aaaaaaSbbbbbb
0或0步以上推导:就是上式一步到最后结果
含有一定数量的抽象组建的称句型
全部是实例的称句子
文法的最终形态,记作 L ( G ) L(G) L(G).
定义为文法G产生的所有句子的集合.
文法的最终推导.
i f L ( G 1 ) = L ( G 2 ) if\ L(G_1)=L(G_2) if L(G1)=L(G2)
称为G1G2等价.
所有的规则P中均含有非终结符(抽象部件 V N V_N VN).
也称短语文法.
特征: L ( G ) = { ∅ } L(G)=\{\empty\} L(G)={∅}
除了0型文法的规则,附加:
除空规则外 ∣ α ∣ ≤ ∣ β ∣ |\alpha|\leq|\beta| ∣α∣≤∣β∣,也就是每次代换符号串会变长.
也称上下有关文法.
所有的规则P的左式均只有非终结符(大写的)
则称2型文法,也就是上下无关文法(因为这种规则下使用哪种规则和非终止符周围的终止符(单词实例)无关.
所有的规则P形如 α → a B \alpha\rightarrow aB α→aB,a为终结符(实例),B为非终结符.
这种称右线性3型文法.
还有左线性.
统称为3型正规文法.
这种文法的特点是有固定的推导范式有利于自动化处理.
以后的文法都指2/3型文法.这两种文法也是规范文法.
在推导的每一步都从最左/右的第一个非终止符开始.
一种范式.
推出 L ( G [ S ] ) = a a b a a L(G[S])=aabaa L(G[S])=aabaa
如果对应文法规则,某句子存在两个语法树,称为二义性.
判断符号串是否符合文法,等价转化为推导或者归约问题.
S → α a n d α ∈ V T ∗ S\rightarrow \alpha\\and\\\alpha\in V_T^* S→αandα∈VT∗
自下而上/自上而下
从符号串 α \alpha α开始逐步进行规约直到到达开始符号S.
检查规则的右部,如果有规则相同则进行规约.否则考虑检查子串.
通常使用句柄.
对于G[S]和句型(含有抽象部件和实例的串),如果有S可通过若干步推导成符号串 α A δ \alpha A\delta αAδ,并且 A ⇒ + β A\Rightarrow ^+\beta A⇒+β,则称 β \beta β是句型 α β δ \alpha\beta\delta αβδ相对于非终结符A的短语
如果A一步推到 β \beta β,则称为直接短语.
句型的最左直接短语称句柄.
终结符A的短语
如果A一步推到 β \beta β,则称为直接短语.
句型的最左直接短语称句柄.
To Be Continued…
前提: ξ ∉ L ( G [ S ] ) \xi \not\in L(G[S]) ξ∈L(G[S])