文法和语言

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

答:Z→aZb→aaZbb→aaa...Z...b→aaa...ab...bbb

L(G[Z])={anbn|n≥1}

 

2.写出教材22页例2.2中标识符的文法四元组形式

答:设I为标识符;L为字母;D为数字。

则有VN={I,L,D},VT={a,b,c...x,y,z,0,1,2...9}

P={I→L

  I→IL

  I→ID

  L→a

  L→b

  ...

  L→z

  D→0

  D→1

  ...

  D→9}

S=<I>

 

3.写出下列表达式的最左推导、最右推导和语法树。

G(E):

E=> E + T | T

T=>T * F | F

F=>(E)| i

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

 注意观察最左和最右推导过程的不同,以及语法树的异同。

(1)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 => F*F+i => F*i+i => i*i+i

语法树:

(2)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

语法树:

(3)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)

语法树:

posted @ 2019-09-12 22:46  小罗伯特唐尼  阅读(111)  评论(0)    收藏  举报