⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ifs_yacc.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 5 页
字号:
			   FOR_ITEM (i) {			      TBL->param[i].has_default = 				 ITEM_BUF(i).value.has_value;			      if (TBL->param[i].has_default) {   			         assign_value (TBL->param[i].type,					       &TBL->param[i].default_value,					       ITEM_BUF(i).value);			      }			   }}    break;  case 35:#line 710 "ifs_yacc.y"    {int i;			   END;			   FOR_ITEM (i) {			      assign_limits (TBL->param[i].type, 					     &TBL->param[i],					     ITEM_BUF(i).range);			   }}    break;  case 36:#line 718 "ifs_yacc.y"    {int i;			   END;			   FOR_ITEM (i) {			      TBL->param[i].is_array = ITEM_BUF(i).bool;			   }}    break;  case 37:#line 724 "ifs_yacc.y"    {int i;			   END;			   FOR_ITEM (i) {			      ASSIGN_BOUNDS (param, i);			   }}    break;  case 38:#line 730 "ifs_yacc.y"    {int i;			   END;			   FOR_ITEM (i) {			      TBL->param[i].null_allowed = ITEM_BUF(i).bool;			   }}    break;  case 41:#line 742 "ifs_yacc.y"    {int i;			   END;			   FOR_ITEM (i) {			      TBL->inst_var[i].name = ITEM_BUF(i).str;			   }}    break;  case 42:#line 748 "ifs_yacc.y"    {int i;			   END;			   FOR_ITEM (i) {			      TBL->inst_var[i].description = ITEM_BUF(i).str;			   }}    break;  case 43:#line 754 "ifs_yacc.y"    {int i;			   END;			   FOR_ITEM (i) {			      TBL->inst_var[i].type = ITEM_BUF(i).dtype;			   }}    break;  case 44:#line 760 "ifs_yacc.y"    {int i;			   END;			   FOR_ITEM (i) {			      TBL->inst_var[i].is_array = ITEM_BUF(i).bool;			   }}    break;  case 46:#line 768 "ifs_yacc.y"    {ITEM; BUF.str = yyvsp[0].str;}    break;  case 48:#line 773 "ifs_yacc.y"    {ITEM; 			    BUF.range = yyvsp[0].range;}    break;  case 49:#line 776 "ifs_yacc.y"    {ITEM; 			    BUF.range.is_named = TRUE;			    BUF.range.u.name = yyvsp[0].str;}    break;  case 51:#line 782 "ifs_yacc.y"    {ITEM; BUF.str = yyvsp[0].str;}    break;  case 53:#line 786 "ifs_yacc.y"    {ITEM; BUF.dir = yyvsp[0].dir;}    break;  case 54:#line 789 "ifs_yacc.y"    {yyval.dir = IN;}    break;  case 55:#line 790 "ifs_yacc.y"    {yyval.dir = OUT;}    break;  case 56:#line 791 "ifs_yacc.y"    {yyval.dir = INOUT;}    break;  case 58:#line 795 "ifs_yacc.y"    {ITEM; BUF.bool = yyvsp[0].bool;}    break;  case 60:#line 799 "ifs_yacc.y"    {ITEM; BUF.ctype = yyvsp[0].ctype;}    break;  case 61:#line 802 "ifs_yacc.y"    {yyval.ctype.kind = VOLTAGE;}    break;  case 62:#line 803 "ifs_yacc.y"    {yyval.ctype.kind = DIFF_VOLTAGE;}    break;  case 63:#line 804 "ifs_yacc.y"    {yyval.ctype.kind = VSOURCE_CURRENT;}    break;  case 64:#line 805 "ifs_yacc.y"    {yyval.ctype.kind = CURRENT;}    break;  case 65:#line 806 "ifs_yacc.y"    {yyval.ctype.kind = DIFF_CURRENT;}    break;  case 66:#line 807 "ifs_yacc.y"    {yyval.ctype.kind = CONDUCTANCE;}    break;  case 67:#line 808 "ifs_yacc.y"    {yyval.ctype.kind = DIFF_CONDUCTANCE;}    break;  case 68:#line 809 "ifs_yacc.y"    {yyval.ctype.kind = RESISTANCE;}    break;  case 69:#line 810 "ifs_yacc.y"    {yyval.ctype.kind = DIFF_RESISTANCE;}    break;  case 70:#line 811 "ifs_yacc.y"    {yyval.ctype.kind = DIGITAL;}    break;  case 71:#line 812 "ifs_yacc.y"    {yyval.ctype.kind = USER_DEFINED;					 yyval.ctype.id   = yyvsp[0].str;}    break;  case 73:#line 817 "ifs_yacc.y"    {ITEM; BUF.dtype = yyvsp[0].dtype;}    break;  case 74:#line 820 "ifs_yacc.y"    {yyval.dtype = REAL;}    break;  case 75:#line 821 "ifs_yacc.y"    {yyval.dtype = INTEGER;}    break;  case 76:#line 822 "ifs_yacc.y"    {yyval.dtype = BOOLEAN;}    break;  case 77:#line 823 "ifs_yacc.y"    {yyval.dtype = COMPLEX;}    break;  case 78:#line 824 "ifs_yacc.y"    {yyval.dtype = STRING;}    break;  case 79:#line 825 "ifs_yacc.y"    {yyval.dtype = POINTER;}    break;  case 81:#line 829 "ifs_yacc.y"    {ITEM; BUF.range = yyvsp[0].range;}    break;  case 82:#line 832 "ifs_yacc.y"    {yyval.range.is_named = FALSE; 				    yyval.range.u.bounds.lower.has_bound = FALSE;				    yyval.range.u.bounds.upper.has_bound = FALSE;}    break;  case 83:#line 837 "ifs_yacc.y"    {yyval.range.is_named = FALSE;			    yyval.range.u.bounds.lower = yyvsp[-3].bound;			    yyval.range.u.bounds.upper = yyvsp[-1].bound;}    break;  case 86:#line 846 "ifs_yacc.y"    {yyval.bound.has_bound = FALSE;}    break;  case 87:#line 847 "ifs_yacc.y"    {yyval.bound.has_bound = TRUE; 				           yyval.bound.bound = yyvsp[0].value;}    break;  case 88:#line 851 "ifs_yacc.y"    {yyval.range.is_named = FALSE; 				    yyval.range.u.bounds.lower.has_bound = FALSE;				    yyval.range.u.bounds.upper.has_bound = FALSE;}    break;  case 89:#line 856 "ifs_yacc.y"    {yyval.range.is_named = FALSE;			    yyval.range.u.bounds.lower = yyvsp[-3].bound;			    yyval.range.u.bounds.upper = yyvsp[-1].bound;}    break;  case 90:#line 861 "ifs_yacc.y"    {yyval.bound.has_bound = FALSE;}    break;  case 91:#line 862 "ifs_yacc.y"    {yyval.bound.has_bound = TRUE; 				  yyval.bound.bound = yyvsp[0].value;}    break;  case 93:#line 867 "ifs_yacc.y"    {ITEM; BUF.value = yyvsp[0].value;}    break;  case 94:#line 870 "ifs_yacc.y"    {yyval.value.has_value = FALSE;}    break;  case 96:#line 874 "ifs_yacc.y"    {yyval.value.has_value = TRUE;					 yyval.value.kind = STRING;					 yyval.value.u.svalue = yyvsp[0].str;}    break;  case 97:#line 877 "ifs_yacc.y"    {yyval.value.has_value = TRUE;					 yyval.value.kind = BOOLEAN;					 yyval.value.u.bvalue = yyvsp[0].bool;}    break;  case 98:#line 880 "ifs_yacc.y"    {yyval.value.has_value = TRUE;					 yyval.value.kind = COMPLEX;					 yyval.value.u.cvalue = yyvsp[0].cval;}    break;  case 100:#line 887 "ifs_yacc.y"    {yyval.cval.real = yyvsp[-3].rval;			   yyval.cval.imag = yyvsp[-1].rval;}    break;  case 102:#line 893 "ifs_yacc.y"    {ITEM; BUF.ctype_list = yyvsp[0].ctype_list;}    break;  case 103:#line 896 "ifs_yacc.y"    {yyval.ctype_list = yyvsp[-1].ctype_list;}    break;  case 104:#line 900 "ifs_yacc.y"    {yyval.ctype_list = (Ctype_List_t*)calloc (1,							sizeof (Ctype_List_t));			    if (!yyval.ctype_list) {			       fatal ("Error allocating memory");			    }			    yyval.ctype_list->ctype = yyvsp[0].ctype;			    yyval.ctype_list->next = (Ctype_List_t*)0;}    break;  case 105:#line 908 "ifs_yacc.y"    {yyval.ctype_list = (Ctype_List_t*)calloc (1, 							sizeof (Ctype_List_t));			    if (!yyval.ctype_list) {			       fatal ("Error allocating memory");			    }			    yyval.ctype_list->ctype = yyvsp[0].ctype;			    yyval.ctype_list->next = yyvsp[-2].ctype_list;			    /*$$->next = (Ctype_List_t*)0;			    assert ($1);			    $1->next = $$;*/}    break;  case 106:#line 920 "ifs_yacc.y"    {yyval.bool = TRUE;}    break;  case 107:#line 921 "ifs_yacc.y"    {yyval.bool = FALSE;}    break;  case 108:#line 924 "ifs_yacc.y"    {yyval.str = strdup(ifs_yytext);}    break;  case 109:#line 927 "ifs_yacc.y"    {yyval.str = strdup(ifs_yytext);}    break;  case 110:#line 930 "ifs_yacc.y"    {yyval.value.has_value = TRUE;				 yyval.value.kind = REAL;				 yyval.value.u.rvalue = yyvsp[0].rval;}    break;  case 112:#line 936 "ifs_yacc.y"    {yyval.value.has_value = TRUE;					 yyval.value.kind = INTEGER;					 yyval.value.u.ivalue = yyvsp[0].ival;}    break;  case 113:#line 941 "ifs_yacc.y"    {yyval.rval = yydval;}    break;  case 114:#line 944 "ifs_yacc.y"    {yyval.ival = yyival;}    break;    }/* Line 1010 of yacc.c.  */#line 2306 "ifs_yacc.c"  yyvsp -= yylen;  yyssp -= yylen;  YY_STACK_PRINT (yyss, yyssp);  *++yyvsp = yyval;  /* Now `shift' the result of the reduction.  Determine what state     that goes to, based on the state we popped back to and the rule     number reduced by.  */  yyn = yyr1[yyn];  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)    yystate = yytable[yystate];  else    yystate = yydefgoto[yyn - YYNTOKENS];  goto yynewstate;/*------------------------------------.| yyerrlab -- here on detecting error |`------------------------------------*/yyerrlab:  /* If not already recovering from an error, report this error.  */  if (!yyerrstatus)    {      ++yynerrs;#if YYERROR_VERBOSE      yyn = yypact[yystate];      if (YYPACT_NINF < yyn && yyn < YYLAST)	{	  YYSIZE_T yysize = 0;	  int yytype = YYTRANSLATE (yychar);	  const char* yyprefix;	  char *yymsg;	  int yyx;	  /* Start YYX at -YYN if negative to avoid negative indexes in	     YYCHECK.  */	  int yyxbegin = yyn < 0 ? -yyn : 0;	  /* Stay within bounds of both yycheck and yytname.  */	  int yychecklim = YYLAST - yyn;	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;	  int yycount = 0;	  yyprefix = ", expecting ";	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)	      {		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);		yycount += 1;		if (yycount == 5)		  {		    yysize = 0;		    break;		  }	      }	  yysize += (sizeof ("syntax error, unexpected ")		     + yystrlen (yytna

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -