Go to the source code of this file.
Functions | |
int | yyparse (void) |
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 }