文法和语言总结与梳理 (9.25)

文法的二义性

一个句型可能对应多个语法树,一个句型可能对应多个最左/最右推导。

如果一个文法中的某个句子可以对应两个不同的语法树,则称这个文法是二义的。

两个不同的文法可能是一样的语言。

如果一种语言的所有文法都是二义的,则称此语言先天二义。

判定一个文法是否是二义的是递归不可解的。

2. 尝试写出PL/0 语言的文法。

整数n   n :: = 1 | 2 | ..... | 9 | 0

标识符i   i :: = <字母> | {<字母> | <数字 >}

表达式e   ::=[+|-]<项>{<加减运算符><项>}

条件语句  ::=if<条件>then<语句>

赋值语句  ::=<id>:=<表达式>

复合语句 ::=begin<语句>{;<语句>}end

函数   ::= <类型说明><函数名><复合语句>

程序   ::= [<常量说明部分>] [<变量说明部分>] [<过程说明部分>] <语句>

原文地址:https://www.cnblogs.com/lywkkk/p/11583493.html