编译原理-第二章-高级语言及其语法描述总结
1.语法:
任何语言程序都可以看成是一定字符集上的字符串。但是怎么样产生这种”字符串“就要有语法。
2.语义:
一种语言,给出了词法和语法还要给出符号单位的意义。离开语义语言只不过是一堆符号的集合。
3.上下文无关文法:
所谓上下文无关文法是指:他所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的。
4.最左最右推导:
就是优先推导最左(右)的非终结符。
例题:
令文法为:
E -> T | E + T | E - T
T -> F | T * F | T / F
F -> (E) | i
给出i + i * i的最左推导和最右推导:
左:E -> E + T -> T + T -> F + T -> i + T -> i + T * F -> i + F * F -> i + i * i
右:E -> E + F -> E + F * T -> E + F * F -> E + i * i -> F + i * i -> i + i * i
5.语法分析树和二义性:
如果对于不同的推导方式会产生不同的语法树,那么这个文法是二义的
语法分析树:简称语法树,用来表示推导过程。具有不唯一性。
例题:
令文法为:
E→E+E|E*E|(E)|i
关于(i*i+i)的推导形成语法树:
6.上下文无关:
文法是描述语言的语法结构的形式规则(即语法规则)。
上下文无关文法的特点:它所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的。
特点:独立性
缺点:不能用来描述自然语言
感悟:
编译原理挺难的,很多东西很抽象,理解起来很麻烦。可能到后边的应用就会好些吧。