正在加载图片...
376 翁译原理及实践 China-pub.com 下载 进行求值,子表达式的值存储到给定的地址。这个值也作为整个表达式的值返回。vr是简单 的(整型)变量或下标数组变量。负的下标将引起程序停止(与C不同)。然而,不进行下标越界 检查。 var表示C一比C的进一步限制。在C中赋值的目标必须是左值(value,左值是可以由许多 操作获得的地址。在C一中唯一的左值是由r语法给定的,因此这个种类按照句法进行检查 代替像C中那样的类型检查。故在C一中指针运算是禁止的。 20.simple-expressionadditive-expression relop additive-expression additive -expression 21.relop+<=|<|>|>=l==1!= 简单表达式由无结合的关系操作符组成(即无括号的表达式仅有一个关系操作符)。简单表 达式在它不包含关系操作符时,其值是加法表达式的值,或者如果关系算式求值为tur,其值 为l,求值为false时值为0。 22.additive-expression-additive-expression addop term term 23.addop→+1- 24.termterm mulop factor factor 25.mulop* 加法表达式和项表示了算术操作符的结合性和优先级。符号表示整数除:即任何余数都被 截去。 26 factor-(expression)I var call NUM 因子是围在括号内的表达式:或一个变量,求出其变量的值:或者一个函数调用,求出函 数的返回值:或者一个心M,其值由扫描器计算。数组变量必须是下标变量,除非表达式由单 个D组成,并且以数组为参数在函数调用中使用(如下所示)。 27.cal→rD(amgs) 28.argsarg-list empty 29.arg-list arg-list,expression expres 函数调用的组成是一个ID(函数名),后面是用括号围起来的参数。参数或者为空,或者由 逗号分割的表达式列表组成,表示在一次调用期间分配的参数的值。函数在调用之前必须声明, 声明中参数的数目必须等于调用中参数的数目。函数声明中的数组参数必须和一个表达式匹配 这个表达式由一个标识符组成表示一个数组变量。 最后,上面的规则没有给出输入和输出语句。在C一的定义中必须包含这样的函数,因为 与C不同,C一没有独立的编译和链接工具:因此,考虑两个在全局环境中预定义的函数,好 像它们已进行了声明: int input(void)(...) void output(int x)(...) inputi函数没有参数,从标准输入设备(通常是键盘)返回一个整数值。output函数接受 一个整型参数,其值和一个换行符一起打印到标准输出设备(通常是屏幕)。 A.3C一的程序例子 下面的程序输入两个整数,计算并打印出它们的最大公因子。 进行求值,子表达式的值存储到给定的地址。这个值也作为整个表达式的值返回。 v a r是简单 的(整型)变量或下标数组变量。负的下标将引起程序停止 (与C不同)。然而,不进行下标越界 检查。 v a r表示C-比C的进一步限制。在C中赋值的目标必须是左值(l - v a l u e),左值是可以由许多 操作获得的地址。在C-中唯一的左值是由v a r语法给定的,因此这个种类按照句法进行检查, 代替像C中那样的类型检查。故在C-中指针运算是禁止的。 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 → < = | < | > | > = | = = |! = 简单表达式由无结合的关系操作符组成 (即无括号的表达式仅有一个关系操作符 )。简单表 达式在它不包含关系操作符时,其值是加法表达式的值,或者如果关系算式求值为 t u r e,其值 为1,求值为f a l s e时值为0。 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 因子是围在括号内的表达式;或一个变量,求出其变量的值;或者一个函数调用,求出函 数的返回值;或者一个N U M,其值由扫描器计算。数组变量必须是下标变量,除非表达式由单 个ID 组成,并且以数组为参数在函数调用中使用(如下所示)。 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 函数调用的组成是一个I D (函数名),后面是用括号围起来的参数。参数或者为空,或者由 逗号分割的表达式列表组成,表示在一次调用期间分配的参数的值。函数在调用之前必须声明, 声明中参数的数目必须等于调用中参数的数目。函数声明中的数组参数必须和一个表达式匹配, 这个表达式由一个标识符组成表示一个数组变量。 最后,上面的规则没有给出输入和输出语句。在 C-的定义中必须包含这样的函数,因为 与C不同,C-没有独立的编译和链接工具;因此,考虑两个在全局环境中预定义的函数,好 像它们已进行了声明: int input(void) {...} void output(int x) {...} i n p u t函数没有参数,从标准输入设备 (通常是键盘)返回一个整数值。o u t p u t函数接受 一个整型参数,其值和一个换行符一起打印到标准输出设备 (通常是屏幕)。 A.3 C-的程序例子 下面的程序输入两个整数,计算并打印出它们的最大公因子。 /* A program to perform Euclid's Algorithm to compute gcd. */ 3 7 6 编译原理及实践 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有