Annotation of researchv10no/cmd/f2c/gram.exec, revision 1.1

1.1     ! root        1: exec:    iffable
        !             2:        | SDO end_spec intonlyon label intonlyoff opt_comma dospecw
        !             3:                {
        !             4:                if($4->labdefined)
        !             5:                        execerr("no backward DO loops", CNULL);
        !             6:                $4->blklevel = blklevel+1;
        !             7:                exdo($4->labelno, NPNULL, $7);
        !             8:                }
        !             9:        | SDO end_spec opt_comma dospecw
        !            10:                {
        !            11:                exdo((int)(ctls - ctlstack - 2), NPNULL, $4);
        !            12:                NOEXT("DO without label");
        !            13:                }
        !            14:        | SENDDO
        !            15:                { exenddo(NPNULL); }
        !            16:        | logif iffable
        !            17:                { exendif();  thiswasbranch = NO; }
        !            18:        | logif STHEN
        !            19:        | SELSEIF end_spec SLPAR expr SRPAR STHEN
        !            20:                { exelif($4); lastwasbranch = NO; }
        !            21:        | SELSE end_spec
        !            22:                { exelse(); lastwasbranch = NO; }
        !            23:        | SENDIF end_spec
        !            24:                { exendif(); lastwasbranch = NO; }
        !            25:        ;
        !            26: 
        !            27: logif:   SLOGIF end_spec SLPAR expr SRPAR
        !            28:                { exif($4); }
        !            29:        ;
        !            30: 
        !            31: dospec:          name SEQUALS exprlist
        !            32:                { $$ = mkchain((char *)$1, $3); }
        !            33:        ;
        !            34: 
        !            35: dospecw:  dospec
        !            36:        | SWHILE SLPAR expr SRPAR
        !            37:                { $$ = mkchain(CNULL, (chainp)$3); }
        !            38:        ;
        !            39: 
        !            40: iffable:  let lhs SEQUALS expr
        !            41:                { exequals((struct Primblock *)$2, $4); }
        !            42:        | SASSIGN end_spec assignlabel STO name
        !            43:                { exassign($5, $3); }
        !            44:        | SCONTINUE end_spec
        !            45:        | goto
        !            46:        | io
        !            47:                { inioctl = NO; }
        !            48:        | SARITHIF end_spec SLPAR expr SRPAR label SCOMMA label SCOMMA label
        !            49:                { exarif($4, $6, $8, $10);  thiswasbranch = YES; }
        !            50:        | call
        !            51:                { excall($1, LBNULL, 0, labarray); }
        !            52:        | call SLPAR SRPAR
        !            53:                { excall($1, LBNULL, 0, labarray); }
        !            54:        | call SLPAR callarglist SRPAR
        !            55:                { if(nstars < maxlablist)
        !            56:                        excall($1, mklist(revchain($3)), nstars, labarray);
        !            57:                  else
        !            58:                        many("alternate returns", 'l', maxlablist);
        !            59:                }
        !            60:        | SRETURN end_spec opt_expr
        !            61:                { exreturn($3);  thiswasbranch = YES; }
        !            62:        | stop end_spec opt_expr
        !            63:                { exstop($1, $3);  thiswasbranch = $1; }
        !            64:        ;
        !            65: 
        !            66: assignlabel:   SICON
        !            67:                { $$ = mklabel( convci(toklen, token) ); }
        !            68:        ;
        !            69: 
        !            70: let:     SLET
        !            71:                { if(parstate == OUTSIDE)
        !            72:                        {
        !            73:                        newproc();
        !            74:                        startproc(ESNULL, CLMAIN);
        !            75:                        }
        !            76:                }
        !            77:        ;
        !            78: 
        !            79: goto:    SGOTO end_spec label
        !            80:                { exgoto($3);  thiswasbranch = YES; }
        !            81:        | SASGOTO end_spec name
        !            82:                { exasgoto($3);  thiswasbranch = YES; }
        !            83:        | SASGOTO end_spec name opt_comma SLPAR labellist SRPAR
        !            84:                { exasgoto($3);  thiswasbranch = YES; }
        !            85:        | SCOMPGOTO end_spec SLPAR labellist SRPAR opt_comma expr
        !            86:                { if(nstars < maxlablist)
        !            87:                        putcmgo(putx(fixtype($7)), nstars, labarray);
        !            88:                  else
        !            89:                        many("labels in computed GOTO list", 'l', maxlablist);
        !            90:                }
        !            91:        ;
        !            92: 
        !            93: opt_comma:
        !            94:        | SCOMMA
        !            95:        ;
        !            96: 
        !            97: call:    SCALL end_spec name
        !            98:                { nstars = 0; $$ = $3; }
        !            99:        ;
        !           100: 
        !           101: callarglist:  callarg
        !           102:                { $$ = $1 ? mkchain((char *)$1,CHNULL) : CHNULL; }
        !           103:        | callarglist SCOMMA callarg
        !           104:                { $$ = $3 ? mkchain((char *)$3, $1) : $1; }
        !           105:        ;
        !           106: 
        !           107: callarg:  expr
        !           108:        | SSTAR label
        !           109:                { if(nstars < maxlablist) labarray[nstars++] = $2; $$ = 0; }
        !           110:        ;
        !           111: 
        !           112: stop:    SPAUSE
        !           113:                { $$ = 0; }
        !           114:        | SSTOP
        !           115:                { $$ = 2; }
        !           116:        ;
        !           117: 
        !           118: exprlist:  expr
        !           119:                { $$ = mkchain((char *)$1, CHNULL); }
        !           120:        | exprlist SCOMMA expr
        !           121:                { $$ = hookup($1, mkchain((char *)$3,CHNULL) ); }
        !           122:        ;
        !           123: 
        !           124: end_spec:
        !           125:                { if(parstate == OUTSIDE)
        !           126:                        {
        !           127:                        newproc();
        !           128:                        startproc(ESNULL, CLMAIN);
        !           129:                        }
        !           130: 
        !           131: /* This next statement depends on the ordering of the state table encoding */
        !           132: 
        !           133:                  if(parstate < INDATA) enddcl();
        !           134:                }
        !           135:        ;
        !           136: 
        !           137: intonlyon:
        !           138:                { intonly = YES; }
        !           139:        ;
        !           140: 
        !           141: intonlyoff:
        !           142:                { intonly = NO; }
        !           143:        ;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.