Sorry for the big commit, but I've been fixing many of these
[blender.git] / intern / elbeem / intern / cfgparser.cpp
1 /* A Bison parser, made by GNU Bison 2.0.  */
2
3 /* Skeleton parser for Yacc-like parsing with Bison,
4    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2, or (at your option)
9    any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place - Suite 330,
19    Boston, MA 02111-1307, USA.  */
20
21 /* As a special exception, when this file is copied by Bison into a
22    Bison output file, you may use that output file without restriction.
23    This special exception was added by the Free Software Foundation
24    in version 1.24 of Bison.  */
25
26 /* Written by Richard Stallman by simplifying the original so called
27    ``semantic'' parser.  */
28
29 /* All symbols defined below should begin with yy or YY, to avoid
30    infringing on user name space.  This should be done even for local
31    variables, as they might otherwise be expanded by user macros.
32    There are some unavoidable exceptions within include files to
33    define necessary library symbols; they are noted "INFRINGES ON
34    USER NAME SPACE" below.  */
35
36 /* Identify Bison output.  */
37 #define YYBISON 1
38
39 /* Skeleton name.  */
40 #define YYSKELETON_NAME "yacc.c"
41
42 /* Pure parsers.  */
43 #define YYPURE 0
44
45 /* Using locations.  */
46 #define YYLSP_NEEDED 0
47
48 /* Substitute the variable and function names.  */
49 #define yyparse yy_parse
50 #define yylex   yy_lex
51 #define yyerror yy_error
52 #define yylval  yy_lval
53 #define yychar  yy_char
54 #define yydebug yy_debug
55 #define yynerrs yy_nerrs
56
57
58 /* Tokens.  */
59 #ifndef YYTOKENTYPE
60 # define YYTOKENTYPE
61    /* Put the tokens into the symbol table, so that GDB and other debuggers
62       know about them.  */
63    enum yytokentype {
64      DT_INTEGER = 258,
65      DT_FLOAT = 259,
66      DT_STRING = 260,
67      DT_ATTRNAME = 261,
68      DT_ATTRVALUE = 262,
69      KW_LBMSIM = 263,
70      KW_COMPARELBM = 264,
71      KW_ANIFRAMETIME = 265,
72      KW_DEBUGMODE = 266,
73      KW_DEBUGLEVEL = 267,
74      KW_P_RELAXTIME = 268,
75      KW_P_REYNOLDS = 269,
76      KW_P_VISCOSITY = 270,
77      KW_P_SOUNDSPEED = 271,
78      KW_P_DOMAINSIZE = 272,
79      KW_P_FORCE = 273,
80      KW_P_TIMELENGTH = 274,
81      KW_P_STEPTIME = 275,
82      KW_P_TIMEFACTOR = 276,
83      KW_P_ANIFRAMETIME = 277,
84      KW_P_ANISTART = 278,
85      KW_P_SURFACETENSION = 279,
86      KW_P_ACTIVATE = 280,
87      KW_P_DEACTIVATE = 281,
88      KW_P_DENSITY = 282,
89      KW_P_CELLSIZE = 283,
90      KW_P_GSTAR = 284,
91      KW_PFSPATH = 285,
92      KW_PARTLINELENGTH = 286,
93      KW_PARTICLES = 287,
94      KW_FRAMESPERSEC = 288,
95      KW_RAYTRACING = 289,
96      KW_PAROPEN = 290,
97      KW_PARCLOSE = 291,
98      KW_FILENAME = 292,
99      KW_PMCAUSTICS = 293,
100      KW_MAXRAYDEPTH = 294,
101      KW_CAUSTICDIST = 295,
102      KW_CAUSTICPHOT = 296,
103      KW_SHADOWMAPBIAS = 297,
104      KW_TREEMAXDEPTH = 298,
105      KW_TREEMAXTRIANGLES = 299,
106      KW_RESOLUTION = 300,
107      KW_ANTIALIAS = 301,
108      KW_EYEPOINT = 302,
109      KW_ANISTART = 303,
110      KW_ANIFRAMES = 304,
111      KW_FRAMESKIP = 305,
112      KW_LOOKAT = 306,
113      KW_UPVEC = 307,
114      KW_FOVY = 308,
115      KW_ASPECT = 309,
116      KW_AMBIENCE = 310,
117      KW_BACKGROUND = 311,
118      KW_DEBUGPIXEL = 312,
119      KW_TESTMODE = 313,
120      KW_OPENGLATTR = 314,
121      KW_BLENDERATTR = 315,
122      KW_ATTRIBUTE = 316,
123      KW_ATTRCHANNEL = 317,
124      KW_OBJATTR = 318,
125      KW_EQUALS = 319,
126      KW_DEFINEATTR = 320,
127      KW_ATTREND = 321,
128      KW_GEOMETRY = 322,
129      KW_TYPE = 323,
130      KW_GEOTYPE_BOX = 324,
131      KW_GEOTYPE_FLUID = 325,
132      KW_GEOTYPE_OBJMODEL = 326,
133      KW_GEOTYPE_SPHERE = 327,
134      KW_CASTSHADOWS = 328,
135      KW_RECEIVESHADOWS = 329,
136      KW_VISIBLE = 330,
137      KW_BOX_END = 331,
138      KW_BOX_START = 332,
139      KW_POLY = 333,
140      KW_NUMVERTICES = 334,
141      KW_VERTEX = 335,
142      KW_NUMPOLYGONS = 336,
143      KW_ISOSURF = 337,
144      KW_FILEMODE = 338,
145      KW_INVERT = 339,
146      KW_MATERIAL = 340,
147      KW_MATTYPE_PHONG = 341,
148      KW_MATTYPE_BLINN = 342,
149      KW_NAME = 343,
150      KW_AMBIENT = 344,
151      KW_DIFFUSE = 345,
152      KW_SPECULAR = 346,
153      KW_MIRROR = 347,
154      KW_TRANSPARENCE = 348,
155      KW_REFRACINDEX = 349,
156      KW_TRANSADDITIVE = 350,
157      KW_TRANSATTCOL = 351,
158      KW_FRESNEL = 352,
159      KW_LIGHT = 353,
160      KW_ACTIVE = 354,
161      KW_COLOUR = 355,
162      KW_POSITION = 356,
163      KW_LIGHT_OMNI = 357,
164      KW_CAUSTICPHOTONS = 358,
165      KW_CAUSTICSTRENGTH = 359,
166      KW_SHADOWMAP = 360,
167      KW_CAUSTICSMAP = 361
168    };
169 #endif
170 #define DT_INTEGER 258
171 #define DT_FLOAT 259
172 #define DT_STRING 260
173 #define DT_ATTRNAME 261
174 #define DT_ATTRVALUE 262
175 #define KW_LBMSIM 263
176 #define KW_COMPARELBM 264
177 #define KW_ANIFRAMETIME 265
178 #define KW_DEBUGMODE 266
179 #define KW_DEBUGLEVEL 267
180 #define KW_P_RELAXTIME 268
181 #define KW_P_REYNOLDS 269
182 #define KW_P_VISCOSITY 270
183 #define KW_P_SOUNDSPEED 271
184 #define KW_P_DOMAINSIZE 272
185 #define KW_P_FORCE 273
186 #define KW_P_TIMELENGTH 274
187 #define KW_P_STEPTIME 275
188 #define KW_P_TIMEFACTOR 276
189 #define KW_P_ANIFRAMETIME 277
190 #define KW_P_ANISTART 278
191 #define KW_P_SURFACETENSION 279
192 #define KW_P_ACTIVATE 280
193 #define KW_P_DEACTIVATE 281
194 #define KW_P_DENSITY 282
195 #define KW_P_CELLSIZE 283
196 #define KW_P_GSTAR 284
197 #define KW_PFSPATH 285
198 #define KW_PARTLINELENGTH 286
199 #define KW_PARTICLES 287
200 #define KW_FRAMESPERSEC 288
201 #define KW_RAYTRACING 289
202 #define KW_PAROPEN 290
203 #define KW_PARCLOSE 291
204 #define KW_FILENAME 292
205 #define KW_PMCAUSTICS 293
206 #define KW_MAXRAYDEPTH 294
207 #define KW_CAUSTICDIST 295
208 #define KW_CAUSTICPHOT 296
209 #define KW_SHADOWMAPBIAS 297
210 #define KW_TREEMAXDEPTH 298
211 #define KW_TREEMAXTRIANGLES 299
212 #define KW_RESOLUTION 300
213 #define KW_ANTIALIAS 301
214 #define KW_EYEPOINT 302
215 #define KW_ANISTART 303
216 #define KW_ANIFRAMES 304
217 #define KW_FRAMESKIP 305
218 #define KW_LOOKAT 306
219 #define KW_UPVEC 307
220 #define KW_FOVY 308
221 #define KW_ASPECT 309
222 #define KW_AMBIENCE 310
223 #define KW_BACKGROUND 311
224 #define KW_DEBUGPIXEL 312
225 #define KW_TESTMODE 313
226 #define KW_OPENGLATTR 314
227 #define KW_BLENDERATTR 315
228 #define KW_ATTRIBUTE 316
229 #define KW_ATTRCHANNEL 317
230 #define KW_OBJATTR 318
231 #define KW_EQUALS 319
232 #define KW_DEFINEATTR 320
233 #define KW_ATTREND 321
234 #define KW_GEOMETRY 322
235 #define KW_TYPE 323
236 #define KW_GEOTYPE_BOX 324
237 #define KW_GEOTYPE_FLUID 325
238 #define KW_GEOTYPE_OBJMODEL 326
239 #define KW_GEOTYPE_SPHERE 327
240 #define KW_CASTSHADOWS 328
241 #define KW_RECEIVESHADOWS 329
242 #define KW_VISIBLE 330
243 #define KW_BOX_END 331
244 #define KW_BOX_START 332
245 #define KW_POLY 333
246 #define KW_NUMVERTICES 334
247 #define KW_VERTEX 335
248 #define KW_NUMPOLYGONS 336
249 #define KW_ISOSURF 337
250 #define KW_FILEMODE 338
251 #define KW_INVERT 339
252 #define KW_MATERIAL 340
253 #define KW_MATTYPE_PHONG 341
254 #define KW_MATTYPE_BLINN 342
255 #define KW_NAME 343
256 #define KW_AMBIENT 344
257 #define KW_DIFFUSE 345
258 #define KW_SPECULAR 346
259 #define KW_MIRROR 347
260 #define KW_TRANSPARENCE 348
261 #define KW_REFRACINDEX 349
262 #define KW_TRANSADDITIVE 350
263 #define KW_TRANSATTCOL 351
264 #define KW_FRESNEL 352
265 #define KW_LIGHT 353
266 #define KW_ACTIVE 354
267 #define KW_COLOUR 355
268 #define KW_POSITION 356
269 #define KW_LIGHT_OMNI 357
270 #define KW_CAUSTICPHOTONS 358
271 #define KW_CAUSTICSTRENGTH 359
272 #define KW_SHADOWMAP 360
273 #define KW_CAUSTICSMAP 361
274
275
276
277
278 /* Copy the first part of user declarations.  */
279 #line 14 "src/cfgparser.yy"
280
281
282 #define YYDEBUG 1
283
284 /* library functions */
285 #include <stdio.h>
286 #include <stdlib.h>
287 #include <string.h>
288 #include "attributes.h"
289
290         void yy_warn(char *s);
291         void yy_error(const char *s);
292
293   /* imported from flex... */
294   extern int yy_lex();
295   extern int lineCount;
296   extern FILE *yy_in;
297
298   /* the parse function from bison */
299   int yy_parse( void );
300
301 // local variables to access objects 
302 #include "solver_interface.h"
303 #include "simulation_object.h"
304 #ifdef LBM_INCLUDE_TESTSOLVERS
305 #include "simulation_complbm.h"
306 #endif // LBM_INCLUDE_TESTSOLVERS
307
308 #include "parametrizer.h"
309 #include "ntl_world.h"
310 #include "ntl_ray.h"
311 #include "ntl_lighting.h"
312 #include "ntl_geometrymodel.h"
313
314         /* global variables */
315         static map<string,AttributeList*> attrs; /* global attribute storage */
316         vector<string>                  currentAttrValue;    /* build string vector */
317         
318         // global raytracing settings, stores object,lights,material lists etc.
319         // lists are freed by ntlScene upon deletion
320   static ntlRenderGlobals *reglob;      /* raytracing global settings */
321
322         /* light initialization checks */
323         ntlLightObject      *currentLight;
324         ntlLightObject      *currentLightOmni;
325
326         /* geometry initialization checks */
327         ntlGeometryClass    *currentGeoClass;
328         ntlGeometryObject   *currentGeoObj;
329         SimulationObject    *currentGeometrySim;
330         ntlGeometryObjModel *currentGeometryModel;
331         AttributeList                           *currentAttrib;
332         string                                                  currentAttrName, currentAttribAddName;
333
334 #ifndef ELBEEM_PLUGIN
335 #include "ntl_geometrybox.h"
336 #include "ntl_geometrysphere.h"
337         ntlGeometryBox      *currentGeometryBox;
338 #endif //ELBEEM_PLUGIN
339         
340         /* material init checks */
341         ntlMaterial                             *currentMaterial;
342
343
344
345 /* Enabling traces.  */
346 #ifndef YYDEBUG
347 # define YYDEBUG 1
348 #endif
349
350 /* Enabling verbose error messages.  */
351 #ifdef YYERROR_VERBOSE
352 # undef YYERROR_VERBOSE
353 # define YYERROR_VERBOSE 1
354 #else
355 # define YYERROR_VERBOSE 0
356 #endif
357
358 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
359 #line 85 "src/cfgparser.yy"
360 typedef union YYSTYPE {
361   int    intValue;
362   float  floatValue;
363   char  *charValue;
364 } YYSTYPE;
365 /* Line 190 of yacc.c.  */
366 #line 367 "bld-std-gcc/src/cfgparser.cpp"
367 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
368 # define YYSTYPE_IS_DECLARED 1
369 # define YYSTYPE_IS_TRIVIAL 1
370 #endif
371
372
373
374 /* Copy the second part of user declarations.  */
375
376
377 /* Line 213 of yacc.c.  */
378 #line 379 "bld-std-gcc/src/cfgparser.cpp"
379
380 #if ! defined (yyoverflow) || YYERROR_VERBOSE
381
382 # ifndef YYFREE
383 #  define YYFREE free
384 # endif
385 # ifndef YYMALLOC
386 #  define YYMALLOC malloc
387 # endif
388
389 /* The parser invokes alloca or malloc; define the necessary symbols.  */
390
391 # ifdef YYSTACK_USE_ALLOCA
392 #  if YYSTACK_USE_ALLOCA
393 #   ifdef __GNUC__
394 #    define YYSTACK_ALLOC __builtin_alloca
395 #   else
396 #    define YYSTACK_ALLOC alloca
397 #   endif
398 #  endif
399 # endif
400
401 # ifdef YYSTACK_ALLOC
402    /* Pacify GCC's `empty if-body' warning. */
403 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
404 # else
405 #  if defined (__STDC__) || defined (__cplusplus)
406 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
407 #   define YYSIZE_T size_t
408 #  endif
409 #  define YYSTACK_ALLOC YYMALLOC
410 #  define YYSTACK_FREE YYFREE
411 # endif
412 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
413
414
415 #if (! defined (yyoverflow) \
416      && (! defined (__cplusplus) \
417          || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
418
419 /* A type that is properly aligned for any stack member.  */
420 union yyalloc
421 {
422   short int yyss;
423   YYSTYPE yyvs;
424   };
425
426 /* The size of the maximum gap between one aligned stack and the next.  */
427 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
428
429 /* The size of an array large to enough to hold all stacks, each with
430    N elements.  */
431 # define YYSTACK_BYTES(N) \
432      ((N) * (sizeof (short int) + sizeof (YYSTYPE))                     \
433       + YYSTACK_GAP_MAXIMUM)
434
435 /* Copy COUNT objects from FROM to TO.  The source and destination do
436    not overlap.  */
437 # ifndef YYCOPY
438 #  if defined (__GNUC__) && 1 < __GNUC__
439 #   define YYCOPY(To, From, Count) \
440       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
441 #  else
442 #   define YYCOPY(To, From, Count)              \
443       do                                        \
444         {                                       \
445           register YYSIZE_T yyi;                \
446           for (yyi = 0; yyi < (Count); yyi++)   \
447             (To)[yyi] = (From)[yyi];            \
448         }                                       \
449       while (0)
450 #  endif
451 # endif
452
453 /* Relocate STACK from its old location to the new one.  The
454    local variables YYSIZE and YYSTACKSIZE give the old and new number of
455    elements in the stack, and YYPTR gives the new location of the
456    stack.  Advance YYPTR to a properly aligned location for the next
457    stack.  */
458 # define YYSTACK_RELOCATE(Stack)                                        \
459     do                                                                  \
460       {                                                                 \
461         YYSIZE_T yynewbytes;                                            \
462         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
463         Stack = &yyptr->Stack;                                          \
464         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
465         yyptr += yynewbytes / sizeof (*yyptr);                          \
466       }                                                                 \
467     while (0)
468
469 #endif
470
471 #if defined (__STDC__) || defined (__cplusplus)
472    typedef signed char yysigned_char;
473 #else
474    typedef short int yysigned_char;
475 #endif
476
477 /* YYFINAL -- State number of the termination state. */
478 #define YYFINAL  15
479 /* YYLAST -- Last index in YYTABLE.  */
480 #define YYLAST   288
481
482 /* YYNTOKENS -- Number of terminals. */
483 #define YYNTOKENS  107
484 /* YYNNTS -- Number of nonterminals. */
485 #define YYNNTS  82
486 /* YYNRULES -- Number of rules. */
487 #define YYNRULES  143
488 /* YYNRULES -- Number of states. */
489 #define YYNSTATES  249
490
491 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
492 #define YYUNDEFTOK  2
493 #define YYMAXUTOK   361
494
495 #define YYTRANSLATE(YYX)                                                \
496   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
497
498 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
499 static const unsigned char yytranslate[] =
500 {
501        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
502        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
503        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
504        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
505        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
506        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
507        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
508        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
509        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
510        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
511        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
512        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
513        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
514        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
515        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
516        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
517        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
518        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
519        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
520        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
521        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
522        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
523        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
524        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
525        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
526        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
527        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
528       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
529       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
530       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
531       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
532       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
533       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
534       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
535       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
536       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
537      105,   106
538 };
539
540 #if YYDEBUG
541 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
542    YYRHS.  */
543 static const unsigned short int yyprhs[] =
544 {
545        0,     0,     3,     6,     8,    10,    12,    14,    16,    19,
546       22,    27,    30,    32,    34,    36,    38,    40,    42,    44,
547       46,    48,    50,    52,    54,    56,    58,    60,    62,    64,
548       66,    68,    70,    72,    74,    76,    78,    80,    82,    85,
549       88,    91,    94,    98,   101,   106,   111,   116,   119,   122,
550      127,   132,   135,   138,   141,   144,   148,   151,   154,   157,
551      164,   167,   169,   171,   173,   175,   177,   179,   182,   185,
552      190,   195,   196,   204,   207,   209,   211,   213,   215,   217,
553      219,   221,   223,   225,   227,   229,   231,   233,   235,   237,
554      240,   243,   246,   249,   252,   257,   262,   265,   270,   277,
555      280,   282,   284,   286,   288,   290,   292,   294,   296,   298,
556      300,   302,   304,   306,   309,   314,   319,   323,   326,   329,
557      332,   335,   340,   343,   344,   351,   354,   356,   358,   360,
558      361,   362,   370,   371,   372,   379,   382,   384,   386,   388,
559      390,   392,   394,   396
560 };
561
562 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
563 static const short int yyrhs[] =
564 {
565      108,     0,    -1,   108,   109,    -1,   109,    -1,   112,    -1,
566      172,    -1,   110,    -1,   111,    -1,    11,     3,    -1,    12,
567        3,    -1,    34,    35,   113,    36,    -1,   113,   114,    -1,
568      114,    -1,   117,    -1,   115,    -1,   116,    -1,   118,    -1,
569      119,    -1,   120,    -1,   121,    -1,   122,    -1,   123,    -1,
570      124,    -1,   125,    -1,   126,    -1,   127,    -1,   128,    -1,
571      129,    -1,   130,    -1,   131,    -1,   132,    -1,   133,    -1,
572      134,    -1,   135,    -1,   136,    -1,   144,    -1,   175,    -1,
573      158,    -1,    48,   187,    -1,    10,   187,    -1,    49,   186,
574       -1,    50,   188,    -1,    45,   186,   186,    -1,    46,     3,
575       -1,    47,   185,   185,   185,    -1,    51,   185,   185,   185,
576       -1,    52,   185,   185,   185,    -1,    53,   185,    -1,    54,
577      185,    -1,    55,   185,   185,   185,    -1,    56,   185,   185,
578      185,    -1,    37,     5,    -1,    43,   186,    -1,    44,   186,
579       -1,    39,   186,    -1,    57,     3,     3,    -1,    58,   188,
580       -1,    59,     5,    -1,    60,     5,    -1,    98,    35,    68,
581      138,   137,    36,    -1,   137,   139,    -1,   139,    -1,   102,
582       -1,   140,    -1,   141,    -1,   142,    -1,   143,    -1,    99,
583      188,    -1,    73,   188,    -1,   100,   185,   185,   185,    -1,
584      101,   185,   185,   185,    -1,    -1,    67,    35,    68,   147,
585      145,   146,    36,    -1,   146,   148,    -1,   148,    -1,    69,
586       -1,    72,    -1,    71,    -1,     8,    -1,     9,    -1,   149,
587       -1,   150,    -1,   151,    -1,   152,    -1,   153,    -1,   154,
588       -1,   155,    -1,   156,    -1,   157,    -1,    88,     5,    -1,
589       85,     5,    -1,    73,   188,    -1,    74,   188,    -1,    75,
590      188,    -1,    77,   185,   185,   185,    -1,    76,   185,   185,
591      185,    -1,    63,     5,    -1,    65,    35,   174,    36,    -1,
592       85,    35,    68,   160,   159,    36,    -1,   159,   161,    -1,
593      161,    -1,    86,    -1,    87,    -1,   162,    -1,   163,    -1,
594      164,    -1,   165,    -1,   166,    -1,   168,    -1,   167,    -1,
595      169,    -1,   170,    -1,   171,    -1,    88,     5,    -1,    89,
596      183,   183,   183,    -1,    90,   183,   183,   183,    -1,    91,
597      185,   185,    -1,    92,   184,    -1,    93,   184,    -1,    94,
598      185,    -1,    95,   184,    -1,    96,   185,   185,   185,    -1,
599       97,   187,    -1,    -1,    61,     6,    35,   173,   174,    36,
600       -1,   174,   175,    -1,   175,    -1,   179,    -1,   176,    -1,
601       -1,    -1,    62,     6,    64,   177,   182,   178,    66,    -1,
602       -1,    -1,     6,    64,   180,   182,   181,    66,    -1,   182,
603        7,    -1,     7,    -1,   184,    -1,   185,    -1,     4,    -1,
604        3,    -1,     3,    -1,     3,    -1,     3,    -1
605 };
606
607 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
608 static const unsigned short int yyrline[] =
609 {
610        0,   144,   144,   145,   148,   149,   150,   151,   155,   158,
611      173,   174,   174,   177,   178,   179,   180,   182,   183,   184,
612      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
613      195,   196,   197,   198,   200,   201,   202,   203,   208,   212,
614      217,   221,   227,   231,   235,   239,   243,   247,   251,   255,
615      259,   263,   267,   271,   275,   279,   283,   287,   292,   301,
616      312,   313,   316,   324,   325,   326,   327,   331,   336,   341,
617      346,   364,   363,   385,   386,   389,   398,   406,   411,   417,
618      429,   430,   431,   432,   433,   434,   435,   436,   437,   442,
619      447,   453,   459,   465,   470,   485,   501,   510,   520,   531,
620      532,   535,   540,   544,   545,   546,   547,   548,   549,   550,
621      551,   552,   553,   558,   563,   568,   573,   579,   584,   589,
622      594,   599,   604,   615,   615,   625,   625,   628,   628,   631,
623      632,   631,   639,   640,   639,   647,   650,   660,   663,   675,
624      677,   683,   694,   706
625 };
626 #endif
627
628 #if YYDEBUG || YYERROR_VERBOSE
629 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
630    First, the terminals, then, starting at YYNTOKENS, nonterminals. */
631 static const char *const yytname[] =
632 {
633   "$end", "error", "$undefined", "DT_INTEGER", "DT_FLOAT", "DT_STRING",
634   "DT_ATTRNAME", "DT_ATTRVALUE", "KW_LBMSIM", "KW_COMPARELBM",
635   "KW_ANIFRAMETIME", "KW_DEBUGMODE", "KW_DEBUGLEVEL", "KW_P_RELAXTIME",
636   "KW_P_REYNOLDS", "KW_P_VISCOSITY", "KW_P_SOUNDSPEED", "KW_P_DOMAINSIZE",
637   "KW_P_FORCE", "KW_P_TIMELENGTH", "KW_P_STEPTIME", "KW_P_TIMEFACTOR",
638   "KW_P_ANIFRAMETIME", "KW_P_ANISTART", "KW_P_SURFACETENSION",
639   "KW_P_ACTIVATE", "KW_P_DEACTIVATE", "KW_P_DENSITY", "KW_P_CELLSIZE",
640   "KW_P_GSTAR", "KW_PFSPATH", "KW_PARTLINELENGTH", "KW_PARTICLES",
641   "KW_FRAMESPERSEC", "KW_RAYTRACING", "KW_PAROPEN", "KW_PARCLOSE",
642   "KW_FILENAME", "KW_PMCAUSTICS", "KW_MAXRAYDEPTH", "KW_CAUSTICDIST",
643   "KW_CAUSTICPHOT", "KW_SHADOWMAPBIAS", "KW_TREEMAXDEPTH",
644   "KW_TREEMAXTRIANGLES", "KW_RESOLUTION", "KW_ANTIALIAS", "KW_EYEPOINT",
645   "KW_ANISTART", "KW_ANIFRAMES", "KW_FRAMESKIP", "KW_LOOKAT", "KW_UPVEC",
646   "KW_FOVY", "KW_ASPECT", "KW_AMBIENCE", "KW_BACKGROUND", "KW_DEBUGPIXEL",
647   "KW_TESTMODE", "KW_OPENGLATTR", "KW_BLENDERATTR", "KW_ATTRIBUTE",
648   "KW_ATTRCHANNEL", "KW_OBJATTR", "KW_EQUALS", "KW_DEFINEATTR",
649   "KW_ATTREND", "KW_GEOMETRY", "KW_TYPE", "KW_GEOTYPE_BOX",
650   "KW_GEOTYPE_FLUID", "KW_GEOTYPE_OBJMODEL", "KW_GEOTYPE_SPHERE",
651   "KW_CASTSHADOWS", "KW_RECEIVESHADOWS", "KW_VISIBLE", "KW_BOX_END",
652   "KW_BOX_START", "KW_POLY", "KW_NUMVERTICES", "KW_VERTEX",
653   "KW_NUMPOLYGONS", "KW_ISOSURF", "KW_FILEMODE", "KW_INVERT",
654   "KW_MATERIAL", "KW_MATTYPE_PHONG", "KW_MATTYPE_BLINN", "KW_NAME",
655   "KW_AMBIENT", "KW_DIFFUSE", "KW_SPECULAR", "KW_MIRROR",
656   "KW_TRANSPARENCE", "KW_REFRACINDEX", "KW_TRANSADDITIVE",
657   "KW_TRANSATTCOL", "KW_FRESNEL", "KW_LIGHT", "KW_ACTIVE", "KW_COLOUR",
658   "KW_POSITION", "KW_LIGHT_OMNI", "KW_CAUSTICPHOTONS",
659   "KW_CAUSTICSTRENGTH", "KW_SHADOWMAP", "KW_CAUSTICSMAP", "$accept",
660   "desc_line", "desc_expression", "toggledebug_expression",
661   "setdebuglevel_expression", "raytrace_section", "raytrace_line",
662   "raytrace_expression", "anistart_expression", "aniframetime_expression",
663   "aniframes_expression", "frameskip_expression", "resolution_expression",
664   "antialias_expression", "eyepoint_expression", "lookat_expression",
665   "upvec_expression", "fovy_expression", "aspect_expression",
666   "ambience_expression", "background_expression", "filename_expression",
667   "treemaxdepth_expression", "treemaxtriangles_expression",
668   "maxraydepth_expression", "debugpixel_expression", "testmode_expression",
669   "openglattr_expr", "blenderattr_expr", "light_expression",
670   "lightsettings_line", "lighttype_expression", "lightsettings_expression",
671   "lightactive_expression", "lightcastshadows_expression",
672   "lightcolor_expression", "lightposition_expression",
673   "geometry_expression", "@1", "geometrysettings_line",
674   "geometrytype_expression", "geometrysettings_expression",
675   "geometryexpression_name", "geometryexpression_propname",
676   "geometryexpression_castshadows", "geometryexpression_recshadows",
677   "geometryexpression_visible", "geometryexpression_boxstart",
678   "geometryexpression_boxend", "geometryexpression_attrib",
679   "geometryexpression_defattrib", "material_expression",
680   "materialsettings_line", "materialtype_expression",
681   "materialsettings_expression", "materialexpression_name",
682   "materialexpression_ambient", "materialexpression_diffuse",
683   "materialexpression_specular", "materialexpression_mirror",
684   "materialexpression_transparence", "materialexpression_refracindex",
685   "materialexpression_transadd", "materialexpression_transattcol",
686   "materialexpression_fresnel", "attribute_section", "@2",
687   "attribute_line", "attribute_expression", "attribute_channel", "@3",
688   "@4", "attribute_normal", "@5", "@6", "attrvalue_list", "DT_COLOR",
689   "DT_ZEROTOONE", "DT_REALVAL", "DT_INTLTZERO", "DT_POSINT", "DT_BOOLEAN", 0
690 };
691 #endif
692
693 # ifdef YYPRINT
694 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
695    token YYLEX-NUM.  */
696 static const unsigned short int yytoknum[] =
697 {
698        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
699      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
700      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
701      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
702      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
703      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
704      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
705      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
706      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
707      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
708      355,   356,   357,   358,   359,   360,   361
709 };
710 # endif
711
712 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
713 static const unsigned char yyr1[] =
714 {
715        0,   107,   108,   108,   109,   109,   109,   109,   110,   111,
716      112,   113,   113,   114,   114,   114,   114,   114,   114,   114,
717      114,   114,   114,   114,   114,   114,   114,   114,   114,   114,
718      114,   114,   114,   114,   114,   114,   114,   114,   115,   116,
719      117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
720      127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
721      137,   137,   138,   139,   139,   139,   139,   140,   141,   142,
722      143,   145,   144,   146,   146,   147,   147,   147,   147,   147,
723      148,   148,   148,   148,   148,   148,   148,   148,   148,   149,
724      150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
725      159,   160,   160,   161,   161,   161,   161,   161,   161,   161,
726      161,   161,   161,   162,   163,   164,   165,   166,   167,   168,
727      169,   170,   171,   173,   172,   174,   174,   175,   175,   177,
728      178,   176,   180,   181,   179,   182,   182,   183,   184,   185,
729      185,   186,   187,   188
730 };
731
732 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
733 static const unsigned char yyr2[] =
734 {
735        0,     2,     2,     1,     1,     1,     1,     1,     2,     2,
736        4,     2,     1,     1,     1,     1,     1,     1,     1,     1,
737        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
738        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
739        2,     2,     3,     2,     4,     4,     4,     2,     2,     4,
740        4,     2,     2,     2,     2,     3,     2,     2,     2,     6,
741        2,     1,     1,     1,     1,     1,     1,     2,     2,     4,
742        4,     0,     7,     2,     1,     1,     1,     1,     1,     1,
743        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
744        2,     2,     2,     2,     4,     4,     2,     4,     6,     2,
745        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
746        1,     1,     1,     2,     4,     4,     3,     2,     2,     2,
747        2,     4,     2,     0,     6,     2,     1,     1,     1,     0,
748        0,     7,     0,     0,     6,     2,     1,     1,     1,     1,
749        1,     1,     1,     1
750 };
751
752 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
753    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
754    means the default is an error.  */
755 static const unsigned char yydefact[] =
756 {
757        0,     0,     0,     0,     0,     0,     3,     6,     7,     4,
758        5,     8,     9,     0,     0,     1,     2,     0,     0,     0,
759        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
760        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
761        0,     0,     0,     0,    12,    14,    15,    13,    16,    17,
762       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
763       28,    29,    30,    31,    32,    33,    34,    35,    37,    36,
764      128,   127,   123,   132,   142,    39,    51,   141,    54,    52,
765       53,     0,    43,   140,   139,     0,    38,    40,   143,    41,
766        0,     0,    47,    48,     0,     0,     0,    56,    57,    58,
767        0,     0,     0,     0,    10,    11,     0,     0,    42,     0,
768        0,     0,     0,     0,    55,   129,     0,     0,     0,     0,
769      126,   136,   133,    44,    45,    46,    49,    50,     0,    78,
770       79,    75,    77,    76,    71,   101,   102,     0,    62,     0,
771      124,   125,   135,     0,   130,     0,     0,     0,     0,     0,
772        0,     0,     0,     0,     0,     0,     0,   100,   103,   104,
773      105,   106,   107,   109,   108,   110,   111,   112,     0,     0,
774        0,     0,     0,    61,    63,    64,    65,    66,   134,     0,
775        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
776       74,    80,    81,    82,    83,    84,    85,    86,    87,    88,
777      113,     0,   137,   138,     0,     0,   117,   118,   119,   120,
778        0,   122,    98,    99,    68,    67,     0,     0,    59,    60,
779      131,    96,     0,    91,    92,    93,     0,     0,    90,    89,
780       72,    73,     0,     0,   116,     0,     0,     0,     0,     0,
781        0,   114,   115,   121,    69,    70,    97,    95,    94
782 };
783
784 /* YYDEFGOTO[NTERM-NUM]. */
785 static const short int yydefgoto[] =
786 {
787       -1,     5,     6,     7,     8,     9,    43,    44,    45,    46,
788       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
789       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
790      172,   139,   173,   174,   175,   176,   177,    67,   145,   189,
791      134,   190,   191,   192,   193,   194,   195,   196,   197,   198,
792      199,    68,   156,   137,   157,   158,   159,   160,   161,   162,
793      163,   164,   165,   166,   167,    10,   106,   119,    69,    70,
794      128,   179,    71,   107,   143,   122,   201,   202,   203,    78,
795       75,    89
796 };
797
798 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
799    STATE-NUM.  */
800 #define YYPACT_NINF -123
801 static const short int yypact[] =
802 {
803        3,    27,    33,   -11,    37,    11,  -123,  -123,  -123,  -123,
804     -123,  -123,  -123,   180,    13,  -123,  -123,   -20,    43,    44,
805       47,    47,    47,    47,    48,    29,    43,    47,    49,    29,
806       29,    29,    29,    29,    29,    50,    49,    52,    56,    61,
807       19,    23,    36,    53,  -123,  -123,  -123,  -123,  -123,  -123,
808     -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,
809     -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,
810     -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,
811     -123,    47,  -123,  -123,  -123,    29,  -123,  -123,  -123,  -123,
812       29,    29,  -123,  -123,    29,    29,    59,  -123,  -123,  -123,
813       -9,     8,    25,    57,  -123,  -123,    21,    70,  -123,    29,
814       29,    29,    29,    29,  -123,  -123,     9,   -52,    -7,     6,
815     -123,  -123,   109,  -123,  -123,  -123,  -123,  -123,    70,  -123,
816     -123,  -123,  -123,  -123,  -123,  -123,  -123,   191,  -123,   -60,
817     -123,  -123,  -123,    51,   109,    67,   113,    29,    29,    29,
818       29,    29,    29,    29,    29,    43,    78,  -123,  -123,  -123,
819     -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,    49,    49,
820       29,    29,   -26,  -123,  -123,  -123,  -123,  -123,  -123,    55,
821      121,    93,    49,    49,    49,    29,    29,   131,   132,   185,
822     -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,
823     -123,    29,  -123,  -123,    29,    29,  -123,  -123,  -123,  -123,
824       29,  -123,  -123,  -123,  -123,  -123,    29,    29,  -123,  -123,
825     -123,  -123,    21,  -123,  -123,  -123,    29,    29,  -123,  -123,
826     -123,  -123,    29,    29,  -123,    29,    29,    29,    20,    29,
827       29,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123
828 };
829
830 /* YYPGOTO[NTERM-NUM].  */
831 static const short int yypgoto[] =
832 {
833     -123,  -123,   134,  -123,  -123,  -123,  -123,   107,  -123,  -123,
834     -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,
835     -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,
836     -123,  -123,   -19,  -123,  -123,  -123,  -123,  -123,  -123,  -123,
837     -123,   -33,  -123,  -123,  -123,  -123,  -123,  -123,  -123,  -123,
838     -123,  -123,  -123,  -123,     1,  -123,  -123,  -123,  -123,  -123,
839     -123,  -123,  -123,  -123,  -123,  -123,  -123,   -68,  -103,  -123,
840     -123,  -123,  -123,  -123,  -123,    30,  -110,  -122,   -25,    -2,
841      -24,   -35
842 };
843
844 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
845    positive, shift that token.  If negative, reduce the rule which
846    number is the opposite.  If zero, do what YYDEFACT says.
847    If YYTABLE_NINF, syntax error.  */
848 #define YYTABLE_NINF -1
849 static const unsigned char yytable[] =
850 {
851       85,    97,    86,   120,    90,    91,    92,    93,    94,    95,
852      218,    15,    17,   168,     1,     2,   141,   129,   130,    79,
853       80,    81,     1,     2,    13,    87,    17,    17,   206,   207,
854       11,   209,    83,    84,   135,   136,    12,     3,   204,   169,
855      170,   171,   140,    14,    73,     3,    74,   168,    72,    76,
856       77,    82,    88,    96,   101,   115,   246,    98,   102,    17,
857      109,    99,   114,    18,     4,   110,   111,   100,    39,   112,
858      113,   103,     4,   169,   170,   171,   116,   121,   131,   108,
859      132,   133,    39,    39,   123,   124,   125,   126,   127,   104,
860       19,   232,    20,   117,   233,   138,    21,    22,    23,    24,
861       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
862       35,    36,    37,    38,   212,    39,   142,   178,   200,   120,
863       40,   220,   241,   242,   205,   118,   221,   208,   222,   210,
864      180,   211,   181,   214,   215,   141,   228,   229,    41,    16,
865      182,   183,   184,   185,   186,   216,   217,   223,   224,   225,
866      105,    42,   187,   219,   238,   188,   231,   213,   144,     0,
867      226,   227,     0,     0,     0,     0,   146,   147,   148,   149,
868      150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
869      234,     0,     0,     0,     0,   235,    17,     0,     0,     0,
870       18,   236,   237,     0,     0,     0,     0,     0,     0,     0,
871        0,   239,   240,     0,     0,     0,     0,     0,     0,     0,
872      243,   244,   245,     0,   247,   248,     0,    19,     0,    20,
873        0,   230,     0,    21,    22,    23,    24,    25,    26,    27,
874       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
875       38,     0,    39,     0,     0,     0,     0,    40,   180,     0,
876      181,     0,     0,     0,     0,     0,     0,     0,   182,   183,
877      184,   185,   186,     0,     0,    41,     0,     0,     0,     0,
878      187,     0,     0,   188,     0,     0,     0,     0,    42,   146,
879      147,   148,   149,   150,   151,   152,   153,   154,   155
880 };
881
882 static const short int yycheck[] =
883 {
884       25,    36,    26,   106,    29,    30,    31,    32,    33,    34,
885       36,     0,     6,    73,    11,    12,   119,     8,     9,    21,
886       22,    23,    11,    12,    35,    27,     6,     6,   150,   151,
887        3,   153,     3,     4,    86,    87,     3,    34,   148,    99,
888      100,   101,    36,     6,    64,    34,     3,    73,    35,     5,
889        3,     3,     3,     3,    35,    64,    36,     5,    35,     6,
890       85,     5,     3,    10,    61,    90,    91,     6,    62,    94,
891       95,    35,    61,    99,   100,   101,    68,     7,    69,    81,
892       71,    72,    62,    62,   109,   110,   111,   112,   113,    36,
893       37,   201,    39,    68,   204,   102,    43,    44,    45,    46,
894       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
895       57,    58,    59,    60,    36,    62,     7,    66,     5,   222,
896       67,    66,   232,   233,   149,    68,     5,   152,    35,   154,
897       63,   155,    65,   168,   169,   238,     5,     5,    85,     5,
898       73,    74,    75,    76,    77,   170,   171,   182,   183,   184,
899       43,    98,    85,   172,   222,    88,   189,   156,   128,    -1,
900      185,   186,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
901       92,    93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,
902      205,    -1,    -1,    -1,    -1,   210,     6,    -1,    -1,    -1,
903       10,   216,   217,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
904       -1,   226,   227,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
905      235,   236,   237,    -1,   239,   240,    -1,    37,    -1,    39,
906       -1,    36,    -1,    43,    44,    45,    46,    47,    48,    49,
907       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
908       60,    -1,    62,    -1,    -1,    -1,    -1,    67,    63,    -1,
909       65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
910       75,    76,    77,    -1,    -1,    85,    -1,    -1,    -1,    -1,
911       85,    -1,    -1,    88,    -1,    -1,    -1,    -1,    98,    88,
912       89,    90,    91,    92,    93,    94,    95,    96,    97
913 };
914
915 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
916    symbol of state STATE-NUM.  */
917 static const unsigned char yystos[] =
918 {
919        0,    11,    12,    34,    61,   108,   109,   110,   111,   112,
920      172,     3,     3,    35,     6,     0,   109,     6,    10,    37,
921       39,    43,    44,    45,    46,    47,    48,    49,    50,    51,
922       52,    53,    54,    55,    56,    57,    58,    59,    60,    62,
923       67,    85,    98,   113,   114,   115,   116,   117,   118,   119,
924      120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
925      130,   131,   132,   133,   134,   135,   136,   144,   158,   175,
926      176,   179,    35,    64,     3,   187,     5,     3,   186,   186,
927      186,   186,     3,     3,     4,   185,   187,   186,     3,   188,
928      185,   185,   185,   185,   185,   185,     3,   188,     5,     5,
929        6,    35,    35,    35,    36,   114,   173,   180,   186,   185,
930      185,   185,   185,   185,     3,    64,    68,    68,    68,   174,
931      175,     7,   182,   185,   185,   185,   185,   185,   177,     8,
932        9,    69,    71,    72,   147,    86,    87,   160,   102,   138,
933       36,   175,     7,   181,   182,   145,    88,    89,    90,    91,
934       92,    93,    94,    95,    96,    97,   159,   161,   162,   163,
935      164,   165,   166,   167,   168,   169,   170,   171,    73,    99,
936      100,   101,   137,   139,   140,   141,   142,   143,    66,   178,
937       63,    65,    73,    74,    75,    76,    77,    85,    88,   146,
938      148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
939        5,   183,   184,   185,   183,   185,   184,   184,   185,   184,
940      185,   187,    36,   161,   188,   188,   185,   185,    36,   139,
941       66,     5,    35,   188,   188,   188,   185,   185,     5,     5,
942       36,   148,   183,   183,   185,   185,   185,   185,   174,   185,
943      185,   183,   183,   185,   185,   185,    36,   185,   185
944 };
945
946 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
947 # define YYSIZE_T __SIZE_TYPE__
948 #endif
949 #if ! defined (YYSIZE_T) && defined (size_t)
950 # define YYSIZE_T size_t
951 #endif
952 #if ! defined (YYSIZE_T)
953 # if defined (__STDC__) || defined (__cplusplus)
954 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
955 #  define YYSIZE_T size_t
956 # endif
957 #endif
958 #if ! defined (YYSIZE_T)
959 # define YYSIZE_T unsigned int
960 #endif
961
962 #define yyerrok         (yyerrstatus = 0)
963 #define yyclearin       (yychar = YYEMPTY)
964 #define YYEMPTY         (-2)
965 #define YYEOF           0
966
967 #define YYACCEPT        goto yyacceptlab
968 #define YYABORT         goto yyabortlab
969 #define YYERROR         goto yyerrorlab
970
971
972 /* Like YYERROR except do call yyerror.  This remains here temporarily
973    to ease the transition to the new meaning of YYERROR, for GCC.
974    Once GCC version 2 has supplanted version 1, this can go.  */
975
976 #define YYFAIL          goto yyerrlab
977
978 #define YYRECOVERING()  (!!yyerrstatus)
979
980 #define YYBACKUP(Token, Value)                                  \
981 do                                                              \
982   if (yychar == YYEMPTY && yylen == 1)                          \
983     {                                                           \
984       yychar = (Token);                                         \
985       yylval = (Value);                                         \
986       yytoken = YYTRANSLATE (yychar);                           \
987       YYPOPSTACK;                                               \
988       goto yybackup;                                            \
989     }                                                           \
990   else                                                          \
991     {                                                           \
992       yyerror ("syntax error: cannot back up");\
993       YYERROR;                                                  \
994     }                                                           \
995 while (0)
996
997
998 #define YYTERROR        1
999 #define YYERRCODE       256
1000
1001
1002 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1003    If N is 0, then set CURRENT to the empty location which ends
1004    the previous symbol: RHS[0] (always defined).  */
1005
1006 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1007 #ifndef YYLLOC_DEFAULT
1008 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
1009     do                                                                  \
1010       if (N)                                                            \
1011         {                                                               \
1012           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
1013           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
1014           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
1015           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
1016         }                                                               \
1017       else                                                              \
1018         {                                                               \
1019           (Current).first_line   = (Current).last_line   =              \
1020             YYRHSLOC (Rhs, 0).last_line;                                \
1021           (Current).first_column = (Current).last_column =              \
1022             YYRHSLOC (Rhs, 0).last_column;                              \
1023         }                                                               \
1024     while (0)
1025 #endif
1026
1027
1028 /* YY_LOCATION_PRINT -- Print the location on the stream.
1029    This macro was not mandated originally: define only if we know
1030    we won't break user code: when these are the locations we know.  */
1031
1032 #ifndef YY_LOCATION_PRINT
1033 # if YYLTYPE_IS_TRIVIAL
1034 #  define YY_LOCATION_PRINT(File, Loc)                  \
1035      fprintf (File, "%d.%d-%d.%d",                      \
1036               (Loc).first_line, (Loc).first_column,     \
1037               (Loc).last_line,  (Loc).last_column)
1038 # else
1039 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1040 # endif
1041 #endif
1042
1043
1044 /* YYLEX -- calling `yylex' with the right arguments.  */
1045
1046 #ifdef YYLEX_PARAM
1047 # define YYLEX yylex (YYLEX_PARAM)
1048 #else
1049 # define YYLEX yylex ()
1050 #endif
1051
1052 /* Enable debugging if requested.  */
1053 #if YYDEBUG
1054
1055 # ifndef YYFPRINTF
1056 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1057 #  define YYFPRINTF fprintf
1058 # endif
1059
1060 # define YYDPRINTF(Args)                        \
1061 do {                                            \
1062   if (yydebug)                                  \
1063     YYFPRINTF Args;                             \
1064 } while (0)
1065
1066 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)          \
1067 do {                                                            \
1068   if (yydebug)                                                  \
1069     {                                                           \
1070       YYFPRINTF (stderr, "%s ", Title);                         \
1071       yysymprint (stderr,                                       \
1072                   Type, Value); \
1073       YYFPRINTF (stderr, "\n");                                 \
1074     }                                                           \
1075 } while (0)
1076
1077 /*------------------------------------------------------------------.
1078 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1079 | TOP (included).                                                   |
1080 `------------------------------------------------------------------*/
1081
1082 #if defined (__STDC__) || defined (__cplusplus)
1083 static void
1084 yy_stack_print (short int *bottom, short int *top)
1085 #else
1086 static void
1087 yy_stack_print (bottom, top)
1088     short int *bottom;
1089     short int *top;
1090 #endif
1091 {
1092   YYFPRINTF (stderr, "Stack now");
1093   for (/* Nothing. */; bottom <= top; ++bottom)
1094     YYFPRINTF (stderr, " %d", *bottom);
1095   YYFPRINTF (stderr, "\n");
1096 }
1097
1098 # define YY_STACK_PRINT(Bottom, Top)                            \
1099 do {                                                            \
1100   if (yydebug)                                                  \
1101     yy_stack_print ((Bottom), (Top));                           \
1102 } while (0)
1103
1104
1105 /*------------------------------------------------.
1106 | Report that the YYRULE is going to be reduced.  |
1107 `------------------------------------------------*/
1108
1109 #if defined (__STDC__) || defined (__cplusplus)
1110 static void
1111 yy_reduce_print (int yyrule)
1112 #else
1113 static void
1114 yy_reduce_print (yyrule)
1115     int yyrule;
1116 #endif
1117 {
1118   int yyi;
1119   unsigned int yylno = yyrline[yyrule];
1120   YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
1121              yyrule - 1, yylno);
1122   /* Print the symbols being reduced, and their result.  */
1123   for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1124     YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
1125   YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
1126 }
1127
1128 # define YY_REDUCE_PRINT(Rule)          \
1129 do {                                    \
1130   if (yydebug)                          \
1131     yy_reduce_print (Rule);             \
1132 } while (0)
1133
1134 /* Nonzero means print parse trace.  It is left uninitialized so that
1135    multiple parsers can coexist.  */
1136 int yydebug;
1137 #else /* !YYDEBUG */
1138 # define YYDPRINTF(Args)
1139 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1140 # define YY_STACK_PRINT(Bottom, Top)
1141 # define YY_REDUCE_PRINT(Rule)
1142 #endif /* !YYDEBUG */
1143
1144
1145 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1146 #ifndef YYINITDEPTH
1147 # define YYINITDEPTH 200
1148 #endif
1149
1150 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1151    if the built-in stack extension method is used).
1152
1153    Do not make this value too large; the results are undefined if
1154    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1155    evaluated with infinite-precision integer arithmetic.  */
1156
1157 #ifndef YYMAXDEPTH
1158 # define YYMAXDEPTH 10000
1159 #endif
1160
1161 \f
1162
1163 #if YYERROR_VERBOSE
1164
1165 # ifndef yystrlen
1166 #  if defined (__GLIBC__) && defined (_STRING_H)
1167 #   define yystrlen strlen
1168 #  else
1169 /* Return the length of YYSTR.  */
1170 static YYSIZE_T
1171 #   if defined (__STDC__) || defined (__cplusplus)
1172 yystrlen (const char *yystr)
1173 #   else
1174 yystrlen (yystr)
1175      const char *yystr;
1176 #   endif
1177 {
1178   register const char *yys = yystr;
1179
1180   while (*yys++ != '\0')
1181     continue;
1182
1183   return yys - yystr - 1;
1184 }
1185 #  endif
1186 # endif
1187
1188 # ifndef yystpcpy
1189 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1190 #   define yystpcpy stpcpy
1191 #  else
1192 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1193    YYDEST.  */
1194 static char *
1195 #   if defined (__STDC__) || defined (__cplusplus)
1196 yystpcpy (char *yydest, const char *yysrc)
1197 #   else
1198 yystpcpy (yydest, yysrc)
1199      char *yydest;
1200      const char *yysrc;
1201 #   endif
1202 {
1203   register char *yyd = yydest;
1204   register const char *yys = yysrc;
1205
1206   while ((*yyd++ = *yys++) != '\0')
1207     continue;
1208
1209   return yyd - 1;
1210 }
1211 #  endif
1212 # endif
1213
1214 #endif /* !YYERROR_VERBOSE */
1215
1216 \f
1217
1218 #if YYDEBUG
1219 /*--------------------------------.
1220 | Print this symbol on YYOUTPUT.  |
1221 `--------------------------------*/
1222
1223 #if defined (__STDC__) || defined (__cplusplus)
1224 static void
1225 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
1226 #else
1227 static void
1228 yysymprint (yyoutput, yytype, yyvaluep)
1229     FILE *yyoutput;
1230     int yytype;
1231     YYSTYPE *yyvaluep;
1232 #endif
1233 {
1234   /* Pacify ``unused variable'' warnings.  */
1235   (void) yyvaluep;
1236
1237   if (yytype < YYNTOKENS)
1238     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1239   else
1240     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1241
1242
1243 # ifdef YYPRINT
1244   if (yytype < YYNTOKENS)
1245     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1246 # endif
1247   switch (yytype)
1248     {
1249       default:
1250         break;
1251     }
1252   YYFPRINTF (yyoutput, ")");
1253 }
1254
1255 #endif /* ! YYDEBUG */
1256 /*-----------------------------------------------.
1257 | Release the memory associated to this symbol.  |
1258 `-----------------------------------------------*/
1259
1260 #if defined (__STDC__) || defined (__cplusplus)
1261 static void
1262 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1263 #else
1264 static void
1265 yydestruct (yymsg, yytype, yyvaluep)
1266     const char *yymsg;
1267     int yytype;
1268     YYSTYPE *yyvaluep;
1269 #endif
1270 {
1271   /* Pacify ``unused variable'' warnings.  */
1272   (void) yyvaluep;
1273
1274   if (!yymsg)
1275     yymsg = "Deleting";
1276   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1277
1278   switch (yytype)
1279     {
1280
1281       default:
1282         break;
1283     }
1284 }
1285 \f
1286
1287 /* Prevent warnings from -Wmissing-prototypes.  */
1288
1289 #ifdef YYPARSE_PARAM
1290 # if defined (__STDC__) || defined (__cplusplus)
1291 int yyparse (void *YYPARSE_PARAM);
1292 # else
1293 int yyparse ();
1294 # endif
1295 #else /* ! YYPARSE_PARAM */
1296 #if defined (__STDC__) || defined (__cplusplus)
1297 int yyparse (void);
1298 #else
1299 int yyparse ();
1300 #endif
1301 #endif /* ! YYPARSE_PARAM */
1302
1303
1304
1305 /* The look-ahead symbol.  */
1306 int yychar;
1307
1308 /* The semantic value of the look-ahead symbol.  */
1309 YYSTYPE yylval;
1310
1311 /* Number of syntax errors so far.  */
1312 int yynerrs;
1313
1314
1315
1316 /*----------.
1317 | yyparse.  |
1318 `----------*/
1319
1320 #ifdef YYPARSE_PARAM
1321 # if defined (__STDC__) || defined (__cplusplus)
1322 int yyparse (void *YYPARSE_PARAM)
1323 # else
1324 int yyparse (YYPARSE_PARAM)
1325   void *YYPARSE_PARAM;
1326 # endif
1327 #else /* ! YYPARSE_PARAM */
1328 #if defined (__STDC__) || defined (__cplusplus)
1329 int
1330 yyparse (void)
1331 #else
1332 int
1333 yyparse ()
1334
1335 #endif
1336 #endif
1337 {
1338   
1339   register int yystate;
1340   register int yyn;
1341   int yyresult;
1342   /* Number of tokens to shift before error messages enabled.  */
1343   int yyerrstatus;
1344   /* Look-ahead token as an internal (translated) token number.  */
1345   int yytoken = 0;
1346
1347   /* Three stacks and their tools:
1348      `yyss': related to states,
1349      `yyvs': related to semantic values,
1350      `yyls': related to locations.
1351
1352      Refer to the stacks thru separate pointers, to allow yyoverflow
1353      to reallocate them elsewhere.  */
1354
1355   /* The state stack.  */
1356   short int yyssa[YYINITDEPTH];
1357   short int *yyss = yyssa;
1358   register short int *yyssp;
1359
1360   /* The semantic value stack.  */
1361   YYSTYPE yyvsa[YYINITDEPTH];
1362   YYSTYPE *yyvs = yyvsa;
1363   register YYSTYPE *yyvsp;
1364
1365
1366
1367 #define YYPOPSTACK   (yyvsp--, yyssp--)
1368
1369   YYSIZE_T yystacksize = YYINITDEPTH;
1370
1371   /* The variables used to return semantic value and location from the
1372      action routines.  */
1373   YYSTYPE yyval;
1374
1375
1376   /* When reducing, the number of symbols on the RHS of the reduced
1377      rule.  */
1378   int yylen;
1379
1380   YYDPRINTF ((stderr, "Starting parse\n"));
1381
1382   yystate = 0;
1383   yyerrstatus = 0;
1384   yynerrs = 0;
1385   yychar = YYEMPTY;             /* Cause a token to be read.  */
1386
1387   /* Initialize stack pointers.
1388      Waste one element of value and location stack
1389      so that they stay on the same level as the state stack.
1390      The wasted elements are never initialized.  */
1391
1392   yyssp = yyss;
1393   yyvsp = yyvs;
1394
1395
1396   yyvsp[0] = yylval;
1397
1398   goto yysetstate;
1399
1400 /*------------------------------------------------------------.
1401 | yynewstate -- Push a new state, which is found in yystate.  |
1402 `------------------------------------------------------------*/
1403  yynewstate:
1404   /* In all cases, when you get here, the value and location stacks
1405      have just been pushed. so pushing a state here evens the stacks.
1406      */
1407   yyssp++;
1408
1409  yysetstate:
1410   *yyssp = yystate;
1411
1412   if (yyss + yystacksize - 1 <= yyssp)
1413     {
1414       /* Get the current used size of the three stacks, in elements.  */
1415       YYSIZE_T yysize = yyssp - yyss + 1;
1416
1417 #ifdef yyoverflow
1418       {
1419         /* Give user a chance to reallocate the stack. Use copies of
1420            these so that the &'s don't force the real ones into
1421            memory.  */
1422         YYSTYPE *yyvs1 = yyvs;
1423         short int *yyss1 = yyss;
1424
1425
1426         /* Each stack pointer address is followed by the size of the
1427            data in use in that stack, in bytes.  This used to be a
1428            conditional around just the two extra args, but that might
1429            be undefined if yyoverflow is a macro.  */
1430         yyoverflow ("parser stack overflow",
1431                     &yyss1, yysize * sizeof (*yyssp),
1432                     &yyvs1, yysize * sizeof (*yyvsp),
1433
1434                     &yystacksize);
1435
1436         yyss = yyss1;
1437         yyvs = yyvs1;
1438       }
1439 #else /* no yyoverflow */
1440 # ifndef YYSTACK_RELOCATE
1441       goto yyoverflowlab;
1442 # else
1443       /* Extend the stack our own way.  */
1444       if (YYMAXDEPTH <= yystacksize)
1445         goto yyoverflowlab;
1446       yystacksize *= 2;
1447       if (YYMAXDEPTH < yystacksize)
1448         yystacksize = YYMAXDEPTH;
1449
1450       {
1451         short int *yyss1 = yyss;
1452         union yyalloc *yyptr =
1453           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1454         if (! yyptr)
1455           goto yyoverflowlab;
1456         YYSTACK_RELOCATE (yyss);
1457         YYSTACK_RELOCATE (yyvs);
1458
1459 #  undef YYSTACK_RELOCATE
1460         if (yyss1 != yyssa)
1461           YYSTACK_FREE (yyss1);
1462       }
1463 # endif
1464 #endif /* no yyoverflow */
1465
1466       yyssp = yyss + yysize - 1;
1467       yyvsp = yyvs + yysize - 1;
1468
1469
1470       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1471                   (unsigned long int) yystacksize));
1472
1473       if (yyss + yystacksize - 1 <= yyssp)
1474         YYABORT;
1475     }
1476
1477   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1478
1479   goto yybackup;
1480
1481 /*-----------.
1482 | yybackup.  |
1483 `-----------*/
1484 yybackup:
1485
1486 /* Do appropriate processing given the current state.  */
1487 /* Read a look-ahead token if we need one and don't already have one.  */
1488 /* yyresume: */
1489
1490   /* First try to decide what to do without reference to look-ahead token.  */
1491
1492   yyn = yypact[yystate];
1493   if (yyn == YYPACT_NINF)
1494     goto yydefault;
1495
1496   /* Not known => get a look-ahead token if don't already have one.  */
1497
1498   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1499   if (yychar == YYEMPTY)
1500     {
1501       YYDPRINTF ((stderr, "Reading a token: "));
1502       yychar = YYLEX;
1503     }
1504
1505   if (yychar <= YYEOF)
1506     {
1507       yychar = yytoken = YYEOF;
1508       YYDPRINTF ((stderr, "Now at end of input.\n"));
1509     }
1510   else
1511     {
1512       yytoken = YYTRANSLATE (yychar);
1513       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1514     }
1515
1516   /* If the proper action on seeing token YYTOKEN is to reduce or to
1517      detect an error, take that action.  */
1518   yyn += yytoken;
1519   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1520     goto yydefault;
1521   yyn = yytable[yyn];
1522   if (yyn <= 0)
1523     {
1524       if (yyn == 0 || yyn == YYTABLE_NINF)
1525         goto yyerrlab;
1526       yyn = -yyn;
1527       goto yyreduce;
1528     }
1529
1530   if (yyn == YYFINAL)
1531     YYACCEPT;
1532
1533   /* Shift the look-ahead token.  */
1534   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1535
1536   /* Discard the token being shifted unless it is eof.  */
1537   if (yychar != YYEOF)
1538     yychar = YYEMPTY;
1539
1540   *++yyvsp = yylval;
1541
1542
1543   /* Count tokens shifted since error; after three, turn off error
1544      status.  */
1545   if (yyerrstatus)
1546     yyerrstatus--;
1547
1548   yystate = yyn;
1549   goto yynewstate;
1550
1551
1552 /*-----------------------------------------------------------.
1553 | yydefault -- do the default action for the current state.  |
1554 `-----------------------------------------------------------*/
1555 yydefault:
1556   yyn = yydefact[yystate];
1557   if (yyn == 0)
1558     goto yyerrlab;
1559   goto yyreduce;
1560
1561
1562 /*-----------------------------.
1563 | yyreduce -- Do a reduction.  |
1564 `-----------------------------*/
1565 yyreduce:
1566   /* yyn is the number of a rule to reduce with.  */
1567   yylen = yyr2[yyn];
1568
1569   /* If YYLEN is nonzero, implement the default value of the action:
1570      `$$ = $1'.
1571
1572      Otherwise, the following line sets YYVAL to garbage.
1573      This behavior is undocumented and Bison
1574      users should not rely upon it.  Assigning to YYVAL
1575      unconditionally makes the parser a bit smaller, and it avoids a
1576      GCC warning that YYVAL may be used uninitialized.  */
1577   yyval = yyvsp[1-yylen];
1578
1579
1580   YY_REDUCE_PRINT (yyn);
1581   switch (yyn)
1582     {
1583         case 8:
1584 #line 155 "src/cfgparser.yy"
1585     { yy_debug = (yyvsp[0].intValue); }
1586     break;
1587
1588   case 9:
1589 #line 158 "src/cfgparser.yy"
1590     { 
1591                 int sdebug = (yyvsp[0].intValue); 
1592                 if(sdebug<0) sdebug=0;
1593                 if(sdebug>10) sdebug=10;
1594                 gDebugLevel = sdebug;
1595         }
1596     break;
1597
1598   case 38:
1599 #line 209 "src/cfgparser.yy"
1600     { reglob->setAniStart( (yyvsp[0].intValue) ); }
1601     break;
1602
1603   case 39:
1604 #line 213 "src/cfgparser.yy"
1605     { /*reglob->setAniFrameTime( $2 );*/ debMsgStd("cfgparser",DM_NOTIFY,"Deprecated setting aniframetime!",1); }
1606     break;
1607
1608   case 40:
1609 #line 218 "src/cfgparser.yy"
1610     { reglob->setAniFrames( ((yyvsp[0].intValue))-1 ); }
1611     break;
1612
1613   case 41:
1614 #line 222 "src/cfgparser.yy"
1615     { reglob->setFrameSkip( ((yyvsp[0].intValue)) ); }
1616     break;
1617
1618   case 42:
1619 #line 228 "src/cfgparser.yy"
1620     { reglob->setResX( (yyvsp[-1].intValue) ); reglob->setResY( (yyvsp[0].intValue)); }
1621     break;
1622
1623   case 43:
1624 #line 232 "src/cfgparser.yy"
1625     { reglob->setAADepth( (yyvsp[0].intValue) ); }
1626     break;
1627
1628   case 44:
1629 #line 236 "src/cfgparser.yy"
1630     { reglob->setEye( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); }
1631     break;
1632
1633   case 45:
1634 #line 240 "src/cfgparser.yy"
1635     { reglob->setLookat( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); }
1636     break;
1637
1638   case 46:
1639 #line 244 "src/cfgparser.yy"
1640     { reglob->setUpVec( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); }
1641     break;
1642
1643   case 47:
1644 #line 248 "src/cfgparser.yy"
1645     { reglob->setFovy( (yyvsp[0].floatValue) ); }
1646     break;
1647
1648   case 48:
1649 #line 252 "src/cfgparser.yy"
1650     { reglob->setAspect( (yyvsp[0].floatValue) ); }
1651     break;
1652
1653   case 49:
1654 #line 256 "src/cfgparser.yy"
1655     { reglob->setAmbientLight( ntlColor((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue))  ); }
1656     break;
1657
1658   case 50:
1659 #line 260 "src/cfgparser.yy"
1660     { reglob->setBackgroundCol( ntlColor((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); }
1661     break;
1662
1663   case 51:
1664 #line 264 "src/cfgparser.yy"
1665     { reglob->setOutFilename( (yyvsp[0].charValue) ); }
1666     break;
1667
1668   case 52:
1669 #line 268 "src/cfgparser.yy"
1670     { reglob->setTreeMaxDepth( (yyvsp[0].intValue) ); }
1671     break;
1672
1673   case 53:
1674 #line 272 "src/cfgparser.yy"
1675     { reglob->setTreeMaxTriangles( (yyvsp[0].intValue) ); }
1676     break;
1677
1678   case 54:
1679 #line 276 "src/cfgparser.yy"
1680     { reglob->setRayMaxDepth( (yyvsp[0].intValue) ); }
1681     break;
1682
1683   case 55:
1684 #line 280 "src/cfgparser.yy"
1685     { reglob->setDebugPixel( (yyvsp[-1].intValue), (yyvsp[0].intValue) ); }
1686     break;
1687
1688   case 56:
1689 #line 284 "src/cfgparser.yy"
1690     { reglob->setTestMode( (yyvsp[0].intValue) ); }
1691     break;
1692
1693   case 57:
1694 #line 288 "src/cfgparser.yy"
1695     { if(attrs[(yyvsp[0].charValue)] == NULL){ yyerror("OPENGL ATTRIBUTES: The attribute was not found!"); }
1696                         reglob->getOpenGlAttributes()->import( attrs[(yyvsp[0].charValue)] ); }
1697     break;
1698
1699   case 58:
1700 #line 293 "src/cfgparser.yy"
1701     { if(attrs[(yyvsp[0].charValue)] == NULL){ yyerror("BLENDER ATTRIBUTES: The attribute was not found!"); }
1702                         reglob->getBlenderAttributes()->import( attrs[(yyvsp[0].charValue)] ); }
1703     break;
1704
1705   case 59:
1706 #line 305 "src/cfgparser.yy"
1707     { 
1708                                 /* reset light pointers */
1709                                 currentLightOmni = NULL; 
1710                         }
1711     break;
1712
1713   case 62:
1714 #line 317 "src/cfgparser.yy"
1715     { currentLightOmni = new ntlLightObject( reglob );
1716                   currentLight = currentLightOmni;
1717                         reglob->getLightList()->push_back(currentLight);
1718                 }
1719     break;
1720
1721   case 67:
1722 #line 331 "src/cfgparser.yy"
1723     { 
1724                         currentLight->setActive( (yyvsp[0].intValue) ); 
1725                 }
1726     break;
1727
1728   case 68:
1729 #line 336 "src/cfgparser.yy"
1730     { 
1731                         currentLight->setCastShadows( (yyvsp[0].intValue) ); 
1732                 }
1733     break;
1734
1735   case 69:
1736 #line 341 "src/cfgparser.yy"
1737     { 
1738                         currentLight->setColor( ntlColor((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); 
1739                 }
1740     break;
1741
1742   case 70:
1743 #line 346 "src/cfgparser.yy"
1744     { 
1745                 int init = 0;
1746                 if(currentLightOmni != NULL) {
1747                         currentLightOmni->setPosition( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); init = 1; }
1748                 if(!init) yyerror("This property can only be set for omni-directional and rectangular lights!");
1749         }
1750     break;
1751
1752   case 71:
1753 #line 364 "src/cfgparser.yy"
1754     {
1755                                 // geo classes have attributes...
1756                                 reglob->getRenderScene()->addGeoClass(currentGeoClass);
1757                                 reglob->getSimScene()->addGeoClass(currentGeoClass);
1758                                 currentAttrib = currentGeoClass->getAttributeList();
1759                         }
1760     break;
1761
1762   case 72:
1763 #line 371 "src/cfgparser.yy"
1764     { 
1765                                 /* reset geometry object pointers */
1766                                 currentGeoObj                    = NULL; 
1767                                 currentGeoClass          = NULL; 
1768                                 currentGeometrySim = NULL; 
1769                                 currentGeometryModel = NULL; 
1770                                 currentAttrib = NULL;
1771 #ifndef ELBEEM_PLUGIN
1772                                 currentGeometryBox = NULL; 
1773 #endif // ELBEEM_PLUGIN
1774                         }
1775     break;
1776
1777   case 75:
1778 #line 389 "src/cfgparser.yy"
1779     { 
1780 #ifndef ELBEEM_PLUGIN
1781                         currentGeometryBox = new ntlGeometryBox( );
1782                         currentGeoClass = currentGeometryBox;
1783                         currentGeoObj = (ntlGeometryObject*)( currentGeometryBox );
1784 #else // ELBEEM_PLUGIN
1785                         yyerror("GEOTYPE_BOX : This object type is not supported in this version!");
1786 #endif // ELBEEM_PLUGIN
1787                 }
1788     break;
1789
1790   case 76:
1791 #line 398 "src/cfgparser.yy"
1792     { 
1793 #ifndef ELBEEM_PLUGIN
1794                         currentGeoClass = new ntlGeometrySphere( );
1795                         currentGeoObj = (ntlGeometryObject*)( currentGeoClass );
1796 #else // ELBEEM_PLUGIN
1797                         yyerror("GEOTYPE_SPHERE : This object type is not supported in this version!");
1798 #endif // ELBEEM_PLUGIN
1799                 }
1800     break;
1801
1802   case 77:
1803 #line 406 "src/cfgparser.yy"
1804     { 
1805                         currentGeometryModel = new ntlGeometryObjModel( );
1806                         currentGeoClass = currentGeometryModel;
1807                         currentGeoObj = (ntlGeometryObject*)( currentGeometryModel );
1808                 }
1809     break;
1810
1811   case 78:
1812 #line 411 "src/cfgparser.yy"
1813     { 
1814                         currentGeometrySim = new SimulationObject();
1815                         currentGeoClass = currentGeometrySim;
1816                         reglob->getSims()->push_back(currentGeometrySim);
1817                         // dont add mcubes to geo list!
1818                 }
1819     break;
1820
1821   case 79:
1822 #line 417 "src/cfgparser.yy"
1823     { 
1824 #ifdef LBM_INCLUDE_TESTSOLVERS
1825                         currentGeometrySim = new SimulationCompareLbm();
1826                         currentGeoClass = currentGeometrySim;
1827                         reglob->getSims()->push_back(currentGeometrySim);
1828 #else // LBM_INCLUDE_TESTSOLVERS
1829                         errMsg("El'Beem::cfg","compare test solver not supported!");
1830 #endif // LBM_INCLUDE_TESTSOLVERS
1831                 }
1832     break;
1833
1834   case 89:
1835 #line 442 "src/cfgparser.yy"
1836     { 
1837                         currentGeoClass->setName( (yyvsp[0].charValue) ); 
1838                 }
1839     break;
1840
1841   case 90:
1842 #line 447 "src/cfgparser.yy"
1843     { 
1844                         if(currentGeoObj == NULL){ yyerror(" MATERIAL : This property can only be set for geometry objects!"); }
1845                         currentGeoObj->setMaterialName( (yyvsp[0].charValue) ); 
1846                 }
1847     break;
1848
1849   case 91:
1850 #line 453 "src/cfgparser.yy"
1851     { 
1852                         if(currentGeoObj == NULL){ yyerror(" CAST_SHADOW : This property can only be set for geometry objects!"); }
1853                         currentGeoObj->setCastShadows( (yyvsp[0].intValue) ); 
1854                 }
1855     break;
1856
1857   case 92:
1858 #line 459 "src/cfgparser.yy"
1859     { 
1860                         if(currentGeoObj == NULL){ yyerror(" RECEIVE_SHADOW : This property can only be set for geometry objects!"); }
1861                         currentGeoObj->setReceiveShadows( (yyvsp[0].intValue) ); 
1862                 }
1863     break;
1864
1865   case 93:
1866 #line 465 "src/cfgparser.yy"
1867     { 
1868                         currentGeoClass->setVisible( (yyvsp[0].intValue) ); 
1869                 }
1870     break;
1871
1872   case 94:
1873 #line 470 "src/cfgparser.yy"
1874     { 
1875                 int init = 0;
1876 #ifndef ELBEEM_PLUGIN
1877                 if(currentGeometryBox != NULL){ 
1878                         currentGeometryBox->setStart( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); init=1; }
1879 #else // ELBEEM_PLUGIN
1880 #endif // ELBEEM_PLUGIN
1881                 if(currentGeometrySim != NULL){ 
1882                         currentGeometrySim->setGeoStart( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); init=1; }
1883                 if(currentGeometryModel != NULL){ 
1884                         currentGeometryModel->setStart( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); init=1; }
1885                 if(!init ){ yyerror("BOXSTART : This property can only be set for box, objmodel, fluid and isosurface objects!"); }
1886         }
1887     break;
1888
1889   case 95:
1890 #line 485 "src/cfgparser.yy"
1891     { 
1892                 int init = 0;
1893 #ifndef ELBEEM_PLUGIN
1894                 if(currentGeometryBox != NULL){ 
1895                         currentGeometryBox->setEnd( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); init=1; }
1896 #else // ELBEEM_PLUGIN
1897 #endif // ELBEEM_PLUGIN
1898                 if(currentGeometrySim != NULL){ 
1899                         currentGeometrySim->setGeoEnd( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); init=1; }
1900                 if(currentGeometryModel != NULL){ 
1901                         currentGeometryModel->setEnd( ntlVec3Gfx((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); init=1; }
1902                 if(!init ){ yyerror("BOXEND : This property can only be set for box, objmodel, fluid and isosurface objects!"); }
1903         }
1904     break;
1905
1906   case 96:
1907 #line 501 "src/cfgparser.yy"
1908     { 
1909                         if(attrs[(yyvsp[0].charValue)] == NULL){ yyerror("GEO ATTRIBUTES: The attribute was not found!"); }
1910                         else {
1911                                 if(currentGeoClass->getAttributeList())
1912                                         currentGeoClass->getAttributeList()->import( attrs[(yyvsp[0].charValue)] ); 
1913                         }
1914                 }
1915     break;
1916
1917   case 97:
1918 #line 512 "src/cfgparser.yy"
1919     { }
1920     break;
1921
1922   case 98:
1923 #line 524 "src/cfgparser.yy"
1924     { 
1925                                 /* reset geometry object pointers */
1926                                 currentMaterial = NULL; 
1927                         }
1928     break;
1929
1930   case 101:
1931 #line 536 "src/cfgparser.yy"
1932     { currentMaterial = new ntlMaterial( );
1933                         currentMaterial = currentMaterial;
1934                         reglob->getMaterials()->push_back(currentMaterial);
1935                 }
1936     break;
1937
1938   case 102:
1939 #line 540 "src/cfgparser.yy"
1940     {
1941                 yyerror("MATTYPE: Blinn NYI!"); }
1942     break;
1943
1944   case 113:
1945 #line 558 "src/cfgparser.yy"
1946     { 
1947                         currentMaterial->setName( (yyvsp[0].charValue) ); 
1948                 }
1949     break;
1950
1951   case 114:
1952 #line 563 "src/cfgparser.yy"
1953     {
1954                         currentMaterial->setAmbientRefl( ntlColor((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); 
1955                 }
1956     break;
1957
1958   case 115:
1959 #line 568 "src/cfgparser.yy"
1960     { 
1961                         currentMaterial->setDiffuseRefl( ntlColor((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); 
1962                 }
1963     break;
1964
1965   case 116:
1966 #line 573 "src/cfgparser.yy"
1967     { 
1968                         currentMaterial->setSpecular( (yyvsp[-1].floatValue) ); 
1969                         currentMaterial->setSpecExponent( (yyvsp[0].floatValue) ); 
1970                 }
1971     break;
1972
1973   case 117:
1974 #line 579 "src/cfgparser.yy"
1975     { 
1976                         currentMaterial->setMirror( (yyvsp[0].floatValue) ); 
1977                 }
1978     break;
1979
1980   case 118:
1981 #line 584 "src/cfgparser.yy"
1982     { 
1983                         currentMaterial->setTransparence( (yyvsp[0].floatValue) ); 
1984                 }
1985     break;
1986
1987   case 119:
1988 #line 589 "src/cfgparser.yy"
1989     { 
1990                         currentMaterial->setRefracIndex( (yyvsp[0].floatValue) ); 
1991                 }
1992     break;
1993
1994   case 120:
1995 #line 594 "src/cfgparser.yy"
1996     { 
1997                         currentMaterial->setTransAdditive( (yyvsp[0].floatValue) ); 
1998                 }
1999     break;
2000
2001   case 121:
2002 #line 599 "src/cfgparser.yy"
2003     { 
2004                         currentMaterial->setTransAttCol( ntlColor((yyvsp[-2].floatValue),(yyvsp[-1].floatValue),(yyvsp[0].floatValue)) ); 
2005                 }
2006     break;
2007
2008   case 122:
2009 #line 604 "src/cfgparser.yy"
2010     {
2011                 currentMaterial->setFresnel( (yyvsp[0].intValue) ); 
2012         }
2013     break;
2014
2015   case 123:
2016 #line 615 "src/cfgparser.yy"
2017     { 
2018                 currentAttrib = new AttributeList((yyvsp[-1].charValue)); 
2019                 currentAttrName = (yyvsp[-1].charValue); }
2020     break;
2021
2022   case 124:
2023 #line 618 "src/cfgparser.yy"
2024     { // store attribute
2025                         //std::cerr << " NEW ATTR " << currentAttrName << std::endl;
2026                         //currentAttrib->print();
2027                         attrs[currentAttrName] = currentAttrib;
2028                         currentAttrib = NULL; }
2029     break;
2030
2031   case 129:
2032 #line 631 "src/cfgparser.yy"
2033     { currentAttrValue.clear(); currentAttribAddName = (yyvsp[-1].charValue); }
2034     break;
2035
2036   case 130:
2037 #line 632 "src/cfgparser.yy"
2038     {
2039       currentAttrib->addAttr( currentAttribAddName, currentAttrValue, lineCount, true); 
2040                         //std::cerr << " ADD ATTRCHANNEL " << currentAttribAddName << std::endl;
2041                         //currentAttrib->find( currentAttribAddName )->print();
2042                 }
2043     break;
2044
2045   case 132:
2046 #line 639 "src/cfgparser.yy"
2047     { currentAttrValue.clear(); currentAttribAddName = (yyvsp[-1].charValue); }
2048     break;
2049
2050   case 133:
2051 #line 640 "src/cfgparser.yy"
2052     {
2053       currentAttrib->addAttr( currentAttribAddName, currentAttrValue, lineCount, false); 
2054                         //std::cerr << " ADD ATTRNORM " << currentAttribAddName << std::endl;
2055                         //currentAttrib->find( currentAttribAddName )->print();
2056                 }
2057     break;
2058
2059   case 135:
2060 #line 647 "src/cfgparser.yy"
2061     { 
2062                 //std::cerr << "LLL "<<$2<<std::endl; // ignore newline entries  
2063                 if(strcmp((yyvsp[0].charValue),"\n")) currentAttrValue.push_back((yyvsp[0].charValue)); }
2064     break;
2065
2066   case 136:
2067 #line 650 "src/cfgparser.yy"
2068     {  
2069                 //std::cerr << "LRR "<<$1<<std::endl;
2070                 if(strcmp((yyvsp[0].charValue),"\n")) currentAttrValue.push_back((yyvsp[0].charValue)); }
2071     break;
2072
2073   case 138:
2074 #line 664 "src/cfgparser.yy"
2075     {
2076   if ( ((yyvsp[0].floatValue) < 0.0) || ((yyvsp[0].floatValue) > 1.0) ) {
2077     yyerror("Value out of range (only 0 to 1 allowed)");
2078   }
2079
2080   /* pass that value up the tree */
2081   (yyval.floatValue) = (yyvsp[0].floatValue);
2082 }
2083     break;
2084
2085   case 139:
2086 #line 676 "src/cfgparser.yy"
2087     { (yyval.floatValue) = (yyvsp[0].floatValue); }
2088     break;
2089
2090   case 140:
2091 #line 678 "src/cfgparser.yy"
2092     { (yyval.floatValue) = (float) (yyvsp[0].intValue); /* conversion from integers */ }
2093     break;
2094
2095   case 141:
2096 #line 684 "src/cfgparser.yy"
2097     {
2098   if ( (yyvsp[0].intValue) <= 0 ) {
2099     yy_error("Value out of range (has to be above zero)");
2100   }
2101
2102   /* pass that value up the tree */
2103   (yyval.intValue) = (yyvsp[0].intValue);
2104 }
2105     break;
2106
2107   case 142:
2108 #line 695 "src/cfgparser.yy"
2109     {
2110   //cout << " " << $1 << " ";
2111   if ( (yyvsp[0].intValue) < 0 ) {
2112     yy_error("Value out of range (has to be above or equal to zero)");
2113   }
2114
2115   /* pass that value up the tree */
2116   (yyval.intValue) = (yyvsp[0].intValue);
2117 }
2118     break;
2119
2120   case 143:
2121 #line 707 "src/cfgparser.yy"
2122     {
2123   if( ( (yyvsp[0].intValue) != 0 ) && ( (yyvsp[0].intValue) != 1 ) ) {
2124     yy_error("Boolean value has to be 1|0, 'true'|'false' or 'on'|'off'!");
2125   }
2126   /* pass that value up the tree */
2127   (yyval.intValue) = (yyvsp[0].intValue);
2128 }
2129     break;
2130
2131
2132     }
2133
2134 /* Line 1037 of yacc.c.  */
2135 #line 2136 "bld-std-gcc/src/cfgparser.cpp"
2136 \f
2137   yyvsp -= yylen;
2138   yyssp -= yylen;
2139
2140
2141   YY_STACK_PRINT (yyss, yyssp);
2142
2143   *++yyvsp = yyval;
2144
2145
2146   /* Now `shift' the result of the reduction.  Determine what state
2147      that goes to, based on the state we popped back to and the rule
2148      number reduced by.  */
2149
2150   yyn = yyr1[yyn];
2151
2152   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2153   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2154     yystate = yytable[yystate];
2155   else
2156     yystate = yydefgoto[yyn - YYNTOKENS];
2157
2158   goto yynewstate;
2159
2160
2161 /*------------------------------------.
2162 | yyerrlab -- here on detecting error |
2163 `------------------------------------*/
2164 yyerrlab:
2165   /* If not already recovering from an error, report this error.  */
2166   if (!yyerrstatus)
2167     {
2168       ++yynerrs;
2169 #if YYERROR_VERBOSE
2170       yyn = yypact[yystate];
2171
2172       if (YYPACT_NINF < yyn && yyn < YYLAST)
2173         {
2174           YYSIZE_T yysize = 0;
2175           int yytype = YYTRANSLATE (yychar);
2176           const char* yyprefix;
2177           char *yymsg;
2178           int yyx;
2179
2180           /* Start YYX at -YYN if negative to avoid negative indexes in
2181              YYCHECK.  */
2182           int yyxbegin = yyn < 0 ? -yyn : 0;
2183
2184           /* Stay within bounds of both yycheck and yytname.  */
2185           int yychecklim = YYLAST - yyn;
2186           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2187           int yycount = 0;
2188
2189           yyprefix = ", expecting ";
2190           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2191             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2192               {
2193                 yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
2194                 yycount += 1;
2195                 if (yycount == 5)
2196                   {
2197                     yysize = 0;
2198                     break;
2199                   }
2200               }
2201           yysize += (sizeof ("syntax error, unexpected ")
2202                      + yystrlen (yytname[yytype]));
2203           yymsg = (char *) YYSTACK_ALLOC (yysize);
2204           if (yymsg != 0)
2205             {
2206               char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
2207               yyp = yystpcpy (yyp, yytname[yytype]);
2208
2209               if (yycount < 5)
2210                 {
2211                   yyprefix = ", expecting ";
2212                   for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2213                     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2214                       {
2215                         yyp = yystpcpy (yyp, yyprefix);
2216                         yyp = yystpcpy (yyp, yytname[yyx]);
2217                         yyprefix = " or ";
2218                       }
2219                 }
2220               yyerror (yymsg);
2221               YYSTACK_FREE (yymsg);
2222             }
2223           else
2224             yyerror ("syntax error; also virtual memory exhausted");
2225         }
2226       else
2227 #endif /* YYERROR_VERBOSE */
2228         yyerror ("syntax error");
2229     }
2230
2231
2232
2233   if (yyerrstatus == 3)
2234     {
2235       /* If just tried and failed to reuse look-ahead token after an
2236          error, discard it.  */
2237
2238       if (yychar <= YYEOF)
2239         {
2240           /* If at end of input, pop the error token,
2241              then the rest of the stack, then return failure.  */
2242           if (yychar == YYEOF)
2243              for (;;)
2244                {
2245
2246                  YYPOPSTACK;
2247                  if (yyssp == yyss)
2248                    YYABORT;
2249                  yydestruct ("Error: popping",
2250                              yystos[*yyssp], yyvsp);
2251                }
2252         }
2253       else
2254         {
2255           yydestruct ("Error: discarding", yytoken, &yylval);
2256           yychar = YYEMPTY;
2257         }
2258     }
2259
2260   /* Else will try to reuse look-ahead token after shifting the error
2261      token.  */
2262   goto yyerrlab1;
2263
2264
2265 /*---------------------------------------------------.
2266 | yyerrorlab -- error raised explicitly by YYERROR.  |
2267 `---------------------------------------------------*/
2268 yyerrorlab:
2269
2270 #ifdef __GNUC__
2271   /* Pacify GCC when the user code never invokes YYERROR and the label
2272      yyerrorlab therefore never appears in user code.  */
2273   if (0)
2274      goto yyerrorlab;
2275 #endif
2276
2277 yyvsp -= yylen;
2278   yyssp -= yylen;
2279   yystate = *yyssp;
2280   goto yyerrlab1;
2281
2282
2283 /*-------------------------------------------------------------.
2284 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2285 `-------------------------------------------------------------*/
2286 yyerrlab1:
2287   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
2288
2289   for (;;)
2290     {
2291       yyn = yypact[yystate];
2292       if (yyn != YYPACT_NINF)
2293         {
2294           yyn += YYTERROR;
2295           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2296             {
2297               yyn = yytable[yyn];
2298               if (0 < yyn)
2299                 break;
2300             }
2301         }
2302
2303       /* Pop the current state because it cannot handle the error token.  */
2304       if (yyssp == yyss)
2305         YYABORT;
2306
2307
2308       yydestruct ("Error: popping", yystos[yystate], yyvsp);
2309       YYPOPSTACK;
2310       yystate = *yyssp;
2311       YY_STACK_PRINT (yyss, yyssp);
2312     }
2313
2314   if (yyn == YYFINAL)
2315     YYACCEPT;
2316
2317   *++yyvsp = yylval;
2318
2319
2320   /* Shift the error token. */
2321   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2322
2323   yystate = yyn;
2324   goto yynewstate;
2325
2326
2327 /*-------------------------------------.
2328 | yyacceptlab -- YYACCEPT comes here.  |
2329 `-------------------------------------*/
2330 yyacceptlab:
2331   yyresult = 0;
2332   goto yyreturn;
2333
2334 /*-----------------------------------.
2335 | yyabortlab -- YYABORT comes here.  |
2336 `-----------------------------------*/
2337 yyabortlab:
2338   yydestruct ("Error: discarding lookahead",
2339               yytoken, &yylval);
2340   yychar = YYEMPTY;
2341   yyresult = 1;
2342   goto yyreturn;
2343
2344 #ifndef yyoverflow
2345 /*----------------------------------------------.
2346 | yyoverflowlab -- parser overflow comes here.  |
2347 `----------------------------------------------*/
2348 yyoverflowlab:
2349   yyerror ("parser stack overflow");
2350   yyresult = 2;
2351   /* Fall through.  */
2352 #endif
2353
2354 yyreturn:
2355 #ifndef yyoverflow
2356   if (yyss != yyssa)
2357     YYSTACK_FREE (yyss);
2358 #endif
2359   return yyresult;
2360 }
2361
2362
2363 #line 715 "src/cfgparser.yy"
2364
2365
2366 /*---------------------------------------------------------------------------*/
2367 /* parser functions                                                          */
2368 /*---------------------------------------------------------------------------*/
2369
2370
2371 /* parse warnings */
2372 void yy_warn(char *s)
2373 {
2374         debMsgStd("yy_warn",DM_WARNING,"Config Parse Warning at Line :"<<lineCount<<" '"<<s<<"' ",1);
2375 }
2376
2377 /* parse errors */
2378 void yy_error(const char *s)
2379 {
2380         //errorOut("Current token: "<<yytname[ (int)yytranslate[yychar] ]);
2381         errFatal("yy_error","Config Parse Error at Line "<<lineCount<<": "<<s,SIMWORLD_INITERROR);
2382         return;
2383 }
2384
2385
2386 /* get the global pointers from calling program */
2387 char pointersInited = 0;
2388 void setPointers(ntlRenderGlobals *setglob) 
2389 {
2390         if(
2391                  (!setglob) ||
2392                  (!setglob) 
2393                  ) {
2394                 errFatal("setPointers","Config Parse Error: Invalid Pointers!\n",SIMWORLD_INITERROR);
2395                 return;
2396         }      
2397         
2398         reglob = setglob;
2399         pointersInited = 1;
2400 }
2401
2402   
2403 /* parse given file as config file */
2404 void parseFile(string filename)
2405 {
2406         if(!pointersInited) {
2407                 errFatal("parseFile","Config Parse Error: Pointers not set!\n", SIMWORLD_INITERROR);
2408                 return;
2409         }
2410         
2411         /* open file */
2412         yy_in = fopen( filename.c_str(), "r");
2413         if(!yy_in) {
2414                 errFatal("parseFile","Config Parse Error: Unable to open '"<<filename.c_str() <<"'!\n", SIMWORLD_INITERROR );
2415                 return;
2416         }
2417
2418         /* parse */
2419         //yy_debug = 1; /* Enable debugging? */
2420         yy_parse();
2421         
2422         /* close file */
2423         fclose( yy_in );
2424         // cleanup static map<string,AttributeList*> attrs
2425         for(map<string, AttributeList*>::iterator i=attrs.begin();
2426                         i != attrs.end(); i++) {
2427                 if((*i).second) {
2428                         delete (*i).second;
2429                         (*i).second = NULL;
2430                 }
2431         }
2432 }
2433
2434
2435
2436