Skip to content
Snippets Groups Projects
Gmsh.tab.cpp 255 KiB
Newer Older
	  if (yyfree_stacks)
	    {
	      free (yyss);
	      free (yyvs);
#ifdef YYLSP_NEEDED
	      free (yyls);
#endif
	    }
	  return 2;
	}
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;
#ifndef YYSTACK_USE_ALLOCA
      yyfree_stacks = 1;
#endif
      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
      __yy_memcpy ((char *)yyss, (char *)yyss1,
		   size * (unsigned int) sizeof (*yyssp));
      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
		   size * (unsigned int) sizeof (*yyvsp));
      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
      __yy_memcpy ((char *)yyls, (char *)yyls1,
		   size * (unsigned int) sizeof (*yylsp));
#endif
#endif /* no yyoverflow */

      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif

      if (yyssp >= yyss + yystacksize - 1)
	YYABORT;
    }

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Entering state %d\n", yystate);
#endif

  goto yybackup;
 yybackup:

/* Do appropriate processing given the current state.  */
/* Read a lookahead token if we need one and don't already have one.  */
/* yyresume: */

  /* First try to decide what to do without reference to lookahead token.  */

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* yychar is either YYEMPTY or YYEOF
     or a valid token in external form.  */

  if (yychar == YYEMPTY)
    {
#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Reading a token: ");
#endif
      yychar = YYLEX;
    }

  /* Convert token to internal form (in yychar1) for indexing tables with */

  if (yychar <= 0)		/* This means end of input. */
    {
      yychar1 = 0;
      yychar = YYEOF;		/* Don't call YYLEX any more */

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Now at end of input.\n");
#endif
    }
  else
    {
      yychar1 = YYTRANSLATE(yychar);

#if YYDEBUG != 0
      if (yydebug)
	{
	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
	  /* Give the individual parser a way to print the precise meaning
	     of a token, for further debugging info.  */
#ifdef YYPRINT
	  YYPRINT (stderr, yychar, yylval);
#endif
	  fprintf (stderr, ")\n");
	}
#endif
    }

  yyn += yychar1;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
    goto yydefault;

  yyn = yytable[yyn];

  /* yyn is what to do for this token type in this state.
     Negative => reduce, -yyn is rule number.
     Positive => shift, yyn is new state.
       New state is final state => don't bother to shift,
       just return success.
     0, or most negative number => error.  */

  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrlab;

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif

  /* Discard the token being shifted unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  /* count tokens shifted since error; after three, turn off error status.  */
  if (yyerrstatus) yyerrstatus--;

  yystate = yyn;
  goto yynewstate;

/* Do the default action for the current state.  */
yydefault:

  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;

/* Do a reduction.  yyn is the number of a rule to reduce with.  */
yyreduce:
  yylen = yyr2[yyn];
  if (yylen > 0)
    yyval = yyvsp[1-yylen]; /* implement default value of the action */

#if YYDEBUG != 0
  if (yydebug)
    {
      int i;

      fprintf (stderr, "Reducing via rule %d (line %d), ",
	       yyn, yyrline[yyn]);

      /* Print the symbols being reduced, and their result.  */
      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
    }
#endif


  switch (yyn) {

case 4:
#line 158 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyerrok ; return 1; ;
    break;}
case 5:
#line 166 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = yyvsp[0].d; ;
    break;}
case 6:
#line 167 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ yyval.d = -yyvsp[0].d; ;
    break;}
