编译原理
"→"表示箭头左边的由箭头右边的定义
把He gave me a book与上述规则进行对照,看其中的语法范畴是否处于适当的位置,如果你了解英语的话,你应该可以确认这是一个正确的句子。做科学研究都有一个过程从现象得出一般结论,再用实验验证这个一般性结论。有了这个语法规则我们可以造出很多这种英文句子(简单假设,英文语法远比这复杂)。如果我们要造一个句子表达我们自己的意思,利用这个规则,很容易。
根据上述规则,句子无需考虑上下文,就可以判断正确性(符合<主语><谓语><间接宾语><直接宾语>的规则)。
其中,He,me等为终结符号,<主语>、<谓语>、<间接宾语>等为非终结符号。
这个文法最终要定义<句子>语法结构,所以<句子>在这里称为开始符号;<谓语>→<动词>这种书写形式称之为产生式。
归纳一下:上下文无关语法G包括四个部分:一组终结符号,一组非终结符号,一个开始符号,以及一组产生式。
说明一下:终结符号是组成语言不可再分的基本符号,在程序语言中就是保留字、标识符、常数等;非终结符号是一个给定的语法概念,是一个类(或集合)记号,而是不是某个个体记号;开始符号是一个特殊的非终结符号,是语言中我们最终想得到的字符串(在程序语言中,我们最终感兴趣的是“程序”这个语法范畴,其他的语法都是构造“程序”的基石);产生式(也称产生规则或者简称规则)是语法范畴的一种书写规则。
1型文法:又称为上下文有关文法
(1):式子左边可以有多个字符,但必须有一个终结符
(2):式子右边可以有多个字符,可以是终结符,也可以是非终结符,但必须是有限个字符
2型文法:又称为上下文无关文法
(1):式子左边只能有一个字符,而且必须是非终结符
(2):式子右边可以有多个字符,可以是终结符,也可以是非终结符,但必须是有限个字符
3型文法:又称为正规文法(正规文法又包括左线性文法和右线性文法)
(1):式子左边只能有一个字符,而且必须是非终结符
(2):式子右边最多有二个字符,而且如果有二个字符必须是一个终结符和一个非终结符
如果只有一个字符,那么必须是终结符
(3):式子右边的格式一定要一致,也就是说如果有一个是(终结符+非终结符)那么所有的式子都必须是(终结符+非终结符)
如果有一个是(非终结符+终结符),那么所有的式子都必须是(非终结符+终结符)
正规文法——左线性文法:
(1):必须是三型文法
(2):式子右边的产生是(非终结符+终结符)的格式