7 { $$ = mkchain((char *)$1, CHNULL); }
9 { $$ = hookup($1, mkchain((char *)$3,CHNULL) ); }
14 | SLPAR expr SRPAR { $$ = $2; }
20 | expr addop expr %prec SPLUS
21 { $$ = mkexpr($2, $1, $3); }
23 { $$ = mkexpr(OPSTAR, $1, $3); }
25 { $$ = mkexpr(OPSLASH, $1, $3); }
27 { $$ = mkexpr(OPPOWER, $1, $3); }
28 | addop expr %prec SSTAR
30 $$ = mkexpr(OPNEG, $2, ENULL);
33 | expr relop expr %prec SEQ
34 { $$ = mkexpr($2, $1, $3); }
36 { NO66(".EQV. operator");
37 $$ = mkexpr(OPEQV, $1,$3); }
39 { NO66(".NEQV. operator");
40 $$ = mkexpr(OPNEQV, $1, $3); }
42 { $$ = mkexpr(OPOR, $1, $3); }
44 { $$ = mkexpr(OPAND, $1, $3); }
46 { $$ = mkexpr(OPNOT, $2, ENULL); }
48 { NO66("concatenation operator //");
49 $$ = mkexpr(OPCONCAT, $1, $3); }
52 addop: SPLUS { $$ = OPPLUS; }
53 | SMINUS { $$ = OPMINUS; }
56 relop: SEQ { $$ = OPEQ; }
65 { $$ = mkprim($1, LBNULL, CHNULL); }
67 { NO66("substring operator :");
68 $$ = mkprim($1, LBNULL, $2); }
69 | name SLPAR funarglist SRPAR
70 { $$ = mkprim($1, mklist($3), CHNULL); }
71 | name SLPAR funarglist SRPAR substring
72 { NO66("substring operator :");
73 $$ = mkprim($1, mklist($3), $5); }
76 substring: SLPAR opt_expr SCOLON opt_expr SRPAR
77 { $$ = mkchain((char *)$2, mkchain((char *)$4,CHNULL)); }
86 { if($1->vclass == CLPARAM)
88 ( (struct Paramblock *) ($1) ) -> paramval);
93 simple_const: STRUE { $$ = mklogcon(1); }
94 | SFALSE { $$ = mklogcon(0); }
95 | SHOLLERITH { $$ = mkstrcon(toklen, token); }
96 | SICON = { $$ = mkintcon( convci(toklen, token) ); }
97 | SRCON = { $$ = mkrealcon(tyreal, token); }
98 | SDCON = { $$ = mkrealcon(TYDREAL, token); }
102 complex_const: SLPAR uexpr SCOMMA uexpr SRPAR
103 { $$ = mkcxcon($2,$4); }
107 { NOEXT("hex constant");
108 $$ = mkbitcon(4, toklen, token); }
110 { NOEXT("octal constant");
111 $$ = mkbitcon(3, toklen, token); }
113 { NOEXT("binary constant");
114 $$ = mkbitcon(1, toklen, token); }
124 | fexpr addop fexpr %prec SPLUS
125 { $$ = mkexpr($2, $1, $3); }
127 { $$ = mkexpr(OPSTAR, $1, $3); }
129 { $$ = mkexpr(OPSLASH, $1, $3); }
131 { $$ = mkexpr(OPPOWER, $1, $3); }
132 | addop fexpr %prec SSTAR
134 $$ = mkexpr(OPNEG, $2, ENULL);
137 | fexpr SCONCAT fexpr
138 { NO66("concatenation operator //");
139 $$ = mkexpr(OPCONCAT, $1, $3); }