case 7:
#line 172 "Gmsh.y"
      Msg(PARSER_INFO,"STL file format");
      STL_Surf = Create_Surface(1,MSH_SURF_STL,1);
      STL_Surf->STL = new STL_Data;
      return 1;
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 8:
#line 186 "Gmsh.y"
{
      STL_Surf->STL->Add_Facet( yyvsp[-12].d, yyvsp[-11].d, yyvsp[-10].d,
				yyvsp[-8].d, yyvsp[-7].d, yyvsp[-6].d,
				yyvsp[-4].d, yyvsp[-3].d, yyvsp[-2].d);
      return 1;
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 9:
#line 193 "Gmsh.y"
      Msg(PARSER_INFO,"STL file format read");
      Tree_Add(THEM->Surfaces, &STL_Surf);
      return 1;
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 12:
#line 210 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 13:
#line 211 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 14:
#line 212 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 15:
#line 217 "Gmsh.y"
      Msg(PARSER_INFO,"Step Iso-10303-21 file format");
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 16:
#line 222 "Gmsh.y"
      Msg(PARSER_INFO,"Step Iso-10303-21 file format read");
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 20:
#line 233 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 21:
#line 236 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 22:
#line 240 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 23:
#line 246 "Gmsh.y"
{
        Add_Cartesian_Point((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2]);
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 24:
#line 252 "Gmsh.y"
{
       Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l,	yyvsp[-6].l, yyvsp[-4].l, 0., 1.);
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 25:
#line 259 "Gmsh.y"
{
      Add_BSpline_Surface_With_Knots ((int)yyvsp[-30].d, yyvsp[-26].c, (int) yyvsp[-24].d, (int) yyvsp[-22].d, yyvsp[-20].l, yyvsp[-10].l,
				      yyvsp[-8].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1., 0., 1. );
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 26:
#line 265 "Gmsh.y"
{
      Add_Edge_Curve ((int)yyvsp[-14].d, yyvsp[-10].c , (int)yyvsp[-8].d , (int)yyvsp[-6].d, (int)yyvsp[-4].d);
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 27:
#line 269 "Gmsh.y"
{
      Add_Face_Outer_Bound((int)yyvsp[-10].d,yyvsp[-6].c,(int)yyvsp[-4].d,yyvsp[-2].i,1);
    ;
    break;}
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 28:
#line 273 "Gmsh.y"
{
      /* La je dois voir la norme ! Face_Bound : trou externe a la surface ! */
      Msg(PARSER_INFO,"Found a face bound");
      Add_Face_Outer_Bound((int)yyvsp[-10].d,yyvsp[-6].c,(int)yyvsp[-4].d,yyvsp[-2].i,0);
    ;
    break;}
case 29:
#line 280 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Oriented_Edge((int)yyvsp[-14].d,yyvsp[-10].c,(int)yyvsp[-4].d,yyvsp[-2].i);
#line 284 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Edge_Loop((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].l);
#line 289 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Advanced_Face((int)yyvsp[-12].d,yyvsp[-8].c,yyvsp[-6].l,(int)yyvsp[-4].d,yyvsp[-2].i);
#line 293 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Vertex_Point((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d);
#line 297 "Gmsh.y"
#line 301 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Axis2_Placement3D  ( (int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d);
#line 305 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Direction((int)yyvsp[-8].d , yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]);
#line 309 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Plane((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d);
#line 313 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d);
#line 317 "Gmsh.y"
      Msg(PARSER_INFO,"Found a closed shell");
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l);
#line 323 "Gmsh.y"
#line 326 "Gmsh.y"
#line 329 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d);
#line 333 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d);
#line 337 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d);
#line 341 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d);
#line 345 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
      Add_Ellipsis((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
#line 350 "Gmsh.y"
#line 353 "Gmsh.y"
#line 357 "Gmsh.y"
#line 360 "Gmsh.y"
#line 364 "Gmsh.y"
#line 367 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    ;
#line 370 "Gmsh.y"
#line 380 "Gmsh.y"
case 54:
#line 383 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{
      Msg(PARSER_INFO,"Gmsh file format read");
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    ;
case 55:
#line 389 "Gmsh.y"
case 56:
#line 390 "Gmsh.y"
case 57:
#line 391 "Gmsh.y"
case 58:
#line 392 "Gmsh.y"
case 59:
#line 393 "Gmsh.y"
case 60:
#line 394 "Gmsh.y"
case 61:
#line 395 "Gmsh.y"
case 62:
#line 396 "Gmsh.y"
{ return 1; ;
case 63:
#line 397 "Gmsh.y"
case 64:
#line 398 "Gmsh.y"
case 65:
#line 399 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ return 1; ;
    break;}
case 66:
#line 400 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
{ return 1; ;
    break;}
case 67:
#line 405 "Gmsh.y"
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 68:
#line 409 "Gmsh.y"
      for(i = 0 ; i<List_Nbr(yyvsp[-2].l) ; i++){
	if(!i){
	  str = strtok(yyvsp[-4].c, "%");
	}
	str = strtok(NULL, "%");
	if(str){
	  sprintf(tmpstring3, tmpstring2, *(double*)List_Pointer(yyvsp[-2].l,i)); 
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Missing %d parameter(s) in Printf format",
		   List_Nbr(yyvsp[-2].l)-i);
      List_Delete(yyvsp[-2].l);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 69:
#line 439 "Gmsh.y"
      if(!strcmp(yyvsp[-5].c, "View")) EndView(View, 1, yyname, yyvsp[-4].c); 
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 70:
#line 443 "Gmsh.y"
      if(!strcmp(yyvsp[-7].c, "View")) EndView(View, 1, yyname, yyvsp[-6].c);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
case 71:
#line 450 "Gmsh.y"
      View = BeginView(1); 
case 86:
#line 471 "Gmsh.y"
{ List_Add(View->SP, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 87:
#line 473 "Gmsh.y"
{ List_Add(View->SP, &yyvsp[0].d) ; ;
case 88:
#line 478 "Gmsh.y"
      List_Add(View->SP, &yyvsp[-5].d); List_Add(View->SP, &yyvsp[-3].d);
      List_Add(View->SP, &yyvsp[-1].d);
case 89:
#line 483 "Gmsh.y"
      View->NbSP++ ;
case 90:
#line 490 "Gmsh.y"
{ List_Add(View->VP, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 91:
#line 492 "Gmsh.y"
{ List_Add(View->VP, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 92:
#line 497 "Gmsh.y"
      List_Add(View->VP, &yyvsp[-5].d); List_Add(View->VP, &yyvsp[-3].d);
      List_Add(View->VP, &yyvsp[-1].d); 
case 93:
#line 502 "Gmsh.y"
      View->NbVP++ ;
case 94:
#line 509 "Gmsh.y"
{ List_Add(View->TP, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 95:
#line 511 "Gmsh.y"
{ List_Add(View->TP, &yyvsp[0].d) ; ;
case 96:
#line 516 "Gmsh.y"
      List_Add(View->TP, &yyvsp[-5].d); List_Add(View->TP, &yyvsp[-3].d);
      List_Add(View->TP, &yyvsp[-1].d);
case 97:
#line 521 "Gmsh.y"
      View->NbTP++ ;
case 98:
#line 528 "Gmsh.y"
{ List_Add(View->SL, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 99:
#line 530 "Gmsh.y"
{ List_Add(View->SL, &yyvsp[0].d) ; ;
case 100:
#line 536 "Gmsh.y"
      List_Add(View->SL, &yyvsp[-11].d); List_Add(View->SL, &yyvsp[-5].d);
      List_Add(View->SL, &yyvsp[-9].d); List_Add(View->SL, &yyvsp[-3].d);
      List_Add(View->SL, &yyvsp[-7].d); List_Add(View->SL, &yyvsp[-1].d);
case 101:
#line 542 "Gmsh.y"
      View->NbSL++ ;
case 102:
#line 549 "Gmsh.y"
{ List_Add(View->VL, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 103:
#line 551 "Gmsh.y"
{ List_Add(View->VL, &yyvsp[0].d) ; ;
case 104:
#line 557 "Gmsh.y"
      List_Add(View->VL, &yyvsp[-11].d); List_Add(View->VL, &yyvsp[-5].d);
      List_Add(View->VL, &yyvsp[-9].d); List_Add(View->VL, &yyvsp[-3].d);
      List_Add(View->VL, &yyvsp[-7].d); List_Add(View->VL, &yyvsp[-1].d);
case 105:
#line 563 "Gmsh.y"
      View->NbVL++ ;
case 106:
#line 570 "Gmsh.y"
{ List_Add(View->TL, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 107:
#line 572 "Gmsh.y"
{ List_Add(View->TL, &yyvsp[0].d) ; ;
case 108:
#line 578 "Gmsh.y"
      List_Add(View->TL, &yyvsp[-11].d); List_Add(View->TL, &yyvsp[-5].d);
      List_Add(View->TL, &yyvsp[-9].d); List_Add(View->TL, &yyvsp[-3].d);
      List_Add(View->TL, &yyvsp[-7].d); List_Add(View->TL, &yyvsp[-1].d);
case 109:
#line 584 "Gmsh.y"
      View->NbTL++ ;
case 110:
#line 591 "Gmsh.y"
{ List_Add(View->ST, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 111:
#line 593 "Gmsh.y"
{ List_Add(View->ST, &yyvsp[0].d) ; ;
case 112:
#line 600 "Gmsh.y"
      List_Add(View->ST, &yyvsp[-17].d); List_Add(View->ST, &yyvsp[-11].d);
      List_Add(View->ST, &yyvsp[-5].d);
      List_Add(View->ST, &yyvsp[-15].d); List_Add(View->ST, &yyvsp[-9].d);
      List_Add(View->ST, &yyvsp[-3].d);
      List_Add(View->ST, &yyvsp[-13].d); List_Add(View->ST, &yyvsp[-7].d);
      List_Add(View->ST, &yyvsp[-1].d);
case 113:
#line 609 "Gmsh.y"
      View->NbST++ ;
case 114:
#line 616 "Gmsh.y"
{ List_Add(View->VT, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 115:
#line 618 "Gmsh.y"
{ List_Add(View->VT, &yyvsp[0].d) ; ;
case 116:
#line 625 "Gmsh.y"
      List_Add(View->VT, &yyvsp[-17].d); List_Add(View->VT, &yyvsp[-11].d);
      List_Add(View->VT, &yyvsp[-5].d);
      List_Add(View->VT, &yyvsp[-15].d); List_Add(View->VT, &yyvsp[-9].d);
      List_Add(View->VT, &yyvsp[-3].d);
      List_Add(View->VT, &yyvsp[-13].d); List_Add(View->VT, &yyvsp[-7].d);
      List_Add(View->VT, &yyvsp[-1].d);
case 117:
#line 634 "Gmsh.y"
      View->NbVT++ ;
case 118:
#line 641 "Gmsh.y"
{ List_Add(View->TT, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 119:
#line 643 "Gmsh.y"
{ List_Add(View->TT, &yyvsp[0].d) ; ;
case 120:
#line 650 "Gmsh.y"
      List_Add(View->TT, &yyvsp[-17].d); List_Add(View->TT, &yyvsp[-11].d);
      List_Add(View->TT, &yyvsp[-5].d);
      List_Add(View->TT, &yyvsp[-15].d); List_Add(View->TT, &yyvsp[-9].d);
      List_Add(View->TT, &yyvsp[-3].d);
      List_Add(View->TT, &yyvsp[-13].d); List_Add(View->TT, &yyvsp[-7].d);
      List_Add(View->TT, &yyvsp[-1].d);
case 121:
#line 659 "Gmsh.y"
      View->NbTT++ ;
case 122:
#line 666 "Gmsh.y"
{ List_Add(View->SS, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 123:
#line 668 "Gmsh.y"
{ List_Add(View->SS, &yyvsp[0].d) ; ;
case 124:
#line 676 "Gmsh.y"
      List_Add(View->SS, &yyvsp[-23].d);  List_Add(View->SS, &yyvsp[-17].d);
      List_Add(View->SS, &yyvsp[-11].d); List_Add(View->SS, &yyvsp[-5].d);
      List_Add(View->SS, &yyvsp[-21].d);  List_Add(View->SS, &yyvsp[-15].d);
      List_Add(View->SS, &yyvsp[-9].d); List_Add(View->SS, &yyvsp[-3].d);
      List_Add(View->SS, &yyvsp[-19].d);  List_Add(View->SS, &yyvsp[-13].d);
      List_Add(View->SS, &yyvsp[-7].d); List_Add(View->SS, &yyvsp[-1].d);
case 125:
#line 685 "Gmsh.y"
      View->NbSS++ ;
case 126:
#line 692 "Gmsh.y"
{ List_Add(View->VS, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 127:
#line 694 "Gmsh.y"
{ List_Add(View->VS, &yyvsp[0].d) ; ;
case 128:
#line 702 "Gmsh.y"
      List_Add(View->VS, &yyvsp[-23].d);  List_Add(View->VS, &yyvsp[-17].d);
      List_Add(View->VS, &yyvsp[-11].d); List_Add(View->VS, &yyvsp[-5].d);
      List_Add(View->VS, &yyvsp[-21].d);  List_Add(View->VS, &yyvsp[-15].d);
      List_Add(View->VS, &yyvsp[-9].d); List_Add(View->VS, &yyvsp[-3].d);
      List_Add(View->VS, &yyvsp[-19].d);  List_Add(View->VS, &yyvsp[-13].d);
      List_Add(View->VS, &yyvsp[-7].d); List_Add(View->VS, &yyvsp[-1].d);
case 129:
#line 711 "Gmsh.y"
      View->NbVS++ ;
case 130:
#line 718 "Gmsh.y"
{ List_Add(View->TS, &yyvsp[0].d) ; ;
Christophe Geuzaine's avatar
Christophe Geuzaine committed
    break;}
case 131:
#line 720 "Gmsh.y"
{ List_Add(View->TS, &yyvsp[0].d) ; ;
case 132:
#line 728 "Gmsh.y"
      List_Add(View->TS, &yyvsp[-23].d);  List_Add(View->TS, &yyvsp[-17].d);
      List_Add(View->TS, &yyvsp[-11].d); List_Add(View->TS, &yyvsp[-5].d);
      List_Add(View->TS, &yyvsp[-21].d);  List_Add(View->TS, &yyvsp[-15].d);
      List_Add(View->TS, &yyvsp[-9].d); List_Add(View->TS, &yyvsp[-3].d);
      List_Add(View->TS, &yyvsp[-19].d);  List_Add(View->TS, &yyvsp[-13].d);
      List_Add(View->TS, &yyvsp[-7].d); List_Add(View->TS, &yyvsp[-1].d);
case 133:
#line 737 "Gmsh.y"
      View->NbTS++ ;
case 134:
#line 744 "Gmsh.y"
{ 
      for(i=0; i<(int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T2C, &yyvsp[0].c[i]) ; 
      Free(yyvsp[0].c);
    ;
    break;}
case 135:
#line 749 "Gmsh.y"
{ 
      for(i=0; i<(int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T2C, &yyvsp[0].c[i]) ; 
      Free(yyvsp[0].c);
    ;
    break;}
case 136:
#line 757 "Gmsh.y"
{ 
      List_Add(View->T2D, &yyvsp[-5].d); List_Add(View->T2D, &yyvsp[-3].d);
      List_Add(View->T2D, &yyvsp[-1].d); 
      d = List_Nbr(View->T2C);
      List_Add(View->T2D, &d); 
    ;
    break;}
case 137:
#line 764 "Gmsh.y"
{
      View->NbT2++ ;
    ;
    break;}
case 138:
#line 771 "Gmsh.y"
{ 
      for(i=0; i<(int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T3C, &yyvsp[0].c[i]) ; 
      Free(yyvsp[0].c);
    ;
    break;}
case 139:
#line 776 "Gmsh.y"
{ 
      for(i=0; i<(int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T3C, &yyvsp[0].c[i]) ; 
      Free(yyvsp[0].c);
    ;
    break;}
case 140:
#line 784 "Gmsh.y"
{ 
      List_Add(View->T3D, &yyvsp[-7].d); List_Add(View->T3D, &yyvsp[-5].d);
      List_Add(View->T3D, &yyvsp[-3].d); List_Add(View->T3D, &yyvsp[-1].d); 
      d = List_Nbr(View->T3C);
      List_Add(View->T3D, &d); 
    ;
    break;}
case 141:
#line 791 "Gmsh.y"
{
      View->NbT3++ ;
    ;
    break;}
case 142:
#line 802 "Gmsh.y"
case 143:
#line 803 "Gmsh.y"
case 144:
#line 804 "Gmsh.y"
case 145:
#line 805 "Gmsh.y"
case 146:
#line 806 "Gmsh.y"
case 147:
#line 809 "Gmsh.y"
case 148:
#line 810 "Gmsh.y"
case 149:
#line 817 "Gmsh.y"
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
	TheSymbol.val = List_Create(1,1,sizeof(double));
	if(!yyvsp[-2].i){
	  List_Put(TheSymbol.val, 0, &yyvsp[-1].d);
	  List_Add(Symbol_L, &TheSymbol);
	}
	else
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Unknown variable '%s'", yyvsp[-3].c) ;
	pd = (double*)List_Pointer_Fast(pSymbol->val, 0) ; 
	switch(yyvsp[-2].i){
	case 0 : *pd = yyvsp[-1].d; break ;
	case 1 : *pd += yyvsp[-1].d ; break ;
	case 2 : *pd -= yyvsp[-1].d ; break ;
	case 3 : *pd *= yyvsp[-1].d ; break ;
	case 4 : 
	  if(yyvsp[-1].d) *pd /= yyvsp[-1].d ; 
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  else vyyerror("Division by zero in '%s /= %g'", yyvsp[-3].c, yyvsp[-1].d);
case 150:
#line 844 "Gmsh.y"
      TheSymbol.Name = yyvsp[-6].c;
      if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
	TheSymbol.val = List_Create(5,5,sizeof(double));
	if(!yyvsp[-2].i){
	  List_Put(TheSymbol.val, (int)yyvsp[-4].d, &yyvsp[-1].d);
	  List_Add(Symbol_L, &TheSymbol);
	}
	else
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	  vyyerror("Unknown variable '%s'", yyvsp[-6].c) ;
	if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-4].d))){
	  switch(yyvsp[-2].i){
	  case 0 : *pd = yyvsp[-1].d; break ;
	  case 1 : *pd += yyvsp[-1].d ; break ;
	  case 2 : *pd -= yyvsp[-1].d ; break ;
	  case 3 : *pd *= yyvsp[-1].d ; break ;
	  case 4 : 
	    if(yyvsp[-1].d) *pd /= yyvsp[-1].d ; 
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	    else vyyerror("Division by zero in '%s[%d] /= %g'", yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-1].d);
	    break;
	  }
	}
	else{
	  if(!yyvsp[-2].i)
	    List_Put(pSymbol->val, (int)yyvsp[-4].d, &yyvsp[-1].d);
	  else
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	    vyyerror("Uninitialized variable '%s[%d]'", yyvsp[-6].c, (int)yyvsp[-4].d) ;
case 151:
#line 878 "Gmsh.y"
{
      if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l))
	vyyerror("Incompatible array dimensions in affectation");
      else{
	TheSymbol.Name = yyvsp[-8].c;
	if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
	  TheSymbol.val = List_Create(5,5,sizeof(double));
	  if(!yyvsp[-2].i){
	    for(i=0 ; i<List_Nbr(yyvsp[-5].l) ; i++){
	      List_Put(TheSymbol.val, (int)(*(double*)List_Pointer(yyvsp[-5].l,i)),
		       (double*)List_Pointer(yyvsp[-1].l,i));
	    }
	    List_Add(Symbol_L, &TheSymbol);
Christophe Geuzaine's avatar
Christophe Geuzaine committed
	    vyyerror("Unknown variable '%s'", yyvsp[-8].c) ;
	}
	else{
	  for(i=0 ; i<List_Nbr(yyvsp[-5].l) ; i++){
	    j = (int)(*(double*)List_Pointer(yyvsp[-5].l,i)) ;
	    d = *(double*)List_Pointer(yyvsp[-1].l,i) ;
	    if((pd = (double*)List_Pointer_Test(pSymbol->val, j))){
	      switch(yyvsp[-2].i){
	      case 0 : *pd = d; break ;