diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index c8e6cde740ade3b4d191fee7b2128195519a907c..6b560eab98f7b886f9a8e3a1181d936dc2fb660e 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -195,7 +195,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.219 2004-12-30 00:32:16 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.220 2004-12-30 01:36:14 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -773,25 +773,25 @@ static const short yyrline[] = { 0, 2252, 2253, 2256, 2261, 2265, 2281, 2297, 2313, 2333, 2347, 2357, 2367, 2380, 2389, 2410, 2424, 2432, 2437, 2448, 2461, 2505, 2519, 2534, 2543, 2553, 2557, 2561, 2565, 2576, 2593, - 2609, 2635, 2662, 2692, 2698, 2703, 2708, 2712, 2720, 2739, - 2755, 2771, 2776, 2792, 2797, 2813, 2818, 2836, 2859, 2882, - 2905, 2910, 2933, 2938, 2961, 2966, 2992, 3015, 3038, 3061, - 3066, 3089, 3095, 3118, 3124, 3149, 3153, 3158, 3185, 3209, - 3217, 3236, 3254, 3272, 3299, 3325, 3351, 3365, 3383, 3388, - 3397, 3399, 3400, 3401, 3402, 3405, 3407, 3408, 3409, 3410, - 3411, 3412, 3413, 3414, 3421, 3422, 3423, 3424, 3425, 3426, - 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, - 3437, 3438, 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, - 3447, 3448, 3449, 3450, 3451, 3452, 3454, 3455, 3456, 3457, - 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467, - 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3479, 3484, 3485, - 3486, 3490, 3502, 3521, 3534, 3546, 3568, 3585, 3602, 3619, - 3636, 3642, 3647, 3651, 3655, 3659, 3665, 3670, 3674, 3678, - 3684, 3688, 3693, 3697, 3702, 3706, 3710, 3716, 3722, 3729, - 3735, 3739, 3743, 3754, 3761, 3772, 3792, 3802, 3812, 3824, - 3840, 3858, 3881, 3908, 3914, 3918, 3922, 3934, 3939, 3951, - 3957, 3977, 3982, 3995, 4001, 4007, 4012, 4020, 4034, 4038, - 4057, 4073 + 2609, 2635, 2662, 2694, 2700, 2705, 2710, 2714, 2722, 2741, + 2757, 2773, 2778, 2794, 2799, 2815, 2820, 2838, 2861, 2884, + 2907, 2912, 2935, 2940, 2963, 2968, 2994, 3017, 3040, 3063, + 3068, 3091, 3097, 3120, 3126, 3151, 3155, 3160, 3187, 3211, + 3219, 3238, 3256, 3274, 3301, 3327, 3353, 3367, 3385, 3390, + 3399, 3401, 3402, 3403, 3404, 3407, 3409, 3410, 3411, 3412, + 3413, 3414, 3415, 3416, 3423, 3424, 3425, 3426, 3427, 3428, + 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, + 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, 3448, + 3449, 3450, 3451, 3452, 3453, 3454, 3456, 3457, 3458, 3459, + 3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, + 3470, 3471, 3472, 3473, 3474, 3475, 3476, 3481, 3486, 3487, + 3488, 3492, 3504, 3523, 3536, 3548, 3570, 3587, 3604, 3621, + 3638, 3644, 3649, 3653, 3657, 3661, 3667, 3672, 3676, 3680, + 3686, 3690, 3695, 3699, 3704, 3708, 3712, 3718, 3724, 3731, + 3737, 3741, 3745, 3756, 3763, 3774, 3794, 3804, 3814, 3826, + 3842, 3860, 3883, 3910, 3916, 3920, 3924, 3936, 3941, 3953, + 3959, 3979, 3984, 3997, 4003, 4009, 4014, 4022, 4036, 4040, + 4059, 4075 }; #endif @@ -7308,37 +7308,39 @@ case 302: case 303: #line 2663 "Gmsh.y" { - double x0 = LoopControlVariablesTab[ImbricatedLoop-1][0]; - double x1 = LoopControlVariablesTab[ImbricatedLoop-1][1]; - double step = LoopControlVariablesTab[ImbricatedLoop-1][2]; - int do_next = (step > 0.) ? (x0+step <= x1) : (x0+step >= x1); - if(do_next){ - LoopControlVariablesTab[ImbricatedLoop-1][0] += - LoopControlVariablesTab[ImbricatedLoop-1][2]; - if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ - Symbol TheSymbol; - TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; - Symbol *pSymbol; - if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) - yymsg(GERROR, "Unknown loop variable"); - else - *(double*)List_Pointer_Fast(pSymbol->val, 0) += - LoopControlVariablesTab[ImbricatedLoop-1][2]; - } - fsetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]); - yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1]; + if(ImbricatedLoop <= 0){ + yymsg(GERROR, "Invalid For/EndFor loop"); + ImbricatedLoop = 0; } else{ - ImbricatedLoop--; - if(ImbricatedLoop < 0){ - yymsg(GERROR, "Problem with imbricated loops"); - ImbricatedLoop = 0; + double x0 = LoopControlVariablesTab[ImbricatedLoop-1][0]; + double x1 = LoopControlVariablesTab[ImbricatedLoop-1][1]; + double step = LoopControlVariablesTab[ImbricatedLoop-1][2]; + int do_next = (step > 0.) ? (x0+step <= x1) : (x0+step >= x1); + if(do_next){ + LoopControlVariablesTab[ImbricatedLoop-1][0] += + LoopControlVariablesTab[ImbricatedLoop-1][2]; + if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ + Symbol TheSymbol; + TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; + Symbol *pSymbol; + if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) + yymsg(GERROR, "Unknown loop variable"); + else + *(double*)List_Pointer_Fast(pSymbol->val, 0) += + LoopControlVariablesTab[ImbricatedLoop-1][2]; + } + fsetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]); + yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1]; + } + else{ + ImbricatedLoop--; } } ; break;} case 304: -#line 2693 "Gmsh.y" +#line 2695 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno)) yymsg(GERROR, "Redefinition of function %s", yyvsp[0].c); @@ -7346,32 +7348,32 @@ case 304: ; break;} case 305: -#line 2699 "Gmsh.y" +#line 2701 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno)) yymsg(GERROR, "Error while exiting function"); ; break;} case 306: -#line 2704 "Gmsh.y" +#line 2706 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno)) yymsg(GERROR, "Unknown function %s", yyvsp[-1].c); ; break;} case 307: -#line 2709 "Gmsh.y" +#line 2711 "Gmsh.y" { if(!yyvsp[-1].d) skip_until("If", "EndIf"); ; break;} case 308: -#line 2713 "Gmsh.y" +#line 2715 "Gmsh.y" { ; break;} case 309: -#line 2724 "Gmsh.y" +#line 2726 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7389,7 +7391,7 @@ case 309: ; break;} case 310: -#line 2740 "Gmsh.y" +#line 2742 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7407,7 +7409,7 @@ case 310: ; break;} case 311: -#line 2756 "Gmsh.y" +#line 2758 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7425,14 +7427,14 @@ case 311: ; break;} case 312: -#line 2772 "Gmsh.y" +#line 2774 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 313: -#line 2777 "Gmsh.y" +#line 2779 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7450,14 +7452,14 @@ case 313: ; break;} case 314: -#line 2793 "Gmsh.y" +#line 2795 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 315: -#line 2798 "Gmsh.y" +#line 2800 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7475,14 +7477,14 @@ case 315: ; break;} case 316: -#line 2814 "Gmsh.y" +#line 2816 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 317: -#line 2819 "Gmsh.y" +#line 2821 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7500,7 +7502,7 @@ case 317: ; break;} case 318: -#line 2837 "Gmsh.y" +#line 2839 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7525,7 +7527,7 @@ case 318: ; break;} case 319: -#line 2860 "Gmsh.y" +#line 2862 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7550,7 +7552,7 @@ case 319: ; break;} case 320: -#line 2883 "Gmsh.y" +#line 2885 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7575,14 +7577,14 @@ case 320: ; break;} case 321: -#line 2906 "Gmsh.y" +#line 2908 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 322: -#line 2911 "Gmsh.y" +#line 2913 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7607,14 +7609,14 @@ case 322: ; break;} case 323: -#line 2934 "Gmsh.y" +#line 2936 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 324: -#line 2939 "Gmsh.y" +#line 2941 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7639,14 +7641,14 @@ case 324: ; break;} case 325: -#line 2962 "Gmsh.y" +#line 2964 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 326: -#line 2967 "Gmsh.y" +#line 2969 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7671,7 +7673,7 @@ case 326: ; break;} case 327: -#line 2993 "Gmsh.y" +#line 2995 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7696,7 +7698,7 @@ case 327: ; break;} case 328: -#line 3016 "Gmsh.y" +#line 3018 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7721,7 +7723,7 @@ case 328: ; break;} case 329: -#line 3039 "Gmsh.y" +#line 3041 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7746,14 +7748,14 @@ case 329: ; break;} case 330: -#line 3062 "Gmsh.y" +#line 3064 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 331: -#line 3067 "Gmsh.y" +#line 3069 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7778,14 +7780,14 @@ case 331: ; break;} case 332: -#line 3090 "Gmsh.y" +#line 3092 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 333: -#line 3096 "Gmsh.y" +#line 3098 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7810,14 +7812,14 @@ case 333: ; break;} case 334: -#line 3119 "Gmsh.y" +#line 3121 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 335: -#line 3125 "Gmsh.y" +#line 3127 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7842,17 +7844,17 @@ case 335: ; break;} case 336: -#line 3151 "Gmsh.y" +#line 3153 "Gmsh.y" { ; break;} case 337: -#line 3154 "Gmsh.y" +#line 3156 "Gmsh.y" { ; break;} case 338: -#line 3160 "Gmsh.y" +#line 3162 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -7880,7 +7882,7 @@ case 338: ; break;} case 339: -#line 3186 "Gmsh.y" +#line 3188 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -7906,13 +7908,13 @@ case 339: ; break;} case 340: -#line 3210 "Gmsh.y" +#line 3212 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} case 341: -#line 3219 "Gmsh.y" +#line 3221 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -7932,7 +7934,7 @@ case 341: ; break;} case 342: -#line 3237 "Gmsh.y" +#line 3239 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -7952,7 +7954,7 @@ case 342: ; break;} case 343: -#line 3255 "Gmsh.y" +#line 3257 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -7972,7 +7974,7 @@ case 343: ; break;} case 344: -#line 3273 "Gmsh.y" +#line 3275 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d, THEM); if(!s) @@ -8001,7 +8003,7 @@ case 344: ; break;} case 345: -#line 3300 "Gmsh.y" +#line 3302 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d, THEM); if(!s) @@ -8029,7 +8031,7 @@ case 345: ; break;} case 346: -#line 3326 "Gmsh.y" +#line 3328 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d, THEM); if(!v) @@ -8057,7 +8059,7 @@ case 346: ; break;} case 347: -#line 3352 "Gmsh.y" +#line 3354 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -8073,7 +8075,7 @@ case 347: ; break;} case 348: -#line 3366 "Gmsh.y" +#line 3368 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ double d; @@ -8088,71 +8090,71 @@ case 348: ; break;} case 349: -#line 3385 "Gmsh.y" +#line 3387 "Gmsh.y" { ReplaceAllDuplicates(THEM); ; break;} case 350: -#line 3389 "Gmsh.y" +#line 3391 "Gmsh.y" { IntersectAllSegmentsTogether(); ; break;} case 351: -#line 3398 "Gmsh.y" +#line 3400 "Gmsh.y" {yyval.i = 1;; break;} case 352: -#line 3399 "Gmsh.y" +#line 3401 "Gmsh.y" {yyval.i = 0;; break;} case 353: -#line 3400 "Gmsh.y" +#line 3402 "Gmsh.y" {yyval.i = -1;; break;} case 354: -#line 3401 "Gmsh.y" +#line 3403 "Gmsh.y" {yyval.i = -1;; break;} case 355: -#line 3402 "Gmsh.y" +#line 3404 "Gmsh.y" {yyval.i = -1;; break;} case 356: -#line 3406 "Gmsh.y" +#line 3408 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 357: -#line 3407 "Gmsh.y" +#line 3409 "Gmsh.y" { yyval.d = yyvsp[-1].d; ; break;} case 358: -#line 3408 "Gmsh.y" +#line 3410 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} case 359: -#line 3409 "Gmsh.y" +#line 3411 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 360: -#line 3410 "Gmsh.y" +#line 3412 "Gmsh.y" { yyval.d = !yyvsp[0].d; ; break;} case 361: -#line 3411 "Gmsh.y" +#line 3413 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d; ; break;} case 362: -#line 3412 "Gmsh.y" +#line 3414 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d; ; break;} case 363: -#line 3413 "Gmsh.y" +#line 3415 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d; ; break;} case 364: -#line 3415 "Gmsh.y" +#line 3417 "Gmsh.y" { if(!yyvsp[0].d) yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -8161,235 +8163,235 @@ case 364: ; break;} case 365: -#line 3421 "Gmsh.y" +#line 3423 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d; ; break;} case 366: -#line 3422 "Gmsh.y" +#line 3424 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ; break;} case 367: -#line 3423 "Gmsh.y" +#line 3425 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d; ; break;} case 368: -#line 3424 "Gmsh.y" +#line 3426 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d; ; break;} case 369: -#line 3425 "Gmsh.y" +#line 3427 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d; ; break;} case 370: -#line 3426 "Gmsh.y" +#line 3428 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d; ; break;} case 371: -#line 3427 "Gmsh.y" +#line 3429 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d; ; break;} case 372: -#line 3428 "Gmsh.y" +#line 3430 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d; ; break;} case 373: -#line 3429 "Gmsh.y" +#line 3431 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d; ; break;} case 374: -#line 3430 "Gmsh.y" +#line 3432 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d; ; break;} case 375: -#line 3431 "Gmsh.y" +#line 3433 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d; ; break;} case 376: -#line 3432 "Gmsh.y" +#line 3434 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} case 377: -#line 3433 "Gmsh.y" +#line 3435 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} case 378: -#line 3434 "Gmsh.y" +#line 3436 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} case 379: -#line 3435 "Gmsh.y" +#line 3437 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} case 380: -#line 3436 "Gmsh.y" +#line 3438 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} case 381: -#line 3437 "Gmsh.y" +#line 3439 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} case 382: -#line 3438 "Gmsh.y" +#line 3440 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} case 383: -#line 3439 "Gmsh.y" +#line 3441 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} case 384: -#line 3440 "Gmsh.y" +#line 3442 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} case 385: -#line 3441 "Gmsh.y" +#line 3443 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} case 386: -#line 3442 "Gmsh.y" +#line 3444 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} case 387: -#line 3443 "Gmsh.y" +#line 3445 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} case 388: -#line 3444 "Gmsh.y" +#line 3446 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} case 389: -#line 3445 "Gmsh.y" +#line 3447 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} case 390: -#line 3446 "Gmsh.y" +#line 3448 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} case 391: -#line 3447 "Gmsh.y" +#line 3449 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} case 392: -#line 3448 "Gmsh.y" +#line 3450 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} case 393: -#line 3449 "Gmsh.y" +#line 3451 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 394: -#line 3450 "Gmsh.y" +#line 3452 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 395: -#line 3451 "Gmsh.y" +#line 3453 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 396: -#line 3452 "Gmsh.y" +#line 3454 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 397: -#line 3454 "Gmsh.y" +#line 3456 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} case 398: -#line 3455 "Gmsh.y" +#line 3457 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} case 399: -#line 3456 "Gmsh.y" +#line 3458 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} case 400: -#line 3457 "Gmsh.y" +#line 3459 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} case 401: -#line 3458 "Gmsh.y" +#line 3460 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} case 402: -#line 3459 "Gmsh.y" +#line 3461 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} case 403: -#line 3460 "Gmsh.y" +#line 3462 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} case 404: -#line 3461 "Gmsh.y" +#line 3463 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} case 405: -#line 3462 "Gmsh.y" +#line 3464 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} case 406: -#line 3463 "Gmsh.y" +#line 3465 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} case 407: -#line 3464 "Gmsh.y" +#line 3466 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} case 408: -#line 3465 "Gmsh.y" +#line 3467 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} case 409: -#line 3466 "Gmsh.y" +#line 3468 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} case 410: -#line 3467 "Gmsh.y" +#line 3469 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} case 411: -#line 3468 "Gmsh.y" +#line 3470 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} case 412: -#line 3469 "Gmsh.y" +#line 3471 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} case 413: -#line 3470 "Gmsh.y" +#line 3472 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} case 414: -#line 3471 "Gmsh.y" +#line 3473 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 415: -#line 3472 "Gmsh.y" +#line 3474 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 416: -#line 3473 "Gmsh.y" +#line 3475 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 417: -#line 3474 "Gmsh.y" +#line 3476 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 418: -#line 3483 "Gmsh.y" +#line 3485 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 419: -#line 3484 "Gmsh.y" +#line 3486 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} case 420: -#line 3485 "Gmsh.y" +#line 3487 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} case 421: -#line 3486 "Gmsh.y" +#line 3488 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} case 422: -#line 3491 "Gmsh.y" +#line 3493 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[0].c; @@ -8403,7 +8405,7 @@ case 422: ; break;} case 423: -#line 3503 "Gmsh.y" +#line 3505 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-3].c; @@ -8424,7 +8426,7 @@ case 423: ; break;} case 424: -#line 3522 "Gmsh.y" +#line 3524 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-2].c; @@ -8439,7 +8441,7 @@ case 424: ; break;} case 425: -#line 3535 "Gmsh.y" +#line 3537 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-1].c; @@ -8453,7 +8455,7 @@ case 425: ; break;} case 426: -#line 3547 "Gmsh.y" +#line 3549 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-4].c; @@ -8474,7 +8476,7 @@ case 426: ; break;} case 427: -#line 3569 "Gmsh.y" +#line 3571 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -8493,7 +8495,7 @@ case 427: ; break;} case 428: -#line 3586 "Gmsh.y" +#line 3588 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -8512,7 +8514,7 @@ case 428: ; break;} case 429: -#line 3603 "Gmsh.y" +#line 3605 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -8531,7 +8533,7 @@ case 429: ; break;} case 430: -#line 3620 "Gmsh.y" +#line 3622 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -8550,136 +8552,136 @@ case 430: ; break;} case 431: -#line 3637 "Gmsh.y" +#line 3639 "Gmsh.y" { yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d); ; break;} case 432: -#line 3644 "Gmsh.y" +#line 3646 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)); ; break;} case 433: -#line 3648 "Gmsh.y" +#line 3650 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i]; ; break;} case 434: -#line 3652 "Gmsh.y" +#line 3654 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} case 435: -#line 3656 "Gmsh.y" +#line 3658 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i]; ; break;} case 436: -#line 3660 "Gmsh.y" +#line 3662 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i]; ; break;} case 437: -#line 3667 "Gmsh.y" +#line 3669 "Gmsh.y" { yyval.v[0] = yyvsp[-9].d; yyval.v[1] = yyvsp[-7].d; yyval.v[2] = yyvsp[-5].d; yyval.v[3] = yyvsp[-3].d; yyval.v[4] = yyvsp[-1].d; ; break;} case 438: -#line 3671 "Gmsh.y" +#line 3673 "Gmsh.y" { yyval.v[0] = yyvsp[-7].d; yyval.v[1] = yyvsp[-5].d; yyval.v[2] = yyvsp[-3].d; yyval.v[3] = yyvsp[-1].d; yyval.v[4] = 1.0; ; break;} case 439: -#line 3675 "Gmsh.y" +#line 3677 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} case 440: -#line 3679 "Gmsh.y" +#line 3681 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} case 441: -#line 3686 "Gmsh.y" +#line 3688 "Gmsh.y" { ; break;} case 442: -#line 3689 "Gmsh.y" +#line 3691 "Gmsh.y" { ; break;} case 443: -#line 3695 "Gmsh.y" +#line 3697 "Gmsh.y" { ; break;} case 444: -#line 3698 "Gmsh.y" +#line 3700 "Gmsh.y" { ; break;} case 445: -#line 3704 "Gmsh.y" +#line 3706 "Gmsh.y" { ; break;} case 446: -#line 3707 "Gmsh.y" +#line 3709 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 447: -#line 3711 "Gmsh.y" +#line 3713 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 448: -#line 3718 "Gmsh.y" +#line 3720 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(List_T*)); List_Add(yyval.l, &(yyvsp[0].l)); ; break;} case 449: -#line 3723 "Gmsh.y" +#line 3725 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)); ; break;} case 450: -#line 3731 "Gmsh.y" +#line 3733 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 451: -#line 3736 "Gmsh.y" +#line 3738 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 452: -#line 3740 "Gmsh.y" +#line 3742 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 453: -#line 3744 "Gmsh.y" +#line 3746 "Gmsh.y" { yyval.l = yyvsp[-1].l; double *pd; @@ -8690,7 +8692,7 @@ case 453: ; break;} case 454: -#line 3756 "Gmsh.y" +#line 3758 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); for(double d = yyvsp[-2].d; (yyvsp[-2].d < yyvsp[0].d) ? (d <= yyvsp[0].d) : (d >= yyvsp[0].d); (yyvsp[-2].d < yyvsp[0].d) ? (d += 1.) : (d -= 1.)) @@ -8698,7 +8700,7 @@ case 454: ; break;} case 455: -#line 3762 "Gmsh.y" +#line 3764 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); if(!yyvsp[0].d || (yyvsp[-4].d < yyvsp[-2].d && yyvsp[0].d < 0) || (yyvsp[-4].d > yyvsp[-2].d && yyvsp[0].d > 0)){ @@ -8711,7 +8713,7 @@ case 455: ; break;} case 456: -#line 3773 "Gmsh.y" +#line 3775 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -8733,7 +8735,7 @@ case 456: ; break;} case 457: -#line 3793 "Gmsh.y" +#line 3795 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -8745,7 +8747,7 @@ case 457: ; break;} case 458: -#line 3803 "Gmsh.y" +#line 3805 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -8757,7 +8759,7 @@ case 458: ; break;} case 459: -#line 3813 "Gmsh.y" +#line 3815 "Gmsh.y" { // FIXME: The syntax for this is ugly: we get double semi-colons // at the end of the line @@ -8771,7 +8773,7 @@ case 459: ; break;} case 460: -#line 3825 "Gmsh.y" +#line 3827 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -8789,7 +8791,7 @@ case 460: ; break;} case 461: -#line 3841 "Gmsh.y" +#line 3843 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -8809,7 +8811,7 @@ case 461: ; break;} case 462: -#line 3859 "Gmsh.y" +#line 3861 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -8834,7 +8836,7 @@ case 462: ; break;} case 463: -#line 3882 "Gmsh.y" +#line 3884 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -8861,26 +8863,26 @@ case 463: ; break;} case 464: -#line 3910 "Gmsh.y" +#line 3912 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 465: -#line 3915 "Gmsh.y" +#line 3917 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 466: -#line 3919 "Gmsh.y" +#line 3921 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 467: -#line 3923 "Gmsh.y" +#line 3925 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ double d; @@ -8891,19 +8893,19 @@ case 467: ; break;} case 468: -#line 3936 "Gmsh.y" +#line 3938 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} case 469: -#line 3940 "Gmsh.y" +#line 3942 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} case 470: -#line 3952 "Gmsh.y" +#line 3954 "Gmsh.y" { int flag; yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); @@ -8911,7 +8913,7 @@ case 470: ; break;} case 471: -#line 3958 "Gmsh.y" +#line 3960 "Gmsh.y" { unsigned int (*pColOpt)(int num, int action, unsigned int value); StringXColor *pColCat; @@ -8931,13 +8933,13 @@ case 471: ; break;} case 472: -#line 3979 "Gmsh.y" +#line 3981 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 473: -#line 3983 "Gmsh.y" +#line 3985 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -8950,26 +8952,26 @@ case 473: ; break;} case 474: -#line 3997 "Gmsh.y" +#line 3999 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); List_Add(yyval.l, &(yyvsp[0].u)); ; break;} case 475: -#line 4002 "Gmsh.y" +#line 4004 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)); ; break;} case 476: -#line 4009 "Gmsh.y" +#line 4011 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} case 477: -#line 4013 "Gmsh.y" +#line 4015 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)); strcpy(yyval.c, yyvsp[-3].c); @@ -8979,7 +8981,7 @@ case 477: ; break;} case 478: -#line 4021 "Gmsh.y" +#line 4023 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -8995,13 +8997,13 @@ case 478: ; break;} case 479: -#line 4035 "Gmsh.y" +#line 4037 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} case 480: -#line 4039 "Gmsh.y" +#line 4041 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring); @@ -9022,7 +9024,7 @@ case 480: ; break;} case 481: -#line 4058 "Gmsh.y" +#line 4060 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -9040,7 +9042,7 @@ case 481: ; break;} case 482: -#line 4074 "Gmsh.y" +#line 4076 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -9279,7 +9281,7 @@ yyerrhandle: } return 1; } -#line 4091 "Gmsh.y" +#line 4093 "Gmsh.y" void DeleteSymbol(void *a, void *b){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index a68539e7665c4be392df1840b0d05a4d9c73ec49..6582b8e417e02573b4fe426fe1bf25da218b902b 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,5 +1,5 @@ %{ -// $Id: Gmsh.y,v 1.191 2004-12-30 00:30:04 geuzaine Exp $ +// $Id: Gmsh.y,v 1.192 2004-12-30 01:36:15 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -2661,31 +2661,33 @@ Loop : } | tEndFor { - double x0 = LoopControlVariablesTab[ImbricatedLoop-1][0]; - double x1 = LoopControlVariablesTab[ImbricatedLoop-1][1]; - double step = LoopControlVariablesTab[ImbricatedLoop-1][2]; - int do_next = (step > 0.) ? (x0+step <= x1) : (x0+step >= x1); - if(do_next){ - LoopControlVariablesTab[ImbricatedLoop-1][0] += - LoopControlVariablesTab[ImbricatedLoop-1][2]; - if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ - Symbol TheSymbol; - TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; - Symbol *pSymbol; - if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) - yymsg(GERROR, "Unknown loop variable"); - else - *(double*)List_Pointer_Fast(pSymbol->val, 0) += - LoopControlVariablesTab[ImbricatedLoop-1][2]; - } - fsetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]); - yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1]; + if(ImbricatedLoop <= 0){ + yymsg(GERROR, "Invalid For/EndFor loop"); + ImbricatedLoop = 0; } else{ - ImbricatedLoop--; - if(ImbricatedLoop < 0){ - yymsg(GERROR, "Problem with imbricated loops"); - ImbricatedLoop = 0; + double x0 = LoopControlVariablesTab[ImbricatedLoop-1][0]; + double x1 = LoopControlVariablesTab[ImbricatedLoop-1][1]; + double step = LoopControlVariablesTab[ImbricatedLoop-1][2]; + int do_next = (step > 0.) ? (x0+step <= x1) : (x0+step >= x1); + if(do_next){ + LoopControlVariablesTab[ImbricatedLoop-1][0] += + LoopControlVariablesTab[ImbricatedLoop-1][2]; + if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ + Symbol TheSymbol; + TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; + Symbol *pSymbol; + if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) + yymsg(GERROR, "Unknown loop variable"); + else + *(double*)List_Pointer_Fast(pSymbol->val, 0) += + LoopControlVariablesTab[ImbricatedLoop-1][2]; + } + fsetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]); + yylineno = yylinenoImbricatedLoopsTab[ImbricatedLoop-1]; + } + else{ + ImbricatedLoop--; } } } diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index cd6f21bf31fe9d7b7e9639b0e3d4b0ccc88a896e..de5a4b67347dd761b988989b6e0753aac8412ade 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.218 2004-12-30 00:32:17 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.219 2004-12-30 01:36:15 geuzaine Exp $ */ #define FLEX_SCANNER @@ -1033,7 +1033,7 @@ char *yytext; #line 1 "Gmsh.l" #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.218 2004-12-30 00:32:17 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.219 2004-12-30 01:36:15 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle //