编译原理考试问题:已知表达式文法G(Exp)

已知表达式文法G(Exp):
Exp → Exp+Term|Term
Term → Term*Factor | Factor
Factor → (Exp) | num
试设计属性文法计算表达式的值。(设值属性为val)
其中Exp是表达式,Term是项,Factor是因子,num 是终结符数字,其值在词法分析后存储在num.val中。

第1个回答  2014-04-18
简单起见,用E代表Exp,用T代表Term,用F代表Factor。下面是所求属性文法

(1)E→ E1 + T E.val:=E1.val+T.val /* 为了区别→两侧的E, →右侧的E用E1表示 */

(2)E→
T E.val:=T.val

(3)T→ T1 * F T.val:=T1.val*F.val

(4)T→
F T.val:=F.val

(5)F→(E) F.val:=E.val

(6)F→num F.val:=num.val
相似回答