root/OpenSceneGraph/branches/OpenSceneGraph-2.8/src/osgPlugins/cfg/ConfigParser.cpp @ 9756

Revision 9756, 66.0 kB (checked in by robert, 5 years ago)

Warning fix

Line 
1/* A Bison parser, made by GNU Bison 1.875.  */
2
3/* Skeleton parser for Yacc-like parsing with Bison,
4   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 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/* If NAME_PREFIX is specified substitute the variables and functions
49   names.  */
50#define yyparse ConfigParser_parse
51#define yylex   ConfigParser_lex
52#define yyerror ConfigParser_error
53#define yylval  ConfigParser_lval
54#define yychar  ConfigParser_char
55#define yydebug ConfigParser_debug
56#define yynerrs ConfigParser_nerrs
57
58
59/* Tokens.  */
60#ifndef YYTOKENTYPE
61# define YYTOKENTYPE
62   /* Put the tokens into the symbol table, so that GDB and other debuggers
63      know about them.  */
64   enum yytokentype {
65     PRTOKEN_VISUAL = 258,
66     PRTOKEN_SET_SIMPLE = 259,
67     PRTOKEN_VISUAL_ID = 260,
68     PRTOKEN_BUFFER_SIZE = 261,
69     PRTOKEN_LEVEL = 262,
70     PRTOKEN_RGBA = 263,
71     PRTOKEN_DOUBLEBUFFER = 264,
72     PRTOKEN_STEREO = 265,
73     PRTOKEN_AUX_BUFFERS = 266,
74     PRTOKEN_RED_SIZE = 267,
75     PRTOKEN_GREEN_SIZE = 268,
76     PRTOKEN_BLUE_SIZE = 269,
77     PRTOKEN_ALPHA_SIZE = 270,
78     PRTOKEN_DEPTH_SIZE = 271,
79     PRTOKEN_STENCIL_SIZE = 272,
80     PRTOKEN_ACCUM_RED_SIZE = 273,
81     PRTOKEN_ACCUM_GREEN_SIZE = 274,
82     PRTOKEN_ACCUM_BLUE_SIZE = 275,
83     PRTOKEN_ACCUM_ALPHA_SIZE = 276,
84     PRTOKEN_SAMPLES = 277,
85     PRTOKEN_SAMPLE_BUFFERS = 278,
86     PRTOKEN_RENDER_SURFACE = 279,
87     PRTOKEN_WINDOW_RECT = 280,
88     PRTOKEN_INPUT_RECT = 281,
89     PRTOKEN_HOSTNAME = 282,
90     PRTOKEN_DISPLAY = 283,
91     PRTOKEN_SCREEN = 284,
92     PRTOKEN_BORDER = 285,
93     PRTOKEN_DRAWABLE_TYPE = 286,
94     PRTOKEN_WINDOW_TYPE = 287,
95     PRTOKEN_PBUFFER_TYPE = 288,
96     PRTOKEN_CAMERA_GROUP = 289,
97     PRTOKEN_CAMERA = 290,
98     PRTOKEN_PROJECTION_RECT = 291,
99     PRTOKEN_LENS = 292,
100     PRTOKEN_FRUSTUM = 293,
101     PRTOKEN_PERSPECTIVE = 294,
102     PRTOKEN_ORTHO = 295,
103     PRTOKEN_OFFSET = 296,
104     PRTOKEN_ROTATE = 297,
105     PRTOKEN_TRANSLATE = 298,
106     PRTOKEN_SCALE = 299,
107     PRTOKEN_SHEAR = 300,
108     PRTOKEN_CLEAR_COLOR = 301,
109     PRTOKEN_INPUT_AREA = 302,
110     PRTOKEN_ERROR = 303,
111     PRTOKEN_INTEGER = 304,
112     PRTOKEN_HEX_INTEGER = 305,
113     PRTOKEN_FLOAT = 306,
114     PRTOKEN_TRUE = 307,
115     PRTOKEN_FALSE = 308,
116     PRTOKEN_QUOTED_STRING = 309,
117     PRTOKEN_STEREO_SYSTEM_COMMANDS = 310,
118     PRTOKEN_CUSTOM_FULL_SCREEN_RECTANGLE = 311,
119     PRTOKEN_METHOD = 312,
120     PRTOKEN_PREMULTIPLY = 313,
121     PRTOKEN_POSTMULTIPLY = 314,
122     PRTOKEN_OVERRIDE_REDIRECT = 315,
123     PRTOKEN_SHARELENS = 316,
124     PRTOKEN_SHAREVIEW = 317,
125     PRTOKEN_READ_DRAWABLE = 318,
126     PRTOKEN_SET_RTT_MODE = 319,
127     PRTOKEN_RTT_MODE_NONE = 320,
128     PRTOKEN_RTT_MODE_RGB = 321,
129     PRTOKEN_RTT_MODE_RGBA = 322,
130     PRTOKEN_THREAD_MODEL = 323,
131     PRTOKEN_SINGLE_THREADED = 324,
132     PRTOKEN_THREAD_PER_CAMERA = 325,
133     PRTOKEN_THREAD_PER_RENDER_SURFACE = 326
134   };
135#endif
136#define PRTOKEN_VISUAL 258
137#define PRTOKEN_SET_SIMPLE 259
138#define PRTOKEN_VISUAL_ID 260
139#define PRTOKEN_BUFFER_SIZE 261
140#define PRTOKEN_LEVEL 262
141#define PRTOKEN_RGBA 263
142#define PRTOKEN_DOUBLEBUFFER 264
143#define PRTOKEN_STEREO 265
144#define PRTOKEN_AUX_BUFFERS 266
145#define PRTOKEN_RED_SIZE 267
146#define PRTOKEN_GREEN_SIZE 268
147#define PRTOKEN_BLUE_SIZE 269
148#define PRTOKEN_ALPHA_SIZE 270
149#define PRTOKEN_DEPTH_SIZE 271
150#define PRTOKEN_STENCIL_SIZE 272
151#define PRTOKEN_ACCUM_RED_SIZE 273
152#define PRTOKEN_ACCUM_GREEN_SIZE 274
153#define PRTOKEN_ACCUM_BLUE_SIZE 275
154#define PRTOKEN_ACCUM_ALPHA_SIZE 276
155#define PRTOKEN_SAMPLES 277
156#define PRTOKEN_SAMPLE_BUFFERS 278
157#define PRTOKEN_RENDER_SURFACE 279
158#define PRTOKEN_WINDOW_RECT 280
159#define PRTOKEN_INPUT_RECT 281
160#define PRTOKEN_HOSTNAME 282
161#define PRTOKEN_DISPLAY 283
162#define PRTOKEN_SCREEN 284
163#define PRTOKEN_BORDER 285
164#define PRTOKEN_DRAWABLE_TYPE 286
165#define PRTOKEN_WINDOW_TYPE 287
166#define PRTOKEN_PBUFFER_TYPE 288
167#define PRTOKEN_CAMERA_GROUP 289
168#define PRTOKEN_CAMERA 290
169#define PRTOKEN_PROJECTION_RECT 291
170#define PRTOKEN_LENS 292
171#define PRTOKEN_FRUSTUM 293
172#define PRTOKEN_PERSPECTIVE 294
173#define PRTOKEN_ORTHO 295
174#define PRTOKEN_OFFSET 296
175#define PRTOKEN_ROTATE 297
176#define PRTOKEN_TRANSLATE 298
177#define PRTOKEN_SCALE 299
178#define PRTOKEN_SHEAR 300
179#define PRTOKEN_CLEAR_COLOR 301
180#define PRTOKEN_INPUT_AREA 302
181#define PRTOKEN_ERROR 303
182#define PRTOKEN_INTEGER 304
183#define PRTOKEN_HEX_INTEGER 305
184#define PRTOKEN_FLOAT 306
185#define PRTOKEN_TRUE 307
186#define PRTOKEN_FALSE 308
187#define PRTOKEN_QUOTED_STRING 309
188#define PRTOKEN_STEREO_SYSTEM_COMMANDS 310
189#define PRTOKEN_CUSTOM_FULL_SCREEN_RECTANGLE 311
190#define PRTOKEN_METHOD 312
191#define PRTOKEN_PREMULTIPLY 313
192#define PRTOKEN_POSTMULTIPLY 314
193#define PRTOKEN_OVERRIDE_REDIRECT 315
194#define PRTOKEN_SHARELENS 316
195#define PRTOKEN_SHAREVIEW 317
196#define PRTOKEN_READ_DRAWABLE 318
197#define PRTOKEN_SET_RTT_MODE 319
198#define PRTOKEN_RTT_MODE_NONE 320
199#define PRTOKEN_RTT_MODE_RGB 321
200#define PRTOKEN_RTT_MODE_RGBA 322
201#define PRTOKEN_THREAD_MODEL 323
202#define PRTOKEN_SINGLE_THREADED 324
203#define PRTOKEN_THREAD_PER_CAMERA 325
204#define PRTOKEN_THREAD_PER_RENDER_SURFACE 326
205
206
207
208
209/* Copy the first part of user declarations.  */
210
211
212
213#ifndef WIN32
214#include <unistd.h>
215#include <sys/wait.h>
216#include <stdlib.h>
217#include <fcntl.h>
218#endif
219
220#ifndef WIN32
221#define SUPPORT_CPP 1
222#endif
223
224#include <osgDB/fstream>
225
226#include <string.h>
227#include <stdio.h>
228#include <string>
229
230#include "FlexLexer.h"
231
232#include "CameraConfig.h"
233
234
235using namespace std;
236using namespace osgProducer;
237
238static void ConfigParser_error( const char * );
239static CameraConfig *cfg = 0L;
240static std::string fileName = "(stdin)";
241
242static yyFlexLexer *flexer = 0L;
243
244static int yylex()
245{
246    if( flexer == 0L )
247        fprintf( stderr, "Internal error!\n" );
248    return flexer->yylex();
249}
250
251
252
253/* Enabling traces.  */
254#ifndef YYDEBUG
255# define YYDEBUG 0
256#endif
257
258/* Enabling verbose error messages.  */
259#ifdef YYERROR_VERBOSE
260# undef YYERROR_VERBOSE
261# define YYERROR_VERBOSE 1
262#else
263# define YYERROR_VERBOSE 0
264#endif
265
266#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
267
268typedef union YYSTYPE {
269    char * string;
270    int    integer;
271    float  real;
272    bool boolean;
273} YYSTYPE;
274/* Line 191 of yacc.c.  */
275
276# define yystype YYSTYPE /* obsolescent; will be withdrawn */
277# define YYSTYPE_IS_DECLARED 1
278# define YYSTYPE_IS_TRIVIAL 1
279#endif
280
281
282
283/* Copy the second part of user declarations.  */
284
285
286/* Line 214 of yacc.c.  */
287
288
289#if ! defined (yyoverflow) || YYERROR_VERBOSE
290
291/* The parser invokes alloca or malloc; define the necessary symbols.  */
292
293# if YYSTACK_USE_ALLOCA
294define YYSTACK_ALLOC alloca
295# else
296ifndef YYSTACK_USE_ALLOCA
297#   if defined (alloca) || defined (_ALLOCA_H)
298#    define YYSTACK_ALLOC alloca
299#   else
300#    ifdef __GNUC__
301#     define YYSTACK_ALLOC __builtin_alloca
302#    endif
303#   endif
304endif
305# endif
306
307# ifdef YYSTACK_ALLOC
308   /* Pacify GCC's `empty if-body' warning. */
309define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
310# else
311if defined (__STDC__) || defined (__cplusplus)
312#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
313#   define YYSIZE_T size_t
314endif
315define YYSTACK_ALLOC malloc
316define YYSTACK_FREE free
317# endif
318#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
319
320
321#if (! defined (yyoverflow) \
322     && (! defined (__cplusplus) \
323     || (YYSTYPE_IS_TRIVIAL)))
324
325/* A type that is properly aligned for any stack member.  */
326union yyalloc
327{
328  short yyss;
329  YYSTYPE yyvs;
330  };
331
332/* The size of the maximum gap between one aligned stack and the next.  */
333# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
334
335/* The size of an array large to enough to hold all stacks, each with
336   N elements.  */
337# define YYSTACK_BYTES(N) \
338     ((N) * (sizeof (short) + sizeof (YYSTYPE))                \
339      + YYSTACK_GAP_MAXIMUM)
340
341/* Copy COUNT objects from FROM to TO.  The source and destination do
342   not overlap.  */
343# ifndef YYCOPY
344if 1 < __GNUC__
345#   define YYCOPY(To, From, Count) \
346      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
347else
348#   define YYCOPY(To, From, Count)        \
349      do                    \
350    {                    \
351      register YYSIZE_T yyi;        \
352      for (yyi = 0; yyi < (Count); yyi++)    \
353        (To)[yyi] = (From)[yyi];        \
354    }                    \
355      while (0)
356endif
357# endif
358
359/* Relocate STACK from its old location to the new one.  The
360   local variables YYSIZE and YYSTACKSIZE give the old and new number of
361   elements in the stack, and YYPTR gives the new location of the
362   stack.  Advance YYPTR to a properly aligned location for the next
363   stack.  */
364# define YYSTACK_RELOCATE(Stack)                    \
365    do                                    \
366      {                                    \
367    YYSIZE_T yynewbytes;                        \
368    YYCOPY (&yyptr->Stack, Stack, yysize);                \
369    Stack = &yyptr->Stack;                        \
370    yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
371    yyptr += yynewbytes / sizeof (*yyptr);                \
372      }                                    \
373    while (0)
374
375#endif
376
377#if defined (__STDC__) || defined (__cplusplus)
378   typedef signed char yysigned_char;
379#else
380   typedef short yysigned_char;
381#endif
382
383/* YYFINAL -- State number of the termination state. */
384#define YYFINAL  32
385/* YYLAST -- Last index in YYTABLE.  */
386#define YYLAST   279
387
388/* YYNTOKENS -- Number of terminals. */
389#define YYNTOKENS  76
390/* YYNNTS -- Number of nonterminals. */
391#define YYNNTS  45
392/* YYNRULES -- Number of rules. */
393#define YYNRULES  122
394/* YYNRULES -- Number of states. */
395#define YYNSTATES  266
396
397/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
398#define YYUNDEFTOK  2
399#define YYMAXUTOK   326
400
401#define YYTRANSLATE(YYX)                         \
402  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
403
404/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
405static const unsigned char yytranslate[] =
406{
407       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
408       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
409       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
410       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
411       2,     2,     2,     2,    75,     2,     2,     2,     2,     2,
412       2,     2,     2,     2,     2,     2,     2,     2,     2,    72,
413       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
414       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
415       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
416       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
417       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
418       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
419       2,     2,     2,    73,     2,    74,     2,     2,     2,     2,
420       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
421       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
422       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
423       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
424       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
425       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
426       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
427       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
428       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
429       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
430       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
431       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
432       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
433       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
434      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
435      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
436      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
437      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
438      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
439      65,    66,    67,    68,    69,    70,    71
440};
441
442#if YYDEBUG
443/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
444   YYRHS.  */
445static const unsigned short yyprhs[] =
446{
447       0,     0,     3,     5,     7,    10,    12,    14,    16,    18,
448      20,    22,    24,    26,    29,    33,    35,    37,    39,    45,
449      50,    52,    53,    55,    58,    59,    66,    68,    71,    72,
450      76,    78,    85,    89,    93,   100,   102,   104,   105,   111,
451     113,   116,   121,   128,   134,   140,   144,   146,   148,   153,
452     155,   158,   159,   168,   179,   186,   195,   204,   215,   220,
453     221,   228,   230,   233,   234,   238,   240,   247,   254,   258,
454     262,   266,   270,   277,   281,   285,   289,   293,   295,   297,
455     299,   301,   303,   304,   311,   312,   318,   320,   324,   326,
456     329,   332,   335,   337,   339,   341,   344,   347,   350,   353,
457     356,   359,   362,   365,   368,   371,   374,   377,   379,   382,
458     383,   389,   391,   394,   398,   400,   402,   404,   406,   408,
459     410,   412,   414
460};
461
462/* YYRHS -- A `-1'-separated list of the rules' RHS. */
463static const yysigned_char yyrhs[] =
464{
465      77,     0,    -1,    78,    -1,    79,    -1,    78,    79,    -1,
466     105,    -1,    99,    -1,    87,    -1,   110,    -1,    84,    -1,
467      83,    -1,    80,    -1,    81,    -1,    80,    81,    -1,    68,
468      82,    72,    -1,    69,    -1,    70,    -1,    71,    -1,    55,
469     116,   118,   118,    72,    -1,    34,    73,    85,    74,    -1,
470      86,    -1,    -1,    87,    -1,    86,    87,    -1,    -1,    35,
471     117,    88,    73,    89,    74,    -1,    90,    -1,    89,    90,
472      -1,    -1,    24,   117,    72,    -1,    99,    -1,    36,   114,
473     114,   114,   114,    72,    -1,    61,   120,    72,    -1,    62,
474     120,    72,    -1,    46,   114,   114,   114,   114,    72,    -1,
475      96,    -1,    91,    -1,    -1,    41,    73,    92,    93,    74,
476      -1,    94,    -1,    93,    94,    -1,    45,   114,   114,    72,
477      -1,    42,   114,   114,   114,   114,    72,    -1,    43,   114,
478     114,   114,    72,    -1,    44,   114,   114,   114,    72,    -1,
479      57,    95,    72,    -1,    58,    -1,    59,    -1,    37,    73,
480      97,    74,    -1,    98,    -1,    97,    98,    -1,    -1,    40,
481     114,   114,   114,   114,   114,   114,    72,    -1,    40,   114,
482     114,   114,   114,   114,   114,   114,   114,    72,    -1,    39,
483     114,   114,   114,   114,    72,    -1,    39,   114,   114,   114,
484     114,   114,   114,    72,    -1,    38,   114,   114,   114,   114,
485     114,   114,    72,    -1,    38,   114,   114,   114,   114,   114,
486     114,   114,   114,    72,    -1,    45,   114,   114,    72,    -1,
487      -1,    24,   117,   100,    73,   101,    74,    -1,   102,    -1,
488     101,   102,    -1,    -1,     3,   117,    72,    -1,   105,    -1,
489      25,   116,   116,   116,   116,    72,    -1,    26,   115,   115,
490     115,   115,    72,    -1,    27,   117,    72,    -1,    28,   116,
491      72,    -1,    29,   116,    72,    -1,    30,   120,    72,    -1,
492      56,   116,   116,   116,   116,    72,    -1,    60,   120,    72,
493      -1,    31,   103,    72,    -1,    63,   117,    72,    -1,    64,
494     104,    72,    -1,    32,    -1,    33,    -1,    65,    -1,    66,
495      -1,    67,    -1,    -1,     3,   117,   106,    73,   108,    74,
496      -1,    -1,     3,   107,    73,   108,    74,    -1,   109,    -1,
497     108,    75,   109,    -1,     4,    -1,     5,   119,    -1,     6,
498     116,    -1,     7,   116,    -1,     8,    -1,     9,    -1,    10,
499      -1,    11,   116,    -1,    12,   116,    -1,    13,   116,    -1,
500      14,   116,    -1,    15,   116,    -1,    16,   116,    -1,    17,
501     116,    -1,    18,   116,    -1,    19,   116,    -1,    20,   116,
502      -1,    21,   116,    -1,    22,   116,    -1,    23,    -1,   116,
503     116,    -1,    -1,    47,   111,    73,   112,    74,    -1,   113,
504      -1,   112,   113,    -1,    24,   117,    72,    -1,    51,    -1,
505      49,    -1,    51,    -1,    49,    -1,    54,    -1,    54,    -1,
506      50,    -1,    52,    -1,    53,    -1
507};
508
509/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
510static const unsigned short yyrline[] =
511{
512       0,   144,   144,   147,   147,   150,   150,   150,   150,   150,
513     150,   150,   153,   153,   157,   165,   166,   167,   170,   176,
514     179,   182,   182,   182,   186,   185,   194,   194,   197,   199,
515     203,   207,   211,   215,   219,   223,   224,   228,   227,   237,
516     237,   241,   245,   249,   253,   257,   264,   265,   268,   271,
517     271,   274,   276,   280,   284,   288,   292,   296,   300,   307,
518     306,   317,   318,   321,   323,   327,   331,   335,   339,   343,
519     347,   351,   355,   359,   363,   368,   372,   379,   380,   384,
520     385,   386,   391,   390,   400,   399,   410,   410,   413,   417,
521     422,   426,   431,   435,   439,   443,   447,   452,   457,   461,
522     465,   469,   473,   477,   481,   485,   489,   493,   497,   504,
523     503,   509,   509,   513,   519,   523,   530,   536,   542,   548,
524     555,   563,   563
525};
526#endif
527
528#if YYDEBUG || YYERROR_VERBOSE
529/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
530   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
531static const char *const yytname[] =
532{
533  "$end", "error", "$undefined", "PRTOKEN_VISUAL", "PRTOKEN_SET_SIMPLE",
534  "PRTOKEN_VISUAL_ID", "PRTOKEN_BUFFER_SIZE", "PRTOKEN_LEVEL",
535  "PRTOKEN_RGBA", "PRTOKEN_DOUBLEBUFFER", "PRTOKEN_STEREO",
536  "PRTOKEN_AUX_BUFFERS", "PRTOKEN_RED_SIZE", "PRTOKEN_GREEN_SIZE",
537  "PRTOKEN_BLUE_SIZE", "PRTOKEN_ALPHA_SIZE", "PRTOKEN_DEPTH_SIZE",
538  "PRTOKEN_STENCIL_SIZE", "PRTOKEN_ACCUM_RED_SIZE",
539  "PRTOKEN_ACCUM_GREEN_SIZE", "PRTOKEN_ACCUM_BLUE_SIZE",
540  "PRTOKEN_ACCUM_ALPHA_SIZE", "PRTOKEN_SAMPLES", "PRTOKEN_SAMPLE_BUFFERS",
541  "PRTOKEN_RENDER_SURFACE", "PRTOKEN_WINDOW_RECT", "PRTOKEN_INPUT_RECT",
542  "PRTOKEN_HOSTNAME", "PRTOKEN_DISPLAY", "PRTOKEN_SCREEN",
543  "PRTOKEN_BORDER", "PRTOKEN_DRAWABLE_TYPE", "PRTOKEN_WINDOW_TYPE",
544  "PRTOKEN_PBUFFER_TYPE", "PRTOKEN_CAMERA_GROUP", "PRTOKEN_CAMERA",
545  "PRTOKEN_PROJECTION_RECT", "PRTOKEN_LENS", "PRTOKEN_FRUSTUM",
546  "PRTOKEN_PERSPECTIVE", "PRTOKEN_ORTHO", "PRTOKEN_OFFSET",
547  "PRTOKEN_ROTATE", "PRTOKEN_TRANSLATE", "PRTOKEN_SCALE", "PRTOKEN_SHEAR",
548  "PRTOKEN_CLEAR_COLOR", "PRTOKEN_INPUT_AREA", "PRTOKEN_ERROR",
549  "PRTOKEN_INTEGER", "PRTOKEN_HEX_INTEGER", "PRTOKEN_FLOAT",
550  "PRTOKEN_TRUE", "PRTOKEN_FALSE", "PRTOKEN_QUOTED_STRING",
551  "PRTOKEN_STEREO_SYSTEM_COMMANDS",
552  "PRTOKEN_CUSTOM_FULL_SCREEN_RECTANGLE", "PRTOKEN_METHOD",
553  "PRTOKEN_PREMULTIPLY", "PRTOKEN_POSTMULTIPLY",
554  "PRTOKEN_OVERRIDE_REDIRECT", "PRTOKEN_SHARELENS", "PRTOKEN_SHAREVIEW",
555  "PRTOKEN_READ_DRAWABLE", "PRTOKEN_SET_RTT_MODE",
556  "PRTOKEN_RTT_MODE_NONE", "PRTOKEN_RTT_MODE_RGB",
557  "PRTOKEN_RTT_MODE_RGBA", "PRTOKEN_THREAD_MODEL",
558  "PRTOKEN_SINGLE_THREADED", "PRTOKEN_THREAD_PER_CAMERA",
559  "PRTOKEN_THREAD_PER_RENDER_SURFACE", "';'", "'{'", "'}'", "','",
560  "$accept", "config", "entries", "entry", "system_params",
561  "system_param", "threadModelDirective", "stereo_param", "camera_group",
562  "camera_group_attributes", "cameras", "camera", "@1",
563  "camera_attributes", "camera_attribute", "camera_offset", "@2",
564  "camera_offset_attributes", "camera_offset_attribute",
565  "offset_multiply_method", "lens", "lens_attributes", "lens_attribute",
566  "render_surface", "@3", "render_surface_attributes",
567  "render_surface_attribute", "drawableType", "rtt_mode", "visual", "@4",
568  "@5", "visual_attributes", "visual_attribute", "input_area", "@6",
569  "input_area_entries", "input_area_entry", "real", "floatparam",
570  "intparam", "name", "string", "hex_integer", "bool", 0
571};
572#endif
573
574# ifdef YYPRINT
575/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
576   token YYLEX-NUM.  */
577static const unsigned short yytoknum[] =
578{
579       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
580     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
581     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
582     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
583     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
584     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
585     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
586     325,   326,    59,   123,   125,    44
587};
588# endif
589
590/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
591static const unsigned char yyr1[] =
592{
593       0,    76,    77,    78,    78,    79,    79,    79,    79,    79,
594      79,    79,    80,    80,    81,    82,    82,    82,    83,    84,
595      85,    86,    86,    86,    88,    87,    89,    89,    90,    90,
596      90,    90,    90,    90,    90,    90,    90,    92,    91,    93,
597      93,    94,    94,    94,    94,    94,    95,    95,    96,    97,
598      97,    98,    98,    98,    98,    98,    98,    98,    98,   100,
599      99,   101,   101,   102,   102,   102,   102,   102,   102,   102,
600     102,   102,   102,   102,   102,   102,   102,   103,   103,   104,
601     104,   104,   106,   105,   107,   105,   108,   108,   109,   109,
602     109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
603     109,   109,   109,   109,   109,   109,   109,   109,   109,   111,
604     110,   112,   112,   113,   114,   114,   115,   116,   117,   118,
605     119,   120,   120
606};
607
608/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
609static const unsigned char yyr2[] =
610{
611       0,     2,     1,     1,     2,     1,     1,     1,     1,     1,
612       1,     1,     1,     2,     3,     1,     1,     1,     5,     4,
613       1,     0,     1,     2,     0,     6,     1,     2,     0,     3,
614       1,     6,     3,     3,     6,     1,     1,     0,     5,     1,
615       2,     4,     6,     5,     5,     3,     1,     1,     4,     1,
616       2,     0,     8,    10,     6,     8,     8,    10,     4,     0,
617       6,     1,     2,     0,     3,     1,     6,     6,     3,     3,
618       3,     3,     6,     3,     3,     3,     3,     1,     1,     1,
619       1,     1,     0,     6,     0,     5,     1,     3,     1,     2,
620       2,     2,     1,     1,     1,     2,     2,     2,     2,     2,
621       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
622       5,     1,     2,     3,     1,     1,     1,     1,     1,     1,
623       1,     1,     1
624};
625
626/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
627   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
628   means the default is an error.  */
629static const unsigned char yydefact[] =
630{
631       0,    84,     0,     0,     0,   109,     0,     0,     0,     2,
632       3,    11,    12,    10,     9,     7,     6,     5,     8,   118,
633       0,    82,    59,    21,    24,     0,   117,     0,    15,    16,
634      17,     0,     1,     4,    13,     0,     0,     0,     0,    20,
635      22,     0,     0,   119,     0,    14,    88,     0,     0,     0,
636      92,    93,    94,     0,     0,     0,     0,     0,     0,     0,
637       0,     0,     0,     0,     0,   107,     0,    86,     0,     0,
638      63,    19,    23,    28,     0,     0,   111,     0,   120,    89,
639      90,    91,    95,    96,    97,    98,    99,   100,   101,   102,
640     103,   104,   105,   106,    85,     0,   108,     0,    84,     0,
641       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
642       0,    61,    65,     0,     0,     0,     0,     0,     0,     0,
643       0,    26,    36,    35,    30,     0,   110,   112,    18,    87,
644      83,    82,     0,   116,     0,     0,     0,     0,   121,   122,
645       0,    77,    78,     0,     0,     0,     0,    79,    80,    81,
646       0,    60,    62,    59,   115,   114,     0,    51,    37,     0,
647       0,     0,    25,    27,   113,    64,     0,     0,    68,    69,
648      70,    71,    74,     0,    73,    75,    76,    29,     0,     0,
649       0,     0,     0,     0,    49,     0,     0,    32,    33,     0,
650       0,     0,     0,     0,     0,     0,     0,    48,    50,     0,
651       0,     0,     0,     0,     0,    39,     0,     0,     0,     0,
652       0,     0,     0,     0,     0,     0,     0,     0,     0,    46,
653      47,     0,    38,    40,     0,    66,    67,    72,    31,     0,
654       0,     0,    58,     0,     0,     0,     0,    45,    34,     0,
655       0,     0,     0,     0,     0,    41,     0,    54,     0,     0,
656       0,    43,    44,     0,     0,     0,    42,    56,     0,    55,
657      52,     0,     0,     0,    57,    53
658};
659
660/* YYDEFGOTO[NTERM-NUM]. */
661static const short yydefgoto[] =
662{
663      -1,     8,     9,    10,    11,    12,    31,    13,    14,    38,
664      39,    15,    41,   120,   121,   122,   185,   204,   205,   221,
665     123,   183,   184,    16,    37,   110,   111,   143,   150,    17,
666      36,    20,    66,    67,    18,    25,    75,    76,   156,   134,
667      68,    21,    44,    79,   140
668};
669
670/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
671   STATE-NUM.  */
672#define YYPACT_NINF -130
673static const short yypact[] =
674{
675      36,   -51,   -51,   -66,   -51,  -130,   -33,   -34,    26,    36,
676    -130,    10,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
677      13,  -130,  -130,    57,  -130,    22,  -130,    45,  -130,  -130,
678    -130,    39,  -130,  -130,  -130,   230,    50,    51,    60,    57,
679    -130,    52,   111,  -130,    45,  -130,  -130,    86,   -33,   -33,
680    -130,  -130,  -130,   -33,   -33,   -33,   -33,   -33,   -33,   -33,
681     -33,   -33,   -33,   -33,   -33,  -130,   -62,  -130,   -33,   230,
682     202,  -130,  -130,    66,   -51,   -10,  -130,    65,  -130,  -130,
683    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
684    -130,  -130,  -130,  -130,  -130,   230,  -130,   -54,   -51,   -33,
685      96,   -51,   -33,   -33,    16,    73,   -33,    16,   -51,    15,
686       3,  -130,  -130,   -51,    24,    76,    77,    24,    16,    16,
687      48,  -130,  -130,  -130,  -130,    67,  -130,  -130,  -130,  -130,
688    -130,    79,   -33,  -130,    96,    80,    81,    87,  -130,  -130,
689      93,  -130,  -130,    94,   -33,   100,   109,  -130,  -130,  -130,
690     110,  -130,  -130,   112,  -130,  -130,    24,   131,  -130,    24,
691     114,   115,  -130,  -130,  -130,  -130,   -33,    96,  -130,  -130,
692    -130,  -130,  -130,   -33,  -130,  -130,  -130,  -130,    24,    24,
693      24,    24,    24,   -30,  -130,    88,    24,  -130,  -130,   -33,
694      96,   -33,    24,    24,    24,    24,    24,  -130,  -130,    24,
695      24,    24,    24,    61,    72,  -130,    24,   116,   117,   118,
696     122,    24,    24,    24,   126,    24,    24,    24,    24,  -130,
697    -130,   127,  -130,  -130,   128,  -130,  -130,  -130,  -130,    24,
698      24,    24,  -130,    24,    24,    24,   134,  -130,  -130,    24,
699     -32,    24,    24,   135,   137,  -130,    24,  -130,    24,    24,
700     140,  -130,  -130,   -27,   141,   -26,  -130,  -130,    24,  -130,
701    -130,    24,   142,   144,  -130,  -130
702};
703
704/* YYPGOTO[NTERM-NUM].  */
705static const short yypgoto[] =
706{
707    -130,  -130,  -130,   209,  -130,   208,  -130,  -130,  -130,  -130,
708    -130,   -12,  -130,  -130,   101,  -130,  -130,  -130,    18,  -130,
709    -130,  -130,    41,   -55,  -130,  -130,   145,  -130,  -130,   -69,
710    -130,  -130,   156,   159,  -130,  -130,  -130,   151,   -38,  -129,
711      -6,     0,   212,  -130,   -31
712};
713
714/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
715   positive, shift that token.  If negative, reduce the rule which
716   number is the opposite.  If zero, do what YYDEFACT says.
717   If YYTABLE_NINF, syntax error.  */
718#define YYTABLE_NINF -1
719static const unsigned short yytable[] =
720{
721      27,   112,    22,    19,    24,   167,    98,    23,   179,   180,
722     181,    40,    94,    95,    74,   182,    26,   154,   124,   155,
723     130,    95,   154,   154,   155,   155,    32,    72,    99,   100,
724     101,   102,   103,   104,   105,    28,    29,    30,   190,     1,
725     247,   112,    80,    81,   197,   257,   260,    82,    83,    84,
726      85,    86,    87,    88,    89,    90,    91,    92,    93,   106,
727       2,   208,    96,   107,   126,   124,   108,   109,   138,   139,
728       3,     4,   113,   154,   125,   155,   145,   151,     7,   159,
729     147,   148,   149,     5,   114,   115,    35,   160,   161,   116,
730     113,     6,     4,   132,   117,    42,   136,   137,   131,    43,
731     144,   135,   114,   115,     7,   141,   142,   116,   146,   118,
732     119,    45,   117,   153,   199,   200,   201,   202,   178,   219,
733     220,   186,   162,    69,    70,    73,   166,   118,   119,   203,
734     199,   200,   201,   202,    71,    74,    78,   128,   173,   164,
735     192,   193,   194,   195,   196,   203,   222,   133,   206,   157,
736     158,   165,   168,   169,   210,   211,   212,   213,   214,   170,
737     189,   215,   216,   217,   218,   171,   172,   191,   224,   179,
738     180,   181,   174,   229,   230,   231,   182,   233,   234,   235,
739     236,   175,   176,   207,   177,   209,   187,   188,   225,   226,
740     227,   239,   240,   241,   228,   242,   243,   244,   232,   237,
741     238,   246,   248,   249,   250,    98,   245,   251,   253,   252,
742     254,   255,   256,   259,   264,   258,   265,   261,    33,    34,
743     262,   163,   223,   263,   198,    97,   127,    99,   100,   101,
744     102,   103,   104,   105,    46,    47,    48,    49,    50,    51,
745      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
746      62,    63,    64,    65,   129,   152,    77,     0,   106,     0,
747       0,     0,   107,     0,     0,   108,   109,     0,     0,     0,
748       0,     0,     0,     0,     0,     0,     0,     0,     0,    26
749};
750
751static const short yycheck[] =
752{
753       6,    70,     2,    54,     4,   134,     3,    73,    38,    39,
754      40,    23,    74,    75,    24,    45,    49,    49,    73,    51,
755      74,    75,    49,    49,    51,    51,     0,    39,    25,    26,
756      27,    28,    29,    30,    31,    69,    70,    71,   167,     3,
757      72,   110,    48,    49,    74,    72,    72,    53,    54,    55,
758      56,    57,    58,    59,    60,    61,    62,    63,    64,    56,
759      24,   190,    68,    60,    74,   120,    63,    64,    52,    53,
760      34,    35,    24,    49,    74,    51,   107,    74,    68,   117,
761      65,    66,    67,    47,    36,    37,    73,   118,   119,    41,
762      24,    55,    35,    99,    46,    73,   102,   103,    98,    54,
763     106,   101,    36,    37,    68,    32,    33,    41,   108,    61,
764      62,    72,    46,   113,    42,    43,    44,    45,   156,    58,
765      59,   159,    74,    73,    73,    73,   132,    61,    62,    57,
766      42,    43,    44,    45,    74,    24,    50,    72,   144,    72,
767     178,   179,   180,   181,   182,    57,    74,    51,   186,    73,
768      73,    72,    72,    72,   192,   193,   194,   195,   196,    72,
769     166,   199,   200,   201,   202,    72,    72,   173,   206,    38,
770      39,    40,    72,   211,   212,   213,    45,   215,   216,   217,
771     218,    72,    72,   189,    72,   191,    72,    72,    72,    72,
772      72,   229,   230,   231,    72,   233,   234,   235,    72,    72,
773      72,   239,   240,   241,   242,     3,    72,    72,   246,    72,
774     248,   249,    72,    72,    72,   253,    72,   255,     9,    11,
775     258,   120,   204,   261,   183,    69,    75,    25,    26,    27,
776      28,    29,    30,    31,     4,     5,     6,     7,     8,     9,
777      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
778      20,    21,    22,    23,    95,   110,    44,    -1,    56,    -1,
779      -1,    -1,    60,    -1,    -1,    63,    64,    -1,    -1,    -1,
780      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49
781};
782
783/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
784   symbol of state STATE-NUM.  */
785static const unsigned char yystos[] =
786{
787       0,     3,    24,    34,    35,    47,    55,    68,    77,    78,
788      79,    80,    81,    83,    84,    87,    99,   105,   110,    54,
789     107,   117,   117,    73,   117,   111,    49,   116,    69,    70,
790      71,    82,     0,    79,    81,    73,   106,   100,    85,    86,
791      87,    88,    73,    54,   118,    72,     4,     5,     6,     7,
792       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
793      18,    19,    20,    21,    22,    23,   108,   109,   116,    73,
794      73,    74,    87,    73,    24,   112,   113,   118,    50,   119,
795     116,   116,   116,   116,   116,   116,   116,   116,   116,   116,
796     116,   116,   116,   116,    74,    75,   116,   108,     3,    25,
797      26,    27,    28,    29,    30,    31,    56,    60,    63,    64,
798     101,   102,   105,    24,    36,    37,    41,    46,    61,    62,
799      89,    90,    91,    96,    99,   117,    74,   113,    72,   109,
800      74,   117,   116,    51,   115,   117,   116,   116,    52,    53,
801     120,    32,    33,   103,   116,   120,   117,    65,    66,    67,
802     104,    74,   102,   117,    49,    51,   114,    73,    73,   114,
803     120,   120,    74,    90,    72,    72,   116,   115,    72,    72,
804      72,    72,    72,   116,    72,    72,    72,    72,   114,    38,
805      39,    40,    45,    97,    98,    92,   114,    72,    72,   116,
806     115,   116,   114,   114,   114,   114,   114,    74,    98,    42,
807      43,    44,    45,    57,    93,    94,   114,   116,   115,   116,
808     114,   114,   114,   114,   114,   114,   114,   114,   114,    58,
809      59,    95,    74,    94,   114,    72,    72,    72,    72,   114,
810     114,   114,    72,   114,   114,   114,   114,    72,    72,   114,
811     114,   114,   114,   114,   114,    72,   114,    72,   114,   114,
812     114,    72,    72,   114,   114,   114,    72,    72,   114,    72,
813      72,   114,   114,   114,    72,    72
814};
815
816#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
817# define YYSIZE_T __SIZE_TYPE__
818#endif
819#if ! defined (YYSIZE_T) && defined (size_t)
820# define YYSIZE_T size_t
821#endif
822#if ! defined (YYSIZE_T)
823# if defined (__STDC__) || defined (__cplusplus)
824include <stddef.h> /* INFRINGES ON USER NAME SPACE */
825define YYSIZE_T size_t
826# endif
827#endif
828#if ! defined (YYSIZE_T)
829# define YYSIZE_T unsigned int
830#endif
831
832#define yyerrok        (yyerrstatus = 0)
833#define yyclearin    (yychar = YYEMPTY)
834#define YYEMPTY        (-2)
835#define YYEOF        0
836
837#define YYACCEPT    goto yyacceptlab
838#define YYABORT        goto yyabortlab
839#define YYERROR        goto yyerrlab1
840
841/* Like YYERROR except do call yyerror.  This remains here temporarily
842   to ease the transition to the new meaning of YYERROR, for GCC.
843   Once GCC version 2 has supplanted version 1, this can go.  */
844
845#define YYFAIL        goto yyerrlab
846
847#define YYRECOVERING()  (!!yyerrstatus)
848
849#define YYBACKUP(Token, Value)                    \
850do                                \
851  if (yychar == YYEMPTY && yylen == 1)                \
852    {                                \
853      yychar = (Token);                        \
854      yylval = (Value);                        \
855      yytoken = YYTRANSLATE (yychar);                \
856      YYPOPSTACK;                        \
857      goto yybackup;                        \
858    }                                \
859  else                                \
860    {                                 \
861      yyerror ("syntax error: cannot back up");\
862      YYERROR;                            \
863    }                                \
864while (0)
865
866#define YYTERROR    1
867#define YYERRCODE    256
868
869/* YYLLOC_DEFAULT -- Compute the default location (before the actions
870   are run).  */
871
872#ifndef YYLLOC_DEFAULT
873# define YYLLOC_DEFAULT(Current, Rhs, N)         \
874  Current.first_line   = Rhs[1].first_line;      \
875  Current.first_column = Rhs[1].first_column;    \
876  Current.last_line    = Rhs[N].last_line;       \
877  Current.last_column  = Rhs[N].last_column;
878#endif
879
880/* YYLEX -- calling `yylex' with the right arguments.  */
881
882#ifdef YYLEX_PARAM
883# define YYLEX yylex (YYLEX_PARAM)
884#else
885# define YYLEX yylex ()
886#endif
887
888/* Enable debugging if requested.  */
889#if YYDEBUG
890
891# ifndef YYFPRINTF
892include <stdio.h> /* INFRINGES ON USER NAME SPACE */
893define YYFPRINTF fprintf
894# endif
895
896# define YYDPRINTF(Args)            \
897do {                        \
898  if (yydebug)                    \
899    YYFPRINTF Args;                \
900} while (0)
901
902# define YYDSYMPRINT(Args)            \
903do {                        \
904  if (yydebug)                    \
905    yysymprint Args;                \
906} while (0)
907
908# define YYDSYMPRINTF(Title, Token, Value, Location)        \
909do {                                \
910  if (yydebug)                            \
911    {                                \
912      YYFPRINTF (stderr, "%s ", Title);                \
913      yysymprint (stderr,                     \
914                  Token, Value);    \
915      YYFPRINTF (stderr, "\n");                    \
916    }                                \
917} while (0)
918
919/*------------------------------------------------------------------.
920| yy_stack_print -- Print the state stack from its BOTTOM up to its |
921| TOP (cinluded).                                                   |
922`------------------------------------------------------------------*/
923
924#if defined (__STDC__) || defined (__cplusplus)
925static void
926yy_stack_print (short *bottom, short *top)
927#else
928static void
929yy_stack_print (bottom, top)
930    short *bottom;
931    short *top;
932#endif
933{
934  YYFPRINTF (stderr, "Stack now");
935  for (/* Nothing. */; bottom <= top; ++bottom)
936    YYFPRINTF (stderr, " %d", *bottom);
937  YYFPRINTF (stderr, "\n");
938}
939
940# define YY_STACK_PRINT(Bottom, Top)                \
941do {                                \
942  if (yydebug)                            \
943    yy_stack_print ((Bottom), (Top));                \
944} while (0)
945
946
947/*------------------------------------------------.
948| Report that the YYRULE is going to be reduced.  |
949`------------------------------------------------*/
950
951#if defined (__STDC__) || defined (__cplusplus)
952static void
953yy_reduce_print (int yyrule)
954#else
955static void
956yy_reduce_print (yyrule)
957    int yyrule;
958#endif
959{
960  int yyi;
961  unsigned int yylineno = yyrline[yyrule];
962  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
963             yyrule - 1, yylineno);
964  /* Print the symbols being reduced, and their result.  */
965  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
966    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
967  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
968}
969
970# define YY_REDUCE_PRINT(Rule)        \
971do {                    \
972  if (yydebug)                \
973    yy_reduce_print (Rule);        \
974} while (0)
975
976/* Nonzero means print parse trace.  It is left uninitialized so that
977   multiple parsers can coexist.  */
978int yydebug;
979#else /* !YYDEBUG */
980# define YYDPRINTF(Args)
981# define YYDSYMPRINT(Args)
982# define YYDSYMPRINTF(Title, Token, Value, Location)
983# define YY_STACK_PRINT(Bottom, Top)
984# define YY_REDUCE_PRINT(Rule)
985#endif /* !YYDEBUG */
986
987
988/* YYINITDEPTH -- initial size of the parser's stacks.  */
989#ifndef    YYINITDEPTH
990# define YYINITDEPTH 200
991#endif
992
993/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
994   if the built-in stack extension method is used).
995
996   Do not make this value too large; the results are undefined if
997   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
998   evaluated with infinite-precision integer arithmetic.  */
999
1000#if YYMAXDEPTH == 0
1001# undef YYMAXDEPTH
1002#endif
1003
1004#ifndef YYMAXDEPTH
1005# define YYMAXDEPTH 10000
1006#endif
1007
1008
1009
1010#if YYERROR_VERBOSE
1011
1012# ifndef yystrlen
1013if defined (__GLIBC__) && defined (_STRING_H)
1014#   define yystrlen strlen
1015else
1016/* Return the length of YYSTR.  */
1017static YYSIZE_T
1018#   if defined (__STDC__) || defined (__cplusplus)
1019yystrlen (const char *yystr)
1020#   else
1021yystrlen (yystr)
1022     const char *yystr;
1023#   endif
1024{
1025  register const char *yys = yystr;
1026
1027  while (*yys++ != '\0')
1028    continue;
1029
1030  return yys - yystr - 1;
1031}
1032endif
1033# endif
1034
1035# ifndef yystpcpy
1036if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1037#   define yystpcpy stpcpy
1038else
1039/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1040   YYDEST.  */
1041static char *
1042#   if defined (__STDC__) || defined (__cplusplus)
1043yystpcpy (char *yydest, const char *yysrc)
1044#   else
1045yystpcpy (yydest, yysrc)
1046     char *yydest;
1047     const char *yysrc;
1048#   endif
1049{
1050  register char *yyd = yydest;
1051  register const char *yys = yysrc;
1052
1053  while ((*yyd++ = *yys++) != '\0')
1054    continue;
1055
1056  return yyd - 1;
1057}
1058endif
1059# endif
1060
1061#endif /* !YYERROR_VERBOSE */
1062
1063
1064
1065#if YYDEBUG
1066/*--------------------------------.
1067| Print this symbol on YYOUTPUT.  |
1068`--------------------------------*/
1069
1070#if defined (__STDC__) || defined (__cplusplus)
1071static void
1072yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
1073#else
1074static void
1075yysymprint (yyoutput, yytype, yyvaluep)
1076    FILE *yyoutput;
1077    int yytype;
1078    YYSTYPE *yyvaluep;
1079#endif
1080{
1081  /* Pacify ``unused variable'' warnings.  */
1082  (void) yyvaluep;
1083
1084  if (yytype < YYNTOKENS)
1085    {
1086      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1087# ifdef YYPRINT
1088      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1089# endif
1090    }
1091  else
1092    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1093
1094  switch (yytype)
1095    {
1096      default:
1097        break;
1098    }
1099  YYFPRINTF (yyoutput, ")");
1100}
1101
1102#endif /* ! YYDEBUG */
1103/*-----------------------------------------------.
1104| Release the memory associated to this symbol.  |
1105`-----------------------------------------------*/
1106
1107#if defined (__STDC__) || defined (__cplusplus)
1108static void
1109yydestruct (int yytype, YYSTYPE *yyvaluep)
1110#else
1111static void
1112yydestruct (yytype, yyvaluep)
1113    int yytype;
1114    YYSTYPE *yyvaluep;
1115#endif
1116{
1117  /* Pacify ``unused variable'' warnings.  */
1118  (void) yyvaluep;
1119
1120}
1121
1122/* Prevent warnings from -Wmissing-prototypes.  */
1123
1124#ifdef YYPARSE_PARAM
1125# if defined (__STDC__) || defined (__cplusplus)
1126int yyparse (void *YYPARSE_PARAM);
1127# else
1128int yyparse ();
1129# endif
1130#else /* ! YYPARSE_PARAM */
1131#if defined (__STDC__) || defined (__cplusplus)
1132int yyparse (void);
1133#else
1134int yyparse ();
1135#endif
1136#endif /* ! YYPARSE_PARAM */
1137
1138
1139
1140/* The lookahead symbol.  */
1141int yychar;
1142
1143/* The semantic value of the lookahead symbol.  */
1144YYSTYPE yylval;
1145
1146/* Number of syntax errors so far.  */
1147int yynerrs;
1148
1149
1150
1151/*----------.
1152| yyparse.  |
1153`----------*/
1154
1155#ifdef YYPARSE_PARAM
1156# if defined (__STDC__) || defined (__cplusplus)
1157int yyparse (void *YYPARSE_PARAM)
1158# else
1159int yyparse (YYPARSE_PARAM)
1160  void *YYPARSE_PARAM;
1161# endif
1162#else /* ! YYPARSE_PARAM */
1163#if defined (__STDC__) || defined (__cplusplus)
1164int
1165yyparse (void)
1166#else
1167int
1168yyparse ()
1169
1170#endif
1171#endif
1172{
1173 
1174  register int yystate;
1175  register int yyn;
1176  int yyresult;
1177  /* Number of tokens to shift before error messages enabled.  */
1178  int yyerrstatus;
1179  /* Lookahead token as an internal (translated) token number.  */
1180  int yytoken = 0;
1181
1182  /* Three stacks and their tools:
1183     `yyss': related to states,
1184     `yyvs': related to semantic values,
1185     `yyls': related to locations.
1186
1187     Refer to the stacks thru separate pointers, to allow yyoverflow
1188     to reallocate them elsewhere.  */
1189
1190  /* The state stack.  */
1191  short    yyssa[YYINITDEPTH];
1192  short *yyss = yyssa;
1193  register short *yyssp;
1194
1195  /* The semantic value stack.  */
1196  YYSTYPE yyvsa[YYINITDEPTH];
1197  YYSTYPE *yyvs = yyvsa;
1198  register YYSTYPE *yyvsp;
1199
1200
1201
1202#define YYPOPSTACK   (yyvsp--, yyssp--)
1203
1204  YYSIZE_T yystacksize = YYINITDEPTH;
1205
1206  /* The variables used to return semantic value and location from the
1207     action routines.  */
1208  YYSTYPE yyval;
1209
1210
1211  /* When reducing, the number of symbols on the RHS of the reduced
1212     rule.  */
1213  int yylen;
1214
1215  YYDPRINTF ((stderr, "Starting parse\n"));
1216
1217  yystate = 0;
1218  yyerrstatus = 0;
1219  yynerrs = 0;
1220  yychar = YYEMPTY;        /* Cause a token to be read.  */
1221
1222  /* Initialize stack pointers.
1223     Waste one element of value and location stack
1224     so that they stay on the same level as the state stack.
1225     The wasted elements are never initialized.  */
1226
1227  yyssp = yyss;
1228  yyvsp = yyvs;
1229
1230  goto yysetstate;
1231
1232/*------------------------------------------------------------.
1233| yynewstate -- Push a new state, which is found in yystate.  |
1234`------------------------------------------------------------*/
1235 yynewstate:
1236  /* In all cases, when you get here, the value and location stacks
1237     have just been pushed. so pushing a state here evens the stacks.
1238     */
1239  yyssp++;
1240
1241 yysetstate:
1242  *yyssp = yystate;
1243
1244  if (yyss + yystacksize - 1 <= yyssp)
1245    {
1246      /* Get the current used size of the three stacks, in elements.  */
1247      YYSIZE_T yysize = yyssp - yyss + 1;
1248
1249#ifdef yyoverflow
1250      {
1251    /* Give user a chance to reallocate the stack. Use copies of
1252       these so that the &'s don't force the real ones into
1253       memory.  */
1254    YYSTYPE *yyvs1 = yyvs;
1255    short *yyss1 = yyss;
1256
1257
1258    /* Each stack pointer address is followed by the size of the
1259       data in use in that stack, in bytes.  This used to be a
1260       conditional around just the two extra args, but that might
1261       be undefined if yyoverflow is a macro.  */
1262    yyoverflow ("parser stack overflow",
1263            &yyss1, yysize * sizeof (*yyssp),
1264            &yyvs1, yysize * sizeof (*yyvsp),
1265
1266            &yystacksize);
1267
1268    yyss = yyss1;
1269    yyvs = yyvs1;
1270      }
1271#else /* no yyoverflow */
1272# ifndef YYSTACK_RELOCATE
1273      goto yyoverflowlab;
1274# else
1275      /* Extend the stack our own way.  */
1276      if (YYMAXDEPTH <= yystacksize)
1277    goto yyoverflowlab;
1278      yystacksize *= 2;
1279      if (YYMAXDEPTH < yystacksize)
1280    yystacksize = YYMAXDEPTH;
1281
1282      {
1283    short *yyss1 = yyss;
1284    union yyalloc *yyptr =
1285      (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1286    if (! yyptr)
1287      goto yyoverflowlab;
1288    YYSTACK_RELOCATE (yyss);
1289    YYSTACK_RELOCATE (yyvs);
1290
1291undef YYSTACK_RELOCATE
1292    if (yyss1 != yyssa)
1293      YYSTACK_FREE (yyss1);
1294      }
1295# endif
1296#endif /* no yyoverflow */
1297
1298      yyssp = yyss + yysize - 1;
1299      yyvsp = yyvs + yysize - 1;
1300
1301
1302      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1303          (unsigned long int) yystacksize));
1304
1305      if (yyss + yystacksize - 1 <= yyssp)
1306    YYABORT;
1307    }
1308
1309  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1310
1311  goto yybackup;
1312
1313/*-----------.
1314| yybackup.  |
1315`-----------*/
1316yybackup:
1317
1318/* Do appropriate processing given the current state.  */
1319/* Read a lookahead token if we need one and don't already have one.  */
1320/* yyresume: */
1321
1322  /* First try to decide what to do without reference to lookahead token.  */
1323
1324  yyn = yypact[yystate];
1325  if (yyn == YYPACT_NINF)
1326    goto yydefault;
1327
1328  /* Not known => get a lookahead token if don't already have one.  */
1329
1330  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1331  if (yychar == YYEMPTY)
1332    {
1333      YYDPRINTF ((stderr, "Reading a token: "));
1334      yychar = YYLEX;
1335    }
1336
1337  if (yychar <= YYEOF)
1338    {
1339      yychar = yytoken = YYEOF;
1340      YYDPRINTF ((stderr, "Now at end of input.\n"));
1341    }
1342  else
1343    {
1344      yytoken = YYTRANSLATE (yychar);
1345      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
1346    }
1347
1348  /* If the proper action on seeing token YYTOKEN is to reduce or to
1349     detect an error, take that action.  */
1350  yyn += yytoken;
1351  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1352    goto yydefault;
1353  yyn = yytable[yyn];
1354  if (yyn <= 0)
1355    {
1356      if (yyn == 0 || yyn == YYTABLE_NINF)
1357    goto yyerrlab;
1358      yyn = -yyn;
1359      goto yyreduce;
1360    }
1361
1362  if (yyn == YYFINAL)
1363    YYACCEPT;
1364
1365  /* Shift the lookahead token.  */
1366  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
1367
1368  /* Discard the token being shifted unless it is eof.  */
1369  if (yychar != YYEOF)
1370    yychar = YYEMPTY;
1371
1372  *++yyvsp = yylval;
1373
1374
1375  /* Count tokens shifted since error; after three, turn off error
1376     status.  */
1377  if (yyerrstatus)
1378    yyerrstatus--;
1379
1380  yystate = yyn;
1381  goto yynewstate;
1382
1383
1384/*-----------------------------------------------------------.
1385| yydefault -- do the default action for the current state.  |
1386`-----------------------------------------------------------*/
1387yydefault:
1388  yyn = yydefact[yystate];
1389  if (yyn == 0)
1390    goto yyerrlab;
1391  goto yyreduce;
1392
1393
1394/*-----------------------------.
1395| yyreduce -- Do a reduction.  |
1396`-----------------------------*/
1397yyreduce:
1398  /* yyn is the number of a rule to reduce with.  */
1399  yylen = yyr2[yyn];
1400
1401  /* If YYLEN is nonzero, implement the default value of the action:
1402     `$$ = $1'.
1403
1404     Otherwise, the following line sets YYVAL to garbage.
1405     This behavior is undocumented and Bison
1406     users should not rely upon it.  Assigning to YYVAL
1407     unconditionally makes the parser a bit smaller, and it avoids a
1408     GCC warning that YYVAL may be used uninitialized.  */
1409  yyval = yyvsp[1-yylen];
1410
1411
1412  YY_REDUCE_PRINT (yyn);
1413  switch (yyn)
1414    {
1415        case 14:
1416
1417    {
1418            osgProducer::CameraGroup::ThreadModel tm = (osgProducer::CameraGroup::ThreadModel)yyvsp[-1].integer;
1419            cfg->setThreadModelDirective( tm );
1420        ;}
1421    break;
1422
1423  case 15:
1424
1425    { yyval.integer = CameraGroup::SingleThreaded; ;}
1426    break;
1427
1428  case 16:
1429
1430    { yyval.integer = CameraGroup::ThreadPerCamera; ;}
1431    break;
1432
1433  case 17:
1434
1435    { yyval.integer = CameraGroup::ThreadPerRenderSurface; ;}
1436    break;
1437
1438  case 18:
1439
1440    {
1441           cfg->addStereoSystemCommand( yyvsp[-3].integer, yyvsp[-2].string, yyvsp[-1].string );
1442        ;}
1443    break;
1444
1445  case 24:
1446
1447    {
1448        cfg->beginCamera( yyvsp[0].string );
1449     ;}
1450    break;
1451
1452  case 25:
1453
1454    {
1455        cfg->endCamera();
1456     ;}
1457    break;
1458
1459  case 29:
1460
1461    {
1462        cfg->setCameraRenderSurface( yyvsp[-1].string );
1463    ;}
1464    break;
1465
1466  case 30:
1467
1468    {
1469        cfg->setCameraRenderSurface();
1470    ;}
1471    break;
1472
1473  case 31:
1474
1475    {
1476        cfg->setCameraProjectionRectangle( yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1477    ;}
1478    break;
1479
1480  case 32:
1481
1482    {
1483        cfg->setCameraShareLens( yyvsp[-1].boolean );
1484    ;}
1485    break;
1486
1487  case 33:
1488
1489    {
1490        cfg->setCameraShareView( yyvsp[-1].boolean );
1491    ;}
1492    break;
1493
1494  case 34:
1495
1496    {
1497        cfg->setCameraClearColor( yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1498    ;}
1499    break;
1500
1501  case 37:
1502
1503    {
1504        cfg->beginCameraOffset();
1505    ;}
1506    break;
1507
1508  case 38:
1509
1510    {
1511        cfg->endCameraOffset();
1512    ;}
1513    break;
1514
1515  case 41:
1516
1517    {
1518        cfg->shearCameraOffset( yyvsp[-2].real, yyvsp[-1].real );
1519      ;}
1520    break;
1521
1522  case 42:
1523
1524    {
1525        cfg->rotateCameraOffset( yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1526      ;}
1527    break;
1528
1529  case 43:
1530
1531    {
1532        cfg->translateCameraOffset( yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1533      ;}
1534    break;
1535
1536  case 44:
1537
1538    {
1539        cfg->scaleCameraOffset( yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1540      ;}
1541    break;
1542
1543  case 45:
1544
1545    {
1546        cfg->setCameraOffsetMultiplyMethod( (osgProducer::Camera::Offset::MultiplyMethod)yyvsp[-1].integer );
1547      ;}
1548    break;
1549
1550  case 46:
1551
1552    { yyval.integer = osgProducer::Camera::Offset::PreMultiply; ;}
1553    break;
1554
1555  case 47:
1556
1557    { yyval.integer = osgProducer::Camera::Offset::PostMultiply; ;}
1558    break;
1559
1560  case 52:
1561
1562    {
1563          cfg->setCameraOrtho( yyvsp[-6].real, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1564      ;}
1565    break;
1566
1567  case 53:
1568
1569    {
1570          cfg->setCameraOrtho( yyvsp[-8].real, yyvsp[-7].real, yyvsp[-6].real, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1571      ;}
1572    break;
1573
1574  case 54:
1575
1576    {
1577          cfg->setCameraPerspective( yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1578      ;}
1579    break;
1580
1581  case 55:
1582
1583    {
1584          cfg->setCameraPerspective( yyvsp[-6].real, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1585      ;}
1586    break;
1587
1588  case 56:
1589
1590    {
1591          cfg->setCameraFrustum( yyvsp[-6].real, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1592      ;}
1593    break;
1594
1595  case 57:
1596
1597    {
1598          cfg->setCameraFrustum( yyvsp[-8].real, yyvsp[-7].real, yyvsp[-6].real, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1599      ;}
1600    break;
1601
1602  case 58:
1603
1604    {
1605          cfg->setCameraLensShear( yyvsp[-2].real, yyvsp[-1].real );
1606      ;}
1607    break;
1608
1609  case 59:
1610
1611    {
1612         cfg->beginRenderSurface( yyvsp[0].string );
1613     ;}
1614    break;
1615
1616  case 60:
1617
1618    {
1619         cfg->endRenderSurface();
1620     ;}
1621    break;
1622
1623  case 64:
1624
1625    {
1626        cfg->setRenderSurfaceVisualChooser( yyvsp[-1].string );
1627    ;}
1628    break;
1629
1630  case 65:
1631
1632    {
1633        cfg->setRenderSurfaceVisualChooser();
1634    ;}
1635    break;
1636
1637  case 66:
1638
1639    {
1640        cfg->setRenderSurfaceWindowRectangle( yyvsp[-4].integer, yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer );
1641    ;}
1642    break;
1643
1644  case 67:
1645
1646    {
1647        cfg->setRenderSurfaceInputRectangle( yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].real, yyvsp[-1].real );
1648    ;}
1649    break;
1650
1651  case 68:
1652
1653    {
1654        cfg->setRenderSurfaceHostName( std::string(yyvsp[-1].string) );
1655    ;}
1656    break;
1657
1658  case 69:
1659
1660    {
1661        cfg->setRenderSurfaceDisplayNum( yyvsp[-1].integer );
1662    ;}
1663    break;
1664
1665  case 70:
1666
1667    {
1668        cfg->setRenderSurfaceScreen( yyvsp[-1].integer );
1669    ;}
1670    break;
1671
1672  case 71:
1673
1674    {   
1675        cfg->setRenderSurfaceBorder( yyvsp[-1].boolean );
1676    ;}
1677    break;
1678
1679  case 72:
1680
1681    {
1682        cfg->setRenderSurfaceCustomFullScreenRectangle( yyvsp[-4].integer, yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer );
1683    ;}
1684    break;
1685
1686  case 73:
1687
1688    {
1689        cfg->setRenderSurfaceOverrideRedirect( yyvsp[-1].boolean );
1690    ;}
1691    break;
1692
1693  case 74:
1694
1695    {
1696        osgProducer::RenderSurface::DrawableType drawableType = (RenderSurface::DrawableType)yyvsp[-1].integer;
1697        cfg->setRenderSurfaceDrawableType( drawableType );
1698    ;}
1699    break;
1700
1701  case 75:
1702
1703    {
1704        cfg->setRenderSurfaceReadDrawable( yyvsp[-1].string );
1705    ;}
1706    break;
1707
1708  case 76:
1709
1710    {
1711        cfg->setRenderSurfaceRenderToTextureMode( (osgProducer::RenderSurface::RenderToTextureMode)yyvsp[-1].integer );
1712    ;}
1713    break;
1714
1715  case 77:
1716
1717    { yyval.integer =  RenderSurface::DrawableType_Window; ;}
1718    break;
1719
1720  case 78:
1721
1722    { yyval.integer =  RenderSurface::DrawableType_PBuffer; ;}
1723    break;
1724
1725  case 79:
1726
1727    { yyval.integer = RenderSurface::RenderToTextureMode_None; ;}
1728    break;
1729
1730  case 80:
1731
1732    { yyval.integer = RenderSurface::RenderToRGBTexture; ;}
1733    break;
1734
1735  case 81:
1736
1737    { yyval.integer = RenderSurface::RenderToRGBATexture; ;}
1738    break;
1739
1740  case 82:
1741
1742    {
1743         cfg->beginVisual( yyvsp[0].string );
1744     ;}
1745    break;
1746
1747  case 83:
1748
1749    {
1750         cfg->endVisual();
1751     ;}
1752    break;
1753
1754  case 84:
1755
1756    {
1757         cfg->beginVisual();
1758     ;}
1759    break;
1760
1761  case 85:
1762
1763    {
1764         cfg->endVisual();
1765     ;}
1766    break;
1767
1768  case 88:
1769
1770    {
1771          cfg->setVisualSimpleConfiguration();
1772      ;}
1773    break;
1774
1775  case 89:
1776
1777    {
1778          cfg->setVisualByID( yyvsp[0].integer );
1779      ;}
1780    break;
1781
1782  case 90:
1783
1784    {
1785          cfg->addVisualAttribute( VisualChooser::BufferSize, yyvsp[0].integer );
1786      ;}
1787    break;
1788
1789  case 91:
1790
1791    {
1792          cfg->addVisualAttribute( VisualChooser::Level, yyvsp[0].integer );
1793      ;}
1794    break;
1795
1796  case 92:
1797
1798    {
1799          cfg->addVisualAttribute( VisualChooser::RGBA );
1800      ;}
1801    break;
1802
1803  case 93:
1804
1805    {
1806          cfg->addVisualAttribute( VisualChooser::DoubleBuffer );
1807      ;}
1808    break;
1809
1810  case 94:
1811
1812    {
1813          cfg->addVisualAttribute( VisualChooser::Stereo );
1814      ;}
1815    break;
1816
1817  case 95:
1818
1819    {
1820          cfg->addVisualAttribute( VisualChooser::AuxBuffers, yyvsp[0].integer );
1821      ;}
1822    break;
1823
1824  case 96:
1825
1826    {
1827          cfg->addVisualAttribute( VisualChooser::RedSize, yyvsp[0].integer );
1828      ;}
1829    break;
1830
1831  case 97:
1832
1833    {
1834          cfg->addVisualAttribute( VisualChooser::GreenSize, yyvsp[0].integer );
1835      ;}
1836    break;
1837
1838  case 98:
1839
1840    {
1841          cfg->addVisualAttribute( VisualChooser::BlueSize, yyvsp[0].integer );
1842      ;}
1843    break;
1844
1845  case 99:
1846
1847    {
1848          cfg->addVisualAttribute( VisualChooser::AlphaSize, yyvsp[0].integer );
1849      ;}
1850    break;
1851
1852  case 100:
1853
1854    {
1855          cfg->addVisualAttribute( VisualChooser::DepthSize, yyvsp[0].integer );
1856      ;}
1857    break;
1858
1859  case 101:
1860
1861    {
1862          cfg->addVisualAttribute( VisualChooser::StencilSize, yyvsp[0].integer );
1863      ;}
1864    break;
1865
1866  case 102:
1867
1868    {
1869          cfg->addVisualAttribute( VisualChooser::AccumRedSize, yyvsp[0].integer );
1870      ;}
1871    break;
1872
1873  case 103:
1874
1875    {
1876          cfg->addVisualAttribute( VisualChooser::AccumGreenSize, yyvsp[0].integer );
1877      ;}
1878    break;
1879
1880  case 104:
1881
1882    {
1883          cfg->addVisualAttribute( VisualChooser::AccumBlueSize, yyvsp[0].integer );
1884      ;}
1885    break;
1886
1887  case 105:
1888
1889    {
1890          cfg->addVisualAttribute( VisualChooser::AccumAlphaSize, yyvsp[0].integer );
1891      ;}
1892    break;
1893
1894  case 106:
1895
1896    {
1897          cfg->addVisualAttribute( VisualChooser::Samples, yyvsp[0].integer );
1898      ;}
1899    break;
1900
1901  case 107:
1902
1903    {
1904          cfg->addVisualAttribute( VisualChooser::SampleBuffers );
1905      ;}
1906    break;
1907
1908  case 108:
1909
1910    {
1911          cfg->addVisualExtendedAttribute( yyvsp[-1].integer, yyvsp[0].integer );
1912      ;}
1913    break;
1914
1915  case 109:
1916
1917    { cfg->beginInputArea(); ;}
1918    break;
1919
1920  case 110:
1921
1922    { cfg->endInputArea(); ;}
1923    break;
1924
1925  case 113:
1926
1927    {
1928            cfg->addInputAreaEntry( yyvsp[-1].string );
1929        ;}
1930    break;
1931
1932  case 114:
1933
1934    {
1935        yyval.real = atof(flexer->YYText());
1936    ;}
1937    break;
1938
1939  case 115:
1940
1941    {
1942        yyval.real = atof(flexer->YYText());
1943    ;}
1944    break;
1945
1946  case 116:
1947
1948    {
1949        yyval.real = atof(flexer->YYText());
1950    ;}
1951    break;
1952
1953  case 117:
1954
1955    {
1956        yyval.integer = atoi( flexer->YYText() );
1957    ;}
1958    break;
1959
1960  case 118:
1961
1962    {
1963        yyval.string = strdup( flexer->YYText() );
1964    ;}
1965    break;
1966
1967  case 119:
1968
1969    {
1970        yyval.string = strdup( flexer->YYText() );
1971    ;}
1972    break;
1973
1974  case 120:
1975
1976    {
1977        unsigned int n;
1978        sscanf( flexer->YYText(), "0x%x", &n );
1979        yyval.integer = n;
1980    ;}
1981    break;
1982
1983  case 121:
1984
1985    { yyval.boolean = true;;}
1986    break;
1987
1988  case 122:
1989
1990    { yyval.boolean = false; ;}
1991    break;
1992
1993
1994    }
1995
1996/* Line 991 of yacc.c.  */
1997
1998
1999  yyvsp -= yylen;
2000  yyssp -= yylen;
2001
2002
2003  YY_STACK_PRINT (yyss, yyssp);
2004
2005  *++yyvsp = yyval;
2006
2007
2008  /* Now `shift' the result of the reduction.  Determine what state
2009     that goes to, based on the state we popped back to and the rule
2010     number reduced by.  */
2011
2012  yyn = yyr1[yyn];
2013
2014  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2015  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2016    yystate = yytable[yystate];
2017  else
2018    yystate = yydefgoto[yyn - YYNTOKENS];
2019
2020  goto yynewstate;
2021
2022
2023/*------------------------------------.
2024| yyerrlab -- here on detecting error |
2025`------------------------------------*/
2026yyerrlab:
2027  /* If not already recovering from an error, report this error.  */
2028  if (!yyerrstatus)
2029    {
2030      ++yynerrs;
2031#if YYERROR_VERBOSE
2032      yyn = yypact[yystate];
2033
2034      if (YYPACT_NINF < yyn && yyn < YYLAST)
2035    {
2036      YYSIZE_T yysize = 0;
2037      int yytype = YYTRANSLATE (yychar);
2038      char *yymsg;
2039      int yyx, yycount;
2040
2041      yycount = 0;
2042      /* Start YYX at -YYN if negative to avoid negative indexes in
2043         YYCHECK.  */
2044      for (yyx = yyn < 0 ? -yyn : 0;
2045           yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
2046        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2047          yysize += yystrlen (yytname[yyx]) + 15, yycount++;
2048      yysize += yystrlen ("syntax error, unexpected ") + 1;
2049      yysize += yystrlen (yytname[yytype]);
2050      yymsg = (char *) YYSTACK_ALLOC (yysize);
2051      if (yymsg != 0)
2052        {
2053          char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
2054          yyp = yystpcpy (yyp, yytname[yytype]);
2055
2056          if (yycount < 5)
2057        {
2058          yycount = 0;
2059          for (yyx = yyn < 0 ? -yyn : 0;
2060               yyx < (int) (sizeof (yytname) / sizeof (char *));
2061               yyx++)
2062            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2063              {
2064            const char *yyq = ! yycount ? ", expecting " : " or ";
2065            yyp = yystpcpy (yyp, yyq);
2066            yyp = yystpcpy (yyp, yytname[yyx]);
2067            yycount++;
2068              }
2069        }
2070          yyerror (yymsg);
2071          YYSTACK_FREE (yymsg);
2072        }
2073      else
2074        yyerror ("syntax error; also virtual memory exhausted");
2075    }
2076      else
2077#endif /* YYERROR_VERBOSE */
2078    yyerror ("syntax error");
2079    }
2080
2081
2082
2083  if (yyerrstatus == 3)
2084    {
2085      /* If just tried and failed to reuse lookahead token after an
2086     error, discard it.  */
2087
2088      /* Return failure if at end of input.  */
2089      if (yychar == YYEOF)
2090        {
2091      /* Pop the error token.  */
2092          YYPOPSTACK;
2093      /* Pop the rest of the stack.  */
2094      while (yyss < yyssp)
2095        {
2096          YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2097          yydestruct (yystos[*yyssp], yyvsp);
2098          YYPOPSTACK;
2099        }
2100      YYABORT;
2101        }
2102
2103      YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
2104      yydestruct (yytoken, &yylval);
2105      yychar = YYEMPTY;
2106
2107    }
2108
2109  /* Else will try to reuse lookahead token after shifting the error
2110     token.  */
2111  goto yyerrlab2;
2112
2113#if 0
2114/*----------------------------------------------------.
2115| yyerrlab1 -- error raised explicitly by an action.  |
2116`----------------------------------------------------*/
2117yyerrlab1:
2118
2119  /* Suppress GCC warning that yyerrlab1 is unused when no action
2120     invokes YYERROR.  */
2121#if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) \
2122    && !defined __cplusplus
2123  __attribute__ ((__unused__))
2124#endif
2125
2126
2127  goto yyerrlab2;
2128#endif
2129
2130/*---------------------------------------------------------------.
2131| yyerrlab2 -- pop states until the error token can be shifted.  |
2132`---------------------------------------------------------------*/
2133yyerrlab2:
2134  yyerrstatus = 3;    /* Each real token shifted decrements this.  */
2135
2136  for (;;)
2137    {
2138      yyn = yypact[yystate];
2139      if (yyn != YYPACT_NINF)
2140    {
2141      yyn += YYTERROR;
2142      if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2143        {
2144          yyn = yytable[yyn];
2145          if (0 < yyn)
2146        break;
2147        }
2148    }
2149
2150      /* Pop the current state because it cannot handle the error token.  */
2151      if (yyssp == yyss)
2152    YYABORT;
2153
2154      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2155      yydestruct (yystos[yystate], yyvsp);
2156      yyvsp--;
2157      yystate = *--yyssp;
2158
2159      YY_STACK_PRINT (yyss, yyssp);
2160    }
2161
2162  if (yyn == YYFINAL)
2163    YYACCEPT;
2164
2165  YYDPRINTF ((stderr, "Shifting error token, "));
2166
2167  *++yyvsp = yylval;
2168
2169
2170  yystate = yyn;
2171  goto yynewstate;
2172
2173
2174/*-------------------------------------.
2175| yyacceptlab -- YYACCEPT comes here.  |
2176`-------------------------------------*/
2177yyacceptlab:
2178  yyresult = 0;
2179  goto yyreturn;
2180
2181/*-----------------------------------.
2182| yyabortlab -- YYABORT comes here.  |
2183`-----------------------------------*/
2184yyabortlab:
2185  yyresult = 1;
2186  goto yyreturn;
2187
2188#ifndef yyoverflow
2189/*----------------------------------------------.
2190| yyoverflowlab -- parser overflow comes here.  |
2191`----------------------------------------------*/
2192yyoverflowlab:
2193  yyerror ("parser stack overflow");
2194  yyresult = 2;
2195  /* Fall through.  */
2196#endif
2197
2198yyreturn:
2199#ifndef yyoverflow
2200  if (yyss != yyssa)
2201    YYSTACK_FREE (yyss);
2202#endif
2203  return yyresult;
2204}
2205
2206
2207
2208
2209
2210static void yyerror( const char *errmsg )
2211{
2212    fprintf( stderr,
2213        "CameraConfig::parseFile(\"%s\") : %s - Line %d at or before \"%s\"\n",
2214        fileName.c_str(),
2215        errmsg,
2216        flexer->lineno(),
2217        flexer->YYText() );
2218}
2219
2220bool CameraConfig::parseFile( const std::string &file )
2221{
2222    fileName.clear();
2223
2224    fileName = findFile(file);
2225
2226    if( fileName.empty() )
2227    {
2228        fprintf( stderr, "CameraConfig::parseFile() - Can't find file \"%s\".\n", file.c_str() );
2229        return false;
2230    }
2231
2232    bool retval = true;
2233
2234#if defined (SUPPORT_CPP)
2235
2236    const char *cpp_path =
2237  #if defined(__APPLE__)
2238                "/usr/bin/cpp";
2239  #else
2240                "/lib/cpp";
2241  #endif
2242
2243    if( access( cpp_path, X_OK ) == 0 )
2244    {
2245
2246        int pd[2];
2247        int result = pipe( pd );
2248
2249        flexer = new yyFlexLexer;
2250        if( fork() == 0 )
2251        {
2252            // we don't want to read from the pipe in the child, so close it.
2253            close( pd[0] );
2254            close( 1 );
2255            result = dup( pd[1] );
2256
2257
2258            /* This was here to allow reading a config file from stdin.
2259             * This has never been directly supported, so commenting out.
2260            if( fileName.empty() )
2261                execlp( cpp_path, "cpp",  "-P", 0L );
2262            else
2263            */
2264            execlp( cpp_path, "cpp""-P", fileName.c_str(), (char *)NULL );
2265
2266            // This should not execute unless an error happens
2267            perror( "execlp" );
2268        }
2269        else
2270        {
2271            close( pd[1]);
2272            close( 0 );
2273            result = dup( pd[0] );
2274
2275            cfg = this;
2276
2277            retval = ConfigParser_parse() == 0 ? true : false;
2278
2279            // Wait on child process to finish
2280            int stat;
2281            wait( &stat );
2282        }
2283    }
2284    else
2285#endif
2286    {
2287        osgDB::ifstream ifs(fileName.c_str());
2288        flexer = new yyFlexLexer(&ifs);
2289        cfg = this;
2290        retval = ConfigParser_parse() == 0 ? true : false;
2291        ifs.close();
2292        delete flexer;
2293    }
2294    return retval;
2295}
2296
Note: See TracBrowser for help on using the browser.