8 { $$ = mkchain((char *)$1, CHNULL); }
10 { $$ = mkchain((char *)$3, $1); }
15 | SLPAR expr SRPAR { $$ = $2; }
21 | expr addop expr %prec SPLUS
22 { $$ = mkexpr($2, $1, $3); }
24 { $$ = mkexpr(OPSTAR, $1, $3); }
26 { $$ = mkexpr(OPSLASH, $1, $3); }
28 { $$ = mkexpr(OPPOWER, $1, $3); }
29 | addop expr %prec SSTAR
31 $$ = mkexpr(OPNEG, $2, ENULL);
34 | expr relop expr %prec SEQ
35 { $$ = mkexpr($2, $1, $3); }
37 { NO66(".EQV. operator");
38 $$ = mkexpr(OPEQV, $1,$3); }
40 { NO66(".NEQV. operator");
41 $$ = mkexpr(OPNEQV, $1, $3); }
43 { $$ = mkexpr(OPOR, $1, $3); }
45 { $$ = mkexpr(OPAND, $1, $3); }
47 { $$ = mkexpr(OPNOT, $2, ENULL); }
49 { NO66("concatenation operator //");
50 $$ = mkexpr(OPCONCAT, $1, $3); }
53 addop: SPLUS { $$ = OPPLUS; }
54 | SMINUS { $$ = OPMINUS; }
57 relop: SEQ { $$ = OPEQ; }
66 { $$ = mkprim($1, LBNULL, CHNULL); }
68 { NO66("substring operator :");
69 $$ = mkprim($1, LBNULL, $2); }
70 | name SLPAR funarglist SRPAR
71 { $$ = mkprim($1, mklist($3), CHNULL); }
72 | name SLPAR funarglist SRPAR substring
73 { NO66("substring operator :");
74 $$ = mkprim($1, mklist($3), $5); }
77 substring: SLPAR opt_expr SCOLON opt_expr SRPAR
78 { $$ = mkchain((char *)$2, mkchain((char *)$4,CHNULL)); }
87 { if($1->vclass == CLPARAM)
89 ( (struct Paramblock *) ($1) ) -> paramval);
94 simple_const: STRUE { $$ = mklogcon(1); }
95 | SFALSE { $$ = mklogcon(0); }
96 | SHOLLERITH { $$ = mkstrcon(toklen, token); }
97 | SICON = { $$ = mkintcon( convci(toklen, token) ); }
98 | SRCON = { $$ = mkrealcon(tyreal, token); }
99 | SDCON = { $$ = mkrealcon(TYDREAL, token); }
103 complex_const: SLPAR uexpr SCOMMA uexpr SRPAR
104 { $$ = mkcxcon($2,$4); }
108 { NOEXT("hex constant");
109 $$ = mkbitcon(4, toklen, token); }
111 { NOEXT("octal constant");
112 $$ = mkbitcon(3, toklen, token); }
114 { NOEXT("binary constant");
115 $$ = mkbitcon(1, toklen, token); }
125 | fexpr addop fexpr %prec SPLUS
126 { $$ = mkexpr($2, $1, $3); }
128 { $$ = mkexpr(OPSTAR, $1, $3); }
130 { $$ = mkexpr(OPSLASH, $1, $3); }
132 { $$ = mkexpr(OPPOWER, $1, $3); }
133 | addop fexpr %prec SSTAR
135 $$ = mkexpr(OPNEG, $2, ENULL);
138 | fexpr SCONCAT fexpr
139 { NO66("concatenation operator //");
140 $$ = mkexpr(OPCONCAT, $1, $3); }