1: /* 2: * @(#)cpy.y 1.2 1/2/83 3: */ 4: %term number stop DEFINED 5: %term EQ NE LE GE LS RS 6: %term ANDAND OROR 7: %left ',' 8: %right '=' 9: %right '?' ':' 10: %left OROR 11: %left ANDAND 12: %left '|' '^' 13: %left '&' 14: %binary EQ NE 15: %binary '<' '>' LE GE 16: %left LS RS 17: %left '+' '-' 18: %left '*' '/' '%' 19: %right '!' '~' UMINUS 20: %left '(' '.' 21: %% 22: S: e stop ={return($1);} 23: 24: 25: e: e '*' e 26: ={$$ = $1 * $3;} 27: | e '/' e 28: ={$$ = $1 / $3;} 29: | e '%' e 30: ={$$ = $1 % $3;} 31: | e '+' e 32: ={$$ = $1 + $3;} 33: | e '-' e 34: ={$$ = $1 - $3;} 35: | e LS e 36: ={$$ = $1 << $3;} 37: | e RS e 38: ={$$ = $1 >> $3;} 39: | e '<' e 40: ={$$ = $1 < $3;} 41: | e '>' e 42: ={$$ = $1 > $3;} 43: | e LE e 44: ={$$ = $1 <= $3;} 45: | e GE e 46: ={$$ = $1 >= $3;} 47: | e EQ e 48: ={$$ = $1 == $3;} 49: | e NE e 50: ={$$ = $1 != $3;} 51: | e '&' e 52: ={$$ = $1 & $3;} 53: | e '^' e 54: ={$$ = $1 ^ $3;} 55: | e '|' e 56: ={$$ = $1 | $3;} 57: | e ANDAND e 58: ={$$ = $1 && $3;} 59: | e OROR e 60: ={$$ = $1 || $3;} 61: | e '?' e ':' e 62: ={$$ = $1 ? $3 : $5;} 63: | e ',' e 64: ={$$ = $3;} 65: | term 66: ={$$ = $1;} 67: term: 68: '-' term %prec UMINUS 69: ={$$ = -$2;} 70: | '!' term 71: ={$$ = !$2;} 72: | '~' term 73: ={$$ = ~$2;} 74: | '(' e ')' 75: ={$$ = $2;} 76: | DEFINED '(' number ')' 77: ={$$= $3;} 78: | DEFINED number 79: ={$$ = $2;} 80: | number 81: ={$$= $1;} 82: %% 83: # include "yylex.c"