1: funarglist:
   2:         { $$ = 0; }
   3:     | funargs
   4:     ;
   5: 
   6: funargs:  expr
   7:         { $$ = mkchain($1, 0); }
   8:     | funargs SCOMMA expr
   9:         { $$ = hookup($1, mkchain($3,0) ); }
  10:     ;
  11: 
  12: 
  13: expr:     uexpr
  14:     | SLPAR expr SRPAR  { $$ = $2; }
  15:     | complex_const
  16:     ;
  17: 
  18: uexpr:    lhs
  19:     | simple_const
  20:     | expr addop expr   %prec SPLUS
  21:         { $$ = mkexpr($2, $1, $3); }
  22:     | expr SSTAR expr
  23:         { $$ = mkexpr(OPSTAR, $1, $3); }
  24:     | expr SSLASH expr
  25:         { $$ = mkexpr(OPSLASH, $1, $3); }
  26:     | expr SPOWER expr
  27:         { $$ = mkexpr(OPPOWER, $1, $3); }
  28:     | addop expr  %prec SSTAR
  29:         { if($1 == OPMINUS)
  30:             $$ = mkexpr(OPNEG, $2, 0);
  31:           else  $$ = $2;
  32:         }
  33:     | expr relop expr  %prec SEQ
  34:         { $$ = mkexpr($2, $1, $3); }
  35:     | expr SEQV expr
  36:         { $$ = mkexpr(OPEQV, $1,$3); }
  37:     | expr SNEQV expr
  38:         { $$ = mkexpr(OPNEQV, $1, $3); }
  39:     | expr SOR expr
  40:         { $$ = mkexpr(OPOR, $1, $3); }
  41:     | expr SAND expr
  42:         { $$ = mkexpr(OPAND, $1, $3); }
  43:     | SNOT expr
  44:         { $$ = mkexpr(OPNOT, $2, 0); }
  45:     | expr SCONCAT expr
  46:         { $$ = mkexpr(OPCONCAT, $1, $3); }
  47:     ;
  48: 
  49: addop:    SPLUS     { $$ = OPPLUS; }
  50:     | SMINUS    { $$ = OPMINUS; }
  51:     ;
  52: 
  53: relop:    SEQ   { $$ = OPEQ; }
  54:     | SGT   { $$ = OPGT; }
  55:     | SLT   { $$ = OPLT; }
  56:     | SGE   { $$ = OPGE; }
  57:     | SLE   { $$ = OPLE; }
  58:     | SNE   { $$ = OPNE; }
  59:     ;
  60: 
  61: lhs:     name
  62:         { $$ = mkprim($1, 0, 0, 0); }
  63:     | name SLPAR opt_expr SCOLON opt_expr SRPAR
  64:         { $$ = mkprim($1, 0, $3, $5); }
  65:     | name SLPAR funarglist SRPAR
  66:         { $$ = mkprim($1, mklist($3), 0, 0); }
  67:     | name SLPAR funarglist SRPAR SLPAR opt_expr SCOLON opt_expr SRPAR
  68:         { $$ = mkprim($1, mklist($3), $6, $8); }
  69:     ;
  70: 
  71: opt_expr:
  72:         { $$ = 0; }
  73:     | expr
  74:     ;
  75: 
  76: simple:   name
  77:         { if($1->vclass == CLPARAM)
  78:             $$ = cpexpr($1->paramval);
  79:         }
  80:     | simple_const
  81:     ;
  82: 
  83: simple_const:   STRUE   { $$ = mklogcon(1); }
  84:     | SFALSE    { $$ = mklogcon(0); }
  85:     | SHOLLERITH  { $$ = mkstrcon(toklen, token); }
  86:     | SICON = { $$ = mkintcon( convci(toklen, token) ); }
  87:     | SRCON = { $$ = mkrealcon(TYREAL, convcd(toklen, token)); }
  88:     | SDCON = { $$ = mkrealcon(TYDREAL, convcd(toklen, token)); }
  89:     ;
  90: 
  91: complex_const:  SLPAR uexpr SCOMMA uexpr SRPAR
  92:         { $$ = mkcxcon($2,$4); }
  93:     ;
  94: 
  95: bit_const:  SHEXCON
  96:         { $$ = mkbitcon(4, toklen, token); }
  97:     | SOCTCON
  98:         { $$ = mkbitcon(3, toklen, token); }
  99:     | SBITCON
 100:         { $$ = mkbitcon(1, toklen, token); }
 101:     ;
 102: 
 103: fexpr:    unpar_fexpr
 104:     | SLPAR fexpr SRPAR
 105:         { $$ = $2; }
 106:     ;
 107: 
 108: unpar_fexpr:      lhs
 109:     | simple_const
 110:     | fexpr addop fexpr   %prec SPLUS
 111:         { $$ = mkexpr($2, $1, $3); }
 112:     | fexpr SSTAR fexpr
 113:         { $$ = mkexpr(OPSTAR, $1, $3); }
 114:     | fexpr SSLASH fexpr
 115:         { $$ = mkexpr(OPSLASH, $1, $3); }
 116:     | fexpr SPOWER fexpr
 117:         { $$ = mkexpr(OPPOWER, $1, $3); }
 118:     | addop fexpr  %prec SSTAR
 119:         { if($1 == OPMINUS)
 120:             $$ = mkexpr(OPNEG, $2, 0);
 121:           else  $$ = $2;
 122:         }
 123:     | fexpr SCONCAT fexpr
 124:         { $$ = mkexpr(OPCONCAT, $1, $3); }
 125:     ;
Last modified: 1987-02-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 542
Valid CSS Valid XHTML 1.0 Strict