Annotation of 43BSD/ingres/source/parser/parser.c, revision 1.1

1.1     ! root        1: # include      <stdio.h>
        !             2: # include      <ingres.h>
        !             3: # include      <range.h>
        !             4: # include      <tree.h>
        !             5: # include      <func.h>
        !             6: # include      <pv.h>
        !             7: # include      "parser.h"
        !             8: # include      <sccs.h>
        !             9: # include      <errors.h>
        !            10: 
        !            11: SCCSID(@(#)parser.c    8.3     2/8/85)
        !            12: 
        !            13: short                  tTparser[100];
        !            14: 
        !            15: extern int             parser();
        !            16: extern int             par_init();
        !            17: 
        !            18: struct fn_def          ParserFn =
        !            19:                        {
        !            20:                                "PARSER",
        !            21:                                parser,
        !            22:                                par_init,
        !            23:                                NULL,
        !            24:                                NULL,
        !            25:                                0,
        !            26:                                tTparser,
        !            27:                                100,
        !            28:                                'P',
        !            29:                                0
        !            30:                        };
        !            31: 
        !            32: DESC   Reldesc;
        !            33: struct atstash         Attable[MAXATT];/* attrib stash space, turned into a list later */
        !            34: struct atstash         *Freeatt;       /* free list of attrib stash */
        !            35: QTREE  *Tidnode;       /* pointer to tid node of targ list
        !            36:                                           for REPLACE, DELETE */
        !            37: QTREE  *Lastree;       /* pointer to root node of tree */
        !            38: DELIMLIST      *Delimhead;     /* pointer to head of Delim queue */
        !            39: static int     FirstCall = 1;  /* true for the very first call of the parser */
        !            40: extern struct atstash  Faketid;        /* atstash structure for TID node */
        !            41: #ifdef DISTRIB
        !            42: extern struct atstash  Fakesid;        /* atstash structure for SID node */
        !            43: #endif
        !            44: 
        !            45: int                    Rsdmno;         /* result domain number */
        !            46: int                    Opflag;         /* operator flag contains query mode */
        !            47: char                   *Relspec;       /* ptr to storage structure of result relation */
        !            48: char                   *Indexspec;     /* ptr to stor strctr of index */
        !            49: char                   *Indexname;     /* ptr to name of index */
        !            50: char                   Trfrmt;         /* format for type checking */
        !            51: char                   Trfrml;         /* format length for type checking */
        !            52: char                   *Trname;        /* pointer to attribute name */
        !            53: int                    Agflag;         /* how many aggs in this qry */
        !            54: int                    Equel;          /* indicates EQUEL preprocessor on */
        !            55: int                    Ingerr;         /* set to error num if a query returns
        !            56:                                           an error from processes below */
        !            57: int                    Qlflag;         /* set when processing a qual */
        !            58: int                    Noupdt;         /* INGRES user override of no update restriction */
        !            59: int                    Err_fnd;        /* no actions done if 1 */
        !            60: int                    Err_current;    /* 1 if error found in current statement */
        !            61: int                    yyline;         /* line counter */
        !            62: int                    Dcase;          /* default case mapping */
        !            63: int                    Permcomd;
        !            64: int                    Qrymod;         /* qrymod on in database flag */
        !            65: TID                    tid;
        !            66: char                   *malloc();
        !            67: 
        !            68: 
        !            69: /*
        !            70: **  PARSER -- the actual main routine
        !            71: **
        !            72: **     Trace Flags:
        !            73: **             Parser ~~ 64
        !            74: */
        !            75: 
        !            76: parser()
        !            77: {
        !            78: 
        !            79:        int     i;
        !            80: 
        !            81: 
        !            82: # ifdef        xPTR1
        !            83:        tTfp(64, 0, "Parser %d\n", getpid());
        !            84: # endif
        !            85: 
        !            86:        if (FirstCall)
        !            87:        {
        !            88:                FirstCall = 0;
        !            89:                if ((i = openr(&Reldesc, OR_WRITE, "rdelim")) < 0)
        !            90:                syserr("relname: error in openr '%d'", i);
        !            91:                if (i > 0)
        !            92:                {
        !            93:                        /* invalid relation name */
        !            94:                        par_error(RNGEXIST, WARN, "rdelim", 0);
        !            95:                }
        !            96:                else
        !            97:                {
        !            98:                        if ((i = make_list(&Reldesc, "system")) < 0)
        !            99:                                par_error(DELEXIST, WARN, 0);
        !           100:                }
        !           101:                closer(&Reldesc);
        !           102:        }
        !           103:        if (startgo() < 0)
        !           104:        {
        !           105:                endgo();
        !           106:                return (-1);
        !           107:        }
        !           108: 
        !           109:        if (yyparse())          /* yyparse returns 1 in case of error */
        !           110:        {
        !           111:                endgo();
        !           112:                return (-2);
        !           113:        }
        !           114: 
        !           115:        if (endgo() < 0)
        !           116:                return (-3);
        !           117: 
        !           118:        return(0);
        !           119: }

unix.superglobalmegacorp.com

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