Changeset 2779


Ignore:
Timestamp:
Jun 24, 2013, 12:53:25 AM (6 years ago)
Author:
sam
Message:

base: disable exceptions in Bison-generated parsers.

Location:
trunk/src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/easymesh/easymesh-parser.y

    r2410 r2779  
    2121#include <string>
    2222
     23/* HACK: workaround for Bison who insists on using exceptions */
     24#define try if (true)
     25#define catch(...) if (false)
     26#define throw (void)0
    2327%}
    2428
  • trunk/src/generated/easymesh-parser.cpp

    r2506 r2779  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
    22
    33/* Skeleton implementation for Bison LALR(1) parsers in C++
    44   
    5       Copyright (C) 2002-2011 Free Software Foundation, Inc.
     5      Copyright (C) 2002-2013 Free Software Foundation, Inc.
    66   
    77   This program is free software: you can redistribute it and/or modify
     
    3535
    3636/* First part of user declarations.  */
    37 
    38 /* Line 293 of lalr1.cc  */
     37/* Line 283 of lalr1.cc  */
    3938#line 1 "easymesh/easymesh-parser.y"
    4039
     
    6059#include <string>
    6160
    62 
    63 
    64 /* Line 293 of lalr1.cc  */
    65 #line 66 "generated/easymesh-parser.cpp"
     61/* HACK: workaround for Bison who insists on using exceptions */
     62#define try if (true)
     63#define catch(...) if (false)
     64#define throw (void)0
     65
     66/* Line 283 of lalr1.cc  */
     67#line 68 "generated/easymesh-parser.cpp"
    6668
    6769
     
    6971
    7072/* User implementation prologue.  */
    71 
    72 /* Line 299 of lalr1.cc  */
    73 #line 66 "easymesh/easymesh-parser.y"
     73/* Line 289 of lalr1.cc  */
     74#line 70 "easymesh/easymesh-parser.y"
    7475
    7576#include "easymesh/easymesh-compiler.h"
     
    7879#define yylex mc.m_lexer->lex
    7980
    80 
    81 /* Line 299 of lalr1.cc  */
     81/* Line 289 of lalr1.cc  */
    8282#line 83 "generated/easymesh-parser.cpp"
     83
     84
     85# ifndef YY_NULL
     86#  if defined __cplusplus && 201103L <= __cplusplus
     87#   define YY_NULL nullptr
     88#  else
     89#   define YY_NULL 0
     90#  endif
     91# endif
    8392
    8493#ifndef YY_
     
    94103#endif
    95104
     105#define YYRHSLOC(Rhs, K) ((Rhs)[K])
    96106/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    97107   If N is 0, then set CURRENT to the empty location which ends
    98108   the previous symbol: RHS[0] (always defined).  */
    99109
    100 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
    101 #ifndef YYLLOC_DEFAULT
    102 # define YYLLOC_DEFAULT(Current, Rhs, N)                               \
    103  do                                                                    \
    104    if (N)                                                              \
    105      {                                                                 \
    106        (Current).begin = YYRHSLOC (Rhs, 1).begin;                      \
    107        (Current).end   = YYRHSLOC (Rhs, N).end;                        \
    108      }                                                                 \
    109    else                                                                \
    110      {                                                                 \
    111        (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;        \
    112      }                                                                 \
    113  while (false)
    114 #endif
     110# ifndef YYLLOC_DEFAULT
     111#  define YYLLOC_DEFAULT(Current, Rhs, N)                               \
     112    do                                                                  \
     113      if (N)                                                            \
     114        {                                                               \
     115          (Current).begin  = YYRHSLOC (Rhs, 1).begin;                   \
     116          (Current).end    = YYRHSLOC (Rhs, N).end;                     \
     117        }                                                               \
     118      else                                                              \
     119        {                                                               \
     120          (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
     121        }                                                               \
     122    while (/*CONSTCOND*/ false)
     123# endif
     124
    115125
    116126/* Suppress unused-variable warnings by "using" E.  */
     
    148158
    149159# define YYCDEBUG if (false) std::cerr
    150 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
    151 # define YY_REDUCE_PRINT(Rule)
    152 # define YY_STACK_PRINT()
     160# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type)
     161# define YY_REDUCE_PRINT(Rule)        static_cast<void>(0)
     162# define YY_STACK_PRINT()             static_cast<void>(0)
    153163
    154164#endif /* !YYDEBUG */
     
    164174
    165175namespace lol {
    166 
    167 /* Line 382 of lalr1.cc  */
    168 #line 169 "generated/easymesh-parser.cpp"
     176/* Line 357 of lalr1.cc  */
     177#line 178 "generated/easymesh-parser.cpp"
    169178
    170179  /* Return YYSTR after stripping away unnecessary quotes and
     
    232241    YYUSE (yylocationp);
    233242    YYUSE (yyvaluep);
    234     switch (yytype)
    235       {
    236          default:
    237           break;
    238       }
     243    std::ostream& yyo = debug_stream ();
     244    std::ostream& yyoutput = yyo;
     245    YYUSE (yyoutput);
     246    YYUSE (yytype);
    239247  }
    240248
     
    260268    YYUSE (yyvaluep);
    261269
    262     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    263 
    264     switch (yytype)
    265       {
    266  
    267         default:
    268           break;
    269       }
     270    if (yymsg)
     271      YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
     272
     273    YYUSE (yytype);
    270274  }
    271275
     
    324328    int yytoken = 0;
    325329
    326     /* State.  */
     330    // State.
    327331    int yyn;
    328332    int yylen = 0;
    329333    int yystate = 0;
    330334
    331     /* Error handling.  */
     335    // Error handling.
    332336    int yynerrs_ = 0;
    333337    int yyerrstatus_ = 0;
    334338
    335339    /// Semantic value of the lookahead.
    336     semantic_type yylval;
     340    static semantic_type yyval_default;
     341    semantic_type yylval = yyval_default;
    337342    /// Location of the lookahead.
    338343    location_type yylloc;
     
    347352    int yyresult;
    348353
     354    // FIXME: This shoud be completely indented.  It is not yet to
     355    // avoid gratuitous conflicts when merging into the master branch.
     356    try
     357      {
    349358    YYCDEBUG << "Starting parse" << std::endl;
    350359
     
    354363       location values to have been already stored, initialize these
    355364       stacks with a primary value.  */
    356     yystate_stack_ = state_stack_type (0);
    357     yysemantic_stack_ = semantic_stack_type (0);
    358     yylocation_stack_ = location_stack_type (0);
     365    yystate_stack_.clear ();
     366    yysemantic_stack_.clear ();
     367    yylocation_stack_.clear ();
    359368    yysemantic_stack_.push (yylval);
    360369    yylocation_stack_.push (yylloc);
     
    382391    if (yychar == yyempty_)
    383392      {
    384         YYCDEBUG << "Reading a token: ";
    385         yychar = yylex (&yylval, &yylloc);
     393        YYCDEBUG << "Reading a token: ";
     394        yychar = yylex (&yylval, &yylloc);
    386395      }
    387 
    388396
    389397    /* Convert token to internal form.  */
     
    457465      yyval = yysemantic_stack_[0];
    458466
     467    // Compute the default @$.
    459468    {
    460469      slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
    461470      YYLLOC_DEFAULT (yyloc, slice, yylen);
    462471    }
     472
     473    // Perform the reduction.
    463474    YY_REDUCE_PRINT (yyn);
    464475    switch (yyn)
    465476      {
    466           case 7:
    467 
    468 /* Line 690 of lalr1.cc  */
    469 #line 90 "easymesh/easymesh-parser.y"
     477          case 7:
     478/* Line 664 of lalr1.cc  */
     479#line 94 "easymesh/easymesh-parser.y"
    470480    { mc.m_mesh.OpenBrace(); }
    471481    break;
    472482
    473483  case 8:
    474 
    475 /* Line 690 of lalr1.cc  */
    476 #line 94 "easymesh/easymesh-parser.y"
     484/* Line 664 of lalr1.cc  */
     485#line 98 "easymesh/easymesh-parser.y"
    477486    { mc.m_mesh.CloseBrace(); }
    478487    break;
    479488
    480489  case 14:
    481 
    482 /* Line 690 of lalr1.cc  */
    483 #line 109 "easymesh/easymesh-parser.y"
     490/* Line 664 of lalr1.cc  */
     491#line 113 "easymesh/easymesh-parser.y"
    484492    { mc.m_mesh.SetCurColor(vec4((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3)); }
    485493    break;
    486494
    487495  case 15:
    488 
    489 /* Line 690 of lalr1.cc  */
    490 #line 110 "easymesh/easymesh-parser.y"
     496/* Line 664 of lalr1.cc  */
     497#line 114 "easymesh/easymesh-parser.y"
    491498    { uint32_t x = (yysemantic_stack_[(2) - (2)].u32val);
    492499                      vec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff);
     
    495502
    496503  case 16:
    497 
    498 /* Line 690 of lalr1.cc  */
    499 #line 113 "easymesh/easymesh-parser.y"
     504/* Line 664 of lalr1.cc  */
     505#line 117 "easymesh/easymesh-parser.y"
    500506    { mc.m_mesh.SetCurColor2(vec4((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3)); }
    501507    break;
    502508
    503509  case 17:
    504 
    505 /* Line 690 of lalr1.cc  */
    506 #line 114 "easymesh/easymesh-parser.y"
     510/* Line 664 of lalr1.cc  */
     511#line 118 "easymesh/easymesh-parser.y"
    507512    { uint32_t x = (yysemantic_stack_[(2) - (2)].u32val);
    508513                      vec4 v(x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff);
     
    511516
    512517  case 18:
    513 
    514 /* Line 690 of lalr1.cc  */
    515 #line 120 "easymesh/easymesh-parser.y"
     518/* Line 664 of lalr1.cc  */
     519#line 124 "easymesh/easymesh-parser.y"
    516520    { mc.m_mesh.Chamfer((yysemantic_stack_[(2) - (2)].args).f0); }
    517521    break;
    518522
    519523  case 19:
    520 
    521 /* Line 690 of lalr1.cc  */
    522 #line 121 "easymesh/easymesh-parser.y"
     524/* Line 664 of lalr1.cc  */
     525#line 125 "easymesh/easymesh-parser.y"
    523526    { mc.m_mesh.Translate(vec3((yysemantic_stack_[(2) - (2)].args).f0, 0, 0)); }
    524527    break;
    525528
    526529  case 20:
    527 
    528 /* Line 690 of lalr1.cc  */
    529 #line 122 "easymesh/easymesh-parser.y"
     530/* Line 664 of lalr1.cc  */
     531#line 126 "easymesh/easymesh-parser.y"
    530532    { mc.m_mesh.Translate(vec3(0, (yysemantic_stack_[(2) - (2)].args).f0, 0)); }
    531533    break;
    532534
    533535  case 21:
    534 
    535 /* Line 690 of lalr1.cc  */
    536 #line 123 "easymesh/easymesh-parser.y"
     536/* Line 664 of lalr1.cc  */
     537#line 127 "easymesh/easymesh-parser.y"
    537538    { mc.m_mesh.Translate(vec3(0, 0, (yysemantic_stack_[(2) - (2)].args).f0)); }
    538539    break;
    539540
    540541  case 22:
    541 
    542 /* Line 690 of lalr1.cc  */
    543 #line 124 "easymesh/easymesh-parser.y"
     542/* Line 664 of lalr1.cc  */
     543#line 128 "easymesh/easymesh-parser.y"
    544544    { mc.m_mesh.Translate(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2)); }
    545545    break;
    546546
    547547  case 23:
    548 
    549 /* Line 690 of lalr1.cc  */
    550 #line 125 "easymesh/easymesh-parser.y"
     548/* Line 664 of lalr1.cc  */
     549#line 129 "easymesh/easymesh-parser.y"
    551550    { mc.m_mesh.RotateX((yysemantic_stack_[(2) - (2)].args).f0); }
    552551    break;
    553552
    554553  case 24:
    555 
    556 /* Line 690 of lalr1.cc  */
    557 #line 126 "easymesh/easymesh-parser.y"
     554/* Line 664 of lalr1.cc  */
     555#line 130 "easymesh/easymesh-parser.y"
    558556    { mc.m_mesh.RotateY((yysemantic_stack_[(2) - (2)].args).f0); }
    559557    break;
    560558
    561559  case 25:
    562 
    563 /* Line 690 of lalr1.cc  */
    564 #line 127 "easymesh/easymesh-parser.y"
     560/* Line 664 of lalr1.cc  */
     561#line 131 "easymesh/easymesh-parser.y"
    565562    { mc.m_mesh.RotateZ((yysemantic_stack_[(2) - (2)].args).f0); }
    566563    break;
    567564
    568565  case 26:
    569 
    570 /* Line 690 of lalr1.cc  */
    571 #line 128 "easymesh/easymesh-parser.y"
     566/* Line 664 of lalr1.cc  */
     567#line 132 "easymesh/easymesh-parser.y"
    572568    { mc.m_mesh.TaperX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    573569    break;
    574570
    575571  case 27:
    576 
    577 /* Line 690 of lalr1.cc  */
    578 #line 129 "easymesh/easymesh-parser.y"
     572/* Line 664 of lalr1.cc  */
     573#line 133 "easymesh/easymesh-parser.y"
    579574    { mc.m_mesh.TaperX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
    580575    break;
    581576
    582577  case 28:
    583 
    584 /* Line 690 of lalr1.cc  */
    585 #line 130 "easymesh/easymesh-parser.y"
     578/* Line 664 of lalr1.cc  */
     579#line 134 "easymesh/easymesh-parser.y"
    586580    { mc.m_mesh.TaperY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    587581    break;
    588582
    589583  case 29:
    590 
    591 /* Line 690 of lalr1.cc  */
    592 #line 131 "easymesh/easymesh-parser.y"
     584/* Line 664 of lalr1.cc  */
     585#line 135 "easymesh/easymesh-parser.y"
    593586    { mc.m_mesh.TaperY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
    594587    break;
    595588
    596589  case 30:
    597 
    598 /* Line 690 of lalr1.cc  */
    599 #line 132 "easymesh/easymesh-parser.y"
     590/* Line 664 of lalr1.cc  */
     591#line 136 "easymesh/easymesh-parser.y"
    600592    { mc.m_mesh.TaperZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    601593    break;
    602594
    603595  case 31:
    604 
    605 /* Line 690 of lalr1.cc  */
    606 #line 133 "easymesh/easymesh-parser.y"
     596/* Line 664 of lalr1.cc  */
     597#line 137 "easymesh/easymesh-parser.y"
    607598    { mc.m_mesh.TaperZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
    608599    break;
    609600
    610601  case 32:
    611 
    612 /* Line 690 of lalr1.cc  */
    613 #line 134 "easymesh/easymesh-parser.y"
     602/* Line 664 of lalr1.cc  */
     603#line 138 "easymesh/easymesh-parser.y"
    614604    { mc.m_mesh.TwistX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    615605    break;
    616606
    617607  case 33:
    618 
    619 /* Line 690 of lalr1.cc  */
    620 #line 135 "easymesh/easymesh-parser.y"
     608/* Line 664 of lalr1.cc  */
     609#line 139 "easymesh/easymesh-parser.y"
    621610    { mc.m_mesh.TwistY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    622611    break;
    623612
    624613  case 34:
    625 
    626 /* Line 690 of lalr1.cc  */
    627 #line 136 "easymesh/easymesh-parser.y"
     614/* Line 664 of lalr1.cc  */
     615#line 140 "easymesh/easymesh-parser.y"
    628616    { mc.m_mesh.TwistZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    629617    break;
    630618
    631619  case 35:
    632 
    633 /* Line 690 of lalr1.cc  */
    634 #line 137 "easymesh/easymesh-parser.y"
     620/* Line 664 of lalr1.cc  */
     621#line 141 "easymesh/easymesh-parser.y"
    635622    { mc.m_mesh.ShearX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    636623    break;
    637624
    638625  case 36:
    639 
    640 /* Line 690 of lalr1.cc  */
    641 #line 138 "easymesh/easymesh-parser.y"
     626/* Line 664 of lalr1.cc  */
     627#line 142 "easymesh/easymesh-parser.y"
    642628    { mc.m_mesh.ShearX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
    643629    break;
    644630
    645631  case 37:
    646 
    647 /* Line 690 of lalr1.cc  */
    648 #line 139 "easymesh/easymesh-parser.y"
     632/* Line 664 of lalr1.cc  */
     633#line 143 "easymesh/easymesh-parser.y"
    649634    { mc.m_mesh.ShearY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    650635    break;
    651636
    652637  case 38:
    653 
    654 /* Line 690 of lalr1.cc  */
    655 #line 140 "easymesh/easymesh-parser.y"
     638/* Line 664 of lalr1.cc  */
     639#line 144 "easymesh/easymesh-parser.y"
    656640    { mc.m_mesh.ShearY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
    657641    break;
    658642
    659643  case 39:
    660 
    661 /* Line 690 of lalr1.cc  */
    662 #line 141 "easymesh/easymesh-parser.y"
     644/* Line 664 of lalr1.cc  */
     645#line 145 "easymesh/easymesh-parser.y"
    663646    { mc.m_mesh.ShearZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    664647    break;
    665648
    666649  case 40:
    667 
    668 /* Line 690 of lalr1.cc  */
    669 #line 142 "easymesh/easymesh-parser.y"
     650/* Line 664 of lalr1.cc  */
     651#line 146 "easymesh/easymesh-parser.y"
    670652    { mc.m_mesh.ShearZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
    671653    break;
    672654
    673655  case 41:
    674 
    675 /* Line 690 of lalr1.cc  */
    676 #line 143 "easymesh/easymesh-parser.y"
     656/* Line 664 of lalr1.cc  */
     657#line 147 "easymesh/easymesh-parser.y"
    677658    { mc.m_mesh.StretchX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    678659    break;
    679660
    680661  case 42:
    681 
    682 /* Line 690 of lalr1.cc  */
    683 #line 144 "easymesh/easymesh-parser.y"
     662/* Line 664 of lalr1.cc  */
     663#line 148 "easymesh/easymesh-parser.y"
    684664    { mc.m_mesh.StretchY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    685665    break;
    686666
    687667  case 43:
    688 
    689 /* Line 690 of lalr1.cc  */
    690 #line 145 "easymesh/easymesh-parser.y"
     668/* Line 664 of lalr1.cc  */
     669#line 149 "easymesh/easymesh-parser.y"
    691670    { mc.m_mesh.StretchZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    692671    break;
    693672
    694673  case 44:
    695 
    696 /* Line 690 of lalr1.cc  */
    697 #line 146 "easymesh/easymesh-parser.y"
     674/* Line 664 of lalr1.cc  */
     675#line 150 "easymesh/easymesh-parser.y"
    698676    { mc.m_mesh.BendXY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    699677    break;
    700678
    701679  case 45:
    702 
    703 /* Line 690 of lalr1.cc  */
    704 #line 147 "easymesh/easymesh-parser.y"
     680/* Line 664 of lalr1.cc  */
     681#line 151 "easymesh/easymesh-parser.y"
    705682    { mc.m_mesh.BendXZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    706683    break;
    707684
    708685  case 46:
    709 
    710 /* Line 690 of lalr1.cc  */
    711 #line 148 "easymesh/easymesh-parser.y"
     686/* Line 664 of lalr1.cc  */
     687#line 152 "easymesh/easymesh-parser.y"
    712688    { mc.m_mesh.BendYX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    713689    break;
    714690
    715691  case 47:
    716 
    717 /* Line 690 of lalr1.cc  */
    718 #line 149 "easymesh/easymesh-parser.y"
     692/* Line 664 of lalr1.cc  */
     693#line 153 "easymesh/easymesh-parser.y"
    719694    { mc.m_mesh.BendYZ((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    720695    break;
    721696
    722697  case 48:
    723 
    724 /* Line 690 of lalr1.cc  */
    725 #line 150 "easymesh/easymesh-parser.y"
     698/* Line 664 of lalr1.cc  */
     699#line 154 "easymesh/easymesh-parser.y"
    726700    { mc.m_mesh.BendZX((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    727701    break;
    728702
    729703  case 49:
    730 
    731 /* Line 690 of lalr1.cc  */
    732 #line 151 "easymesh/easymesh-parser.y"
     704/* Line 664 of lalr1.cc  */
     705#line 155 "easymesh/easymesh-parser.y"
    733706    { mc.m_mesh.BendZY((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    734707    break;
    735708
    736709  case 50:
    737 
    738 /* Line 690 of lalr1.cc  */
    739 #line 152 "easymesh/easymesh-parser.y"
     710/* Line 664 of lalr1.cc  */
     711#line 156 "easymesh/easymesh-parser.y"
    740712    { mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].args).f0, 1.0, 1.0)); }
    741713    break;
    742714
    743715  case 51:
    744 
    745 /* Line 690 of lalr1.cc  */
    746 #line 153 "easymesh/easymesh-parser.y"
     716/* Line 664 of lalr1.cc  */
     717#line 157 "easymesh/easymesh-parser.y"
    747718    { mc.m_mesh.Scale(vec3(1.0, (yysemantic_stack_[(2) - (2)].args).f0, 1.0)); }
    748719    break;
    749720
    750721  case 52:
    751 
    752 /* Line 690 of lalr1.cc  */
    753 #line 154 "easymesh/easymesh-parser.y"
     722/* Line 664 of lalr1.cc  */
     723#line 158 "easymesh/easymesh-parser.y"
    754724    { mc.m_mesh.Scale(vec3(1.0, 1.0, (yysemantic_stack_[(2) - (2)].args).f0)); }
    755725    break;
    756726
    757727  case 53:
    758 
    759 /* Line 690 of lalr1.cc  */
    760 #line 155 "easymesh/easymesh-parser.y"
     728/* Line 664 of lalr1.cc  */
     729#line 159 "easymesh/easymesh-parser.y"
    761730    { mc.m_mesh.Scale(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2)); }
    762731    break;
    763732
    764733  case 54:
    765 
    766 /* Line 690 of lalr1.cc  */
    767 #line 156 "easymesh/easymesh-parser.y"
     734/* Line 664 of lalr1.cc  */
     735#line 160 "easymesh/easymesh-parser.y"
    768736    { mc.m_mesh.MirrorX(); }
    769737    break;
    770738
    771739  case 55:
    772 
    773 /* Line 690 of lalr1.cc  */
    774 #line 157 "easymesh/easymesh-parser.y"
     740/* Line 664 of lalr1.cc  */
     741#line 161 "easymesh/easymesh-parser.y"
    775742    { mc.m_mesh.MirrorY(); }
    776743    break;
    777744
    778745  case 56:
    779 
    780 /* Line 690 of lalr1.cc  */
    781 #line 158 "easymesh/easymesh-parser.y"
     746/* Line 664 of lalr1.cc  */
     747#line 162 "easymesh/easymesh-parser.y"
    782748    { mc.m_mesh.MirrorZ(); }
    783749    break;
    784750
    785751  case 57:
    786 
    787 /* Line 690 of lalr1.cc  */
    788 #line 159 "easymesh/easymesh-parser.y"
     752/* Line 664 of lalr1.cc  */
     753#line 163 "easymesh/easymesh-parser.y"
    789754    { mc.m_mesh.RadialJitter((yysemantic_stack_[(2) - (2)].args).f0); }
    790755    break;
    791756
    792757  case 58:
    793 
    794 /* Line 690 of lalr1.cc  */
    795 #line 160 "easymesh/easymesh-parser.y"
     758/* Line 664 of lalr1.cc  */
     759#line 164 "easymesh/easymesh-parser.y"
    796760    { mc.m_mesh.SplitTriangles((yysemantic_stack_[(2) - (2)].args).f0); }
    797761    break;
    798762
    799763  case 59:
    800 
    801 /* Line 690 of lalr1.cc  */
    802 #line 161 "easymesh/easymesh-parser.y"
     764/* Line 664 of lalr1.cc  */
     765#line 165 "easymesh/easymesh-parser.y"
    803766    { mc.m_mesh.SmoothMesh((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    804767    break;
    805768
    806769  case 60:
    807 
    808 /* Line 690 of lalr1.cc  */
    809 #line 162 "easymesh/easymesh-parser.y"
     770/* Line 664 of lalr1.cc  */
     771#line 166 "easymesh/easymesh-parser.y"
    810772    { mc.m_mesh.ToggleScaleWinding(); }
    811773    break;
    812774
    813775  case 61:
    814 
    815 /* Line 690 of lalr1.cc  */
    816 #line 163 "easymesh/easymesh-parser.y"
     776/* Line 664 of lalr1.cc  */
     777#line 167 "easymesh/easymesh-parser.y"
    817778    { mc.m_mesh.CsgUnion(); }
    818779    break;
    819780
    820781  case 62:
    821 
    822 /* Line 690 of lalr1.cc  */
    823 #line 164 "easymesh/easymesh-parser.y"
     782/* Line 664 of lalr1.cc  */
     783#line 168 "easymesh/easymesh-parser.y"
    824784    { mc.m_mesh.CsgSubstract(); }
    825785    break;
    826786
    827787  case 63:
    828 
    829 /* Line 690 of lalr1.cc  */
    830 #line 165 "easymesh/easymesh-parser.y"
     788/* Line 664 of lalr1.cc  */
     789#line 169 "easymesh/easymesh-parser.y"
    831790    { mc.m_mesh.CsgSubstractLoss(); }
    832791    break;
    833792
    834793  case 64:
    835 
    836 /* Line 690 of lalr1.cc  */
    837 #line 166 "easymesh/easymesh-parser.y"
     794/* Line 664 of lalr1.cc  */
     795#line 170 "easymesh/easymesh-parser.y"
    838796    { mc.m_mesh.CsgAnd(); }
    839797    break;
    840798
    841799  case 65:
    842 
    843 /* Line 690 of lalr1.cc  */
    844 #line 167 "easymesh/easymesh-parser.y"
     800/* Line 664 of lalr1.cc  */
     801#line 171 "easymesh/easymesh-parser.y"
    845802    { mc.m_mesh.CsgXor(); }
    846803    break;
    847804
    848805  case 66:
    849 
    850 /* Line 690 of lalr1.cc  */
    851 #line 171 "easymesh/easymesh-parser.y"
     806/* Line 664 of lalr1.cc  */
     807#line 175 "easymesh/easymesh-parser.y"
    852808    { mc.m_mesh.AppendCylinder((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
    853809                                                 (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3,
     
    856812
    857813  case 67:
    858 
    859 /* Line 690 of lalr1.cc  */
    860 #line 174 "easymesh/easymesh-parser.y"
     814/* Line 664 of lalr1.cc  */
     815#line 178 "easymesh/easymesh-parser.y"
    861816    { mc.m_mesh.AppendCylinder((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
    862817                                                 (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3,
     
    865820
    866821  case 68:
    867 
    868 /* Line 690 of lalr1.cc  */
    869 #line 177 "easymesh/easymesh-parser.y"
     822/* Line 664 of lalr1.cc  */
     823#line 181 "easymesh/easymesh-parser.y"
    870824    { mc.m_mesh.AppendBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2)); }
    871825    break;
    872826
    873827  case 69:
    874 
    875 /* Line 690 of lalr1.cc  */
    876 #line 178 "easymesh/easymesh-parser.y"
     828/* Line 664 of lalr1.cc  */
     829#line 182 "easymesh/easymesh-parser.y"
    877830    { mc.m_mesh.AppendSmoothChamfBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
    878831                                                            (yysemantic_stack_[(2) - (2)].args).f2), (yysemantic_stack_[(2) - (2)].args).f3); }
     
    880833
    881834  case 70:
    882 
    883 /* Line 690 of lalr1.cc  */
    884 #line 180 "easymesh/easymesh-parser.y"
     835/* Line 664 of lalr1.cc  */
     836#line 184 "easymesh/easymesh-parser.y"
    885837    { mc.m_mesh.AppendFlatChamfBox(vec3((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
    886838                                                          (yysemantic_stack_[(2) - (2)].args).f2), (yysemantic_stack_[(2) - (2)].args).f3); }
     
    888840
    889841  case 71:
    890 
    891 /* Line 690 of lalr1.cc  */
    892 #line 182 "easymesh/easymesh-parser.y"
     842/* Line 664 of lalr1.cc  */
     843#line 186 "easymesh/easymesh-parser.y"
    893844    { mc.m_mesh.AppendSphere((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1); }
    894845    break;
    895846
    896847  case 72:
    897 
    898 /* Line 690 of lalr1.cc  */
    899 #line 183 "easymesh/easymesh-parser.y"
     848/* Line 664 of lalr1.cc  */
     849#line 187 "easymesh/easymesh-parser.y"
    900850    { mc.m_mesh.AppendCapsule((yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    901851    break;
    902852
    903853  case 73:
    904 
    905 /* Line 690 of lalr1.cc  */
    906 #line 184 "easymesh/easymesh-parser.y"
     854/* Line 664 of lalr1.cc  */
     855#line 188 "easymesh/easymesh-parser.y"
    907856    { mc.m_mesh.AppendTorus((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2); }
    908857    break;
    909858
    910859  case 74:
    911 
    912 /* Line 690 of lalr1.cc  */
    913 #line 185 "easymesh/easymesh-parser.y"
     860/* Line 664 of lalr1.cc  */
     861#line 189 "easymesh/easymesh-parser.y"
    914862    { mc.m_mesh.AppendStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (yysemantic_stack_[(2) - (2)].args).f2,
    915863                                             (int)(yysemantic_stack_[(2) - (2)].args).f3, (int)(yysemantic_stack_[(2) - (2)].args).f4); }
     
    917865
    918866  case 75:
    919 
    920 /* Line 690 of lalr1.cc  */
    921 #line 187 "easymesh/easymesh-parser.y"
     867/* Line 664 of lalr1.cc  */
     868#line 191 "easymesh/easymesh-parser.y"
    922869    { mc.m_mesh.AppendExpandedStar((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
    923870                                                     (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3); }
     
    925872
    926873  case 76:
    927 
    928 /* Line 690 of lalr1.cc  */
    929 #line 189 "easymesh/easymesh-parser.y"
     874/* Line 664 of lalr1.cc  */
     875#line 193 "easymesh/easymesh-parser.y"
    930876    { mc.m_mesh.AppendDisc((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1, (int)(yysemantic_stack_[(2) - (2)].args).f2); }
    931877    break;
    932878
    933879  case 77:
    934 
    935 /* Line 690 of lalr1.cc  */
    936 #line 190 "easymesh/easymesh-parser.y"
     880/* Line 664 of lalr1.cc  */
     881#line 194 "easymesh/easymesh-parser.y"
    937882    { mc.m_mesh.AppendSimpleTriangle((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
    938883    break;
    939884
    940885  case 78:
    941 
    942 /* Line 690 of lalr1.cc  */
    943 #line 191 "easymesh/easymesh-parser.y"
     886/* Line 664 of lalr1.cc  */
     887#line 195 "easymesh/easymesh-parser.y"
    944888    { mc.m_mesh.AppendSimpleQuad((yysemantic_stack_[(2) - (2)].args).f0, (int)(yysemantic_stack_[(2) - (2)].args).f1); }
    945889    break;
    946890
    947891  case 79:
    948 
    949 /* Line 690 of lalr1.cc  */
    950 #line 192 "easymesh/easymesh-parser.y"
     892/* Line 664 of lalr1.cc  */
     893#line 196 "easymesh/easymesh-parser.y"
    951894    { mc.m_mesh.AppendCog((int)(yysemantic_stack_[(2) - (2)].args).f0, (yysemantic_stack_[(2) - (2)].args).f1,
    952895                                 (yysemantic_stack_[(2) - (2)].args).f2, (yysemantic_stack_[(2) - (2)].args).f3, (yysemantic_stack_[(2) - (2)].args).f4, (yysemantic_stack_[(2) - (2)].args).f5, (yysemantic_stack_[(2) - (2)].args).f6,
     
    955898
    956899  case 80:
    957 
    958 /* Line 690 of lalr1.cc  */
    959 #line 197 "easymesh/easymesh-parser.y"
     900/* Line 664 of lalr1.cc  */
     901#line 201 "easymesh/easymesh-parser.y"
    960902    { (yyval.args).f0 = (yysemantic_stack_[(1) - (1)].fval); }
    961903    break;
    962904
    963905  case 81:
    964 
    965 /* Line 690 of lalr1.cc  */
    966 #line 198 "easymesh/easymesh-parser.y"
     906/* Line 664 of lalr1.cc  */
     907#line 202 "easymesh/easymesh-parser.y"
    967908    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f1 = (yysemantic_stack_[(2) - (2)].fval); }
    968909    break;
    969910
    970911  case 82:
    971 
    972 /* Line 690 of lalr1.cc  */
    973 #line 199 "easymesh/easymesh-parser.y"
     912/* Line 664 of lalr1.cc  */
     913#line 203 "easymesh/easymesh-parser.y"
    974914    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f2 = (yysemantic_stack_[(2) - (2)].fval); }
    975915    break;
    976916
    977917  case 83:
    978 
    979 /* Line 690 of lalr1.cc  */
    980 #line 200 "easymesh/easymesh-parser.y"
     918/* Line 664 of lalr1.cc  */
     919#line 204 "easymesh/easymesh-parser.y"
    981920    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f3 = (yysemantic_stack_[(2) - (2)].fval); }
    982921    break;
    983922
    984923  case 84:
    985 
    986 /* Line 690 of lalr1.cc  */
    987 #line 201 "easymesh/easymesh-parser.y"
     924/* Line 664 of lalr1.cc  */
     925#line 205 "easymesh/easymesh-parser.y"
    988926    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f4 = (yysemantic_stack_[(2) - (2)].fval); }
    989927    break;
    990928
    991929  case 85:
    992 
    993 /* Line 690 of lalr1.cc  */
    994 #line 202 "easymesh/easymesh-parser.y"
     930/* Line 664 of lalr1.cc  */
     931#line 206 "easymesh/easymesh-parser.y"
    995932    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f5 = (yysemantic_stack_[(2) - (2)].fval); }
    996933    break;
    997934
    998935  case 86:
    999 
    1000 /* Line 690 of lalr1.cc  */
    1001 #line 203 "easymesh/easymesh-parser.y"
     936/* Line 664 of lalr1.cc  */
     937#line 207 "easymesh/easymesh-parser.y"
    1002938    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f6 = (yysemantic_stack_[(2) - (2)].fval); }
    1003939    break;
    1004940
    1005941  case 87:
    1006 
    1007 /* Line 690 of lalr1.cc  */
    1008 #line 204 "easymesh/easymesh-parser.y"
     942/* Line 664 of lalr1.cc  */
     943#line 208 "easymesh/easymesh-parser.y"
    1009944    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f7 = (yysemantic_stack_[(2) - (2)].fval); }
    1010945    break;
    1011946
    1012947  case 88:
    1013 
    1014 /* Line 690 of lalr1.cc  */
    1015 #line 205 "easymesh/easymesh-parser.y"
     948/* Line 664 of lalr1.cc  */
     949#line 209 "easymesh/easymesh-parser.y"
    1016950    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f8 = (yysemantic_stack_[(2) - (2)].fval); }
    1017951    break;
    1018952
    1019953  case 89:
    1020 
    1021 /* Line 690 of lalr1.cc  */
    1022 #line 206 "easymesh/easymesh-parser.y"
     954/* Line 664 of lalr1.cc  */
     955#line 210 "easymesh/easymesh-parser.y"
    1023956    { (yyval.args) = (yysemantic_stack_[(2) - (1)].args); (yyval.args).f9 = (yysemantic_stack_[(2) - (2)].fval); }
    1024957    break;
    1025958
    1026959  case 90:
    1027 
    1028 /* Line 690 of lalr1.cc  */
    1029 #line 209 "easymesh/easymesh-parser.y"
     960/* Line 664 of lalr1.cc  */
     961#line 213 "easymesh/easymesh-parser.y"
    1030962    { (yyval.fval) = (yysemantic_stack_[(1) - (1)].fval); }
    1031963    break;
    1032964
    1033965  case 91:
    1034 
    1035 /* Line 690 of lalr1.cc  */
    1036 #line 210 "easymesh/easymesh-parser.y"
     966/* Line 664 of lalr1.cc  */
     967#line 214 "easymesh/easymesh-parser.y"
    1037968    { (yyval.fval) = -(yysemantic_stack_[(2) - (2)].fval); }
    1038969    break;
    1039970
    1040971
    1041 
    1042 /* Line 690 of lalr1.cc  */
    1043 #line 1044 "generated/easymesh-parser.cpp"
    1044         default:
    1045           break;
     972/* Line 664 of lalr1.cc  */
     973#line 974 "generated/easymesh-parser.cpp"
     974      default:
     975        break;
    1046976      }
     977
    1047978    /* User semantic actions sometimes alter yychar, and that requires
    1048979       that yytoken be updated with the new translation.  We take the
     
    10951026    if (yyerrstatus_ == 3)
    10961027      {
    1097         /* If just tried and failed to reuse lookahead token after an
    1098          error, discard it.  */
    1099 
    1100         if (yychar <= yyeof_)
    1101           {
    1102           /* Return failure if at end of input.  */
    1103           if (yychar == yyeof_)
    1104             YYABORT;
    1105           }
    1106         else
    1107           {
    1108             yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
    1109             yychar = yyempty_;
    1110           }
     1028        /* If just tried and failed to reuse lookahead token after an
     1029           error, discard it.  */
     1030        if (yychar <= yyeof_)
     1031          {
     1032            /* Return failure if at end of input.  */
     1033            if (yychar == yyeof_)
     1034              YYABORT;
     1035          }
     1036        else
     1037          {
     1038            yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
     1039            yychar = yyempty_;
     1040          }
    11111041      }
    11121042
     
    11571087        /* Pop the current state because it cannot handle the error token.  */
    11581088        if (yystate_stack_.height () == 1)
    1159         YYABORT;
     1089          YYABORT;
    11601090
    11611091        yyerror_range[1] = yylocation_stack_[0];
     
    12051135       this YYABORT or YYACCEPT.  */
    12061136    yypop_ (yylen);
    1207     while (yystate_stack_.height () != 1)
     1137    while (1 < yystate_stack_.height ())
    12081138      {
    1209         yydestruct_ ("Cleanup: popping",
    1210                    yystos_[yystate_stack_[0]],
    1211                    &yysemantic_stack_[0],
    1212                    &yylocation_stack_[0]);
    1213         yypop_ ();
     1139        yydestruct_ ("Cleanup: popping",
     1140                     yystos_[yystate_stack_[0]],
     1141                     &yysemantic_stack_[0],
     1142                     &yylocation_stack_[0]);
     1143        yypop_ ();
    12141144      }
    12151145
    12161146    return yyresult;
     1147    }
     1148    catch (...)
     1149      {
     1150        YYCDEBUG << "Exception caught: cleaning lookahead and stack"
     1151                 << std::endl;
     1152        // Do not try to display the values of the reclaimed symbols,
     1153        // as their printer might throw an exception.
     1154        if (yychar != yyempty_)
     1155          {
     1156            /* Make sure we have latest lookahead translation.  See
     1157               comments at user semantic actions for why this is
     1158               necessary.  */
     1159            yytoken = yytranslate_ (yychar);
     1160            yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
     1161          }
     1162
     1163        while (1 < yystate_stack_.height ())
     1164          {
     1165            yydestruct_ (YY_NULL,
     1166                         yystos_[yystate_stack_[0]],
     1167                         &yysemantic_stack_[0],
     1168                         &yylocation_stack_[0]);
     1169            yypop_ ();
     1170          }
     1171        throw;
     1172      }
    12171173  }
    12181174
     
    12831239      }
    12841240
    1285     char const* yyformat = 0;
     1241    char const* yyformat = YY_NULL;
    12861242    switch (yycount)
    12871243      {
     
    15211477  };
    15221478
    1523 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     1479
    15241480  /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    15251481     First, the terminals, then, starting at \a yyntokens_, nonterminals.  */
     
    15441500  "color_command", "transform_command", "primitive_command", "args1",
    15451501  "args2", "args3", "args4", "args5", "args6", "args7", "args8", "args9",
    1546   "args10", "number", 0
     1502  "args10", "number", YY_NULL
    15471503  };
    1548 #endif
    15491504
    15501505#if YYDEBUG
     
    16021557  EasyMeshParser::yyrline_[] =
    16031558  {
    1604          0,    76,    76,    80,    81,    85,    86,    90,    94,    98,
    1605       99,   103,   104,   105,   109,   110,   113,   114,   120,   121,
    1606      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
    1607      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
    1608      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
    1609      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
    1610      162,   163,   164,   165,   166,   167,   171,   174,   177,   178,
    1611      180,   182,   183,   184,   185,   187,   189,   190,   191,   192,
    1612      197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
    1613      209,   210
     1559         0,    80,    80,    84,    85,    89,    90,    94,    98,   102,
     1560     103,   107,   108,   109,   113,   114,   117,   118,   124,   125,
     1561     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
     1562     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
     1563     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
     1564     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
     1565     166,   167,   168,   169,   170,   171,   175,   178,   181,   182,
     1566     184,   186,   187,   188,   189,   191,   193,   194,   195,   196,
     1567     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
     1568     213,   214
    16141569  };
    16151570
     
    17041659
    17051660} // lol
    1706 
     1661/* Line 1135 of lalr1.cc  */
     1662#line 1663 "generated/easymesh-parser.cpp"
    17071663/* Line 1136 of lalr1.cc  */
    1708 #line 1709 "generated/easymesh-parser.cpp"
    1709 
    1710 
    1711 /* Line 1138 of lalr1.cc  */
    1712 #line 213 "easymesh/easymesh-parser.y"
     1664#line 217 "easymesh/easymesh-parser.y"
    17131665
    17141666
     
    17191671}
    17201672
    1721 
  • trunk/src/generated/easymesh-parser.h

    r2506 r2779  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
    22
    33/* Skeleton interface for Bison LALR(1) parsers in C++
    44   
    5       Copyright (C) 2002-2011 Free Software Foundation, Inc.
     5      Copyright (C) 2002-2013 Free Software Foundation, Inc.
    66   
    77   This program is free software: you can redistribute it and/or modify
     
    3131   version 2.2 of Bison.  */
    3232
     33/**
     34 ** \file generated/easymesh-parser.h
     35 ** Define the lol::parser class.
     36 */
     37
    3338/* C++ LALR(1) parser skeleton written by Akim Demaille.  */
    3439
    35 #ifndef PARSER_HEADER_H
    36 # define PARSER_HEADER_H
     40#ifndef YY_LOL_GENERATED_EASYMESH_PARSER_H_INCLUDED
     41# define YY_LOL_GENERATED_EASYMESH_PARSER_H_INCLUDED
    3742
    3843
     
    4853#endif
    4954
    50 /* Enabling verbose error messages.  */
    51 #ifdef YYERROR_VERBOSE
    52 # undef YYERROR_VERBOSE
    53 # define YYERROR_VERBOSE 1
    54 #else
    55 # define YYERROR_VERBOSE 1
    56 #endif
    57 
    58 /* Enabling the token table.  */
    59 #ifndef YYTOKEN_TABLE
    60 # define YYTOKEN_TABLE 0
    61 #endif
    62 
    6355
    6456namespace lol {
    65 
    66 /* Line 35 of lalr1.cc  */
    67 #line 68 "generated/easymesh-parser.h"
     57/* Line 33 of lalr1.cc  */
     58#line 59 "generated/easymesh-parser.h"
    6859
    6960  /// A Bison parser.
     
    7566    union semantic_type
    7667    {
    77 
    78 /* Line 35 of lalr1.cc  */
    79 #line 36 "easymesh/easymesh-parser.y"
     68/* Line 33 of lalr1.cc  */
     69#line 40 "easymesh/easymesh-parser.y"
    8070
    8171    float fval;
     
    8575
    8676
    87 
    88 /* Line 35 of lalr1.cc  */
    89 #line 90 "generated/easymesh-parser.h"
     77/* Line 33 of lalr1.cc  */
     78#line 79 "generated/easymesh-parser.h"
    9079    };
    9180#else
     
    189178
    190179  private:
     180    /// This class is not copyable.
     181    EasyMeshParser (const EasyMeshParser&);
     182    EasyMeshParser& operator= (const EasyMeshParser&);
     183
    191184    /// Report a syntax error.
    192185    /// \param loc    where the syntax error is found.
     
    272265    static const unsigned char yyr1_[];
    273266    /// For a rule, its RHS length.
    274     static const unsigned char yyr2_[];
    275 
    276 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     267    static const unsigned char yyr2_[];
     268
     269    /// Convert the symbol name \a n to a form suitable for a diagnostic.
     270    static std::string yytnamerr_ (const char *n);
     271
     272
    277273    /// For a symbol, its name in clear.
    278274    static const char* const yytname_[];
    279 #endif
    280 
    281     /// Convert the symbol name \a n to a form suitable for a diagnostic.
    282     static std::string yytnamerr_ (const char *n);
    283 
    284275#if YYDEBUG
    285276    /// A type to store symbol numbers and -1.
     
    308299    /// \brief Reclaim the memory associated to a symbol.
    309300    /// \param yymsg        Why this token is reclaimed.
     301    ///                     If null, do not display the symbol, just free it.
    310302    /// \param yytype       The symbol type.
    311303    /// \param yyvaluep     Its semantic value.
     
    337329
    338330} // lol
    339 
    340 /* Line 35 of lalr1.cc  */
    341 #line 342 "generated/easymesh-parser.h"
    342 
    343 
    344 
    345 #endif /* ! defined PARSER_HEADER_H */
     331/* Line 33 of lalr1.cc  */
     332#line 333 "generated/easymesh-parser.h"
     333
     334
     335
     336#endif /* !YY_LOL_GENERATED_EASYMESH_PARSER_H_INCLUDED  */
  • trunk/src/generated/easymesh-scanner.cpp

    r2410 r2779  
    10041004#line 112 "easymesh/easymesh-scanner.l"
    10051005{
    1006         uint32_t tmp = std::strtol(yytext + 1, NULL, 16);
     1006        uint32_t tmp = std::strtol(yytext + 1, nullptr, 16);
    10071007        yylval->u32val = 0x11000000u * (tmp >> 8)
    10081008                       | 0x00110000u * ((tmp >> 4) & 0xf)
     
    10151015#line 119 "easymesh/easymesh-scanner.l"
    10161016{
    1017         uint32_t tmp = std::strtol(yytext + 1, NULL, 16);
     1017        uint32_t tmp = std::strtol(yytext + 1, nullptr, 16);
    10181018        yylval->u32val = 0x11000000u * (tmp >> 12)
    10191019                       | 0x00110000u * ((tmp >> 8) & 0xf)
     
    10271027{
    10281028        yylval->u32val = 0xffu
    1029                        | 0x100u * (uint32_t)std::strtol(yytext + 1, NULL, 16);
     1029                       | 0x100u * (uint32_t)std::strtol(yytext + 1, nullptr, 16);
    10301030        return token::COLOR; }
    10311031        YY_BREAK
     
    10341034#line 130 "easymesh/easymesh-scanner.l"
    10351035{
    1036         yylval->u32val = (uint32_t)std::strtol(yytext + 1, NULL, 16);
     1036        yylval->u32val = (uint32_t)std::strtol(yytext + 1, nullptr, 16);
    10371037        return token::COLOR; }
    10381038        YY_BREAK
  • trunk/src/generated/location.hh

    r2506 r2779  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
    22
    33/* Locations for Bison parsers in C++
    44   
    5       Copyright (C) 2002-2007, 2009-2011 Free Software Foundation, Inc.
     5      Copyright (C) 2002-2007, 2009-2013 Free Software Foundation, Inc.
    66   
    77   This program is free software: you can redistribute it and/or modify
     
    3232
    3333/**
    34  ** \file location.hh
     34 ** \file generated/location.hh
    3535 ** Define the lol::location class.
    3636 */
    3737
    38 #ifndef BISON_LOCATION_HH
    39 # define BISON_LOCATION_HH
     38#ifndef YY_LOL_GENERATED_LOCATION_HH_INCLUDED
     39# define YY_LOL_GENERATED_LOCATION_HH_INCLUDED
    4040
    41 # include <iostream>
    42 # include <string>
    4341# include "position.hh"
    4442
    4543
    4644namespace lol {
    47 
    48 /* Line 162 of location.cc  */
    49 #line 50 "generated/location.hh"
     45/* Line 166 of location.cc  */
     46#line 47 "generated/location.hh"
    5047
    5148  /// Abstract a location.
     
    5451  public:
    5552
    56     /// Construct a location.
    57     location ()
    58       : begin (), end ()
     53    /// Construct a location from \a b to \a e.
     54    location (const position& b, const position& e)
     55      : begin (b)
     56      , end (e)
     57    {
     58    }
     59
     60    /// Construct a 0-width location in \a p.
     61    explicit location (const position& p = position ())
     62      : begin (p)
     63      , end (p)
     64    {
     65    }
     66
     67    /// Construct a 0-width location in \a f, \a l, \a c.
     68    explicit location (std::string* f,
     69                       unsigned int l = 1u,
     70                       unsigned int c = 1u)
     71      : begin (f, l, c)
     72      , end (f, l, c)
    5973    {
    6074    }
     
    6276
    6377    /// Initialization.
    64     inline void initialize (std::string* fn)
     78    void initialize (std::string* f = YY_NULL,
     79                     unsigned int l = 1u,
     80                     unsigned int c = 1u)
    6581    {
    66       begin.initialize (fn);
     82      begin.initialize (f, l, c);
    6783      end = begin;
    6884    }
     
    7288  public:
    7389    /// Reset initial location to final location.
    74     inline void step ()
     90    void step ()
    7591    {
    7692      begin = end;
     
    7894
    7995    /// Extend the current location to the COUNT next columns.
    80     inline void columns (unsigned int count = 1)
     96    void columns (unsigned int count = 1)
    8197    {
    8298      end += count;
     
    84100
    85101    /// Extend the current location to the COUNT next lines.
    86     inline void lines (unsigned int count = 1)
     102    void lines (unsigned int count = 1)
    87103    {
    88104      end.lines (count);
     
    141157   ** Avoid duplicate information.
    142158   */
    143   inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
     159  template <typename YYChar>
     160  inline std::basic_ostream<YYChar>&
     161  operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
    144162  {
    145163    position last = loc.end - 1;
     
    158176
    159177} // lol
     178/* Line 296 of location.cc  */
     179#line 180 "generated/location.hh"
    160180
    161 /* Line 271 of location.cc  */
    162 #line 163 "generated/location.hh"
    163 
    164 #endif // not BISON_LOCATION_HH
     181#endif /* !YY_LOL_GENERATED_LOCATION_HH_INCLUDED  */
  • trunk/src/generated/lolfx-parser.cpp

    r2506 r2779  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
    22
    33/* Skeleton implementation for Bison LALR(1) parsers in C++
    44   
    5       Copyright (C) 2002-2011 Free Software Foundation, Inc.
     5      Copyright (C) 2002-2013 Free Software Foundation, Inc.
    66   
    77   This program is free software: you can redistribute it and/or modify
     
    3535
    3636/* First part of user declarations.  */
    37 
    38 /* Line 293 of lalr1.cc  */
     37/* Line 283 of lalr1.cc  */
    3938#line 1 "gpu/lolfx-parser.y"
    4039
     
    5756#include <string>
    5857
    59 
    60 
    61 /* Line 293 of lalr1.cc  */
    62 #line 63 "generated/lolfx-parser.cpp"
     58/* HACK: workaround for Bison who insists on using exceptions */
     59#define try if (true)
     60#define catch(...) if (false)
     61#define throw (void)0
     62
     63/* Line 283 of lalr1.cc  */
     64#line 65 "generated/lolfx-parser.cpp"
    6365
    6466
     
    6668
    6769/* User implementation prologue.  */
    68 
    69 /* Line 299 of lalr1.cc  */
    70 #line 241 "gpu/lolfx-parser.y"
     70/* Line 289 of lalr1.cc  */
     71#line 245 "gpu/lolfx-parser.y"
    7172
    7273#include "gpu/lolfx-compiler.h"
     
    7576#define yylex mc.m_lexer->lex
    7677
    77 
    78 /* Line 299 of lalr1.cc  */
     78/* Line 289 of lalr1.cc  */
    7979#line 80 "generated/lolfx-parser.cpp"
     80
     81
     82# ifndef YY_NULL
     83#  if defined __cplusplus && 201103L <= __cplusplus
     84#   define YY_NULL nullptr
     85#  else
     86#   define YY_NULL 0
     87#  endif
     88# endif
    8089
    8190#ifndef YY_
     
    91100#endif
    92101
     102#define YYRHSLOC(Rhs, K) ((Rhs)[K])
    93103/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    94104   If N is 0, then set CURRENT to the empty location which ends
    95105   the previous symbol: RHS[0] (always defined).  */
    96106
    97 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
    98 #ifndef YYLLOC_DEFAULT
    99 # define YYLLOC_DEFAULT(Current, Rhs, N)                               \
    100  do                                                                    \
    101    if (N)                                                              \
    102      {                                                                 \
    103        (Current).begin = YYRHSLOC (Rhs, 1).begin;                      \
    104        (Current).end   = YYRHSLOC (Rhs, N).end;                        \
    105      }                                                                 \
    106    else                                                                \
    107      {                                                                 \
    108        (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;        \
    109      }                                                                 \
    110  while (false)
    111 #endif
     107# ifndef YYLLOC_DEFAULT
     108#  define YYLLOC_DEFAULT(Current, Rhs, N)                               \
     109    do                                                                  \
     110      if (N)                                                            \
     111        {                                                               \
     112          (Current).begin  = YYRHSLOC (Rhs, 1).begin;                   \
     113          (Current).end    = YYRHSLOC (Rhs, N).end;                     \
     114        }                                                               \
     115      else                                                              \
     116        {                                                               \
     117          (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
     118        }                                                               \
     119    while (/*CONSTCOND*/ false)
     120# endif
     121
    112122
    113123/* Suppress unused-variable warnings by "using" E.  */
     
    145155
    146156# define YYCDEBUG if (false) std::cerr
    147 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
    148 # define YY_REDUCE_PRINT(Rule)
    149 # define YY_STACK_PRINT()
     157# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type)
     158# define YY_REDUCE_PRINT(Rule)        static_cast<void>(0)
     159# define YY_STACK_PRINT()             static_cast<void>(0)
    150160
    151161#endif /* !YYDEBUG */
     
    161171
    162172namespace lol {
    163 
    164 /* Line 382 of lalr1.cc  */
    165 #line 166 "generated/lolfx-parser.cpp"
     173/* Line 357 of lalr1.cc  */
     174#line 175 "generated/lolfx-parser.cpp"
    166175
    167176  /* Return YYSTR after stripping away unnecessary quotes and
     
    229238    YYUSE (yylocationp);
    230239    YYUSE (yyvaluep);
    231     switch (yytype)
    232       {
    233          default:
    234           break;
    235       }
     240    std::ostream& yyo = debug_stream ();
     241    std::ostream& yyoutput = yyo;
     242    YYUSE (yyoutput);
     243    YYUSE (yytype);
    236244  }
    237245
     
    257265    YYUSE (yyvaluep);
    258266
    259     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    260 
    261     switch (yytype)
    262       {
    263  
    264         default:
    265           break;
    266       }
     267    if (yymsg)
     268      YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
     269
     270    YYUSE (yytype);
    267271  }
    268272
     
    321325    int yytoken = 0;
    322326
    323     /* State.  */
     327    // State.
    324328    int yyn;
    325329    int yylen = 0;
    326330    int yystate = 0;
    327331
    328     /* Error handling.  */
     332    // Error handling.
    329333    int yynerrs_ = 0;
    330334    int yyerrstatus_ = 0;
    331335
    332336    /// Semantic value of the lookahead.
    333     semantic_type yylval;
     337    static semantic_type yyval_default;
     338    semantic_type yylval = yyval_default;
    334339    /// Location of the lookahead.
    335340    location_type yylloc;
     
    344349    int yyresult;
    345350
     351    // FIXME: This shoud be completely indented.  It is not yet to
     352    // avoid gratuitous conflicts when merging into the master branch.
     353    try
     354      {
    346355    YYCDEBUG << "Starting parse" << std::endl;
    347356
     
    351360       location values to have been already stored, initialize these
    352361       stacks with a primary value.  */
    353     yystate_stack_ = state_stack_type (0);
    354     yysemantic_stack_ = semantic_stack_type (0);
    355     yylocation_stack_ = location_stack_type (0);
     362    yystate_stack_.clear ();
     363    yysemantic_stack_.clear ();
     364    yylocation_stack_.clear ();
    356365    yysemantic_stack_.push (yylval);
    357366    yylocation_stack_.push (yylloc);
     
    379388    if (yychar == yyempty_)
    380389      {
    381         YYCDEBUG << "Reading a token: ";
    382         yychar = yylex (&yylval, &yylloc);
     390        YYCDEBUG << "Reading a token: ";
     391        yychar = yylex (&yylval, &yylloc);
    383392      }
    384 
    385393
    386394    /* Convert token to internal form.  */
     
    454462      yyval = yysemantic_stack_[0];
    455463
     464    // Compute the default @$.
    456465    {
    457466      slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
    458467      YYLLOC_DEFAULT (yyloc, slice, yylen);
    459468    }
     469
     470    // Perform the reduction.
    460471    YY_REDUCE_PRINT (yyn);
    461472    switch (yyn)
    462473      {
    463           case 202:
    464 
    465 /* Line 690 of lalr1.cc  */
    466 #line 728 "gpu/lolfx-parser.y"
     474          case 202:
     475/* Line 664 of lalr1.cc  */
     476#line 732 "gpu/lolfx-parser.y"
    467477    { std::cout << "New tech " << std::endl; }
    468478    break;
    469479
    470480  case 203:
    471 
    472 /* Line 690 of lalr1.cc  */
    473 #line 736 "gpu/lolfx-parser.y"
     481/* Line 664 of lalr1.cc  */
     482#line 740 "gpu/lolfx-parser.y"
    474483    { std::cout << "New name " << (yysemantic_stack_[(1) - (1)].sval) << std::endl; }
    475484    break;
    476485
    477486  case 204:
    478 
    479 /* Line 690 of lalr1.cc  */
    480 #line 737 "gpu/lolfx-parser.y"
     487/* Line 664 of lalr1.cc  */
     488#line 741 "gpu/lolfx-parser.y"
    481489    { std::cout << "New name " << (yysemantic_stack_[(1) - (1)].sval) << std::endl; }
    482490    break;
    483491
    484492  case 207:
    485 
    486 /* Line 690 of lalr1.cc  */
    487 #line 750 "gpu/lolfx-parser.y"
     493/* Line 664 of lalr1.cc  */
     494#line 754 "gpu/lolfx-parser.y"
    488495    { std::cout << "New pass " << std::endl; }
    489496    break;
    490497
    491498  case 226:
    492 
    493 /* Line 690 of lalr1.cc  */
    494 #line 786 "gpu/lolfx-parser.y"
     499/* Line 664 of lalr1.cc  */
     500#line 790 "gpu/lolfx-parser.y"
    495501    { std::cout << "new shader" << std::endl; }
    496502    break;
    497503
    498504
    499 
    500 /* Line 690 of lalr1.cc  */
    501 #line 502 "generated/lolfx-parser.cpp"
    502         default:
    503           break;
     505/* Line 664 of lalr1.cc  */
     506#line 507 "generated/lolfx-parser.cpp"
     507      default:
     508        break;
    504509      }
     510
    505511    /* User semantic actions sometimes alter yychar, and that requires
    506512       that yytoken be updated with the new translation.  We take the
     
    553559    if (yyerrstatus_ == 3)
    554560      {
    555         /* If just tried and failed to reuse lookahead token after an
    556          error, discard it.  */
    557 
    558         if (yychar <= yyeof_)
    559           {
    560           /* Return failure if at end of input.  */
    561           if (yychar == yyeof_)
    562             YYABORT;
    563           }
    564         else
    565           {
    566             yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
    567             yychar = yyempty_;
    568           }
     561        /* If just tried and failed to reuse lookahead token after an
     562           error, discard it.  */
     563        if (yychar <= yyeof_)
     564          {
     565            /* Return failure if at end of input.  */
     566            if (yychar == yyeof_)
     567              YYABORT;
     568          }
     569        else
     570          {
     571            yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
     572            yychar = yyempty_;
     573          }
    569574      }
    570575
     
    615620        /* Pop the current state because it cannot handle the error token.  */
    616621        if (yystate_stack_.height () == 1)
    617         YYABORT;
     622          YYABORT;
    618623
    619624        yyerror_range[1] = yylocation_stack_[0];
     
    663668       this YYABORT or YYACCEPT.  */
    664669    yypop_ (yylen);
    665     while (yystate_stack_.height () != 1)
     670    while (1 < yystate_stack_.height ())
    666671      {
    667         yydestruct_ ("Cleanup: popping",
    668                    yystos_[yystate_stack_[0]],
    669                    &yysemantic_stack_[0],
    670                    &yylocation_stack_[0]);
    671         yypop_ ();
     672        yydestruct_ ("Cleanup: popping",
     673                     yystos_[yystate_stack_[0]],
     674                     &yysemantic_stack_[0],
     675                     &yylocation_stack_[0]);
     676        yypop_ ();
    672677      }
    673678
    674679    return yyresult;
     680    }
     681    catch (...)
     682      {
     683        YYCDEBUG << "Exception caught: cleaning lookahead and stack"
     684                 << std::endl;
     685        // Do not try to display the values of the reclaimed symbols,
     686        // as their printer might throw an exception.
     687        if (yychar != yyempty_)
     688          {
     689            /* Make sure we have latest lookahead translation.  See
     690               comments at user semantic actions for why this is
     691               necessary.  */
     692            yytoken = yytranslate_ (yychar);
     693            yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
     694          }
     695
     696        while (1 < yystate_stack_.height ())
     697          {
     698            yydestruct_ (YY_NULL,
     699                         yystos_[yystate_stack_[0]],
     700                         &yysemantic_stack_[0],
     701                         &yylocation_stack_[0]);
     702            yypop_ ();
     703          }
     704        throw;
     705      }
    675706  }
    676707
     
    741772      }
    742773
    743     char const* yyformat = 0;
     774    char const* yyformat = YY_NULL;
    744775    switch (yycount)
    745776      {
     
    33603391  };
    33613392
    3362 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     3393
    33633394  /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    33643395     First, the terminals, then, starting at \a yyntokens_, nonterminals.  */
     
    35133544  "glsl_conditionopt", "glsl_for_rest_statement", "glsl_jump_statement",
    35143545  "glsl_translation_unit", "glsl_external_declaration",
    3515   "glsl_function_definition", 0
     3546  "glsl_function_definition", YY_NULL
    35163547  };
    3517 #endif
    35183548
    35193549#if YYDEBUG
     
    37123742  LolFxParser::yyrline_[] =
    37133743  {
    3714          0,   255,   271,   272,   273,   274,   275,   276,   277,   278,
    3715      279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
    3716      289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
    3717      299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
    3718      309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
    3719      319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
    3720      329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
    3721      339,   340,   341,   342,   343,   344,   345,   508,   509,   510,
    3722      511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
    3723      521,   522,   523,   524,   525,   526,   527,   528,   529,   530,
    3724      531,   532,   533,   534,   535,   536,   537,   538,   539,   540,
    3725      541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
    3726      551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
    3727      561,   562,   563,   564,   565,   566,   567,   568,   569,   570,
    3728      571,   572,   573,   574,   575,   576,   577,   578,   579,   580,
    3729      581,   582,   583,   584,   585,   586,   587,   588,   589,   590,
    3730      591,   592,   593,   594,   595,   596,   597,   598,   599,   600,
    3731      601,   602,   603,   604,   605,   606,   607,   608,   609,   610,
    3732      611,   612,   613,   614,   615,   616,   617,   618,   619,   620,
    3733      621,   622,   623,   624,   625,   626,   627,   710,   714,   715,
    3734      719,   720,   728,   736,   737,   745,   746,   750,   754,   755,
    3735      760,   761,   762,   763,   764,   765,   766,   767,   768,   769,
    3736      770,   771,   772,   773,   774,   782,   786,   790,   791,   795,
    3737      803,   807,   808,   809,   810,   811,   812,   816,   817,   818,
    3738      819,   820,   821,   825,   829,   833,   834,   838,   839,   843,
    3739      844,   848,   849,   853,   857,   858,   859,   863,   864,   865,
    3740      866,   870,   871,   872,   873,   877,   878,   879,   880,   884,
    3741      885,   886,   890,   891,   892,   896,   897,   898,   899,   900,
    3742      904,   905,   906,   910,   911,   915,   916,   920,   921,   925,
    3743      926,   930,   931,   935,   936,   940,   941,   945,   946,   950,
    3744      951,   952,   953,   954,   955,   956,   957,   958,   959,   960,
    3745      964,   965,   969,   973,   974,   975,   976,   977,   978,   979,
    3746      980,   984,   988,   989,   993,   994,   998,  1002,  1003,  1007,
    3747     1008,  1012,  1013,  1014,  1015,  1019,  1020,  1023,  1025,  1026,
    3748     1027,  1028,  1029,  1033,  1037,  1038,  1039,  1040,  1041,  1042,
    3749     1043,  1047,  1048,  1049,  1050,  1051,  1052,  1053,  1054,  1058,
    3750     1059,  1063,  1067,  1068,  1069,  1073,  1077,  1078,  1082,  1083,
    3751     1087,  1091,  1092,  1093,  1094,  1095,  1096,  1097,  1098,  1102,
    3752     1103,  1104,  1105,  1106,  1107,  1108,  1109,  1110,  1111,  1112,
    3753     1113,  1117,  1118,  1122,  1123,  1124,  1127,  1128,  1132,  1133,
    3754     1134,  1135,  1136,  1137,  1138,  1139,  1140,  1141,  1142,  1143,
    3755     1144,  1148,  1149,  1150,  1154,  1155,  1159,  1160,  1164,  1165,
    3756     1169,  1170,  1174,  1175,  1176,  1180,  1184,  1188,  1189,  1193,
    3757     1194,  1195,  1196,  1197,  1198,  1199,  1203,  1204,  1208,  1209,
    3758     1213,  1214,  1218,  1219,  1223,  1224,  1228,  1232,  1233,  1237,
    3759     1238,  1242,  1245,  1247,  1251,  1252,  1256,  1257,  1258,  1262,
    3760     1263,  1267,  1268,  1272,  1273,  1277,  1278,  1279,  1280,  1281,
    3761     1285,  1286,  1290,  1291,  1295
     3744         0,   259,   275,   276,   277,   278,   279,   280,   281,   282,
     3745     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     3746     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     3747     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     3748     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
     3749     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     3750     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     3751     343,   344,   345,   346,   347,   348,   349,   512,   513,   514,
     3752     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
     3753     525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
     3754     535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
     3755     545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
     3756     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
     3757     565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
     3758     575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
     3759     585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
     3760     595,   596,   597,   598,   599,   600,   601,   602,   603,   604,
     3761     605,   606,   607,   608,   609,   610,   611,   612,   613,   614,
     3762     615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
     3763     625,   626,   627,   628,   629,   630,   631,   714,   718,   719,
     3764     723,   724,   732,   740,   741,   749,   750,   754,   758,   759,
     3765     764,   765,   766,   767,   768,   769,   770,   771,   772,   773,
     3766     774,   775,   776,   777,   778,   786,   790,   794,   795,   799,
     3767     807,   811,   812,   813,   814,   815,   816,   820,   821,   822,
     3768     823,   824,   825,   829,   833,   837,   838,   842,   843,   847,
     3769     848,   852,   853,   857,   861,   862,   863,   867,   868,   869,
     3770     870,   874,   875,   876,   877,   881,   882,   883,   884,   888,
     3771     889,   890,   894,   895,   896,   900,   901,   902,   903,   904,
     3772     908,   909,   910,   914,   915,   919,   920,   924,   925,   929,
     3773     930,   934,   935,   939,   940,   944,   945,   949,   950,   954,
     3774     955,   956,   957,   958,   959,   960,   961,   962,   963,   964,
     3775     968,   969,   973,   977,   978,   979,   980,   981,   982,   983,
     3776     984,   988,   992,   993,   997,   998,  1002,  1006,  1007,  1011,
     3777    1012,  1016,  1017,  1018,  1019,  1023,  1024,  1027,  1029,  1030,
     3778    1031,  1032,  1033,  1037,  1041,  1042,  1043,  1044,  1045,  1046,
     3779    1047,  1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,  1062,
     3780    1063,  1067,  1071,  1072,  1073,  1077,  1081,  1082,  1086,  1087,
     3781    1091,  1095,  1096,  1097,  1098,  1099,  1100,  1101,  1102,  1106,
     3782    1107,  1108,  1109,  1110,  1111,  1112,  1113,  1114,  1115,  1116,
     3783    1117,  1121,  1122,  1126,  1127,  1128,  1131,  1132,  1136,  1137,
     3784    1138,  1139,  1140,  1141,  1142,  1143,  1144,  1145,  1146,  1147,
     3785    1148,  1152,  1153,  1154,  1158,  1159,  1163,  1164,  1168,  1169,
     3786    1173,  1174,  1178,  1179,  1180,  1184,  1188,  1192,  1193,  1197,
     3787    1198,  1199,  1200,  1201,  1202,  1203,  1207,  1208,  1212,  1213,
     3788    1217,  1218,  1222,  1223,  1227,  1228,  1232,  1236,  1237,  1241,
     3789    1242,  1246,  1249,  1251,  1255,  1256,  1260,  1261,  1262,  1266,
     3790    1267,  1271,  1272,  1276,  1277,  1281,  1282,  1283,  1284,  1285,
     3791    1289,  1290,  1294,  1295,  1299
    37623792  };
    37633793
     
    38903920
    38913921} // lol
    3892 
     3922/* Line 1135 of lalr1.cc  */
     3923#line 3924 "generated/lolfx-parser.cpp"
    38933924/* Line 1136 of lalr1.cc  */
    3894 #line 3895 "generated/lolfx-parser.cpp"
    3895 
    3896 
    3897 /* Line 1138 of lalr1.cc  */
    3898 #line 1298 "gpu/lolfx-parser.y"
     3925#line 1302 "gpu/lolfx-parser.y"
    38993926
    39003927
     
    39053932}
    39063933
    3907 
  • trunk/src/generated/lolfx-parser.h

    r2506 r2779  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
    22
    33/* Skeleton interface for Bison LALR(1) parsers in C++
    44   
    5       Copyright (C) 2002-2011 Free Software Foundation, Inc.
     5      Copyright (C) 2002-2013 Free Software Foundation, Inc.
    66   
    77   This program is free software: you can redistribute it and/or modify
     
    3131   version 2.2 of Bison.  */
    3232
     33/**
     34 ** \file generated/lolfx-parser.h
     35 ** Define the lol::parser class.
     36 */
     37
    3338/* C++ LALR(1) parser skeleton written by Akim Demaille.  */
    3439
    35 #ifndef PARSER_HEADER_H
    36 # define PARSER_HEADER_H
     40#ifndef YY_LOL_GENERATED_LOLFX_PARSER_H_INCLUDED
     41# define YY_LOL_GENERATED_LOLFX_PARSER_H_INCLUDED
    3742
    3843
     
    4853#endif
    4954
    50 /* Enabling verbose error messages.  */
    51 #ifdef YYERROR_VERBOSE
    52 # undef YYERROR_VERBOSE
    53 # define YYERROR_VERBOSE 1
    54 #else
    55 # define YYERROR_VERBOSE 1
    56 #endif
    57 
    58 /* Enabling the token table.  */
    59 #ifndef YYTOKEN_TABLE
    60 # define YYTOKEN_TABLE 0
    61 #endif
    62 
    6355
    6456namespace lol {
    65 
    66 /* Line 35 of lalr1.cc  */
    67 #line 68 "generated/lolfx-parser.h"
     57/* Line 33 of lalr1.cc  */
     58#line 59 "generated/lolfx-parser.h"
    6859
    6960  /// A Bison parser.
     
    7566    union semantic_type
    7667    {
    77 
    78 /* Line 35 of lalr1.cc  */
    79 #line 34 "gpu/lolfx-parser.y"
     68/* Line 33 of lalr1.cc  */
     69#line 38 "gpu/lolfx-parser.y"
    8070
    8171    int ival;
     
    8575
    8676
    87 
    88 /* Line 35 of lalr1.cc  */
    89 #line 90 "generated/lolfx-parser.h"
     77/* Line 33 of lalr1.cc  */
     78#line 79 "generated/lolfx-parser.h"
    9079    };
    9180#else
     
    564553
    565554  private:
     555    /// This class is not copyable.
     556    LolFxParser (const LolFxParser&);
     557    LolFxParser& operator= (const LolFxParser&);
     558
    566559    /// Report a syntax error.
    567560    /// \param loc    where the syntax error is found.
     
    647640    static const unsigned short int yyr1_[];
    648641    /// For a rule, its RHS length.
    649     static const unsigned char yyr2_[];
    650 
    651 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     642    static const unsigned char yyr2_[];
     643
     644    /// Convert the symbol name \a n to a form suitable for a diagnostic.
     645    static std::string yytnamerr_ (const char *n);
     646
     647
    652648    /// For a symbol, its name in clear.
    653649    static const char* const yytname_[];
    654 #endif
    655 
    656     /// Convert the symbol name \a n to a form suitable for a diagnostic.
    657     static std::string yytnamerr_ (const char *n);
    658 
    659650#if YYDEBUG
    660651    /// A type to store symbol numbers and -1.
     
    683674    /// \brief Reclaim the memory associated to a symbol.
    684675    /// \param yymsg        Why this token is reclaimed.
     676    ///                     If null, do not display the symbol, just free it.
    685677    /// \param yytype       The symbol type.
    686678    /// \param yyvaluep     Its semantic value.
     
    712704
    713705} // lol
    714 
    715 /* Line 35 of lalr1.cc  */
    716 #line 717 "generated/lolfx-parser.h"
    717 
    718 
    719 
    720 #endif /* ! defined PARSER_HEADER_H */
     706/* Line 33 of lalr1.cc  */
     707#line 708 "generated/lolfx-parser.h"
     708
     709
     710
     711#endif /* !YY_LOL_GENERATED_LOLFX_PARSER_H_INCLUDED  */
  • trunk/src/generated/position.hh

    r2506 r2779  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
    22
    33/* Positions for Bison parsers in C++
    44   
    5       Copyright (C) 2002-2007, 2009-2011 Free Software Foundation, Inc.
     5      Copyright (C) 2002-2007, 2009-2013 Free Software Foundation, Inc.
    66   
    77   This program is free software: you can redistribute it and/or modify
     
    3232
    3333/**
    34  ** \file position.hh
     34 ** \file generated/position.hh
    3535 ** Define the lol::position class.
    3636 */
    3737
    38 #ifndef BISON_POSITION_HH
    39 # define BISON_POSITION_HH
     38#ifndef YY_LOL_GENERATED_POSITION_HH_INCLUDED
     39# define YY_LOL_GENERATED_POSITION_HH_INCLUDED
    4040
     41# include <algorithm> // std::max
    4142# include <iostream>
    4243# include <string>
    43 # include <algorithm>
     44
     45# ifndef YY_NULL
     46#  if defined __cplusplus && 201103L <= __cplusplus
     47#   define YY_NULL nullptr
     48#  else
     49#   define YY_NULL 0
     50#  endif
     51# endif
    4452
    4553
    4654namespace lol {
    47 
    48 /* Line 37 of location.cc  */
    49 #line 50 "generated/position.hh"
     55/* Line 36 of location.cc  */
     56#line 57 "generated/position.hh"
    5057  /// Abstract a position.
    5158  class position
     
    5461
    5562    /// Construct a position.
    56     position ()
    57       : filename (0), line (1), column (1)
     63    explicit position (std::string* f = YY_NULL,
     64                       unsigned int l = 1u,
     65                       unsigned int c = 1u)
     66      : filename (f)
     67      , line (l)
     68      , column (c)
    5869    {
    5970    }
     
    6172
    6273    /// Initialization.
    63     inline void initialize (std::string* fn)
     74    void initialize (std::string* fn = YY_NULL,
     75                     unsigned int l = 1u,
     76                     unsigned int c = 1u)
    6477    {
    6578      filename = fn;
    66       line = 1;
    67       column = 1;
     79      line = l;
     80      column = c;
    6881    }
    6982
    7083    /** \name Line and Column related manipulators
    7184     ** \{ */
    72   public:
    7385    /// (line related) Advance to the COUNT next lines.
    74     inline void lines (int count = 1)
     86    void lines (int count = 1)
    7587    {
    76       column = 1;
     88      column = 1u;
    7789      line += count;
    7890    }
    7991
    8092    /// (column related) Advance to the COUNT next columns.
    81     inline void columns (int count = 1)
     93    void columns (int count = 1)
    8294    {
    8395      column = std::max (1u, column + count);
     
    8597    /** \} */
    8698
    87   public:
    8899    /// File name to which this position refers.
    89100    std::string* filename;
     
    95106
    96107  /// Add and assign a position.
    97   inline const position&
     108  inline position&
    98109  operator+= (position& res, const int width)
    99110  {
     
    111122
    112123  /// Add and assign a position.
    113   inline const position&
     124  inline position&
    114125  operator-= (position& res, const int width)
    115126  {
     
    146157   ** \param pos a reference to the position to redirect
    147158   */
    148   inline std::ostream&
    149   operator<< (std::ostream& ostr, const position& pos)
     159  template <typename YYChar>
     160  inline std::basic_ostream<YYChar>&
     161  operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
    150162  {
    151163    if (pos.filename)
     
    156168
    157169} // lol
    158 
    159 /* Line 144 of location.cc  */
    160 #line 161 "generated/position.hh"
    161 #endif // not BISON_POSITION_HH
     170/* Line 148 of location.cc  */
     171#line 172 "generated/position.hh"
     172#endif /* !YY_LOL_GENERATED_POSITION_HH_INCLUDED  */
  • trunk/src/generated/stack.hh

    r2506 r2779  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
    22
    33/* Stack handling for Bison parsers in C++
    44   
    5       Copyright (C) 2002-2011 Free Software Foundation, Inc.
     5      Copyright (C) 2002-2013 Free Software Foundation, Inc.
    66   
    77   This program is free software: you can redistribute it and/or modify
     
    3131   version 2.2 of Bison.  */
    3232
    33 #ifndef BISON_STACK_HH
    34 # define BISON_STACK_HH
     33/**
     34 ** \file generated/stack.hh
     35 ** Define the lol::stack class.
     36 */
    3537
    36 #include <deque>
     38#ifndef YY_LOL_GENERATED_STACK_HH_INCLUDED
     39# define YY_LOL_GENERATED_STACK_HH_INCLUDED
     40
     41# include <deque>
    3742
    3843
    3944namespace lol {
    40 
    41 /* Line 1149 of lalr1.cc  */
    42 #line 43 "generated/stack.hh"
     45/* Line 34 of stack.hh  */
     46#line 47 "generated/stack.hh"
    4347  template <class T, class S = std::deque<T> >
    4448  class stack
    4549  {
    4650  public:
    47 
    4851    // Hide our reversed order.
    4952    typedef typename S::reverse_iterator iterator;
     
    8487    {
    8588      for (; n; --n)
    86         seq_.pop_front ();
     89        seq_.pop_front ();
     90    }
     91
     92    void
     93    clear ()
     94    {
     95      seq_.clear ();
    8796    }
    8897
     
    98107
    99108  private:
    100 
     109    stack (const stack&);
     110    stack& operator= (const stack&);
    101111    S seq_;
    102112  };
     
    107117  {
    108118  public:
    109 
    110     slice (const S& stack,
    111            unsigned int range) : stack_ (stack),
    112                                  range_ (range)
     119    slice (const S& stack, unsigned int range)
     120      : stack_ (stack)
     121      , range_ (range)
    113122    {
    114123    }
     
    122131
    123132  private:
    124 
    125133    const S& stack_;
    126134    unsigned int range_;
     
    128136
    129137} // lol
     138/* Line 124 of stack.hh  */
     139#line 140 "generated/stack.hh"
    130140
    131 /* Line 1235 of lalr1.cc  */
    132 #line 133 "generated/stack.hh"
    133 
    134 #endif // not BISON_STACK_HH[]dnl
    135 
     141#endif /* !YY_LOL_GENERATED_STACK_HH_INCLUDED  */
  • trunk/src/gpu/lolfx-parser.y

    r2216 r2779  
    1818#include <string>
    1919
     20/* HACK: workaround for Bison who insists on using exceptions */
     21#define try if (true)
     22#define catch(...) if (false)
     23#define throw (void)0
    2024%}
    2125
Note: See TracChangeset for help on using the changeset viewer.