verilog_bison_user_defined.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int yyparse (void)

Function Documentation

int yyparse ( void   ) 

Definition at line 1669 of file verilog_bison.c.

01673 {
01674   
01675   int yystate;
01676   int yyn;
01677   int yyresult;
01678   /* Number of tokens to shift before error messages enabled.  */
01679   int yyerrstatus;
01680   /* Look-ahead token as an internal (translated) token number.  */
01681   int yytoken = 0;
01682 #if YYERROR_VERBOSE
01683   /* Buffer for error messages, and its allocated size.  */
01684   char yymsgbuf[128];
01685   char *yymsg = yymsgbuf;
01686   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
01687 #endif
01688 
01689   /* Three stacks and their tools:
01690      `yyss': related to states,
01691      `yyvs': related to semantic values,
01692      `yyls': related to locations.
01693 
01694      Refer to the stacks thru separate pointers, to allow yyoverflow
01695      to reallocate them elsewhere.  */
01696 
01697   /* The state stack.  */
01698   yytype_int16 yyssa[YYINITDEPTH];
01699   yytype_int16 *yyss = yyssa;
01700   yytype_int16 *yyssp;
01701 
01702   /* The semantic value stack.  */
01703   YYSTYPE yyvsa[YYINITDEPTH];
01704   YYSTYPE *yyvs = yyvsa;
01705   YYSTYPE *yyvsp;
01706 
01707 
01708 
01709 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
01710 
01711   YYSIZE_T yystacksize = YYINITDEPTH;
01712 
01713   /* The variables used to return semantic value and location from the
01714      action routines.  */
01715   YYSTYPE yyval;
01716 
01717 
01718   /* The number of symbols on the RHS of the reduced rule.
01719      Keep to zero when no symbol should be popped.  */
01720   int yylen = 0;
01721 
01722   YYDPRINTF ((stderr, "Starting parse\n"));
01723 
01724   yystate = 0;
01725   yyerrstatus = 0;
01726   yynerrs = 0;
01727   yychar = YYEMPTY;             /* Cause a token to be read.  */
01728 
01729   /* Initialize stack pointers.
01730      Waste one element of value and location stack
01731      so that they stay on the same level as the state stack.
01732      The wasted elements are never initialized.  */
01733 
01734   yyssp = yyss;
01735   yyvsp = yyvs;
01736 
01737   goto yysetstate;
01738 
01739 /*------------------------------------------------------------.
01740 | yynewstate -- Push a new state, which is found in yystate.  |
01741 `------------------------------------------------------------*/
01742  yynewstate:
01743   /* In all cases, when you get here, the value and location stacks
01744      have just been pushed.  So pushing a state here evens the stacks.  */
01745   yyssp++;
01746 
01747  yysetstate:
01748   *yyssp = yystate;
01749 
01750   if (yyss + yystacksize - 1 <= yyssp)
01751     {
01752       /* Get the current used size of the three stacks, in elements.  */
01753       YYSIZE_T yysize = yyssp - yyss + 1;
01754 
01755 #ifdef yyoverflow
01756       {
01757         /* Give user a chance to reallocate the stack.  Use copies of
01758            these so that the &'s don't force the real ones into
01759            memory.  */
01760         YYSTYPE *yyvs1 = yyvs;
01761         yytype_int16 *yyss1 = yyss;
01762 
01763 
01764         /* Each stack pointer address is followed by the size of the
01765            data in use in that stack, in bytes.  This used to be a
01766            conditional around just the two extra args, but that might
01767            be undefined if yyoverflow is a macro.  */
01768         yyoverflow (YY_("memory exhausted"),
01769                     &yyss1, yysize * sizeof (*yyssp),
01770                     &yyvs1, yysize * sizeof (*yyvsp),
01771 
01772                     &yystacksize);
01773 
01774         yyss = yyss1;
01775         yyvs = yyvs1;
01776       }
01777 #else /* no yyoverflow */
01778 # ifndef YYSTACK_RELOCATE
01779       goto yyexhaustedlab;
01780 # else
01781       /* Extend the stack our own way.  */
01782       if (YYMAXDEPTH <= yystacksize)
01783         goto yyexhaustedlab;
01784       yystacksize *= 2;
01785       if (YYMAXDEPTH < yystacksize)
01786         yystacksize = YYMAXDEPTH;
01787 
01788       {
01789         yytype_int16 *yyss1 = yyss;
01790         union yyalloc *yyptr =
01791           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01792         if (! yyptr)
01793           goto yyexhaustedlab;
01794         YYSTACK_RELOCATE (yyss);
01795         YYSTACK_RELOCATE (yyvs);
01796 
01797 #  undef YYSTACK_RELOCATE
01798         if (yyss1 != yyssa)
01799           YYSTACK_FREE (yyss1);
01800       }
01801 # endif
01802 #endif /* no yyoverflow */
01803 
01804       yyssp = yyss + yysize - 1;
01805       yyvsp = yyvs + yysize - 1;
01806 
01807 
01808       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01809                   (unsigned long int) yystacksize));
01810 
01811       if (yyss + yystacksize - 1 <= yyssp)
01812         YYABORT;
01813     }
01814 
01815   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01816 
01817   goto yybackup;
01818 
01819 /*-----------.
01820 | yybackup.  |
01821 `-----------*/
01822 yybackup:
01823 
01824   /* Do appropriate processing given the current state.  Read a
01825      look-ahead token if we need one and don't already have one.  */
01826 
01827   /* First try to decide what to do without reference to look-ahead token.  */
01828   yyn = yypact[yystate];
01829   if (yyn == YYPACT_NINF)
01830     goto yydefault;
01831 
01832   /* Not known => get a look-ahead token if don't already have one.  */
01833 
01834   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
01835   if (yychar == YYEMPTY)
01836     {
01837       YYDPRINTF ((stderr, "Reading a token: "));
01838       yychar = YYLEX;
01839     }
01840 
01841   if (yychar <= YYEOF)
01842     {
01843       yychar = yytoken = YYEOF;
01844       YYDPRINTF ((stderr, "Now at end of input.\n"));
01845     }
01846   else
01847     {
01848       yytoken = YYTRANSLATE (yychar);
01849       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
01850     }
01851 
01852   /* If the proper action on seeing token YYTOKEN is to reduce or to
01853      detect an error, take that action.  */
01854   yyn += yytoken;
01855   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
01856     goto yydefault;
01857   yyn = yytable[yyn];
01858   if (yyn <= 0)
01859     {
01860       if (yyn == 0 || yyn == YYTABLE_NINF)
01861         goto yyerrlab;
01862       yyn = -yyn;
01863       goto yyreduce;
01864     }
01865 
01866   if (yyn == YYFINAL)
01867     YYACCEPT;
01868 
01869   /* Count tokens shifted since error; after three, turn off error
01870      status.  */
01871   if (yyerrstatus)
01872     yyerrstatus--;
01873 
01874   /* Shift the look-ahead token.  */
01875   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
01876 
01877   /* Discard the shifted token unless it is eof.  */
01878   if (yychar != YYEOF)
01879     yychar = YYEMPTY;
01880 
01881   yystate = yyn;
01882   *++yyvsp = yylval;
01883 
01884   goto yynewstate;
01885 
01886 
01887 /*-----------------------------------------------------------.
01888 | yydefault -- do the default action for the current state.  |
01889 `-----------------------------------------------------------*/
01890 yydefault:
01891   yyn = yydefact[yystate];
01892   if (yyn == 0)
01893     goto yyerrlab;
01894   goto yyreduce;
01895 
01896 
01897 /*-----------------------------.
01898 | yyreduce -- Do a reduction.  |
01899 `-----------------------------*/
01900 yyreduce:
01901   /* yyn is the number of a rule to reduce with.  */
01902   yylen = yyr2[yyn];
01903 
01904   /* If YYLEN is nonzero, implement the default value of the action:
01905      `$$ = $1'.
01906 
01907      Otherwise, the following line sets YYVAL to garbage.
01908      This behavior is undocumented and Bison
01909      users should not rely upon it.  Assigning to YYVAL
01910      unconditionally makes the parser a bit smaller, and it avoids a
01911      GCC warning that YYVAL may be used uninitialized.  */
01912   yyval = yyvsp[1-yylen];
01913 
01914 
01915   YY_REDUCE_PRINT (yyn);
01916   switch (yyn)
01917     {
01918         case 2:
01919 #line 97 "SRC/verilog_bison.y"
01920     {next_parsed_verilog_file((yyvsp[(1) - (1)].node));;}
01921     break;
01922 
01923   case 3:
01924 #line 100 "SRC/verilog_bison.y"
01925     {
01926                                                                                         if ((yyvsp[(1) - (2)].node) != NULL)
01927                                                                                         {
01928                                                                                                 (yyval.node) = newList_entry((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
01929                                                                                         }
01930                                                                                         else
01931                                                                                         {
01932                                                                                                 (yyval.node) = newList(FILE_ITEMS, (yyvsp[(2) - (2)].node));
01933                                                                                         }
01934                                                                                 ;}
01935     break;
01936 
01937   case 4:
01938 #line 110 "SRC/verilog_bison.y"
01939     {(yyval.node) = (yyvsp[(1) - (2)].node);;}
01940     break;
01941 
01942   case 5:
01943 #line 111 "SRC/verilog_bison.y"
01944     {(yyval.node) = newList(FILE_ITEMS, (yyvsp[(1) - (1)].node));;}
01945     break;
01946 
01947   case 6:
01948 #line 112 "SRC/verilog_bison.y"
01949     {(yyval.node) = NULL;;}
01950     break;
01951 
01952   case 7:
01953 #line 115 "SRC/verilog_bison.y"
01954     {(yyval.node) = NULL; newConstant((yyvsp[(2) - (3)].id_name), (yyvsp[(3) - (3)].num_value), yylineno);;}
01955     break;
01956 
01957   case 8:
01958 #line 118 "SRC/verilog_bison.y"
01959     {(yyval.node) = newModule((yyvsp[(2) - (8)].id_name), (yyvsp[(4) - (8)].node), (yyvsp[(7) - (8)].node), yylineno);;}
01960     break;
01961 
01962   case 9:
01963 #line 119 "SRC/verilog_bison.y"
01964     {(yyval.node) = newModule((yyvsp[(2) - (9)].id_name), (yyvsp[(4) - (9)].node), (yyvsp[(8) - (9)].node), yylineno);;}
01965     break;
01966 
01967   case 10:
01968 #line 120 "SRC/verilog_bison.y"
01969     {(yyval.node) = newModule((yyvsp[(2) - (7)].id_name), NULL, (yyvsp[(6) - (7)].node), yylineno);;}
01970     break;
01971 
01972   case 11:
01973 #line 123 "SRC/verilog_bison.y"
01974     {(yyval.node) = newList_entry((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));;}
01975     break;
01976 
01977   case 12:
01978 #line 124 "SRC/verilog_bison.y"
01979     {(yyval.node) = newList(MODULE_ITEMS, (yyvsp[(1) - (1)].node));;}
01980     break;
01981 
01982   case 13:
01983 #line 127 "SRC/verilog_bison.y"
01984     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
01985     break;
01986 
01987   case 14:
01988 #line 128 "SRC/verilog_bison.y"
01989     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
01990     break;
01991 
01992   case 15:
01993 #line 129 "SRC/verilog_bison.y"
01994     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
01995     break;
01996 
01997   case 16:
01998 #line 130 "SRC/verilog_bison.y"
01999     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02000     break;
02001 
02002   case 17:
02003 #line 131 "SRC/verilog_bison.y"
02004     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02005     break;
02006 
02007   case 18:
02008 #line 132 "SRC/verilog_bison.y"
02009     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02010     break;
02011 
02012   case 19:
02013 #line 133 "SRC/verilog_bison.y"
02014     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02015     break;
02016 
02017   case 20:
02018 #line 134 "SRC/verilog_bison.y"
02019     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02020     break;
02021 
02022   case 21:
02023 #line 135 "SRC/verilog_bison.y"
02024     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02025     break;
02026 
02027   case 22:
02028 #line 139 "SRC/verilog_bison.y"
02029     {(yyval.node) = markAndProcessSymbolListWith(PARAMETER, (yyvsp[(2) - (3)].node));;}
02030     break;
02031 
02032   case 23:
02033 #line 142 "SRC/verilog_bison.y"
02034     {(yyval.node) = markAndProcessSymbolListWith(INPUT, (yyvsp[(2) - (3)].node));;}
02035     break;
02036 
02037   case 24:
02038 #line 145 "SRC/verilog_bison.y"
02039     {(yyval.node) = markAndProcessSymbolListWith(OUTPUT, (yyvsp[(2) - (3)].node));;}
02040     break;
02041 
02042   case 25:
02043 #line 148 "SRC/verilog_bison.y"
02044     {(yyval.node) = markAndProcessSymbolListWith(INOUT, (yyvsp[(2) - (3)].node));;}
02045     break;
02046 
02047   case 26:
02048 #line 151 "SRC/verilog_bison.y"
02049     {(yyval.node) = markAndProcessSymbolListWith(WIRE, (yyvsp[(2) - (3)].node));;}
02050     break;
02051 
02052   case 27:
02053 #line 152 "SRC/verilog_bison.y"
02054     {(yyval.node) = markAndProcessSymbolListWith(REG, (yyvsp[(2) - (3)].node));;}
02055     break;
02056 
02057   case 28:
02058 #line 155 "SRC/verilog_bison.y"
02059     {(yyval.node) = newList_entry((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));;}
02060     break;
02061 
02062   case 29:
02063 #line 156 "SRC/verilog_bison.y"
02064     {(yyval.node) = newList(VAR_DECLARE_LIST, (yyvsp[(1) - (1)].node));;}
02065     break;
02066 
02067   case 30:
02068 #line 159 "SRC/verilog_bison.y"
02069     {(yyval.node) = newVarDeclare((yyvsp[(1) - (1)].id_name), NULL, NULL, NULL, NULL, NULL, yylineno);;}
02070     break;
02071 
02072   case 31:
02073 #line 160 "SRC/verilog_bison.y"
02074     {(yyval.node) = newVarDeclare((yyvsp[(6) - (6)].id_name), (yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), NULL, NULL, NULL, yylineno);;}
02075     break;
02076 
02077   case 32:
02078 #line 161 "SRC/verilog_bison.y"
02079     {(yyval.node) = newVarDeclare((yyvsp[(6) - (11)].id_name), (yyvsp[(2) - (11)].node), (yyvsp[(4) - (11)].node), (yyvsp[(8) - (11)].node), (yyvsp[(10) - (11)].node), NULL, yylineno);;}
02080     break;
02081 
02082   case 33:
02083 #line 162 "SRC/verilog_bison.y"
02084     {(yyval.node) = newVarDeclare((yyvsp[(6) - (8)].id_name), (yyvsp[(2) - (8)].node), (yyvsp[(4) - (8)].node), NULL, NULL, (yyvsp[(8) - (8)].node), yylineno);;}
02085     break;
02086 
02087   case 34:
02088 #line 163 "SRC/verilog_bison.y"
02089     {(yyval.node) = newVarDeclare((yyvsp[(1) - (3)].id_name), NULL, NULL, NULL, NULL, (yyvsp[(3) - (3)].node), yylineno);;}
02090     break;
02091 
02092   case 35:
02093 #line 166 "SRC/verilog_bison.y"
02094     {(yyval.node) = newAssign((yyvsp[(2) - (3)].node), yylineno);;}
02095     break;
02096 
02097   case 36:
02098 #line 170 "SRC/verilog_bison.y"
02099     {(yyval.node) = newGate(BITWISE_AND, (yyvsp[(2) - (3)].node), yylineno);;}
02100     break;
02101 
02102   case 37:
02103 #line 171 "SRC/verilog_bison.y"
02104     {(yyval.node) = newGate(BITWISE_NAND, (yyvsp[(2) - (3)].node), yylineno);;}
02105     break;
02106 
02107   case 38:
02108 #line 172 "SRC/verilog_bison.y"
02109     {(yyval.node) = newGate(BITWISE_NOR, (yyvsp[(2) - (3)].node), yylineno);;}
02110     break;
02111 
02112   case 39:
02113 #line 173 "SRC/verilog_bison.y"
02114     {(yyval.node) = newGate(BITWISE_NOT, (yyvsp[(2) - (3)].node), yylineno);;}
02115     break;
02116 
02117   case 40:
02118 #line 174 "SRC/verilog_bison.y"
02119     {(yyval.node) = newGate(BITWISE_OR, (yyvsp[(2) - (3)].node), yylineno);;}
02120     break;
02121 
02122   case 41:
02123 #line 175 "SRC/verilog_bison.y"
02124     {(yyval.node) = newGate(BITWISE_XNOR, (yyvsp[(2) - (3)].node), yylineno);;}
02125     break;
02126 
02127   case 42:
02128 #line 176 "SRC/verilog_bison.y"
02129     {(yyval.node) = newGate(BITWISE_XOR, (yyvsp[(2) - (3)].node), yylineno);;}
02130     break;
02131 
02132   case 43:
02133 #line 179 "SRC/verilog_bison.y"
02134     {(yyval.node) = newGateInstance((yyvsp[(1) - (8)].id_name), (yyvsp[(3) - (8)].node), (yyvsp[(5) - (8)].node), (yyvsp[(7) - (8)].node), yylineno);;}
02135     break;
02136 
02137   case 44:
02138 #line 180 "SRC/verilog_bison.y"
02139     {(yyval.node) = newGateInstance(NULL, (yyvsp[(2) - (7)].node), (yyvsp[(4) - (7)].node), (yyvsp[(6) - (7)].node), yylineno);;}
02140     break;
02141 
02142   case 45:
02143 #line 181 "SRC/verilog_bison.y"
02144     {(yyval.node) = newGateInstance((yyvsp[(1) - (6)].id_name), (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), NULL, yylineno);;}
02145     break;
02146 
02147   case 46:
02148 #line 182 "SRC/verilog_bison.y"
02149     {(yyval.node) = newGateInstance(NULL, (yyvsp[(2) - (5)].node), (yyvsp[(4) - (5)].node), NULL, yylineno);;}
02150     break;
02151 
02152   case 47:
02153 #line 186 "SRC/verilog_bison.y"
02154     {(yyval.node) = newModuleInstance((yyvsp[(1) - (2)].id_name), (yyvsp[(2) - (2)].node), yylineno);;}
02155     break;
02156 
02157   case 48:
02158 #line 189 "SRC/verilog_bison.y"
02159     {(yyval.node) = newModuleNamedInstance((yyvsp[(1) - (5)].id_name), (yyvsp[(3) - (5)].node), yylineno);;}
02160     break;
02161 
02162   case 49:
02163 #line 190 "SRC/verilog_bison.y"
02164     {(yyval.node) = newModuleNamedInstance((yyvsp[(1) - (4)].id_name), NULL, yylineno);;}
02165     break;
02166 
02167   case 50:
02168 #line 193 "SRC/verilog_bison.y"
02169     {(yyval.node) = newList_entry((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));;}
02170     break;
02171 
02172   case 51:
02173 #line 194 "SRC/verilog_bison.y"
02174     {(yyval.node) = newList(MODULE_CONNECT_LIST, (yyvsp[(1) - (1)].node));;}
02175     break;
02176 
02177   case 52:
02178 #line 197 "SRC/verilog_bison.y"
02179     {(yyval.node) = newModuleConnection((yyvsp[(2) - (5)].id_name), (yyvsp[(4) - (5)].node), yylineno);;}
02180     break;
02181 
02182   case 53:
02183 #line 198 "SRC/verilog_bison.y"
02184     {(yyval.node) = newModuleConnection(NULL, (yyvsp[(1) - (1)].node), yylineno);;}
02185     break;
02186 
02187   case 54:
02188 #line 202 "SRC/verilog_bison.y"
02189     {(yyval.node) = newAlways((yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02190     break;
02191 
02192   case 55:
02193 #line 205 "SRC/verilog_bison.y"
02194     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02195     break;
02196 
02197   case 56:
02198 #line 206 "SRC/verilog_bison.y"
02199     {(yyval.node) = (yyvsp[(1) - (2)].node);;}
02200     break;
02201 
02202   case 57:
02203 #line 207 "SRC/verilog_bison.y"
02204     {(yyval.node) = (yyvsp[(1) - (2)].node);;}
02205     break;
02206 
02207   case 58:
02208 #line 208 "SRC/verilog_bison.y"
02209     {(yyval.node) = newIf((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node), NULL, yylineno);;}
02210     break;
02211 
02212   case 59:
02213 #line 209 "SRC/verilog_bison.y"
02214     {(yyval.node) = newIf((yyvsp[(3) - (7)].node), (yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node), yylineno);;}
02215     break;
02216 
02217   case 60:
02218 #line 210 "SRC/verilog_bison.y"
02219     {(yyval.node) = newCase((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), yylineno);;}
02220     break;
02221 
02222   case 61:
02223 #line 211 "SRC/verilog_bison.y"
02224     {(yyval.node) = NULL;;}
02225     break;
02226 
02227   case 62:
02228 #line 214 "SRC/verilog_bison.y"
02229     {(yyval.node) = newBlocking((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02230     break;
02231 
02232   case 63:
02233 #line 215 "SRC/verilog_bison.y"
02234     {(yyval.node) = newBlocking((yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), yylineno);;}
02235     break;
02236 
02237   case 64:
02238 #line 218 "SRC/verilog_bison.y"
02239     {(yyval.node) = newNonBlocking((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02240     break;
02241 
02242   case 65:
02243 #line 219 "SRC/verilog_bison.y"
02244     {(yyval.node) = newNonBlocking((yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), yylineno);;}
02245     break;
02246 
02247   case 66:
02248 #line 222 "SRC/verilog_bison.y"
02249     {(yyval.node) = newList_entry((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));;}
02250     break;
02251 
02252   case 67:
02253 #line 223 "SRC/verilog_bison.y"
02254     {(yyval.node) = newList(CASE_LIST, (yyvsp[(1) - (1)].node));;}
02255     break;
02256 
02257   case 68:
02258 #line 226 "SRC/verilog_bison.y"
02259     {(yyval.node) = newCaseItem((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02260     break;
02261 
02262   case 69:
02263 #line 227 "SRC/verilog_bison.y"
02264     {(yyval.node) = newDefaultCase((yyvsp[(3) - (3)].node), yylineno);;}
02265     break;
02266 
02267   case 70:
02268 #line 230 "SRC/verilog_bison.y"
02269     {(yyval.node) = (yyvsp[(2) - (3)].node);;}
02270     break;
02271 
02272   case 71:
02273 #line 233 "SRC/verilog_bison.y"
02274     {(yyval.node) = newList_entry((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));;}
02275     break;
02276 
02277   case 72:
02278 #line 234 "SRC/verilog_bison.y"
02279     {(yyval.node) = newList(BLOCK, (yyvsp[(1) - (1)].node));;}
02280     break;
02281 
02282   case 73:
02283 #line 237 "SRC/verilog_bison.y"
02284     {(yyval.node) = (yyvsp[(3) - (4)].node);;}
02285     break;
02286 
02287   case 74:
02288 #line 241 "SRC/verilog_bison.y"
02289     {(yyval.node) = newList_entry((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));;}
02290     break;
02291 
02292   case 75:
02293 #line 242 "SRC/verilog_bison.y"
02294     {(yyval.node) = newList(DELAY_CONTROL, (yyvsp[(1) - (1)].node));;}
02295     break;
02296 
02297   case 76:
02298 #line 245 "SRC/verilog_bison.y"
02299     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02300     break;
02301 
02302   case 77:
02303 #line 246 "SRC/verilog_bison.y"
02304     {(yyval.node) = newPosedgeSymbol((yyvsp[(2) - (2)].id_name), yylineno);;}
02305     break;
02306 
02307   case 78:
02308 #line 247 "SRC/verilog_bison.y"
02309     {(yyval.node) = newNegedgeSymbol((yyvsp[(2) - (2)].id_name), yylineno);;}
02310     break;
02311 
02312   case 79:
02313 #line 250 "SRC/verilog_bison.y"
02314     {(yyval.node) = (yyvsp[(1) - (1)].node);;}
02315     break;
02316 
02317   case 80:
02318 #line 251 "SRC/verilog_bison.y"
02319     {(yyval.node) = newUnaryOperation(ADD, (yyvsp[(2) - (2)].node), yylineno);;}
02320     break;
02321 
02322   case 81:
02323 #line 252 "SRC/verilog_bison.y"
02324     {(yyval.node) = newUnaryOperation(MINUS, (yyvsp[(2) - (2)].node), yylineno);;}
02325     break;
02326 
02327   case 82:
02328 #line 253 "SRC/verilog_bison.y"
02329     {(yyval.node) = newUnaryOperation(BITWISE_NOT, (yyvsp[(2) - (2)].node), yylineno);;}
02330     break;
02331 
02332   case 83:
02333 #line 254 "SRC/verilog_bison.y"
02334     {(yyval.node) = newUnaryOperation(BITWISE_AND, (yyvsp[(2) - (2)].node), yylineno);;}
02335     break;
02336 
02337   case 84:
02338 #line 255 "SRC/verilog_bison.y"
02339     {(yyval.node) = newUnaryOperation(BITWISE_OR, (yyvsp[(2) - (2)].node), yylineno);;}
02340     break;
02341 
02342   case 85:
02343 #line 256 "SRC/verilog_bison.y"
02344     {(yyval.node) = newUnaryOperation(BITWISE_NAND, (yyvsp[(2) - (2)].node), yylineno);;}
02345     break;
02346 
02347   case 86:
02348 #line 257 "SRC/verilog_bison.y"
02349     {(yyval.node) = newUnaryOperation(BITWISE_NOR, (yyvsp[(2) - (2)].node), yylineno);;}
02350     break;
02351 
02352   case 87:
02353 #line 258 "SRC/verilog_bison.y"
02354     {(yyval.node) = newUnaryOperation(BITWISE_XNOR, (yyvsp[(2) - (2)].node), yylineno);;}
02355     break;
02356 
02357   case 88:
02358 #line 259 "SRC/verilog_bison.y"
02359     {(yyval.node) = newUnaryOperation(LOGICAL_NOT, (yyvsp[(2) - (2)].node), yylineno);;}
02360     break;
02361 
02362   case 89:
02363 #line 260 "SRC/verilog_bison.y"
02364     {(yyval.node) = newUnaryOperation(BITWISE_XOR, (yyvsp[(2) - (2)].node), yylineno);;}
02365     break;
02366 
02367   case 90:
02368 #line 261 "SRC/verilog_bison.y"
02369     {(yyval.node) = newBinaryOperation(BITWISE_XOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02370     break;
02371 
02372   case 91:
02373 #line 262 "SRC/verilog_bison.y"
02374     {(yyval.node) = newBinaryOperation(MULTIPLY, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02375     break;
02376 
02377   case 92:
02378 #line 263 "SRC/verilog_bison.y"
02379     {(yyval.node) = newBinaryOperation(DIVIDE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02380     break;
02381 
02382   case 93:
02383 #line 264 "SRC/verilog_bison.y"
02384     {(yyval.node) = newBinaryOperation(MODULO, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02385     break;
02386 
02387   case 94:
02388 #line 265 "SRC/verilog_bison.y"
02389     {(yyval.node) = newBinaryOperation(ADD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02390     break;
02391 
02392   case 95:
02393 #line 266 "SRC/verilog_bison.y"
02394     {(yyval.node) = newBinaryOperation(MINUS, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02395     break;
02396 
02397   case 96:
02398 #line 267 "SRC/verilog_bison.y"
02399     {(yyval.node) = newBinaryOperation(BITWISE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02400     break;
02401 
02402   case 97:
02403 #line 268 "SRC/verilog_bison.y"
02404     {(yyval.node) = newBinaryOperation(BITWISE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02405     break;
02406 
02407   case 98:
02408 #line 269 "SRC/verilog_bison.y"
02409     {(yyval.node) = newBinaryOperation(BITWISE_NAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02410     break;
02411 
02412   case 99:
02413 #line 270 "SRC/verilog_bison.y"
02414     {(yyval.node) = newBinaryOperation(BITWISE_NOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02415     break;
02416 
02417   case 100:
02418 #line 271 "SRC/verilog_bison.y"
02419     {(yyval.node) = newBinaryOperation(BITWISE_XNOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02420     break;
02421 
02422   case 101:
02423 #line 272 "SRC/verilog_bison.y"
02424     {(yyval.node) = newBinaryOperation(LT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02425     break;
02426 
02427   case 102:
02428 #line 273 "SRC/verilog_bison.y"
02429     {(yyval.node) = newBinaryOperation(GT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02430     break;
02431 
02432   case 103:
02433 #line 274 "SRC/verilog_bison.y"
02434     {(yyval.node) = newBinaryOperation(SR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02435     break;
02436 
02437   case 104:
02438 #line 275 "SRC/verilog_bison.y"
02439     {(yyval.node) = newBinaryOperation(SL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02440     break;
02441 
02442   case 105:
02443 #line 276 "SRC/verilog_bison.y"
02444     {(yyval.node) = newBinaryOperation(LOGICAL_EQUAL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02445     break;
02446 
02447   case 106:
02448 #line 277 "SRC/verilog_bison.y"
02449     {(yyval.node) = newBinaryOperation(NOT_EQUAL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02450     break;
02451 
02452   case 107:
02453 #line 278 "SRC/verilog_bison.y"
02454     {(yyval.node) = newBinaryOperation(LTE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02455     break;
02456 
02457   case 108:
02458 #line 279 "SRC/verilog_bison.y"
02459     {(yyval.node) = newBinaryOperation(GTE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02460     break;
02461 
02462   case 109:
02463 #line 280 "SRC/verilog_bison.y"
02464     {(yyval.node) = newBinaryOperation(CASE_EQUAL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02465     break;
02466 
02467   case 110:
02468 #line 281 "SRC/verilog_bison.y"
02469     {(yyval.node) = newBinaryOperation(CASE_NOT_EQUAL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02470     break;
02471 
02472   case 111:
02473 #line 282 "SRC/verilog_bison.y"
02474     {(yyval.node) = newBinaryOperation(LOGICAL_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02475     break;
02476 
02477   case 112:
02478 #line 283 "SRC/verilog_bison.y"
02479     {(yyval.node) = newBinaryOperation(LOGICAL_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), yylineno);;}
02480     break;
02481 
02482   case 113:
02483 #line 284 "SRC/verilog_bison.y"
02484     {(yyval.node) = newIfQuestion((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node), yylineno);;}
02485     break;
02486 
02487   case 114:
02488 #line 285 "SRC/verilog_bison.y"
02489     {(yyval.node) = (yyvsp[(2) - (3)].node);;}
02490     break;
02491 
02492   case 115:
02493 #line 289 "SRC/verilog_bison.y"
02494     {(yyval.node) = newListReplicate( (yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node) ); ;}
02495     break;
02496 
02497   case 116:
02498 #line 290 "SRC/verilog_bison.y"
02499     {(yyval.node) = newListReplicate( (yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node) ); ;}
02500     break;
02501 
02502   case 117:
02503 #line 293 "SRC/verilog_bison.y"
02504     {(yyval.node) = newNumberNode((yyvsp[(1) - (1)].num_value), yylineno);;}
02505     break;
02506 
02507   case 118:
02508 #line 294 "SRC/verilog_bison.y"
02509     {(yyval.node) = newSymbolNode((yyvsp[(1) - (1)].id_name), yylineno);;}
02510     break;
02511 
02512   case 119:
02513 #line 295 "SRC/verilog_bison.y"
02514     {(yyval.node) = newArrayRef((yyvsp[(1) - (4)].id_name), (yyvsp[(3) - (4)].node), yylineno);;}
02515     break;
02516 
02517   case 120:
02518 #line 296 "SRC/verilog_bison.y"
02519     {(yyval.node) = newRangeRef((yyvsp[(1) - (6)].id_name), (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), yylineno);;}
02520     break;
02521 
02522   case 121:
02523 #line 297 "SRC/verilog_bison.y"
02524     {(yyval.node) = (yyvsp[(2) - (3)].node); ((yyvsp[(2) - (3)].node))->types.concat.num_bit_strings = -1;;}
02525     break;
02526 
02527   case 122:
02528 #line 300 "SRC/verilog_bison.y"
02529     {(yyval.node) = newList_entry((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); /* note this will be in order lsb = greatest to msb = 0 in the node child list */;}
02530     break;
02531 
02532   case 123:
02533 #line 301 "SRC/verilog_bison.y"
02534     {(yyval.node) = newList(CONCATENATE, (yyvsp[(1) - (1)].node));;}
02535     break;
02536 
02537 
02538 /* Line 1267 of yacc.c.  */
02539 #line 2540 "SRC/verilog_bison.c"
02540       default: break;
02541     }
02542   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
02543 
02544   YYPOPSTACK (yylen);
02545   yylen = 0;
02546   YY_STACK_PRINT (yyss, yyssp);
02547 
02548   *++yyvsp = yyval;
02549 
02550 
02551   /* Now `shift' the result of the reduction.  Determine what state
02552      that goes to, based on the state we popped back to and the rule
02553      number reduced by.  */
02554 
02555   yyn = yyr1[yyn];
02556 
02557   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
02558   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
02559     yystate = yytable[yystate];
02560   else
02561     yystate = yydefgoto[yyn - YYNTOKENS];
02562 
02563   goto yynewstate;
02564 
02565 
02566 /*------------------------------------.
02567 | yyerrlab -- here on detecting error |
02568 `------------------------------------*/
02569 yyerrlab:
02570   /* If not already recovering from an error, report this error.  */
02571   if (!yyerrstatus)
02572     {
02573       ++yynerrs;
02574 #if ! YYERROR_VERBOSE
02575       yyerror (YY_("syntax error"));
02576 #else
02577       {
02578         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
02579         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
02580           {
02581             YYSIZE_T yyalloc = 2 * yysize;
02582             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
02583               yyalloc = YYSTACK_ALLOC_MAXIMUM;
02584             if (yymsg != yymsgbuf)
02585               YYSTACK_FREE (yymsg);
02586             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
02587             if (yymsg)
02588               yymsg_alloc = yyalloc;
02589             else
02590               {
02591                 yymsg = yymsgbuf;
02592                 yymsg_alloc = sizeof yymsgbuf;
02593               }
02594           }
02595 
02596         if (0 < yysize && yysize <= yymsg_alloc)
02597           {
02598             (void) yysyntax_error (yymsg, yystate, yychar);
02599             yyerror (yymsg);
02600           }
02601         else
02602           {
02603             yyerror (YY_("syntax error"));
02604             if (yysize != 0)
02605               goto yyexhaustedlab;
02606           }
02607       }
02608 #endif
02609     }
02610 
02611 
02612 
02613   if (yyerrstatus == 3)
02614     {
02615       /* If just tried and failed to reuse look-ahead token after an
02616          error, discard it.  */
02617 
02618       if (yychar <= YYEOF)
02619         {
02620           /* Return failure if at end of input.  */
02621           if (yychar == YYEOF)
02622             YYABORT;
02623         }
02624       else
02625         {
02626           yydestruct ("Error: discarding",
02627                       yytoken, &yylval);
02628           yychar = YYEMPTY;
02629         }
02630     }
02631 
02632   /* Else will try to reuse look-ahead token after shifting the error
02633      token.  */
02634   goto yyerrlab1;
02635 
02636 
02637 /*---------------------------------------------------.
02638 | yyerrorlab -- error raised explicitly by YYERROR.  |
02639 `---------------------------------------------------*/
02640 yyerrorlab:
02641 
02642   /* Pacify compilers like GCC when the user code never invokes
02643      YYERROR and the label yyerrorlab therefore never appears in user
02644      code.  */
02645   if (/*CONSTCOND*/ 0)
02646      goto yyerrorlab;
02647 
02648   /* Do not reclaim the symbols of the rule which action triggered
02649      this YYERROR.  */
02650   YYPOPSTACK (yylen);
02651   yylen = 0;
02652   YY_STACK_PRINT (yyss, yyssp);
02653   yystate = *yyssp;
02654   goto yyerrlab1;
02655 
02656 
02657 /*-------------------------------------------------------------.
02658 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
02659 `-------------------------------------------------------------*/
02660 yyerrlab1:
02661   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
02662 
02663   for (;;)
02664     {
02665       yyn = yypact[yystate];
02666       if (yyn != YYPACT_NINF)
02667         {
02668           yyn += YYTERROR;
02669           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
02670             {
02671               yyn = yytable[yyn];
02672               if (0 < yyn)
02673                 break;
02674             }
02675         }
02676 
02677       /* Pop the current state because it cannot handle the error token.  */
02678       if (yyssp == yyss)
02679         YYABORT;
02680 
02681 
02682       yydestruct ("Error: popping",
02683                   yystos[yystate], yyvsp);
02684       YYPOPSTACK (1);
02685       yystate = *yyssp;
02686       YY_STACK_PRINT (yyss, yyssp);
02687     }
02688 
02689   if (yyn == YYFINAL)
02690     YYACCEPT;
02691 
02692   *++yyvsp = yylval;
02693 
02694 
02695   /* Shift the error token.  */
02696   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
02697 
02698   yystate = yyn;
02699   goto yynewstate;
02700 
02701 
02702 /*-------------------------------------.
02703 | yyacceptlab -- YYACCEPT comes here.  |
02704 `-------------------------------------*/
02705 yyacceptlab:
02706   yyresult = 0;
02707   goto yyreturn;
02708 
02709 /*-----------------------------------.
02710 | yyabortlab -- YYABORT comes here.  |
02711 `-----------------------------------*/
02712 yyabortlab:
02713   yyresult = 1;
02714   goto yyreturn;
02715 
02716 #ifndef yyoverflow
02717 /*-------------------------------------------------.
02718 | yyexhaustedlab -- memory exhaustion comes here.  |
02719 `-------------------------------------------------*/
02720 yyexhaustedlab:
02721   yyerror (YY_("memory exhausted"));
02722   yyresult = 2;
02723   /* Fall through.  */
02724 #endif
02725 
02726 yyreturn:
02727   if (yychar != YYEOF && yychar != YYEMPTY)
02728      yydestruct ("Cleanup: discarding lookahead",
02729                  yytoken, &yylval);
02730   /* Do not reclaim the symbols of the rule which action triggered
02731      this YYABORT or YYACCEPT.  */
02732   YYPOPSTACK (yylen);
02733   YY_STACK_PRINT (yyss, yyssp);
02734   while (yyssp != yyss)
02735     {
02736       yydestruct ("Cleanup: popping",
02737                   yystos[*yyssp], yyvsp);
02738       YYPOPSTACK (1);
02739     }
02740 #ifndef yyoverflow
02741   if (yyss != yyssa)
02742     YYSTACK_FREE (yyss);
02743 #endif
02744 #if YYERROR_VERBOSE
02745   if (yymsg != yymsgbuf)
02746     YYSTACK_FREE (yymsg);
02747 #endif
02748   /* Make sure YYID is used.  */
02749   return YYID (yyresult);
02750 }

Here is the call graph for this function:

Here is the caller graph for this function:

Generated on Tue Aug 2 10:43:54 2011 for ODIN_II by  doxygen 1.6.3