样本S语言的定义程序{声明语句语句}声明语句声明语句intID;|intID;语句if(布尔表达式)then语句else语句|if(布尔表达式)then语句|while(布尔表达式)do语句|ID=算术表达式|{复合语句}复合语句语句;复合语句|语句布尔表达式布尔表达式∧布尔表达式|布尔表达式∨布尔表达式|IDrelopID|ID算术表达式算术表达式+算术表达式|算术表达式-算术表达式|算术表达式*算术表达式|算术表达式/算术表达式|(算术表达式)|ID|NUM样本S语言的定义(符号表示)P→{DS}D→DintID;|intID;S→if(B)thenSelseS|if(B)thenS|while(B)doS|{L}|ID=EL→S;L|SB→B∧B|B∨B|IDrelopID|IDE→E+E|E-E|E*E|E/E|(E)|ID|NUM文法的终极符实际上是用助记符形式表示的单词类别。其中:relop是终极符,其属性值可以是,,!=,==,=,=。ID是终极符,其属性值是简单变量名。NUM是终极符,其属性值是无符号正整数。作为语言的关键字的终极符有:int,if,then,else,while,do其他的终极符:{,},(,),=,;,∧,∨,+,-,*,/样本S语言的定义(符号表示)P→{DS}D→DintID;|intID;S→if(B)thenSelseS|if(B)thenS|while(B)doS|{L}|ID=EL→S;L|SB→B∧B|B∨B|IDrelopID|IDE→E+E|E-E|E*E|E/E|(E)|ID|NUM非终极符是:P代表程序,D代表声明语句,S代表语句,L代表语句的表列,B代表布尔表达式,非零代表真。E代表算术表达式。样本S语言的单词类别及内部表示文法中的终极符是语言的单词,单词的类别以助记符的形式在文法中表现出来。文法的非终极符是语法单位名称,如语句、算术表达式等。保留字:int、if、then、else、while、do。标识符:用助记符(单词记号)ID表示。常数:用助记符NUM表示。算术运算符:+、-、*、/。逻辑运算符:∧、∨。关系运算符:、、=、=、!=、==用助记符relop表示。分隔符:{、}、;、(、)、=。样本S语言的单词识别的状态转换图每个单词的识别都从初始状态开始,如果把状态转换图看成一个函数,则每次调用只能识别出一个单词。对于保留字这类单词,并不专设对应的状态转换图,而是事先存在保留字表中。每识别出一个标识符,就去查保留字表,若匹配成功,则该标识符是一个保留字,否则就是一个标识符