正在加载图片...
374 翁译原理及实践 China-pub.com 下载 4.rar-declaration一pe-specifier ID:lppe-specifier ID【NuM】; 5.type-specifier-int lvoid 6.fun-declaration-type-specifier ID params compound-stmt 7.params-params-list void 8.param-list-param-list,param param 9.param→pe-specifier ID type-specifier ID[】 10.compound-stmt local-declarations statement-list) 11.local-declarations local-declarations var-declaration empty 12.statement-list-statement-list statement empty 13.statementexpression-stmt compound-stmt selection-simt iteration-stmt return-stmt 14.expression-simt-expression 15.selection-stmt -if expression statement if expression statement else statement 16.iteration-stmt-while expression statement 17.return-simt-return return expression; 18.expressionvar=expression simple-expression 19.var -IDID expression 20.simple-expression-additive-expression relop additive-expression additive-expression 21.elop→<=|<|>|>=|=|1= 22.additive-expression-additive-expression addop term term 23.addop→+1- 24.term-term mulop factor factor 25.mlop→*/ 26.factor→(expression)var|call1uw 27.call→tD(amgs) 28.args-arg-list empty 29.arg-list-arg-list,expression expression 对以上每条文法规则,给出了相关语义的简短解释 1.program declaration-list 2.declaration-list-declaration-list declarationdeclaration 3.declarationvar-declaration fun-declaration 程序由声明的列表(或序列)组成,声明可以是函数或变量声明,顺序是任意的。至少必须有一个 声明。接下来是语义限制(这些在C中不会出现)。所有的变量和函数在使用前必须声明(这避免了 向后backpatching引用)。程序中最后的声明必须是一个函数声明,名字为main。注意,C一缺乏 原型,因此声明和定义之间没有区别(像C一样)。 4.var-declaration一ype-specifier ID;lpe-specifier ID【wM】: 5.type-specifier-int void 变量声明或者声明了简单的整数类型变量,或者是基类型为整数的数组变量,索引范围从0到 N0M-1。注意,在C一中仅有的基本类型是整型和空类型。在一个变量声明中,只能使用类型 4. v a r- d e c l a r a t i o n → t y p e - s p e c i f i e r I D ; | t y p e - s p e c i f i e r I D [ N U M ] ; 5. t y p e - s p e c i f i e r → i n t | v o i d 6. f u n - d e c l a r a t i o n → t y p e - s p e c i f i e r I D ( p a r a m s ) | c o m p o u n d - s t m t 7. p a r a m s → p a r a m s-l i s t | v o i d 8. p a r a m - l i s t → p a r a m - l i s t , p a r a m | p a r a m 9. p a r a m → t y p e - s p e c i f i e r I D | t y p e - s p e c i f i e r I D [ ] 10. c o m p o u n d - s t m t → { l o c a l-d e c l a r a t i o ns s t a t e m e n t-l i s t } 11. l o c a l-d e c l a r a t i o ns → l o c a l-d e c l a r a t i o ns v a r- d e c l a r a t i o n | e m p t y 12. s t a t e m e n t-l i s t → s t a t e m e n t-l i s t s t a t e m e n t | e m p t y 13. s t a t e m e n t → e x p re s s i o n-s t m t | c o m p o u n d - s t m t | s e l e c t i o n - s t m t | i t e r a t i o n-s t m t | re t u r n-s t m t 14. e x p re s s i o n-s t m t → e x p re s s i o n ; | ; 15. s e l e c t i o n - s t m t → i f ( e x p re s s i o n ) s t a t e m e n t | i f ( e x p re s s i o n ) s t a t e m e n t e l s e s t a t e m e n t 16. i t e r a t i o n -s t m t → w h i l e ( e x p re s s i o n ) s t a t e m e n t 17. re t u r n -s t m t → return ;| r e t u r n e x p re s s i o n; 18. e x p re s s i o n → v a r = e x p re s s i o n | s i m p l e-e x p re s s i o n 19. v a r → I D | I D [ e x p re s s i o n ] 20. s i m p l e-e x p re s s i o n → a d d i t i v e-e x p re s s i o n re l o p a d d i t i v e-e x p re s s i o n | a d d i t i v e -e x p re s s i o n 21. re l o p →< = | < | > | > = | = = | ! = 22. a d d i t i v e-e x p re s s i o n → a d d i t i v e-e x p re s s i o n a d d o p t e r m | t e r m 23. a d d o p →+ | - 24. t e r m → t e r m m u l o p f a c t o r | f a c t o r 25. m u l o p →* | / 26. f a c t o r → ( e x p re s s i o n ) | v a r | c a l l | N U M 27. c a l l → I D ( a rg s ) 28. a rg s → a rg - l i s t | e m p t y 29. a rg-l i s t → a rg-list , e x p re s s i o n | e x p re s s i o n 对以上每条文法规则,给出了相关语义的简短解释。 1. p ro g r a m → d e c l a r a t i o n - l i s t 2. d e c l a r a t i o n - l i s t → d e c l a r a t i o n - l i s t d e c l a r a t i o n | d e c l a r a t i o n 3. d e c l a r a t i o n → v a r- d e c l a r a t i o n | f u n - d e c l a r a t i o n 程序由声明的列表(或序列)组成,声明可以是函数或变量声明,顺序是任意的。至少必须有一个 声明。接下来是语义限制(这些在C中不会出现)。所有的变量和函数在使用前必须声明(这避免了 向后b a c k p a t c h i n g引用)。程序中最后的声明必须是一个函数声明,名字为m a i n。注意,C-缺乏 原型,因此声明和定义之间没有区别(像C一样)。 4. v a r- d e c l a r a t i o n → t y p e - s p e c i f i e r I D ; | t y p e - s p e c i f i e r I D [ NUM ] ; 5. t y p e - s p e c i f i e r → i n t | v o i d 变量声明或者声明了简单的整数类型变量,或者是基类型为整数的数组变量,索引范围从 0到 N UM -1。注意,在C-中仅有的基本类型是整型和空类型。在一个变量声明中,只能使用类型 3 7 4 编译原理及实践 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有