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