文法和语言 作业二

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

答:Z → ab

  Z → aZb → aaZbb → aaaZbbb → anbn

  所以定义的语言为:anbn

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

答:设标识符为E,字母为A,数字为B

  VN={E,A,B}    VT={A,B}

  P={

    E → A | EA | EB

    A → a | b | c | … | z |

    B → 1 | 2 | 3 | … | 9 |

   }

  S = E

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+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

  语法树:

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

  语法树:

猜你喜欢

转载自www.cnblogs.com/chenjd/p/11508546.html