编译技术第5次上机内容 目的:充分理解语义分析的方法及相关语义计算的执行时机,用C++程序实现。 要求: 1.以S属性的语法制导定义为基础,将下表的语义规则嵌套在语法分析的过程中,即实现语法制导的翻译过程。 产 生 式 语 义 规 则 L ® E n print (E.val) E ® E1 + T E.val := E1 .val + T.val E ® T E.val := T.val T ® T1 * F T.val := T1.val * F.val T ® F T.val := F.
编译技术第5次上机内容 目的:充分理解语义分析的方法及相关语义计算的执行时机。 要求: 1.以S属性的语法制导定义为基础,将下表的语义规则嵌套在语法分析的过程中,即实现语法制导的翻译过程。 产 生 式 语 义 规 则 L E n print (E.val) E E1 + T E.val := E1 .val + T.val E T E.val := T.val T T1 * F T.val := T1.val * F.val T F T.val := F.val F (E) F.val :=
目的:充分理解语义分析的方法及相关语义计算的执行时机。 要求: 1.以S属性的语法制导定义为基础,将下表的语义规则嵌套在语法分析的过程中,即实现语法制导的翻译过程。 产 生 式 语 义 规 则 L ® E n print (E.val) E ® E1 + T E.val := E1 .val + T.val E ® T E.val := T.val T ® T1 * F T.val := T1.val * F.val T ® F T.val := F.val F® (E) F.val := E
目的:熟练掌握自上而下的语法分析方法,并能用程序实现。
要求:
例如. 使用的文法如下:
E TE
E + TE |
T FT
T * FT |
F (E) | id
编写First函数,实现其求解过程。
提示:
1,非终结符为 大写字母;或 后面带’的大写字母
2,终结符为 小写字母和符号(+、*)
3,推导符号为或->
4,用end结束文法。
5,不针对特定文法,编写求first函数。
有余力的同学可进一步