2.理解文法和语文

1.理解符号串与集合运算。

L={A,B, … ,Z,a,b, … ,z}

D={0,1, … ,9}

说明下表示的含义:

LUD={A,B,...,Z,a,b,...,z,0,1,...,9};           集合L与集合D的并集。

LD={A0,...,A9,B0,...,B9,...,a0,...,a9,b0,...b9,...};   在集合L中任取一个元素与集合D中的任意一个元素组合。

L4={AAAA,AAAB,...,ABCZ,Aabb,...,zzzz,...}; 在集合L中任选四个字母组成的所有符号串的集合。

L*={ε,AA,BB,CC,AB,Aa,AAA,...}; 由L集合中的字母组成的所有符号串的集合。

D+={AA,BB,...,AAA,...AAAA,...};由D集合中一个或若干个数字组成的所有符号串的集合。

L(LUD)*:以字母开头,后跟字母,数字组成的所有符号串的集合。

 

2.文法G(Z):Z->aZb|ab定义的是什么样的语言?

Z->aZb|ab

 => Z->aZb,Z->ab

=>Z->aabb
=>Z->aaa......bbb
所以改语言为I(G[Z])={a^nb^n|n>=1}.

 

3.写出教材22页例2.2中标识符的文法四元组形式(VN,NT,P,S)。

I-> I | IL | ID

L->a | b | c |...| x | y | z

D->0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

 

4.写出下列表达式的最左推导、最右推导。

G(E):

E=> E + T | T

T=>T * F | F

F=>(E)| i

  • i*i+i
  • i+i*i
  • i+(i+i)

 注意观察最左和最右推导过程的不同。

  • i*i+i
  •   最左推导:        E=> E + T => T + T =>  T * F  + T =>  F * F  + T =>  i * F  + T =>  i * i  + T =>  i * i  + F => i * i  + i 
  •   最右推导:        E=> E + T => E + F =>  E  + i =>   T + i =>  T * F  + i =>  T * i  + i =>  F * i  + i => i * i  + i 

  i+i*i

    最左推导:        E=> E + T => T + T =>  F  + T =>  i + T =>  i  + T * F=>  i  + F * F =>  i + i * F => i + i * i

      最右推导:        E=> E + T => E + T * F =>  E  + T * i =>  E + F * i =>  E + i * i =>  T + i * i =>  F + i * i => i + i * i

  i+(i+i)

     最左推导:        E=> E + T => T + T =>  F  + T =>  i + T =>  i + F =>  i + (E) =>  i + ( E + T) => i  +( T + T ) => i + (F + T) => i + ( i +T ) => i + ( i + F) => i + ( i + i ) 

     最右推导:        E=> E + T => E + F =>  E  + ( E ) =>  E + ( E + T ) =>  E + ( E + F ) =>  E + (E + i ) =>  E+ ( T + i) => E  +( F + i ) => E + (i + i) => T + ( i +i ) => F + ( i + i) => i + ( i + i ) 

 

你可能感兴趣的:(2.理解文法和语文)