上下文无关文法自顶向下分析
- 格式:pptx
- 大小:512.26 KB
- 文档页数:52
上下文无关文法的基本概念上下文无关文法的基本概念定义:上下文无关文法G是一个四元组G = (N,T,P,S),其中N是非终结符的有限集合;T是终结符或单词的有限集合,它与N不相交;P是形如 A →α的产生式的有限集合,其中A∈N,α∈V ﹡,V=T∪NS是N中的区分符号,称为开始符号或句子符号。
V中的符号称为文法符号,包括终结符和非终结符。
特殊情况:A →ε空产生式例如,if语句结构的文法产生式表示:stmt →if expr then stmt else stmtBackus - Naur范式(Backus-Naur form)或BNF文法符号的使用约定:符号是终结符:字母表中比较靠前的小写字母,如a,b,c等。
操作符,如+、-等。
标点符号,如括号、逗号等。
数字0,1, (9)黑体串,如id、if等。
符号的使用约定:下列符号是非终结符:字母表中比较靠前的大写字母,如A、B、C等。
字母S,它常常代表开始符号。
小写斜体名字,如expr、stmt等。
字母表中比较靠后的大写字母,如X、Y、Z等,表示文法符号,也就是说,可以是非终结符也可以是终结符。
符号的使用约定:字母表中比较靠后的小写字母,如u,v,…,z等,表示终结符号的串。
小写希腊字母,如α、β、γ等,表示文法符号的串。
因此,一个通用产生式可以写作A →α,箭头左边(产生式左部)是一个非终结符A,箭头右边是文法符号串(产生式右部)。
符号的使用约定:如果A →α1、A →α2、…、A →αk 是所有以A为左部的产生式(称为A产生式),则可以把它们写成A →α1|α2|…|αk,我们将α1、α2、…、αk称为A的候选式。
除非另有说明,否则第一个产生式左部的符号是开始符号。
例1考虑下面的关于简单算术表达式的文法,非终结符为<表达式>和<运算符>,终结符有ID,+,-,*,/,↑,(,)。
产生式有<表达式> → <表达式> <运算符> <表达式><表达式> → (<表达式>)<表达式> → - <表达式><表达式> →ID<运算符> → +<运算符> → -<运算符> → *<运算符> → /<运算符> →↑正规表达式和上下文无关文法的关系:正规表达式所描述的每一种语言结构都可以用上下文无关文法来描述。