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