~ubuntu-branches/ubuntu/wily/aspectc++/wily

« back to all changes in this revision

Viewing changes to Puma/gen-release/step2/src/PreExprParser.cc

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2005-12-23 10:49:40 UTC
  • Revision ID: james.westby@ubuntu.com-20051223104940-ig4klhoi991zs7km
Tags: upstream-0.99+1.0pre2
ImportĀ upstreamĀ versionĀ 0.99+1.0pre2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
3
#ifndef __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
4
#define __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
5
#define __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_src_PreExprParser_cc__
 
6
#endif // __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
7
 
 
8
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
9
 
 
10
#line 11 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
11
 
 
12
#ifndef __ac_h_
 
13
#define __ac_h_
 
14
namespace AC {
 
15
  typedef const char* Type;
 
16
  enum JPType { CALL = 0x0004, EXECUTION = 0x0008, CONSTRUCTION = 0x0010, DESTRUCTION = 0x0020 };
 
17
  
 
18
#line 19 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
19
} // closed AC
 
20
class WinIfExists;
 
21
class WinImportHandler;
 
22
class WinMacros;
 
23
class CMatchSyntax;
 
24
class ExtGnu;
 
25
class ExtAC;
 
26
class ExtACTree;
 
27
class WinAsm;
 
28
class WinDeclSpecs;
 
29
class WinMemberExplSpec;
 
30
class WinTypeKeywords;
 
31
class PragmaOnceUnitState;
 
32
class PragmaOnce;
 
33
class CCExprResolve;
 
34
class CExprResolve;
 
35
namespace AC {
 
36
 
 
37
#line 9 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
38
struct Action {
 
39
#line 40 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
40
  friend class ::WinIfExists;
 
41
  friend class ::WinImportHandler;
 
42
  friend class ::WinMacros;
 
43
  friend class ::CMatchSyntax;
 
44
  friend class ::ExtGnu;
 
45
  friend class ::ExtAC;
 
46
  friend class ::ExtACTree;
 
47
  friend class ::WinAsm;
 
48
  friend class ::WinDeclSpecs;
 
49
  friend class ::WinMemberExplSpec;
 
50
  friend class ::WinTypeKeywords;
 
51
  friend class ::PragmaOnceUnitState;
 
52
  friend class ::PragmaOnce;
 
53
  friend class ::CCExprResolve;
 
54
  friend class ::CExprResolve;
 
55
 
 
56
#line 9 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
57
 
 
58
    void **_args; void *_result; void *_target; void *_that; void *_fptr;
 
59
    void (*_wrapper)(Action &);
 
60
    inline void trigger () { _wrapper (*this); }
 
61
  };
 
62
  
 
63
#line 64 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
64
} // closed AC
 
65
class WinIfExists;
 
66
class WinImportHandler;
 
67
class WinMacros;
 
68
class CMatchSyntax;
 
69
class ExtGnu;
 
70
class ExtAC;
 
71
class ExtACTree;
 
72
class WinAsm;
 
73
class WinDeclSpecs;
 
74
class WinMemberExplSpec;
 
75
class WinTypeKeywords;
 
76
class PragmaOnceUnitState;
 
77
class PragmaOnce;
 
78
class CCExprResolve;
 
79
class CExprResolve;
 
80
namespace AC {
 
81
 
 
82
#line 14 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
83
struct AnyResultBuffer {
 
84
#line 85 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
85
  friend class ::WinIfExists;
 
86
  friend class ::WinImportHandler;
 
87
  friend class ::WinMacros;
 
88
  friend class ::CMatchSyntax;
 
89
  friend class ::ExtGnu;
 
90
  friend class ::ExtAC;
 
91
  friend class ::ExtACTree;
 
92
  friend class ::WinAsm;
 
93
  friend class ::WinDeclSpecs;
 
94
  friend class ::WinMemberExplSpec;
 
95
  friend class ::WinTypeKeywords;
 
96
  friend class ::PragmaOnceUnitState;
 
97
  friend class ::PragmaOnce;
 
98
  friend class ::CCExprResolve;
 
99
  friend class ::CExprResolve;
 
100
 
 
101
#line 14 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
102
};
 
103
  
 
104
#line 105 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
105
} // closed AC
 
106
class WinIfExists;
 
107
class WinImportHandler;
 
108
class WinMacros;
 
109
class CMatchSyntax;
 
110
class ExtGnu;
 
111
class ExtAC;
 
112
class ExtACTree;
 
113
class WinAsm;
 
114
class WinDeclSpecs;
 
115
class WinMemberExplSpec;
 
116
class WinTypeKeywords;
 
117
class PragmaOnceUnitState;
 
118
class PragmaOnce;
 
119
class CCExprResolve;
 
120
class CExprResolve;
 
121
namespace AC {
 
122
 
 
123
#line 15 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
124
template <typename T> struct ResultBuffer : public AnyResultBuffer {
 
125
#line 126 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
126
  friend class ::WinIfExists;
 
127
  friend class ::WinImportHandler;
 
128
  friend class ::WinMacros;
 
129
  friend class ::CMatchSyntax;
 
130
  friend class ::ExtGnu;
 
131
  friend class ::ExtAC;
 
132
  friend class ::ExtACTree;
 
133
  friend class ::WinAsm;
 
134
  friend class ::WinDeclSpecs;
 
135
  friend class ::WinMemberExplSpec;
 
136
  friend class ::WinTypeKeywords;
 
137
  friend class ::PragmaOnceUnitState;
 
138
  friend class ::PragmaOnce;
 
139
  friend class ::CCExprResolve;
 
140
  friend class ::CExprResolve;
 
141
 
 
142
#line 15 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
143
 
 
144
    char _data[sizeof (T)];
 
145
    ~ResultBuffer () { ((T*)_data)->T::~T(); }
 
146
    operator T& () const { return *(T*)_data; }
 
147
  };
 
148
  
 
149
#line 150 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
150
} // closed AC
 
151
class WinIfExists;
 
152
class WinImportHandler;
 
153
class WinMacros;
 
154
class CMatchSyntax;
 
155
class ExtGnu;
 
156
class ExtAC;
 
157
class ExtACTree;
 
158
class WinAsm;
 
159
class WinDeclSpecs;
 
160
class WinMemberExplSpec;
 
161
class WinTypeKeywords;
 
162
class PragmaOnceUnitState;
 
163
class PragmaOnce;
 
164
class CCExprResolve;
 
165
class CExprResolve;
 
166
namespace AC {
 
167
 
 
168
#line 20 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
169
template <class Aspect, int Index>
 
170
  struct CFlow {
 
171
#line 172 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
172
  friend class ::WinIfExists;
 
173
  friend class ::WinImportHandler;
 
174
  friend class ::WinMacros;
 
175
  friend class ::CMatchSyntax;
 
176
  friend class ::ExtGnu;
 
177
  friend class ::ExtAC;
 
178
  friend class ::ExtACTree;
 
179
  friend class ::WinAsm;
 
180
  friend class ::WinDeclSpecs;
 
181
  friend class ::WinMemberExplSpec;
 
182
  friend class ::WinTypeKeywords;
 
183
  friend class ::PragmaOnceUnitState;
 
184
  friend class ::PragmaOnce;
 
185
  friend class ::CCExprResolve;
 
186
  friend class ::CExprResolve;
 
187
 
 
188
#line 21 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
189
 
 
190
    static int &instance () {
 
191
      static int counter = 0;
 
192
      return counter;
 
193
    }
 
194
    CFlow () { instance ()++; }
 
195
    ~CFlow () { instance ()--; }
 
196
    static bool active () { return instance () > 0; }
 
197
  };
 
198
}
 
199
inline void * operator new (__SIZE_TYPE__, AC::AnyResultBuffer *p) { return p; }
 
200
inline void operator delete (void *, AC::AnyResultBuffer *) { } // for VC++
 
201
#endif // __ac_h_
 
202
 
 
203
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
204
 
 
205
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
206
/* Driver template for the LEMON parser generator.
 
207
** Copyright 1991-1995 by D. Richard Hipp.
 
208
**
 
209
** This library is free software; you can redistribute it and/or
 
210
** modify it under the terms of the GNU Library General Public
 
211
** License as published by the Free Software Foundation; either
 
212
** version 2 of the License, or (at your option) any later version.
 
213
** 
 
214
** This library is distributed in the hope that it will be useful,
 
215
** but WITHOUT ANY WARRANTY; without even the implied warranty of
 
216
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
217
** Library General Public License for more details.
 
218
** 
 
219
** You should have received a copy of the GNU Library General Public
 
220
** License along with this library; if not, write to the
 
221
** Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 
222
** Boston, MA  02111-1307, USA.
 
223
**
 
224
** Modified 1997 to make it suitable for use with makeheaders.
 
225
*/
 
226
/* First off, code is include which follows the "include" declaration
 
227
** in the input file. */
 
228
#include <stdio.h>
 
229
#line 53 "cpp/PreExprParser.lem"
 
230
 
 
231
#include <stdlib.h>
 
232
#include <string.h>
 
233
 
 
234
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/PreExpr.h"
 
235
// This file is part of PUMA.
 
236
// Copyright (C) 1999-2003  The PUMA developer team.
 
237
//                                                                
 
238
// This program is free software;  you can redistribute it and/or 
 
239
// modify it under the terms of the GNU General Public License as 
 
240
// published by the Free Software Foundation; either version 2 of 
 
241
// the License, or (at your option) any later version.            
 
242
//                                                                
 
243
// This program is distributed in the hope that it will be useful,
 
244
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
245
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
246
// GNU General Public License for more details.                   
 
247
//                                                                
 
248
// You should have received a copy of the GNU General Public      
 
249
// License along with this program; if not, write to the Free     
 
250
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
251
// MA  02111-1307  USA                                            
 
252
 
 
253
#ifndef __pre_expr__
 
254
#define __pre_expr__
 
255
 
 
256
// Node class for the preprocessor expression parser. 
 
257
 
 
258
 
 
259
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
 
260
// This file is part of PUMA.
 
261
// Copyright (C) 1999-2003  The PUMA developer team.
 
262
//                                                                
 
263
// This program is free software;  you can redistribute it and/or 
 
264
// modify it under the terms of the GNU General Public License as 
 
265
// published by the Free Software Foundation; either version 2 of 
 
266
// the License, or (at your option) any later version.            
 
267
//                                                                
 
268
// This program is distributed in the hope that it will be useful,
 
269
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
270
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
271
// GNU General Public License for more details.                   
 
272
//                                                                
 
273
// You should have received a copy of the GNU General Public      
 
274
// License along with this program; if not, write to the Free     
 
275
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
276
// MA  02111-1307  USA                                            
 
277
 
 
278
#ifndef __mapped_orange_recognizer_h__
 
279
#define __mapped_orange_recognizer_h__
 
280
 
 
281
// The token recognizer class, which uses scanner tables generated by the
 
282
// orange tool. Returned expressions mapped according to an orange
 
283
// generated mapping table
 
284
 
 
285
 
 
286
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
 
287
// This file is part of PUMA.
 
288
// Copyright (C) 1999-2003  The PUMA developer team.
 
289
//                                                                
 
290
// This program is free software;  you can redistribute it and/or 
 
291
// modify it under the terms of the GNU General Public License as 
 
292
// published by the Free Software Foundation; either version 2 of 
 
293
// the License, or (at your option) any later version.            
 
294
//                                                                
 
295
// This program is distributed in the hope that it will be useful,
 
296
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
297
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
298
// GNU General Public License for more details.                   
 
299
//                                                                
 
300
// You should have received a copy of the GNU General Public      
 
301
// License along with this program; if not, write to the Free     
 
302
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
303
// MA  02111-1307  USA                                            
 
304
 
 
305
#ifndef __recognizer_h__
 
306
#define __recognizer_h__
 
307
 
 
308
// The token recognizer class, which uses scanner tables generated by the
 
309
// orange tool.
 
310
 
 
311
 
 
312
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
313
// This file is part of PUMA.
 
314
// Copyright (C) 1999-2003  The PUMA developer team.
 
315
//                                                                
 
316
// This program is free software;  you can redistribute it and/or 
 
317
// modify it under the terms of the GNU General Public License as 
 
318
// published by the Free Software Foundation; either version 2 of 
 
319
// the License, or (at your option) any later version.            
 
320
//                                                                
 
321
// This program is distributed in the hope that it will be useful,
 
322
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
323
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
324
// GNU General Public License for more details.                   
 
325
//                                                                
 
326
// You should have received a copy of the GNU General Public      
 
327
// License along with this program; if not, write to the Free     
 
328
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
329
// MA  02111-1307  USA                                            
 
330
 
 
331
#ifndef __scan_buffer_h__
 
332
#define __scan_buffer_h__
 
333
 
 
334
namespace Puma {
 
335
 
 
336
 
 
337
 
 
338
#line 339 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
339
} // closed Puma
 
340
class WinIfExists;
 
341
class WinImportHandler;
 
342
class WinMacros;
 
343
class CMatchSyntax;
 
344
class ExtGnu;
 
345
class ExtAC;
 
346
class ExtACTree;
 
347
class WinAsm;
 
348
class WinDeclSpecs;
 
349
class WinMemberExplSpec;
 
350
class WinTypeKeywords;
 
351
class PragmaOnceUnitState;
 
352
class PragmaOnce;
 
353
class CCExprResolve;
 
354
class CExprResolve;
 
355
namespace Puma {
 
356
 
 
357
#line 25 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
358
class ScanBuffer {
 
359
#line 360 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
360
  friend class ::WinIfExists;
 
361
  friend class ::WinImportHandler;
 
362
  friend class ::WinMacros;
 
363
  friend class ::CMatchSyntax;
 
364
  friend class ::ExtGnu;
 
365
  friend class ::ExtAC;
 
366
  friend class ::ExtACTree;
 
367
  friend class ::WinAsm;
 
368
  friend class ::WinDeclSpecs;
 
369
  friend class ::WinMemberExplSpec;
 
370
  friend class ::WinTypeKeywords;
 
371
  friend class ::PragmaOnceUnitState;
 
372
  friend class ::PragmaOnce;
 
373
  friend class ::CCExprResolve;
 
374
  friend class ::CExprResolve;
 
375
 
 
376
#line 25 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
377
 
 
378
public:
 
379
  typedef enum { STATE_END, STATE_ERROR, STATE_OK } State;
 
380
  
 
381
  virtual ~ScanBuffer () {}
 
382
 
 
383
  virtual char next () = 0;
 
384
  virtual char *token () = 0;
 
385
  virtual int len () const = 0;
 
386
  virtual void reset () = 0;
 
387
  virtual void retry () = 0; 
 
388
  virtual void accept (int len) = 0;
 
389
  virtual void more (int len) = 0;
 
390
  virtual State state () const = 0;
 
391
};
 
392
 
 
393
 
 
394
} // namespace Puma
 
395
 
 
396
#endif /* __scan_buffer_h__ */
 
397
 
 
398
#line 27 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
 
399
namespace Puma {
 
400
 
 
401
 
 
402
#ifndef __TTGEN__
 
403
#  define __TTGEN__
 
404
 
 
405
#line 406 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
406
} // closed Puma
 
407
class WinIfExists;
 
408
class WinImportHandler;
 
409
class WinMacros;
 
410
class CMatchSyntax;
 
411
class ExtGnu;
 
412
class ExtAC;
 
413
class ExtACTree;
 
414
class WinAsm;
 
415
class WinDeclSpecs;
 
416
class WinMemberExplSpec;
 
417
class WinTypeKeywords;
 
418
class PragmaOnceUnitState;
 
419
class PragmaOnce;
 
420
class CCExprResolve;
 
421
class CExprResolve;
 
422
namespace Puma {
 
423
 
 
424
#line 32 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
 
425
typedef struct
 
426
 {
 
427
#line 428 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
428
  friend class ::WinIfExists;
 
429
  friend class ::WinImportHandler;
 
430
  friend class ::WinMacros;
 
431
  friend class ::CMatchSyntax;
 
432
  friend class ::ExtGnu;
 
433
  friend class ::ExtAC;
 
434
  friend class ::ExtACTree;
 
435
  friend class ::WinAsm;
 
436
  friend class ::WinDeclSpecs;
 
437
  friend class ::WinMemberExplSpec;
 
438
  friend class ::WinTypeKeywords;
 
439
  friend class ::PragmaOnceUnitState;
 
440
  friend class ::PragmaOnce;
 
441
  friend class ::CCExprResolve;
 
442
  friend class ::CExprResolve;
 
443
 
 
444
#line 33 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
 
445
 unsigned char Type;
 
446
   unsigned char LookAhead;
 
447
   int           Expression;
 
448
   int           Start;
 
449
 } States;                                                                   
 
450
#endif
 
451
 
 
452
 
 
453
// class declaration
 
454
 
 
455
 
 
456
#line 457 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
457
} // closed Puma
 
458
class WinIfExists;
 
459
class WinImportHandler;
 
460
class WinMacros;
 
461
class CMatchSyntax;
 
462
class ExtGnu;
 
463
class ExtAC;
 
464
class ExtACTree;
 
465
class WinAsm;
 
466
class WinDeclSpecs;
 
467
class WinMemberExplSpec;
 
468
class WinTypeKeywords;
 
469
class PragmaOnceUnitState;
 
470
class PragmaOnce;
 
471
class CCExprResolve;
 
472
class CExprResolve;
 
473
namespace Puma {
 
474
 
 
475
#line 43 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
 
476
template <typename TScanBuffer>
 
477
class OrangeRecognizer {
 
478
#line 479 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
479
  friend class ::WinIfExists;
 
480
  friend class ::WinImportHandler;
 
481
  friend class ::WinMacros;
 
482
  friend class ::CMatchSyntax;
 
483
  friend class ::ExtGnu;
 
484
  friend class ::ExtAC;
 
485
  friend class ::ExtACTree;
 
486
  friend class ::WinAsm;
 
487
  friend class ::WinDeclSpecs;
 
488
  friend class ::WinMemberExplSpec;
 
489
  friend class ::WinTypeKeywords;
 
490
  friend class ::PragmaOnceUnitState;
 
491
  friend class ::PragmaOnce;
 
492
  friend class ::CCExprResolve;
 
493
  friend class ::CExprResolve;
 
494
 
 
495
#line 44 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
 
496
 
 
497
  // local structures generated by Orange
 
498
 
 
499
  char *_map;
 
500
  int _start;
 
501
  States *_state;
 
502
  int *_next;
 
503
  int *_control;
 
504
  int _tab_size;
 
505
 
 
506
public:
 
507
  OrangeRecognizer (char *map, int start, States *state, int *next,
 
508
                    int *control, int tab_size) : 
 
509
    _map (map), _start (start), _state (state), _next (next),
 
510
    _control (control), _tab_size (tab_size)
 
511
   {}
 
512
 
 
513
  // try to recognize the current token in the character buffer
 
514
  // returns 1 on success, 0 on eof, -1 on unknown token
 
515
  int recognize (TScanBuffer *scan_buffer, int &token, int &len); 
 
516
};
 
517
 
 
518
template <typename TScanBuffer>
 
519
int OrangeRecognizer<TScanBuffer>::recognize (TScanBuffer *scan_buffer,
 
520
                                              int &token, int &len) {
 
521
  int  NextState;
 
522
  char Character;
 
523
  char CharClass;
 
524
  int  NextStatePos;
 
525
  int  State;
 
526
  int  LookAheadLen;
 
527
  int  AcceptLen;
 
528
  int  AcceptState;
 
529
  ScanBuffer::State buffer_state = ScanBuffer::STATE_OK;
 
530
 
 
531
  State = _start;
 
532
  AcceptState = -1;
 
533
  LookAheadLen = 0;
 
534
  AcceptLen = 0;
 
535
 
 
536
  do { 
 
537
    Character = scan_buffer->next ();
 
538
 
 
539
    CharClass = _map[(unsigned char)Character];
 
540
    if (CharClass == -1)
 
541
      break;
 
542
 
 
543
    NextStatePos = _state[State].Start + CharClass;
 
544
    if (NextStatePos < 0 || NextStatePos >= _tab_size ||
 
545
        _control[NextStatePos] != State)
 
546
      break;
 
547
 
 
548
    if ((NextState = _next[NextStatePos]) == -1)
 
549
      break;
 
550
 
 
551
    State = NextState;
 
552
 
 
553
    if (_state[State].Type > 0) {
 
554
      AcceptState = State; // remember this (terminal) state
 
555
      AcceptLen = scan_buffer->len ();
 
556
    }
 
557
 
 
558
    if (_state[State].LookAhead)
 
559
      LookAheadLen = scan_buffer->len ();
 
560
 
 
561
    buffer_state = scan_buffer->state ();
 
562
  } while (NextState != -1 && buffer_state == ScanBuffer::STATE_OK);
 
563
 
 
564
  if (buffer_state == ScanBuffer::STATE_ERROR)
 
565
    return -1;
 
566
 
 
567
  if (AcceptState == -1)
 
568
    return 0;
 
569
 
 
570
  len   = (_state[AcceptState].Type == 2) ? LookAheadLen : AcceptLen;
 
571
  token = _state[AcceptState].Expression;
 
572
 
 
573
  return 1;
 
574
}
 
575
 
 
576
} // namespace Puma
 
577
 
 
578
#endif /* __orange_recognizer_h__ */
 
579
 
 
580
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
 
581
namespace Puma {
 
582
 
 
583
 
 
584
// class declaration
 
585
 
 
586
 
 
587
#line 588 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
588
} // closed Puma
 
589
class WinIfExists;
 
590
class WinImportHandler;
 
591
class WinMacros;
 
592
class CMatchSyntax;
 
593
class ExtGnu;
 
594
class ExtAC;
 
595
class ExtACTree;
 
596
class WinAsm;
 
597
class WinDeclSpecs;
 
598
class WinMemberExplSpec;
 
599
class WinTypeKeywords;
 
600
class PragmaOnceUnitState;
 
601
class PragmaOnce;
 
602
class CCExprResolve;
 
603
class CExprResolve;
 
604
namespace Puma {
 
605
 
 
606
#line 33 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
 
607
template <class ScanBuffer>
 
608
class MappedOrangeRecognizer : public OrangeRecognizer<ScanBuffer> {
 
609
#line 610 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
610
  friend class ::WinIfExists;
 
611
  friend class ::WinImportHandler;
 
612
  friend class ::WinMacros;
 
613
  friend class ::CMatchSyntax;
 
614
  friend class ::ExtGnu;
 
615
  friend class ::ExtAC;
 
616
  friend class ::ExtACTree;
 
617
  friend class ::WinAsm;
 
618
  friend class ::WinDeclSpecs;
 
619
  friend class ::WinMemberExplSpec;
 
620
  friend class ::WinTypeKeywords;
 
621
  friend class ::PragmaOnceUnitState;
 
622
  friend class ::PragmaOnce;
 
623
  friend class ::CCExprResolve;
 
624
  friend class ::CExprResolve;
 
625
 
 
626
#line 34 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
 
627
 
 
628
  int *_expr_map;
 
629
 
 
630
public:
 
631
  MappedOrangeRecognizer (char *map, int *expr_map, int start, 
 
632
                          States *state, int *next,
 
633
                          int *control, int tab_size) : 
 
634
    OrangeRecognizer<ScanBuffer> (map, start, state, next, control, tab_size),
 
635
    _expr_map (expr_map) 
 
636
   {}
 
637
 
 
638
  // try to recognize the current token in the character buffer
 
639
  // returns 1 on success, 0 on eof, -1 on unknown token
 
640
  int recognize (ScanBuffer *scan_buffer, int &token, int &len) {
 
641
    int result;
 
642
 
 
643
    if ((result = OrangeRecognizer<ScanBuffer>::recognize (scan_buffer, token, len)) == 1) {
 
644
      token = _expr_map[token];
 
645
    }
 
646
    return result;
 
647
  }
 
648
};
 
649
 
 
650
 
 
651
} // namespace Puma
 
652
 
 
653
#endif // __mapped_orange_recognizer_h__
 
654
 
 
655
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Location.h"
 
656
// This file is part of PUMA.
 
657
// Copyright (C) 1999-2003  The PUMA developer team.
 
658
//                                                                
 
659
// This program is free software;  you can redistribute it and/or 
 
660
// modify it under the terms of the GNU General Public License as 
 
661
// published by the Free Software Foundation; either version 2 of 
 
662
// the License, or (at your option) any later version.            
 
663
//                                                                
 
664
// This program is distributed in the hope that it will be useful,
 
665
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
666
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
667
// GNU General Public License for more details.                   
 
668
//                                                                
 
669
// You should have received a copy of the GNU General Public      
 
670
// License along with this program; if not, write to the Free     
 
671
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
672
// MA  02111-1307  USA                                            
 
673
 
 
674
#ifndef __location_h__
 
675
#define __location_h__
 
676
 
 
677
 
 
678
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
679
// This file is part of PUMA.
 
680
// Copyright (C) 1999-2003  The PUMA developer team.
 
681
//                                                                
 
682
// This program is free software;  you can redistribute it and/or 
 
683
// modify it under the terms of the GNU General Public License as 
 
684
// published by the Free Software Foundation; either version 2 of 
 
685
// the License, or (at your option) any later version.            
 
686
//                                                                
 
687
// This program is distributed in the hope that it will be useful,
 
688
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
689
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
690
// GNU General Public License for more details.                   
 
691
//                                                                
 
692
// You should have received a copy of the GNU General Public      
 
693
// License along with this program; if not, write to the Free     
 
694
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
695
// MA  02111-1307  USA                                            
 
696
 
 
697
#ifndef __smart_ptr_h__
 
698
#define __smart_ptr_h__
 
699
 
 
700
 
 
701
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
702
// This file is part of PUMA.
 
703
// Copyright (C) 1999-2003  The PUMA developer team.
 
704
//                                                                
 
705
// This program is free software;  you can redistribute it and/or 
 
706
// modify it under the terms of the GNU General Public License as 
 
707
// published by the Free Software Foundation; either version 2 of 
 
708
// the License, or (at your option) any later version.            
 
709
//                                                                
 
710
// This program is distributed in the hope that it will be useful,
 
711
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
712
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
713
// GNU General Public License for more details.                   
 
714
//                                                                
 
715
// You should have received a copy of the GNU General Public      
 
716
// License along with this program; if not, write to the Free     
 
717
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
718
// MA  02111-1307  USA                                            
 
719
 
 
720
#ifndef __ref_cnt_h__
 
721
#define __ref_cnt_h__
 
722
 
 
723
namespace Puma {
 
724
 
 
725
 
 
726
 
 
727
#line 728 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
728
} // closed Puma
 
729
class WinIfExists;
 
730
class WinImportHandler;
 
731
class WinMacros;
 
732
class CMatchSyntax;
 
733
class ExtGnu;
 
734
class ExtAC;
 
735
class ExtACTree;
 
736
class WinAsm;
 
737
class WinDeclSpecs;
 
738
class WinMemberExplSpec;
 
739
class WinTypeKeywords;
 
740
class PragmaOnceUnitState;
 
741
class PragmaOnce;
 
742
class CCExprResolve;
 
743
class CExprResolve;
 
744
namespace Puma {
 
745
 
 
746
#line 25 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
747
class RefCnt {
 
748
#line 749 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
749
  friend class ::WinIfExists;
 
750
  friend class ::WinImportHandler;
 
751
  friend class ::WinMacros;
 
752
  friend class ::CMatchSyntax;
 
753
  friend class ::ExtGnu;
 
754
  friend class ::ExtAC;
 
755
  friend class ::ExtACTree;
 
756
  friend class ::WinAsm;
 
757
  friend class ::WinDeclSpecs;
 
758
  friend class ::WinMemberExplSpec;
 
759
  friend class ::WinTypeKeywords;
 
760
  friend class ::PragmaOnceUnitState;
 
761
  friend class ::PragmaOnce;
 
762
  friend class ::CCExprResolve;
 
763
  friend class ::CExprResolve;
 
764
 
 
765
#line 25 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
766
 
 
767
  int _counter;
 
768
 
 
769
public:
 
770
  RefCnt () : _counter (0) {}
 
771
  virtual ~RefCnt () {}
 
772
  
 
773
  void ref () { _counter++; }
 
774
  void deref () { _counter--; }
 
775
  int counter () { return _counter; }
 
776
};
 
777
 
 
778
 
 
779
} // namespace Puma
 
780
 
 
781
#endif /* __ref_cnt_h__ */
 
782
 
 
783
#line 24 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
784
namespace Puma {
 
785
 
 
786
 
 
787
 
 
788
#line 789 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
789
} // closed Puma
 
790
class WinIfExists;
 
791
class WinImportHandler;
 
792
class WinMacros;
 
793
class CMatchSyntax;
 
794
class ExtGnu;
 
795
class ExtAC;
 
796
class ExtACTree;
 
797
class WinAsm;
 
798
class WinDeclSpecs;
 
799
class WinMemberExplSpec;
 
800
class WinTypeKeywords;
 
801
class PragmaOnceUnitState;
 
802
class PragmaOnce;
 
803
class CCExprResolve;
 
804
class CExprResolve;
 
805
namespace Puma {
 
806
 
 
807
#line 27 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
808
class SmartPtr {
 
809
#line 810 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
810
  friend class ::WinIfExists;
 
811
  friend class ::WinImportHandler;
 
812
  friend class ::WinMacros;
 
813
  friend class ::CMatchSyntax;
 
814
  friend class ::ExtGnu;
 
815
  friend class ::ExtAC;
 
816
  friend class ::ExtACTree;
 
817
  friend class ::WinAsm;
 
818
  friend class ::WinDeclSpecs;
 
819
  friend class ::WinMemberExplSpec;
 
820
  friend class ::WinTypeKeywords;
 
821
  friend class ::PragmaOnceUnitState;
 
822
  friend class ::PragmaOnce;
 
823
  friend class ::CCExprResolve;
 
824
  friend class ::CExprResolve;
 
825
 
 
826
#line 27 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
827
 
 
828
  RefCnt *_data;
 
829
 
 
830
public:
 
831
  SmartPtr () : _data ((RefCnt*)0) {}
 
832
  ~SmartPtr () { clear (); }
 
833
  SmartPtr (const SmartPtr &copy);
 
834
  SmartPtr (RefCnt *rc) : _data (rc) {}
 
835
  SmartPtr &operator = (const SmartPtr &copy);
 
836
 
 
837
  void data (RefCnt *d);
 
838
  void clear ();
 
839
  RefCnt *data () const { return _data; }
 
840
  bool is_defined () const { return _data != (RefCnt*)0; }
 
841
};
 
842
 
 
843
 
 
844
} // namespace Puma
 
845
 
 
846
#endif /* __smart_ptr_h__ */
 
847
 
 
848
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Printable.h"
 
849
// This file is part of PUMA.
 
850
// Copyright (C) 1999-2003  The PUMA developer team.
 
851
//                                                                
 
852
// This program is free software;  you can redistribute it and/or 
 
853
// modify it under the terms of the GNU General Public License as 
 
854
// published by the Free Software Foundation; either version 2 of 
 
855
// the License, or (at your option) any later version.            
 
856
//                                                                
 
857
// This program is distributed in the hope that it will be useful,
 
858
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
859
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
860
// GNU General Public License for more details.                   
 
861
//                                                                
 
862
// You should have received a copy of the GNU General Public      
 
863
// License along with this program; if not, write to the Free     
 
864
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
865
// MA  02111-1307  USA                                            
 
866
 
 
867
#ifndef __printable_h__
 
868
#define __printable_h__
 
869
 
 
870
#include <iostream>
 
871
using namespace std;
 
872
 
 
873
namespace Puma {
 
874
 
 
875
 
 
876
 
 
877
#line 878 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
878
} // closed Puma
 
879
class WinIfExists;
 
880
class WinImportHandler;
 
881
class WinMacros;
 
882
class CMatchSyntax;
 
883
class ExtGnu;
 
884
class ExtAC;
 
885
class ExtACTree;
 
886
class WinAsm;
 
887
class WinDeclSpecs;
 
888
class WinMemberExplSpec;
 
889
class WinTypeKeywords;
 
890
class PragmaOnceUnitState;
 
891
class PragmaOnce;
 
892
class CCExprResolve;
 
893
class CExprResolve;
 
894
namespace Puma {
 
895
 
 
896
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Printable.h"
 
897
class Printable {
 
898
#line 899 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
899
  friend class ::WinIfExists;
 
900
  friend class ::WinImportHandler;
 
901
  friend class ::WinMacros;
 
902
  friend class ::CMatchSyntax;
 
903
  friend class ::ExtGnu;
 
904
  friend class ::ExtAC;
 
905
  friend class ::ExtACTree;
 
906
  friend class ::WinAsm;
 
907
  friend class ::WinDeclSpecs;
 
908
  friend class ::WinMemberExplSpec;
 
909
  friend class ::WinTypeKeywords;
 
910
  friend class ::PragmaOnceUnitState;
 
911
  friend class ::PragmaOnce;
 
912
  friend class ::CCExprResolve;
 
913
  friend class ::CExprResolve;
 
914
 
 
915
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Printable.h"
 
916
 
 
917
public:
 
918
  virtual ~Printable () {}
 
919
  virtual void print (ostream &os) const = 0;
 
920
};
 
921
 
 
922
 
 
923
inline ostream &operator << (ostream &os, const Printable &object) {
 
924
  object.print (os);
 
925
  return os;
 
926
}
 
927
 
 
928
 
 
929
} // namespace Puma
 
930
 
 
931
#endif /* __printable_h__ */
 
932
 
 
933
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/LocationInfo.h"
 
934
// This file is part of PUMA.
 
935
// Copyright (C) 1999-2003  The PUMA developer team.
 
936
//                                                                
 
937
// This program is free software;  you can redistribute it and/or 
 
938
// modify it under the terms of the GNU General Public License as 
 
939
// published by the Free Software Foundation; either version 2 of 
 
940
// the License, or (at your option) any later version.            
 
941
//                                                                
 
942
// This program is distributed in the hope that it will be useful,
 
943
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
944
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
945
// GNU General Public License for more details.                   
 
946
//                                                                
 
947
// You should have received a copy of the GNU General Public      
 
948
// License along with this program; if not, write to the Free     
 
949
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
950
// MA  02111-1307  USA                                            
 
951
 
 
952
#ifndef __location_info_h__
 
953
#define __location_info_h__
 
954
 
 
955
 
 
956
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Filename.h"
 
957
// This file is part of PUMA.
 
958
// Copyright (C) 1999-2003  The PUMA developer team.
 
959
//                                                                
 
960
// This program is free software;  you can redistribute it and/or 
 
961
// modify it under the terms of the GNU General Public License as 
 
962
// published by the Free Software Foundation; either version 2 of 
 
963
// the License, or (at your option) any later version.            
 
964
//                                                                
 
965
// This program is distributed in the hope that it will be useful,
 
966
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
967
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
968
// GNU General Public License for more details.                   
 
969
//                                                                
 
970
// You should have received a copy of the GNU General Public      
 
971
// License along with this program; if not, write to the Free     
 
972
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
973
// MA  02111-1307  USA                                            
 
974
 
 
975
#ifndef __filename_h__
 
976
#define __filename_h__
 
977
 
 
978
 
 
979
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
980
// This file is part of PUMA.
 
981
// Copyright (C) 1999-2003  The PUMA developer team.
 
982
//                                                                
 
983
// This program is free software;  you can redistribute it and/or 
 
984
// modify it under the terms of the GNU General Public License as 
 
985
// published by the Free Software Foundation; either version 2 of 
 
986
// the License, or (at your option) any later version.            
 
987
//                                                                
 
988
// This program is distributed in the hope that it will be useful,
 
989
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
990
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
991
// GNU General Public License for more details.                   
 
992
//                                                                
 
993
// You should have received a copy of the GNU General Public      
 
994
// License along with this program; if not, write to the Free     
 
995
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
996
// MA  02111-1307  USA                                            
 
997
 
 
998
#ifndef __filename_info_h__
 
999
#define __filename_info_h__
 
1000
 
 
1001
 
 
1002
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/DString.h"
 
1003
// This file is part of PUMA.
 
1004
// Copyright (C) 1999-2003  The PUMA developer team.
 
1005
//                                                                
 
1006
// This program is free software;  you can redistribute it and/or 
 
1007
// modify it under the terms of the GNU General Public License as 
 
1008
// published by the Free Software Foundation; either version 2 of 
 
1009
// the License, or (at your option) any later version.            
 
1010
//                                                                
 
1011
// This program is distributed in the hope that it will be useful,
 
1012
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1013
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1014
// GNU General Public License for more details.                   
 
1015
//                                                                
 
1016
// You should have received a copy of the GNU General Public      
 
1017
// License along with this program; if not, write to the Free     
 
1018
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1019
// MA  02111-1307  USA                                            
 
1020
 
 
1021
#ifndef __DString_h__
 
1022
#define __DString_h__
 
1023
 
 
1024
 
 
1025
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1026
// This file is part of PUMA.
 
1027
// Copyright (C) 1999-2003  The PUMA developer team.
 
1028
//                                                                
 
1029
// This program is free software;  you can redistribute it and/or 
 
1030
// modify it under the terms of the GNU General Public License as 
 
1031
// published by the Free Software Foundation; either version 2 of 
 
1032
// the License, or (at your option) any later version.            
 
1033
//                                                                
 
1034
// This program is distributed in the hope that it will be useful,
 
1035
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1036
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1037
// GNU General Public License for more details.                   
 
1038
//                                                                
 
1039
// You should have received a copy of the GNU General Public      
 
1040
// License along with this program; if not, write to the Free     
 
1041
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1042
// MA  02111-1307  USA                                            
 
1043
 
 
1044
#ifndef __StrHashTable_h__
 
1045
#define __StrHashTable_h__
 
1046
 
 
1047
 
 
1048
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1049
// This file is part of PUMA.
 
1050
// Copyright (C) 1999-2003  The PUMA developer team.
 
1051
//                                                                
 
1052
// This program is free software;  you can redistribute it and/or 
 
1053
// modify it under the terms of the GNU General Public License as 
 
1054
// published by the Free Software Foundation; either version 2 of 
 
1055
// the License, or (at your option) any later version.            
 
1056
//                                                                
 
1057
// This program is distributed in the hope that it will be useful,
 
1058
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1059
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1060
// GNU General Public License for more details.                   
 
1061
//                                                                
 
1062
// You should have received a copy of the GNU General Public      
 
1063
// License along with this program; if not, write to the Free     
 
1064
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1065
// MA  02111-1307  USA                                            
 
1066
 
 
1067
#ifndef __StrHashKey_h__
 
1068
#define __StrHashKey_h__
 
1069
 
 
1070
 
 
1071
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
1072
// This file is part of PUMA.
 
1073
// Copyright (C) 1999-2003  The PUMA developer team.
 
1074
//                                                                
 
1075
// This program is free software;  you can redistribute it and/or 
 
1076
// modify it under the terms of the GNU General Public License as 
 
1077
// published by the Free Software Foundation; either version 2 of 
 
1078
// the License, or (at your option) any later version.            
 
1079
//                                                                
 
1080
// This program is distributed in the hope that it will be useful,
 
1081
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1082
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1083
// GNU General Public License for more details.                   
 
1084
//                                                                
 
1085
// You should have received a copy of the GNU General Public      
 
1086
// License along with this program; if not, write to the Free     
 
1087
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1088
// MA  02111-1307  USA                                            
 
1089
 
 
1090
#ifndef __str_col__
 
1091
#define __str_col__
 
1092
 
 
1093
// Collection of functions handling strings.
 
1094
 
 
1095
namespace Puma {
 
1096
 
 
1097
 
 
1098
class Unit;
 
1099
 
 
1100
 
 
1101
#line 1102 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1102
} // closed Puma
 
1103
class WinIfExists;
 
1104
class WinImportHandler;
 
1105
class WinMacros;
 
1106
class CMatchSyntax;
 
1107
class ExtGnu;
 
1108
class ExtAC;
 
1109
class ExtACTree;
 
1110
class WinAsm;
 
1111
class WinDeclSpecs;
 
1112
class WinMemberExplSpec;
 
1113
class WinTypeKeywords;
 
1114
class PragmaOnceUnitState;
 
1115
class PragmaOnce;
 
1116
class CCExprResolve;
 
1117
class CExprResolve;
 
1118
namespace Puma {
 
1119
 
 
1120
#line 29 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
1121
class StrCol {
 
1122
#line 1123 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1123
  friend class ::WinIfExists;
 
1124
  friend class ::WinImportHandler;
 
1125
  friend class ::WinMacros;
 
1126
  friend class ::CMatchSyntax;
 
1127
  friend class ::ExtGnu;
 
1128
  friend class ::ExtAC;
 
1129
  friend class ::ExtACTree;
 
1130
  friend class ::WinAsm;
 
1131
  friend class ::WinDeclSpecs;
 
1132
  friend class ::WinMemberExplSpec;
 
1133
  friend class ::WinTypeKeywords;
 
1134
  friend class ::PragmaOnceUnitState;
 
1135
  friend class ::PragmaOnce;
 
1136
  friend class ::CCExprResolve;
 
1137
  friend class ::CExprResolve;
 
1138
 
 
1139
#line 29 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
1140
 
 
1141
protected:
 
1142
  StrCol () {}
 
1143
        
 
1144
public:
 
1145
  // Return true if c is a white space character.
 
1146
  static bool isSpace (const char c);
 
1147
 
 
1148
  // Return true if the string consists only of spaces.
 
1149
  static bool onlySpaces (const char *);
 
1150
 
 
1151
  // Return true if the two strings differ not only in spaces.
 
1152
  static bool effectivelyDifferent (const char *, const char *);
 
1153
 
 
1154
  // Build a string from a unit.
 
1155
  static char *buildString (Unit *);
 
1156
        
 
1157
  // Duplicate a string
 
1158
  static char *dup (const char *);
 
1159
  static char *dup (const char *, int);
 
1160
};
 
1161
 
 
1162
 
 
1163
} // namespace Puma
 
1164
 
 
1165
#endif /* __str_col__ */
 
1166
 
 
1167
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1168
// This file is part of PUMA.
 
1169
// Copyright (C) 1999-2003  The PUMA developer team.
 
1170
//                                                                
 
1171
// This program is free software;  you can redistribute it and/or 
 
1172
// modify it under the terms of the GNU General Public License as 
 
1173
// published by the Free Software Foundation; either version 2 of 
 
1174
// the License, or (at your option) any later version.            
 
1175
//                                                                
 
1176
// This program is distributed in the hope that it will be useful,
 
1177
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1178
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1179
// GNU General Public License for more details.                   
 
1180
//                                                                
 
1181
// You should have received a copy of the GNU General Public      
 
1182
// License along with this program; if not, write to the Free     
 
1183
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1184
// MA  02111-1307  USA                                            
 
1185
 
 
1186
#ifndef __Chain_h__
 
1187
#define __Chain_h__
 
1188
 
 
1189
//
 
1190
// implements a simple chain
 
1191
// 
 
1192
 
 
1193
#ifndef __puma
 
1194
#include <iostream>
 
1195
using namespace std;
 
1196
#endif 
 
1197
 
 
1198
namespace Puma {
 
1199
 
 
1200
 
 
1201
 
 
1202
#line 1203 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1203
} // closed Puma
 
1204
class WinIfExists;
 
1205
class WinImportHandler;
 
1206
class WinMacros;
 
1207
class CMatchSyntax;
 
1208
class ExtGnu;
 
1209
class ExtAC;
 
1210
class ExtACTree;
 
1211
class WinAsm;
 
1212
class WinDeclSpecs;
 
1213
class WinMemberExplSpec;
 
1214
class WinTypeKeywords;
 
1215
class PragmaOnceUnitState;
 
1216
class PragmaOnce;
 
1217
class CCExprResolve;
 
1218
class CExprResolve;
 
1219
namespace Puma {
 
1220
 
 
1221
#line 34 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1222
class Chain {
 
1223
#line 1224 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1224
  friend class ::WinIfExists;
 
1225
  friend class ::WinImportHandler;
 
1226
  friend class ::WinMacros;
 
1227
  friend class ::CMatchSyntax;
 
1228
  friend class ::ExtGnu;
 
1229
  friend class ::ExtAC;
 
1230
  friend class ::ExtACTree;
 
1231
  friend class ::WinAsm;
 
1232
  friend class ::WinDeclSpecs;
 
1233
  friend class ::WinMemberExplSpec;
 
1234
  friend class ::WinTypeKeywords;
 
1235
  friend class ::PragmaOnceUnitState;
 
1236
  friend class ::PragmaOnce;
 
1237
  friend class ::CCExprResolve;
 
1238
  friend class ::CExprResolve;
 
1239
 
 
1240
#line 34 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1241
 
 
1242
  Chain *next;
 
1243
 
 
1244
public:
 
1245
  Chain () { next = 0; }
 
1246
   
 
1247
  void select (Chain *c) { next = c; }
 
1248
  Chain *select () const { return next; }
 
1249
 
 
1250
  Chain *unlink () {
 
1251
    Chain *res = next;
 
1252
    if (next) {
 
1253
      next = next->select ();
 
1254
    }
 
1255
    return res;
 
1256
  }
 
1257
 
 
1258
  void insert (Chain *c) {
 
1259
    c->select (next);
 
1260
    next = c;
 
1261
  }
 
1262
};
 
1263
 
 
1264
#ifndef __puma
 
1265
 
 
1266
 
 
1267
//
 
1268
// Chain with useage/max counter
 
1269
// 
 
1270
 
 
1271
class ChainCnt : public Chain {
 
1272
  const char* name;
 
1273
 
 
1274
public:
 
1275
  long long max, use;
 
1276
  
 
1277
  ChainCnt (const char *n) : name (n) { max = use = 0; }
 
1278
  ~ChainCnt () {
 
1279
    cout << "max list " << name << ": " << max << endl;
 
1280
  }
 
1281
 
 
1282
  Chain *unlink () {
 
1283
    Chain *c = Chain::unlink ();
 
1284
    if (c) 
 
1285
      use--;
 
1286
    return c;
 
1287
  }
 
1288
  
 
1289
  void insert (Chain *c) {
 
1290
    use++;
 
1291
    if(use > max) 
 
1292
      max = use;
 
1293
    Chain::insert (c);
 
1294
  }
 
1295
};
 
1296
 
 
1297
#endif /* __puma */
 
1298
 
 
1299
 
 
1300
} // namespace Puma
 
1301
 
 
1302
#endif /* __Chain_h__ */
 
1303
 
 
1304
#line 25 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1305
namespace Puma {
 
1306
 
 
1307
 
 
1308
 
 
1309
#line 1310 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1310
} // closed Puma
 
1311
class WinIfExists;
 
1312
class WinImportHandler;
 
1313
class WinMacros;
 
1314
class CMatchSyntax;
 
1315
class ExtGnu;
 
1316
class ExtAC;
 
1317
class ExtACTree;
 
1318
class WinAsm;
 
1319
class WinDeclSpecs;
 
1320
class WinMemberExplSpec;
 
1321
class WinTypeKeywords;
 
1322
class PragmaOnceUnitState;
 
1323
class PragmaOnce;
 
1324
class CCExprResolve;
 
1325
class CExprResolve;
 
1326
namespace Puma {
 
1327
 
 
1328
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1329
class StrHashKey : public Chain {
 
1330
#line 1331 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1331
  friend class ::WinIfExists;
 
1332
  friend class ::WinImportHandler;
 
1333
  friend class ::WinMacros;
 
1334
  friend class ::CMatchSyntax;
 
1335
  friend class ::ExtGnu;
 
1336
  friend class ::ExtAC;
 
1337
  friend class ::ExtACTree;
 
1338
  friend class ::WinAsm;
 
1339
  friend class ::WinDeclSpecs;
 
1340
  friend class ::WinMemberExplSpec;
 
1341
  friend class ::WinTypeKeywords;
 
1342
  friend class ::PragmaOnceUnitState;
 
1343
  friend class ::PragmaOnce;
 
1344
  friend class ::CCExprResolve;
 
1345
  friend class ::CExprResolve;
 
1346
 
 
1347
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1348
 
 
1349
  unsigned int m_Magic;
 
1350
  unsigned int m_Len;
 
1351
  const char  *m_Str;
 
1352
 
 
1353
  StrHashKey () : m_Len (0), m_Str (0) {}
 
1354
 
 
1355
public:
 
1356
  StrHashKey (int m, const char *s, int l) : 
 
1357
    m_Magic (m), m_Len (l), m_Str (StrCol::dup (s, l)) {}
 
1358
 
 
1359
  unsigned int getMagic () const { return m_Magic; }
 
1360
  unsigned int length () const { return m_Len; }
 
1361
  const char  *c_str () const { return m_Str; }
 
1362
};
 
1363
 
 
1364
 
 
1365
} // namespace Puma
 
1366
 
 
1367
#endif /* __StrHashKey_h__ */
 
1368
 
 
1369
#line 23 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1370
#include <assert.h>
 
1371
 
 
1372
namespace Puma {
 
1373
 
 
1374
 
 
1375
 
 
1376
#line 1377 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1377
} // closed Puma
 
1378
class WinIfExists;
 
1379
class WinImportHandler;
 
1380
class WinMacros;
 
1381
class CMatchSyntax;
 
1382
class ExtGnu;
 
1383
class ExtAC;
 
1384
class ExtACTree;
 
1385
class WinAsm;
 
1386
class WinDeclSpecs;
 
1387
class WinMemberExplSpec;
 
1388
class WinTypeKeywords;
 
1389
class PragmaOnceUnitState;
 
1390
class PragmaOnce;
 
1391
class CCExprResolve;
 
1392
class CExprResolve;
 
1393
namespace Puma {
 
1394
 
 
1395
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1396
class StrHashTable {
 
1397
#line 1398 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1398
  friend class ::WinIfExists;
 
1399
  friend class ::WinImportHandler;
 
1400
  friend class ::WinMacros;
 
1401
  friend class ::CMatchSyntax;
 
1402
  friend class ::ExtGnu;
 
1403
  friend class ::ExtAC;
 
1404
  friend class ::ExtACTree;
 
1405
  friend class ::WinAsm;
 
1406
  friend class ::WinDeclSpecs;
 
1407
  friend class ::WinMemberExplSpec;
 
1408
  friend class ::WinTypeKeywords;
 
1409
  friend class ::PragmaOnceUnitState;
 
1410
  friend class ::PragmaOnce;
 
1411
  friend class ::CCExprResolve;
 
1412
  friend class ::CExprResolve;
 
1413
 
 
1414
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1415
 
 
1416
  StrHashKey *_emptyKey;
 
1417
 
 
1418
public:
 
1419
  StrHashTable () {
 
1420
    _emptyKey = insert ("");
 
1421
    assert (_emptyKey);
 
1422
  }
 
1423
 
 
1424
  StrHashKey *empty () const { assert (_emptyKey); return _emptyKey; }
 
1425
  StrHashKey *insert (const char *);
 
1426
  void remove (StrHashKey *);
 
1427
 
 
1428
  enum { STRHASHTABLE_SIZE=0xffff };
 
1429
  
 
1430
private:
 
1431
  Chain m_Table[STRHASHTABLE_SIZE];
 
1432
 
 
1433
  StrHashKey *find (unsigned int, const char *, unsigned int);
 
1434
  unsigned int hash (const char *, unsigned int);
 
1435
};
 
1436
 
 
1437
 
 
1438
} // namespace Puma
 
1439
 
 
1440
#endif /* __StrHashTable_h__ */
 
1441
 
 
1442
#line 23 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/DString.h"
 
1443
#include <assert.h>
 
1444
 
 
1445
namespace Puma {
 
1446
 
 
1447
 
 
1448
extern StrHashTable ___str_dict;
 
1449
 
 
1450
 
 
1451
#line 1452 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1452
} // closed Puma
 
1453
class WinIfExists;
 
1454
class WinImportHandler;
 
1455
class WinMacros;
 
1456
class CMatchSyntax;
 
1457
class ExtGnu;
 
1458
class ExtAC;
 
1459
class ExtACTree;
 
1460
class WinAsm;
 
1461
class WinDeclSpecs;
 
1462
class WinMemberExplSpec;
 
1463
class WinTypeKeywords;
 
1464
class PragmaOnceUnitState;
 
1465
class PragmaOnce;
 
1466
class CCExprResolve;
 
1467
class CExprResolve;
 
1468
namespace Puma {
 
1469
 
 
1470
#line 30 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/DString.h"
 
1471
class DString {
 
1472
#line 1473 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1473
  friend class ::WinIfExists;
 
1474
  friend class ::WinImportHandler;
 
1475
  friend class ::WinMacros;
 
1476
  friend class ::CMatchSyntax;
 
1477
  friend class ::ExtGnu;
 
1478
  friend class ::ExtAC;
 
1479
  friend class ::ExtACTree;
 
1480
  friend class ::WinAsm;
 
1481
  friend class ::WinDeclSpecs;
 
1482
  friend class ::WinMemberExplSpec;
 
1483
  friend class ::WinTypeKeywords;
 
1484
  friend class ::PragmaOnceUnitState;
 
1485
  friend class ::PragmaOnce;
 
1486
  friend class ::CCExprResolve;
 
1487
  friend class ::CExprResolve;
 
1488
 
 
1489
#line 30 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/DString.h"
 
1490
 
 
1491
  StrHashKey *m_Key;
 
1492
 
 
1493
public:
 
1494
  DString () {
 
1495
    m_Key = ___str_dict.empty ();
 
1496
    assert (m_Key);
 
1497
  }
 
1498
  DString (const char *s) {
 
1499
    if(s == 0) {
 
1500
      m_Key = ___str_dict.empty ();
 
1501
    } else {
 
1502
      m_Key = ___str_dict.insert (s);
 
1503
    }
 
1504
    assert (m_Key);
 
1505
  }
 
1506
  DString (const DString &s) : m_Key (s.m_Key) {
 
1507
    assert (s.m_Key);
 
1508
  }
 
1509
  
 
1510
  DString &operator = (const DString &s) {
 
1511
    assert (s.m_Key);
 
1512
    m_Key = s.m_Key;
 
1513
    return *this;
 
1514
  }
 
1515
  
 
1516
  DString &operator = (const char *s) {
 
1517
    if(s == 0) {
 
1518
      m_Key = ___str_dict.empty ();
 
1519
    } else {
 
1520
      m_Key = ___str_dict.insert (s);
 
1521
    }
 
1522
    assert (m_Key);
 
1523
    return *this;
 
1524
  }
 
1525
 
 
1526
  bool operator == (const DString &s) const { 
 
1527
    assert (m_Key && s.m_Key);
 
1528
    return m_Key == s.m_Key; 
 
1529
  }
 
1530
  bool operator != (const DString &s) const { 
 
1531
    assert (m_Key && s.m_Key);
 
1532
    return m_Key != s.m_Key; 
 
1533
  }
 
1534
 
 
1535
  const char *c_str() const { 
 
1536
    assert (m_Key);
 
1537
    return m_Key->c_str (); 
 
1538
  }
 
1539
  unsigned int length () const { 
 
1540
    assert (m_Key);
 
1541
    return m_Key->length (); 
 
1542
  }
 
1543
  bool empty () const {
 
1544
    assert (m_Key);
 
1545
    return m_Key->length () == 0;
 
1546
  }
 
1547
  unsigned int magic () const { 
 
1548
    assert (m_Key);
 
1549
    return m_Key->getMagic (); 
 
1550
  }
 
1551
 
 
1552
  operator const char *() const {
 
1553
    assert (m_Key);
 
1554
    return c_str ();
 
1555
  }
 
1556
};
 
1557
 
 
1558
 
 
1559
} // namespace Puma
 
1560
 
 
1561
#endif /* __DString_h__ */
 
1562
 
 
1563
#line 25 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
1564
namespace Puma {
 
1565
 
 
1566
 
 
1567
 
 
1568
#line 1569 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1569
} // closed Puma
 
1570
class WinIfExists;
 
1571
class WinImportHandler;
 
1572
class WinMacros;
 
1573
class CMatchSyntax;
 
1574
class ExtGnu;
 
1575
class ExtAC;
 
1576
class ExtACTree;
 
1577
class WinAsm;
 
1578
class WinDeclSpecs;
 
1579
class WinMemberExplSpec;
 
1580
class WinTypeKeywords;
 
1581
class PragmaOnceUnitState;
 
1582
class PragmaOnce;
 
1583
class CCExprResolve;
 
1584
class CExprResolve;
 
1585
namespace Puma {
 
1586
 
 
1587
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
1588
class FilenameInfo : public RefCnt {
 
1589
#line 1590 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1590
  friend class ::WinIfExists;
 
1591
  friend class ::WinImportHandler;
 
1592
  friend class ::WinMacros;
 
1593
  friend class ::CMatchSyntax;
 
1594
  friend class ::ExtGnu;
 
1595
  friend class ::ExtAC;
 
1596
  friend class ::ExtACTree;
 
1597
  friend class ::WinAsm;
 
1598
  friend class ::WinDeclSpecs;
 
1599
  friend class ::WinMemberExplSpec;
 
1600
  friend class ::WinTypeKeywords;
 
1601
  friend class ::PragmaOnceUnitState;
 
1602
  friend class ::PragmaOnce;
 
1603
  friend class ::CCExprResolve;
 
1604
  friend class ::CExprResolve;
 
1605
 
 
1606
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
1607
 
 
1608
  DString _name;
 
1609
  const char *_path;
 
1610
  const char *_root;
 
1611
 
 
1612
public:
 
1613
  FilenameInfo () : _path ((const char*)0), _root ((const char*)0) {}
 
1614
  ~FilenameInfo ();
 
1615
  void name (const char *n);
 
1616
  void name (const DString &dsn) { _name = dsn; }
 
1617
  const char *name () const { return _name.c_str (); }
 
1618
  const char *path ();
 
1619
  const char *root ();
 
1620
  bool is_absolute () const;
 
1621
  bool operator == (const FilenameInfo &rc) const {
 
1622
    return _name == rc._name;
 
1623
  }
 
1624
};
 
1625
 
 
1626
 
 
1627
} // namespace Puma
 
1628
 
 
1629
#endif /* __filename_info_h__ */
 
1630
 
 
1631
#line 26 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Filename.h"
 
1632
namespace Puma {
 
1633
 
 
1634
 
 
1635
 
 
1636
#line 1637 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1637
} // closed Puma
 
1638
class WinIfExists;
 
1639
class WinImportHandler;
 
1640
class WinMacros;
 
1641
class CMatchSyntax;
 
1642
class ExtGnu;
 
1643
class ExtAC;
 
1644
class ExtACTree;
 
1645
class WinAsm;
 
1646
class WinDeclSpecs;
 
1647
class WinMemberExplSpec;
 
1648
class WinTypeKeywords;
 
1649
class PragmaOnceUnitState;
 
1650
class PragmaOnce;
 
1651
class CCExprResolve;
 
1652
class CExprResolve;
 
1653
namespace Puma {
 
1654
 
 
1655
#line 29 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Filename.h"
 
1656
class Filename : public SmartPtr, public Printable {
 
1657
#line 1658 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1658
  friend class ::WinIfExists;
 
1659
  friend class ::WinImportHandler;
 
1660
  friend class ::WinMacros;
 
1661
  friend class ::CMatchSyntax;
 
1662
  friend class ::ExtGnu;
 
1663
  friend class ::ExtAC;
 
1664
  friend class ::ExtACTree;
 
1665
  friend class ::WinAsm;
 
1666
  friend class ::WinDeclSpecs;
 
1667
  friend class ::WinMemberExplSpec;
 
1668
  friend class ::WinTypeKeywords;
 
1669
  friend class ::PragmaOnceUnitState;
 
1670
  friend class ::PragmaOnce;
 
1671
  friend class ::CCExprResolve;
 
1672
  friend class ::CExprResolve;
 
1673
 
 
1674
#line 29 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Filename.h"
 
1675
 
 
1676
  FilenameInfo *info () const { return (FilenameInfo*)data (); }
 
1677
 
 
1678
public:
 
1679
  Filename () {}
 
1680
  Filename (const char *n) { name (n); }
 
1681
  Filename &operator = (const char *n) { name (n); return *this; }
 
1682
  void name (const char *n);
 
1683
  const char *name () const;
 
1684
  const char *path () const;
 
1685
  const char *root () const;
 
1686
  bool is_absolute () const;
 
1687
  bool operator == (const Filename &f) const;
 
1688
  bool operator != (const Filename &f) const { return !(*this == f); }
 
1689
  virtual void print (ostream &os) const { if (info ()) os << name (); }
 
1690
};
 
1691
 
 
1692
 
 
1693
} // namespace Puma
 
1694
 
 
1695
#endif /* __filename_h__ */
 
1696
 
 
1697
#line 25 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/LocationInfo.h"
 
1698
namespace Puma {
 
1699
 
 
1700
 
 
1701
 
 
1702
#line 1703 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1703
} // closed Puma
 
1704
class WinIfExists;
 
1705
class WinImportHandler;
 
1706
class WinMacros;
 
1707
class CMatchSyntax;
 
1708
class ExtGnu;
 
1709
class ExtAC;
 
1710
class ExtACTree;
 
1711
class WinAsm;
 
1712
class WinDeclSpecs;
 
1713
class WinMemberExplSpec;
 
1714
class WinTypeKeywords;
 
1715
class PragmaOnceUnitState;
 
1716
class PragmaOnce;
 
1717
class CCExprResolve;
 
1718
class CExprResolve;
 
1719
namespace Puma {
 
1720
 
 
1721
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/LocationInfo.h"
 
1722
class LocationInfo : public RefCnt {
 
1723
#line 1724 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1724
  friend class ::WinIfExists;
 
1725
  friend class ::WinImportHandler;
 
1726
  friend class ::WinMacros;
 
1727
  friend class ::CMatchSyntax;
 
1728
  friend class ::ExtGnu;
 
1729
  friend class ::ExtAC;
 
1730
  friend class ::ExtACTree;
 
1731
  friend class ::WinAsm;
 
1732
  friend class ::WinDeclSpecs;
 
1733
  friend class ::WinMemberExplSpec;
 
1734
  friend class ::WinTypeKeywords;
 
1735
  friend class ::PragmaOnceUnitState;
 
1736
  friend class ::PragmaOnce;
 
1737
  friend class ::CCExprResolve;
 
1738
  friend class ::CExprResolve;
 
1739
 
 
1740
#line 28 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/LocationInfo.h"
 
1741
 
 
1742
  Filename _filename;
 
1743
  int _line;
 
1744
 
 
1745
public:
 
1746
  LocationInfo () : _filename (), _line (0) {}
 
1747
  void setup (Filename f, int l);
 
1748
  const Filename &filename () const { return _filename; }
 
1749
  int line () const { return _line; }
 
1750
  bool operator < (const LocationInfo &l) const;
 
1751
  bool operator == (const LocationInfo &l) const;
 
1752
};
 
1753
 
 
1754
 
 
1755
} // namespace Puma
 
1756
 
 
1757
#endif /* __location_info_h__ */
 
1758
 
 
1759
#line 26 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Location.h"
 
1760
namespace Puma {
 
1761
 
 
1762
 
 
1763
 
 
1764
#line 1765 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1765
} // closed Puma
 
1766
class WinIfExists;
 
1767
class WinImportHandler;
 
1768
class WinMacros;
 
1769
class CMatchSyntax;
 
1770
class ExtGnu;
 
1771
class ExtAC;
 
1772
class ExtACTree;
 
1773
class WinAsm;
 
1774
class WinDeclSpecs;
 
1775
class WinMemberExplSpec;
 
1776
class WinTypeKeywords;
 
1777
class PragmaOnceUnitState;
 
1778
class PragmaOnce;
 
1779
class CCExprResolve;
 
1780
class CExprResolve;
 
1781
namespace Puma {
 
1782
 
 
1783
#line 29 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Location.h"
 
1784
class Location : public SmartPtr, public Printable {
 
1785
#line 1786 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1786
  friend class ::WinIfExists;
 
1787
  friend class ::WinImportHandler;
 
1788
  friend class ::WinMacros;
 
1789
  friend class ::CMatchSyntax;
 
1790
  friend class ::ExtGnu;
 
1791
  friend class ::ExtAC;
 
1792
  friend class ::ExtACTree;
 
1793
  friend class ::WinAsm;
 
1794
  friend class ::WinDeclSpecs;
 
1795
  friend class ::WinMemberExplSpec;
 
1796
  friend class ::WinTypeKeywords;
 
1797
  friend class ::PragmaOnceUnitState;
 
1798
  friend class ::PragmaOnce;
 
1799
  friend class ::CCExprResolve;
 
1800
  friend class ::CExprResolve;
 
1801
 
 
1802
#line 29 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Location.h"
 
1803
 
 
1804
  LocationInfo *info () const { return (LocationInfo*)data (); }
 
1805
 
 
1806
public:
 
1807
  Location () {}
 
1808
  Location (Filename f, int l) { setup (f, l); }
 
1809
  Location (LocationInfo *lptr) : SmartPtr (lptr) {}
 
1810
  LocationInfo *operator ~ () { if (info ()) info ()->ref (); return info (); }
 
1811
  void setup (Filename f, int l);
 
1812
  const Filename &filename () const   { return info ()->filename (); }
 
1813
  int line () const;
 
1814
  bool operator == (const Location &l) const;
 
1815
  bool operator != (const Location &l) const { return ! (*this == l); }
 
1816
  bool operator < (const Location &l) const;
 
1817
 
 
1818
  virtual void print (ostream &os) const {
 
1819
    if (info ())
 
1820
#ifdef VISUAL_STUDIO
 
1821
      os << filename () << "(" << line () << ")";
 
1822
#else
 
1823
      os << filename () << ":" << line ();
 
1824
#endif
 
1825
  }
 
1826
};
 
1827
 
 
1828
 
 
1829
} // namespace Puma
 
1830
 
 
1831
#endif /* __location_h__ */
 
1832
 
 
1833
#line 27 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/PreExpr.h"
 
1834
namespace Puma {
 
1835
 
 
1836
 
 
1837
class ErrorStream;
 
1838
 
 
1839
 
 
1840
#line 1841 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1841
} // closed Puma
 
1842
class WinIfExists;
 
1843
class WinImportHandler;
 
1844
class WinMacros;
 
1845
class CMatchSyntax;
 
1846
class ExtGnu;
 
1847
class ExtAC;
 
1848
class ExtACTree;
 
1849
class WinAsm;
 
1850
class WinDeclSpecs;
 
1851
class WinMemberExplSpec;
 
1852
class WinTypeKeywords;
 
1853
class PragmaOnceUnitState;
 
1854
class PragmaOnce;
 
1855
class CCExprResolve;
 
1856
class CExprResolve;
 
1857
namespace Puma {
 
1858
 
 
1859
#line 32 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/PreExpr.h"
 
1860
class PreExpr {
 
1861
#line 1862 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
1862
  friend class ::WinIfExists;
 
1863
  friend class ::WinImportHandler;
 
1864
  friend class ::WinMacros;
 
1865
  friend class ::CMatchSyntax;
 
1866
  friend class ::ExtGnu;
 
1867
  friend class ::ExtAC;
 
1868
  friend class ::ExtACTree;
 
1869
  friend class ::WinAsm;
 
1870
  friend class ::WinDeclSpecs;
 
1871
  friend class ::WinMemberExplSpec;
 
1872
  friend class ::WinTypeKeywords;
 
1873
  friend class ::PragmaOnceUnitState;
 
1874
  friend class ::PragmaOnce;
 
1875
  friend class ::CCExprResolve;
 
1876
  friend class ::CExprResolve;
 
1877
 
 
1878
#line 32 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/PreExpr.h"
 
1879
 
 
1880
  bool _result;        
 
1881
 
 
1882
public:
 
1883
  double val;
 
1884
        
 
1885
  // Public constructor.
 
1886
  PreExpr (ErrorStream *, Location);
 
1887
 
 
1888
  // Do not use this contructors outside of the 
 
1889
  // C preprocessor expression parser.
 
1890
  PreExpr () {};        
 
1891
  ~PreExpr () {};        
 
1892
  PreExpr (unsigned long int value) : val ((double) value) {};        
 
1893
  PreExpr (long int value) : val ((double) value) {};        
 
1894
  PreExpr (double value) : val (value) {};        
 
1895
        
 
1896
  // Evaluate the given expression string.
 
1897
  void evaluatePreExpr (char *expression_string);
 
1898
        
 
1899
  // Return value of evaluated expression.
 
1900
  bool value () const { return _result; }
 
1901
        
 
1902
  // String conversion method.
 
1903
  static long int convertChar (char *value);
 
1904
 
 
1905
private:
 
1906
  static MappedOrangeRecognizer<ScanBuffer> token_recognizer;
 
1907
};
 
1908
 
 
1909
 
 
1910
} // namespace Puma
 
1911
 
 
1912
#endif /* __pre_expr__ */
 
1913
 
 
1914
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
1915
// This file is part of PUMA.
 
1916
// Copyright (C) 1999-2003  The PUMA developer team.
 
1917
//                                                                
 
1918
// This program is free software;  you can redistribute it and/or 
 
1919
// modify it under the terms of the GNU General Public License as 
 
1920
// published by the Free Software Foundation; either version 2 of 
 
1921
// the License, or (at your option) any later version.            
 
1922
//                                                                
 
1923
// This program is distributed in the hope that it will be useful,
 
1924
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1925
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1926
// GNU General Public License for more details.                   
 
1927
//                                                                
 
1928
// You should have received a copy of the GNU General Public      
 
1929
// License along with this program; if not, write to the Free     
 
1930
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1931
// MA  02111-1307  USA                                            
 
1932
 
 
1933
#ifndef __error_stream_h__
 
1934
#define __error_stream_h__
 
1935
 
 
1936
// An ErrorStream is a special ErrorSink that prints out an error message
 
1937
// as soon as it complete. It also stores the maximum error severity.
 
1938
// The ErrorStream can be reset to it's initial state.
 
1939
 
 
1940
#include <sstream>
 
1941
 
 
1942
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
1943
// This file is part of PUMA.
 
1944
// Copyright (C) 1999-2003  The PUMA developer team.
 
1945
//                                                                
 
1946
// This program is free software;  you can redistribute it and/or 
 
1947
// modify it under the terms of the GNU General Public License as 
 
1948
// published by the Free Software Foundation; either version 2 of 
 
1949
// the License, or (at your option) any later version.            
 
1950
//                                                                
 
1951
// This program is distributed in the hope that it will be useful,
 
1952
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1953
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1954
// GNU General Public License for more details.                   
 
1955
//                                                                
 
1956
// You should have received a copy of the GNU General Public      
 
1957
// License along with this program; if not, write to the Free     
 
1958
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1959
// MA  02111-1307  USA                                            
 
1960
 
 
1961
#ifndef __error_sink_h__
 
1962
#define __error_sink_h__
 
1963
 
 
1964
// This is an interface for classes that may be used to consume error
 
1965
// messages during a process where many errors can occur like parsing
 
1966
// a program.
 
1967
// The error information is handed over to the ErrorSink in stream-like
 
1968
// style. Different severities of errors are predefined and can be used
 
1969
// to classify error information that follows. Also a location can be
 
1970
// handed over to the ErrorSink to specify where the error was found
 
1971
// (filename, line, etc.). The error information itself can be of any
 
1972
// standard data type or anything that is "Printable".
 
1973
// Specializations of this class could either build and print error
 
1974
// messages or collect them for a later processing.
 
1975
 
 
1976
 
 
1977
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
1978
// This file is part of PUMA.
 
1979
// Copyright (C) 1999-2003  The PUMA developer team.
 
1980
//                                                                
 
1981
// This program is free software;  you can redistribute it and/or 
 
1982
// modify it under the terms of the GNU General Public License as 
 
1983
// published by the Free Software Foundation; either version 2 of 
 
1984
// the License, or (at your option) any later version.            
 
1985
//                                                                
 
1986
// This program is distributed in the hope that it will be useful,
 
1987
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1988
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1989
// GNU General Public License for more details.                   
 
1990
//                                                                
 
1991
// You should have received a copy of the GNU General Public      
 
1992
// License along with this program; if not, write to the Free     
 
1993
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1994
// MA  02111-1307  USA                                            
 
1995
 
 
1996
#ifndef __error_severity_h__
 
1997
#define __error_severity_h__
 
1998
 
 
1999
// Severity of errors: represented by a short integer and a text
 
2000
 
 
2001
namespace Puma {
 
2002
 
 
2003
 
 
2004
 
 
2005
#line 2006 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2006
} // closed Puma
 
2007
class WinIfExists;
 
2008
class WinImportHandler;
 
2009
class WinMacros;
 
2010
class CMatchSyntax;
 
2011
class ExtGnu;
 
2012
class ExtAC;
 
2013
class ExtACTree;
 
2014
class WinAsm;
 
2015
class WinDeclSpecs;
 
2016
class WinMemberExplSpec;
 
2017
class WinTypeKeywords;
 
2018
class PragmaOnceUnitState;
 
2019
class PragmaOnce;
 
2020
class CCExprResolve;
 
2021
class CExprResolve;
 
2022
namespace Puma {
 
2023
 
 
2024
#line 27 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
2025
class ErrorSeverity {
 
2026
#line 2027 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2027
  friend class ::WinIfExists;
 
2028
  friend class ::WinImportHandler;
 
2029
  friend class ::WinMacros;
 
2030
  friend class ::CMatchSyntax;
 
2031
  friend class ::ExtGnu;
 
2032
  friend class ::ExtAC;
 
2033
  friend class ::ExtACTree;
 
2034
  friend class ::WinAsm;
 
2035
  friend class ::WinDeclSpecs;
 
2036
  friend class ::WinMemberExplSpec;
 
2037
  friend class ::WinTypeKeywords;
 
2038
  friend class ::PragmaOnceUnitState;
 
2039
  friend class ::PragmaOnce;
 
2040
  friend class ::CCExprResolve;
 
2041
  friend class ::CExprResolve;
 
2042
 
 
2043
#line 27 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
2044
 
 
2045
  unsigned short _severity;
 
2046
  const char *_text;
 
2047
 
 
2048
public:
 
2049
  ErrorSeverity (unsigned short s = 0, const char* t = (const char*)0) :
 
2050
    _severity (s), _text (t) {}
 
2051
  ErrorSeverity (const ErrorSeverity &s) :
 
2052
    _severity (s._severity), _text (s._text) {}
 
2053
  ErrorSeverity &operator =(const ErrorSeverity &s) 
 
2054
    { _severity = s._severity; _text = s._text; return *this; }
 
2055
 
 
2056
  int operator < (const ErrorSeverity &s) const
 
2057
   { return _severity < s._severity; }
 
2058
  int operator > (const ErrorSeverity &s) const
 
2059
   { return _severity > s._severity; }
 
2060
  int operator <= (const ErrorSeverity &s) const
 
2061
   { return _severity < s._severity || _severity == s._severity; }
 
2062
  int operator >= (const ErrorSeverity &s) const
 
2063
   { return _severity > s._severity || _severity == s._severity; }
 
2064
  int operator == (const ErrorSeverity &s) const
 
2065
   { return _severity == s._severity; }
 
2066
  int operator != (const ErrorSeverity &s) const
 
2067
   { return _severity != s._severity; }
 
2068
  const char *text () const
 
2069
   { return _text; }
 
2070
};
 
2071
 
 
2072
extern const ErrorSeverity sev_none;
 
2073
extern const ErrorSeverity sev_message;
 
2074
extern const ErrorSeverity sev_warning;
 
2075
extern const ErrorSeverity sev_error;
 
2076
extern const ErrorSeverity sev_fatal;
 
2077
      
 
2078
 
 
2079
} // namespace Puma
 
2080
 
 
2081
#endif /* __error_severity_h__ */
 
2082
 
 
2083
#line 38 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2084
namespace Puma {
 
2085
 
 
2086
 
 
2087
 
 
2088
#line 2089 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2089
} // closed Puma
 
2090
class WinIfExists;
 
2091
class WinImportHandler;
 
2092
class WinMacros;
 
2093
class CMatchSyntax;
 
2094
class ExtGnu;
 
2095
class ExtAC;
 
2096
class ExtACTree;
 
2097
class WinAsm;
 
2098
class WinDeclSpecs;
 
2099
class WinMemberExplSpec;
 
2100
class WinTypeKeywords;
 
2101
class PragmaOnceUnitState;
 
2102
class PragmaOnce;
 
2103
class CCExprResolve;
 
2104
class CExprResolve;
 
2105
namespace Puma {
 
2106
 
 
2107
#line 41 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2108
class ErrorSink {
 
2109
#line 2110 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2110
  friend class ::WinIfExists;
 
2111
  friend class ::WinImportHandler;
 
2112
  friend class ::WinMacros;
 
2113
  friend class ::CMatchSyntax;
 
2114
  friend class ::ExtGnu;
 
2115
  friend class ::ExtAC;
 
2116
  friend class ::ExtACTree;
 
2117
  friend class ::WinAsm;
 
2118
  friend class ::WinDeclSpecs;
 
2119
  friend class ::WinMemberExplSpec;
 
2120
  friend class ::WinTypeKeywords;
 
2121
  friend class ::PragmaOnceUnitState;
 
2122
  friend class ::PragmaOnce;
 
2123
  friend class ::CCExprResolve;
 
2124
  friend class ::CExprResolve;
 
2125
 
 
2126
#line 41 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2127
 
 
2128
public:
 
2129
  virtual ~ErrorSink () {}
 
2130
  virtual ErrorSink &operator << (const char *) = 0;
 
2131
  virtual ErrorSink &operator << (long) = 0;
 
2132
  virtual ErrorSink &operator << (unsigned) = 0;
 
2133
  virtual ErrorSink &operator << (int) = 0;
 
2134
  virtual ErrorSink &operator << (short) = 0;
 
2135
  virtual ErrorSink &operator << (char) = 0;
 
2136
  virtual ErrorSink &operator << (double) = 0;
 
2137
  virtual ErrorSink &operator << (const ErrorSeverity &) = 0;
 
2138
  virtual ErrorSink &operator << (Location) = 0;
 
2139
  virtual ErrorSink &operator << (const Printable &) = 0;
 
2140
  virtual ErrorSink &operator << (void (*f)(ErrorSink &)) = 0;
 
2141
  virtual void endMessage () = 0;
 
2142
};
 
2143
 
 
2144
void endMessage (ErrorSink &);
 
2145
 
 
2146
 
 
2147
} // namespace Puma
 
2148
 
 
2149
#endif /* __error_sink_h__ */
 
2150
 
 
2151
#line 30 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2152
using namespace std;
 
2153
 
 
2154
namespace Puma {
 
2155
 
 
2156
 
 
2157
 
 
2158
#line 2159 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2159
} // closed Puma
 
2160
class WinIfExists;
 
2161
class WinImportHandler;
 
2162
class WinMacros;
 
2163
class CMatchSyntax;
 
2164
class ExtGnu;
 
2165
class ExtAC;
 
2166
class ExtACTree;
 
2167
class WinAsm;
 
2168
class WinDeclSpecs;
 
2169
class WinMemberExplSpec;
 
2170
class WinTypeKeywords;
 
2171
class PragmaOnceUnitState;
 
2172
class PragmaOnce;
 
2173
class CCExprResolve;
 
2174
class CExprResolve;
 
2175
namespace Puma {
 
2176
 
 
2177
#line 35 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2178
class ErrorStream : public ErrorSink {
 
2179
#line 2180 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2180
  friend class ::WinIfExists;
 
2181
  friend class ::WinImportHandler;
 
2182
  friend class ::WinMacros;
 
2183
  friend class ::CMatchSyntax;
 
2184
  friend class ::ExtGnu;
 
2185
  friend class ::ExtAC;
 
2186
  friend class ::ExtACTree;
 
2187
  friend class ::WinAsm;
 
2188
  friend class ::WinDeclSpecs;
 
2189
  friend class ::WinMemberExplSpec;
 
2190
  friend class ::WinTypeKeywords;
 
2191
  friend class ::PragmaOnceUnitState;
 
2192
  friend class ::PragmaOnce;
 
2193
  friend class ::CCExprResolve;
 
2194
  friend class ::CExprResolve;
 
2195
 
 
2196
#line 35 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2197
 
 
2198
  ostream *_ostream;
 
2199
  ErrorSeverity _max_severity;
 
2200
  ErrorSeverity _curr_severity;
 
2201
  Location _location;
 
2202
  bool _have_location;
 
2203
  std::ostringstream *_msg;
 
2204
  bool _silently;
 
2205
 
 
2206
  void output ();
 
2207
  void clear ();
 
2208
 
 
2209
public:
 
2210
  ErrorStream (std::ostream &s = cerr) : _ostream (&s), _msg ((std::ostringstream*)0)
 
2211
   { reset (); _silently = false; }
 
2212
  virtual ~ErrorStream () { delete _msg; }
 
2213
 
 
2214
  ErrorStream &operator << (const char *);
 
2215
  ErrorStream &operator << (long);
 
2216
  ErrorStream &operator << (unsigned);
 
2217
  ErrorStream &operator << (int);
 
2218
  ErrorStream &operator << (short);
 
2219
  ErrorStream &operator << (char);
 
2220
  ErrorStream &operator << (double);
 
2221
  ErrorStream &operator << (const ErrorSeverity &);
 
2222
  ErrorStream &operator << (Location);
 
2223
  ErrorStream &operator << (const Printable &);
 
2224
  ErrorStream &operator << (void (*f)(ErrorSink &));
 
2225
 
 
2226
  void endMessage ();
 
2227
  void reset ();
 
2228
  void silent ();
 
2229
  void loud ();
 
2230
 
 
2231
  ErrorSeverity severity () const { return _max_severity; }
 
2232
};
 
2233
 
 
2234
 
 
2235
} // namespace Puma
 
2236
 
 
2237
#endif /* __error_stream_h__ */
 
2238
 
 
2239
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/PreExprParser.h"
 
2240
#define TOK_EXPR_AND                    1
 
2241
#define TOK_EXPR_BITAND                 2
 
2242
#define TOK_EXPR_BITOR                  3
 
2243
#define TOK_EXPR_BITXOR                 4
 
2244
#define TOK_EXPR_CHAR                   5
 
2245
#define TOK_EXPR_COLON                  6
 
2246
#define TOK_EXPR_DEC                    7
 
2247
#define TOK_EXPR_DIV                    8
 
2248
#define TOK_EXPR_EQ                     9
 
2249
#define TOK_EXPR_FLOAT                 10
 
2250
#define TOK_EXPR_GEQ                   11
 
2251
#define TOK_EXPR_GREATER               12
 
2252
#define TOK_EXPR_HEX                   13
 
2253
#define TOK_EXPR_LEQ                   14
 
2254
#define TOK_EXPR_LESS                  15
 
2255
#define TOK_EXPR_LPAREN                16
 
2256
#define TOK_EXPR_MINUS                 17
 
2257
#define TOK_EXPR_MOD                   18
 
2258
#define TOK_EXPR_NOT                   19
 
2259
#define TOK_EXPR_NOTEQ                 20
 
2260
#define TOK_EXPR_OCT                   21
 
2261
#define TOK_EXPR_OR                    22
 
2262
#define TOK_EXPR_PLUS                  23
 
2263
#define TOK_EXPR_QUESTION              24
 
2264
#define TOK_EXPR_RPAREN                25
 
2265
#define TOK_EXPR_SHIFTL                26
 
2266
#define TOK_EXPR_SHIFTR                27
 
2267
#define TOK_EXPR_STAR                  28
 
2268
#define TOK_EXPR_TILDE                 29
 
2269
#define TOK_EXPR_WSPACE                30
 
2270
#define TOK_PRE_UNARY                  31
 
2271
 
 
2272
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/SB_String.h"
 
2273
// This file is part of PUMA.
 
2274
// Copyright (C) 1999-2003  The PUMA developer team.
 
2275
//                                                                
 
2276
// This program is free software;  you can redistribute it and/or 
 
2277
// modify it under the terms of the GNU General Public License as 
 
2278
// published by the Free Software Foundation; either version 2 of 
 
2279
// the License, or (at your option) any later version.            
 
2280
//                                                                
 
2281
// This program is distributed in the hope that it will be useful,
 
2282
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
2283
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
2284
// GNU General Public License for more details.                   
 
2285
//                                                                
 
2286
// You should have received a copy of the GNU General Public      
 
2287
// License along with this program; if not, write to the Free     
 
2288
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
2289
// MA  02111-1307  USA                                            
 
2290
 
 
2291
#ifndef __sb_string_h__
 
2292
#define __sb_string_h__
 
2293
 
 
2294
 
 
2295
#line 24 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/SB_String.h"
 
2296
namespace Puma {
 
2297
 
 
2298
 
 
2299
 
 
2300
#line 2301 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2301
} // closed Puma
 
2302
class WinIfExists;
 
2303
class WinImportHandler;
 
2304
class WinMacros;
 
2305
class CMatchSyntax;
 
2306
class ExtGnu;
 
2307
class ExtAC;
 
2308
class ExtACTree;
 
2309
class WinAsm;
 
2310
class WinDeclSpecs;
 
2311
class WinMemberExplSpec;
 
2312
class WinTypeKeywords;
 
2313
class PragmaOnceUnitState;
 
2314
class PragmaOnce;
 
2315
class CCExprResolve;
 
2316
class CExprResolve;
 
2317
namespace Puma {
 
2318
 
 
2319
#line 27 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/SB_String.h"
 
2320
class SB_String : public ScanBuffer {
 
2321
#line 2322 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2322
  friend class ::WinIfExists;
 
2323
  friend class ::WinImportHandler;
 
2324
  friend class ::WinMacros;
 
2325
  friend class ::CMatchSyntax;
 
2326
  friend class ::ExtGnu;
 
2327
  friend class ::ExtAC;
 
2328
  friend class ::ExtACTree;
 
2329
  friend class ::WinAsm;
 
2330
  friend class ::WinDeclSpecs;
 
2331
  friend class ::WinMemberExplSpec;
 
2332
  friend class ::WinTypeKeywords;
 
2333
  friend class ::PragmaOnceUnitState;
 
2334
  friend class ::PragmaOnce;
 
2335
  friend class ::CCExprResolve;
 
2336
  friend class ::CExprResolve;
 
2337
 
 
2338
#line 27 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/SB_String.h"
 
2339
 
 
2340
  const char *string;
 
2341
  const char *TokenBuffer;
 
2342
  const char *end;
 
2343
  int  BuffPos;
 
2344
 
 
2345
public:
 
2346
  void init (const char *str, int len = 0) {
 
2347
    string = str; end = str + (len ? len : strlen (str)); reset (); 
 
2348
  }
 
2349
 
 
2350
  char next () { return TokenBuffer[BuffPos++]; }
 
2351
  char *token () { return (char*)TokenBuffer; }
 
2352
  int len () const { return BuffPos; }
 
2353
  void reset () { TokenBuffer = string; BuffPos = 0; }
 
2354
  void retry () { BuffPos = 0; }
 
2355
  void accept (int len) { BuffPos = 0; TokenBuffer += len; }
 
2356
  void more (int len) { BuffPos = len; }
 
2357
  State state () const { return  (TokenBuffer + BuffPos == end) ? STATE_END : STATE_OK; }
 
2358
};
 
2359
 
 
2360
 
 
2361
} // namespace Puma
 
2362
 
 
2363
#endif /* __sb_string_h__ */
 
2364
 
 
2365
#line 34 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
2366
using namespace Puma;
 
2367
 
 
2368
void *PreExprParserAlloc (void *(*mallocProc)(...));
 
2369
void PreExprParser       (void *pParser, int TokenID, char *TokenValue, int &result);
 
2370
void PreExprParserFree   (void *pParser, void (*freeProc)(...));
 
2371
void PreExprParserTrace  (FILE *TraceFILE, char *zTracePrompt);
 
2372
 
 
2373
namespace Puma {
 
2374
 
 
2375
 
 
2376
// Include generated scanner tables
 
2377
 
 
2378
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprTab.ot"
 
2379
static char PreExprTabMap[256] =
 
2380
 {  -1,  10,  10,  10,  10,  10,  10,  10,
 
2381
    10,  12,  12,  10,  12,  12,  10,  10,
 
2382
    10,  10,  10,  10,  10,  10,  10,  10,
 
2383
    10,  10,  10,  10,  10,  10,  10,  10,
 
2384
    12,  26,  10,  10,  10,  20,  16,  31,
 
2385
    23,  24,  18,  17,  10,   9,  29,  19,
 
2386
     0,   2,   2,   2,   2,   2,   2,   2,
 
2387
     1,   1,  25,  10,  21,  28,  22,  13,
 
2388
    10,   3,   3,   3,   3,   7,   8,  10,
 
2389
    10,  10,  10,  10,  30,  10,  10,  10,
 
2390
    10,  10,  10,  10,  10,   5,  10,  10,
 
2391
     4,  10,  10,  10,  11,  10,  15,  10,
 
2392
    10,   3,   3,   3,   3,   7,   8,  10,
 
2393
    10,  10,  10,  10,   6,  10,  10,  10,
 
2394
    10,  10,  10,  10,  10,   5,  10,  10,
 
2395
     4,  10,  10,  10,  14,  10,  27,  10,
 
2396
    10,  10,  10,  10,  10,  10,  10,  10,
 
2397
    10,  10,  10,  10,  10,  10,  10,  10,
 
2398
    10,  10,  10,  10,  10,  10,  10,  10,
 
2399
    10,  10,  10,  10,  10,  10,  10,  10,
 
2400
    10,  10,  10,  10,  10,  10,  10,  10,
 
2401
    10,  10,  10,  10,  10,  10,  10,  10,
 
2402
    10,  10,  10,  10,  10,  10,  10,  10,
 
2403
    10,  10,  10,  10,  10,  10,  10,  10,
 
2404
    10,  10,  10,  10,  10,  10,  10,  10,
 
2405
    10,  10,  10,  10,  10,  10,  10,  10,
 
2406
    10,  10,  10,  10,  10,  10,  10,  10,
 
2407
    10,  10,  10,  10,  10,  10,  10,  10,
 
2408
    10,  10,  10,  10,  10,  10,  10,  10,
 
2409
    10,  10,  10,  10,  10,  10,  10,  10,
 
2410
    10,  10,  10,  10,  10,  10,  10,  10,
 
2411
    10,  10,  10,  10,  10,  10,  10,  -1
 
2412
 };
 
2413
 
 
2414
static int PreExprTabExprMap[] =
 
2415
 {
 
2416
   TOK_EXPR_QUESTION,
 
2417
   TOK_EXPR_BITOR,
 
2418
   TOK_EXPR_BITXOR,
 
2419
   TOK_EXPR_BITAND,
 
2420
   TOK_EXPR_PLUS,
 
2421
   TOK_EXPR_MINUS,
 
2422
   TOK_EXPR_STAR,
 
2423
   TOK_EXPR_DIV,
 
2424
   TOK_EXPR_MOD,
 
2425
   TOK_EXPR_LESS,
 
2426
   TOK_EXPR_GREATER,
 
2427
   TOK_EXPR_LPAREN,
 
2428
   TOK_EXPR_RPAREN,
 
2429
   TOK_EXPR_COLON,
 
2430
   TOK_EXPR_NOT,
 
2431
   TOK_EXPR_TILDE,
 
2432
   TOK_EXPR_OR,
 
2433
   TOK_EXPR_AND,
 
2434
   TOK_EXPR_EQ,
 
2435
   TOK_EXPR_NOTEQ,
 
2436
   TOK_EXPR_LEQ,
 
2437
   TOK_EXPR_GEQ,
 
2438
   TOK_EXPR_SHIFTL,
 
2439
   TOK_EXPR_SHIFTR,
 
2440
   TOK_EXPR_DEC,
 
2441
   TOK_EXPR_OCT,
 
2442
   TOK_EXPR_HEX,
 
2443
   TOK_EXPR_FLOAT,
 
2444
   TOK_EXPR_CHAR,
 
2445
   TOK_EXPR_WSPACE
 
2446
 };
 
2447
 
 
2448
static int PreExprTabStart = 30;
 
2449
 
 
2450
#ifndef __TTGEN__
 
2451
#  define __TTGEN__
 
2452
 
 
2453
   typedef struct
 
2454
    { unsigned char Type;
 
2455
      unsigned char LookAhead;
 
2456
      int           Expression;
 
2457
      int           Start;
 
2458
    } States;
 
2459
 
 
2460
#endif
 
2461
 
 
2462
static States PreExprTabStates[] =
 
2463
 {  { 1, 0,    24,     0 },
 
2464
    { 1, 0,     5,     0 },
 
2465
    { 1, 0,    29,    -9 },
 
2466
    { 1, 0,     0,     0 },
 
2467
    { 1, 0,     1,    -5 },
 
2468
    { 1, 0,     2,     0 },
 
2469
    { 1, 0,     3,    -6 },
 
2470
    { 1, 0,     4,     0 },
 
2471
    { 1, 0,     6,     0 },
 
2472
    { 1, 0,     7,     0 },
 
2473
    { 1, 0,     8,     0 },
 
2474
    { 1, 0,     9,   -10 },
 
2475
    { 1, 0,    10,    -9 },
 
2476
    { 1, 0,    11,     0 },
 
2477
    { 1, 0,    12,     0 },
 
2478
    { 1, 0,    13,     0 },
 
2479
    { 1, 0,    14,   -16 },
 
2480
    { 1, 0,    15,     0 },
 
2481
    { 1, 0,    28,     0 },
 
2482
    { 1, 0,    18,     0 },
 
2483
    { 1, 0,    19,     0 },
 
2484
    { 1, 0,    23,     0 },
 
2485
    { 1, 0,    21,     0 },
 
2486
    { 1, 0,    22,     0 },
 
2487
    { 1, 0,    20,     0 },
 
2488
    { 1, 0,    17,     0 },
 
2489
    { 1, 0,    16,     0 },
 
2490
    { 1, 0,    27,     0 },
 
2491
    { 1, 0,    25,    15 },
 
2492
    { 1, 0,    26,    31 },
 
2493
    { 0, 0,     0,    50 },
 
2494
    { 1, 0,    24,     0 },
 
2495
    { 1, 0,    24,     9 },
 
2496
    { 1, 0,    24,    19 },
 
2497
    { 1, 0,    24,    49 },
 
2498
    { 1, 0,    24,    82 },
 
2499
    { 1, 0,    27,    91 },
 
2500
    { 1, 0,    27,    94 },
 
2501
    { 1, 0,    27,   107 },
 
2502
    { 1, 0,    25,     0 },
 
2503
    { 1, 0,    25,    21 },
 
2504
    { 1, 0,    25,    80 },
 
2505
    { 1, 0,    25,    95 },
 
2506
    { 1, 0,    26,     0 },
 
2507
    { 1, 0,    26,    22 },
 
2508
    { 1, 0,    26,    98 },
 
2509
    { 1, 0,    26,    99 },
 
2510
    { 0, 0,     0,    40 },
 
2511
    { 0, 0,     0,    56 },
 
2512
    { 0, 0,     0,   117 },
 
2513
    { 0, 0,     0,   138 },
 
2514
    { 0, 0,     0,   170 },
 
2515
    { 0, 0,     0,   202 },
 
2516
    { 0, 0,     0,    -3 },
 
2517
    { 0, 0,     0,     7 },
 
2518
    { 1, 0,    24,   100 },
 
2519
    { 1, 0,    25,   227 },
 
2520
    { 1, 0,    26,   228 }
 
2521
 };
 
2522
 
 
2523
static int PreExprTabNext[] =
 
2524
 {    28,    36,    28,     2,    47,    34,    33,    49,
 
2525
      27,    26,    25,    23,    20,    21,    31,    28,
 
2526
      36,    28,    24,    22,    42,    41,    49,    27,
 
2527
      55,    32,    39,    43,    52,    38,    33,    29,
 
2528
      29,    29,    29,    19,    46,    45,    29,    29,
 
2529
      29,    29,    29,    29,    38,    41,    -1,    29,
 
2530
      29,    32,     0,    35,    35,    -1,    -1,    55,
 
2531
      37,    37,    37,     1,    -1,    45,     2,     3,
 
2532
       4,     5,     6,     7,     8,     9,    10,    11,
 
2533
      12,    13,    14,    15,    16,    17,    54,    55,
 
2534
      53,    52,    35,    35,    35,    56,    40,    34,
 
2535
      33,    49,    27,    36,    36,    36,    37,    37,
 
2536
      37,    27,    49,    27,    27,    56,    27,    57,
 
2537
      44,    57,    31,    38,    38,    38,    40,    38,
 
2538
      33,    27,    49,    27,    -1,    37,    37,    37,
 
2539
      38,    27,    -1,    -1,    27,    56,    48,    -1,
 
2540
      44,    57,    31,    -1,    -1,    -1,    48,    -1,
 
2541
      -1,    27,    51,    51,    51,    51,    51,    51,
 
2542
      51,    51,    51,    51,    51,    51,    51,    51,
 
2543
      51,    51,    51,    51,    51,    51,    51,    51,
 
2544
      51,    51,    51,    51,    51,    51,    51,    51,
 
2545
      51,    51,    51,    51,    51,    51,    51,    51,
 
2546
      51,    51,    51,    51,    51,    50,    51,    51,
 
2547
      51,    51,    51,    51,    51,    51,    51,    51,
 
2548
      51,    51,    51,    51,    51,    51,    51,    51,
 
2549
      51,    18,    51,    51,    51,    51,    51,    51,
 
2550
      51,    51,    51,    51,    51,    50,    51,    51,
 
2551
      51,    51,    51,    51,    51,    51,    51,    51,
 
2552
      51,    51,    51,    51,    51,    51,    51,    51,
 
2553
      51,    39,    43,    -1,    -1,    -1,    -1,    -1,
 
2554
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2555
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2556
      -1,    39,    43
 
2557
 };
 
2558
 
 
2559
static int PreExprTabControl[] =
 
2560
 {     0,     0,     0,     2,     0,     0,     0,     0,
 
2561
       0,     4,     6,    11,    16,    12,    32,    28,
 
2562
      28,    28,    11,    12,    28,    28,    28,    28,
 
2563
      33,    33,    40,    44,    53,     0,     0,    29,
 
2564
      29,    29,    29,    54,    29,    29,    29,    29,
 
2565
      47,    47,    47,    47,    28,    28,    -1,    47,
 
2566
      47,    33,    30,    30,    30,    -1,    -1,    34,
 
2567
      48,    48,    48,    30,    -1,    29,    30,    30,
 
2568
      30,    30,    30,    30,    30,    30,    30,    30,
 
2569
      30,    30,    30,    30,    30,    30,    30,    34,
 
2570
      30,    30,    35,    35,    35,    41,    41,    35,
 
2571
      35,    35,    35,    36,    36,    36,    37,    37,
 
2572
      37,    36,    36,    36,    37,    42,    37,    45,
 
2573
      45,    46,    55,    38,    38,    38,    41,    35,
 
2574
      35,    38,    38,    38,    -1,    49,    49,    49,
 
2575
      36,    36,    -1,    -1,    37,    42,    49,    -1,
 
2576
      45,    46,    55,    -1,    -1,    -1,    49,    -1,
 
2577
      -1,    38,    50,    50,    50,    50,    50,    50,
 
2578
      50,    50,    50,    50,    50,    50,    50,    50,
 
2579
      50,    50,    50,    50,    50,    50,    50,    50,
 
2580
      50,    50,    50,    50,    50,    50,    50,    50,
 
2581
      50,    50,    51,    51,    51,    51,    51,    51,
 
2582
      51,    51,    51,    51,    51,    51,    51,    51,
 
2583
      51,    51,    51,    51,    51,    51,    51,    51,
 
2584
      51,    51,    51,    51,    51,    51,    51,    51,
 
2585
      51,    51,    52,    52,    52,    52,    52,    52,
 
2586
      52,    52,    52,    52,    52,    52,    52,    52,
 
2587
      52,    52,    52,    52,    52,    52,    52,    52,
 
2588
      52,    52,    52,    52,    52,    52,    52,    52,
 
2589
      52,    56,    57,    -1,    -1,    -1,    -1,    -1,
 
2590
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2591
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2592
      -1,    56,    57
 
2593
 };
 
2594
 
 
2595
 
 
2596
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
2597
static bool         parse_error;
 
2598
static bool         at_eos;
 
2599
static char        *current_token;
 
2600
static ErrorStream *err;
 
2601
static Location     location;
 
2602
 
 
2603
// Constructor.
 
2604
PreExpr::PreExpr (ErrorStream *_err, Location _location) {
 
2605
  err      = _err;
 
2606
  location = _location;
 
2607
  _result  = false;
 
2608
}
 
2609
 
 
2610
MappedOrangeRecognizer<ScanBuffer> PreExpr::token_recognizer (
 
2611
  PreExprTabMap, PreExprTabExprMap,
 
2612
  PreExprTabStart, PreExprTabStates, 
 
2613
  PreExprTabNext, PreExprTabControl, 
 
2614
  sizeof (PreExprTabNext) / sizeof (int));
 
2615
 
 
2616
// Convert char to long integer.
 
2617
long int PreExpr::convertChar(char *value) {
 
2618
  long int cval;
 
2619
  char *copy = new char[strlen (value) + 1];
 
2620
  strcpy (copy, value);
 
2621
 
 
2622
  char *p = copy;
 
2623
  if (*++p == '\\') {
 
2624
    p++;
 
2625
    if (*p == 'x' || *p == 'X') {
 
2626
      *(copy + 1) = '0';
 
2627
      cval = strtol (copy + 1, NULL, 16);
 
2628
    } else if (*p >= '0' && *p <= '9') {
 
2629
      cval = strtol (p, NULL, 8);
 
2630
      if (cval > 255) cval = 255;
 
2631
    } else {
 
2632
      switch (*p) {
 
2633
        case 'a': cval = 7; break;
 
2634
        case 'b': cval = 8; break;
 
2635
        case 't': cval = 9; break;
 
2636
        case 'n': cval = 10; break;
 
2637
        case 'v': cval = 11; break;
 
2638
        case 'f': cval = 12; break;
 
2639
        case 'r': cval = 13; break;
 
2640
        default: cval = *p; 
 
2641
      }
 
2642
    }
 
2643
  } else 
 
2644
    cval = (long int) value[1];
 
2645
  delete copy;
 
2646
  return cval;
 
2647
}
 
2648
 
 
2649
// Evaluate the given expression string.
 
2650
void PreExpr::evaluatePreExpr (char *token_list) {
 
2651
  parse_error = false;
 
2652
  at_eos = false;
 
2653
  int result = 0, token, len;
 
2654
  bool empty_expr = true;
 
2655
 
 
2656
  // Generate the Lemon parser.
 
2657
  void *pParser = PreExprParserAlloc ((void* (*)(...))malloc);
 
2658
  //PreExprParserTrace(stdout, "TRACE: ");
 
2659
 
 
2660
  // Initialize the scan buffer with the expression string.
 
2661
  SB_String buffer;
 
2662
  buffer.init (token_list);
 
2663
 
 
2664
  // Scan the expression.
 
2665
  while (buffer.state () == ScanBuffer::STATE_OK) {
 
2666
    switch (token_recognizer.recognize (&buffer, token, len)) {
 
2667
      case -1: 
 
2668
        *err << location << sev_error
 
2669
             << "Error while scanning tokens" << endMessage;
 
2670
        parse_error = true;
 
2671
        break;
 
2672
      case 0:
 
2673
        *err << location << sev_error
 
2674
             << "Invalid token in expression" << endMessage;
 
2675
        parse_error = true;
 
2676
        break;
 
2677
      case 1: 
 
2678
        if (token != TOK_EXPR_WSPACE) {
 
2679
          current_token = new char[len + 1];
 
2680
          strncpy (current_token, buffer.token (), len);
 
2681
          current_token[len] = '\0';
 
2682
          empty_expr = false;
 
2683
            
 
2684
          // Parse the current token.
 
2685
          PreExprParser (pParser, token, current_token, result);
 
2686
        }
 
2687
        buffer.accept (len);
 
2688
        break;
 
2689
    }
 
2690
    current_token = 0;
 
2691
  }
 
2692
  
 
2693
  // Finish and then free the parser.
 
2694
  if (! parse_error && ! empty_expr) {
 
2695
    at_eos = true; // Catch EOS parse errors
 
2696
    PreExprParser (pParser, 0, (char*) 0, result);
 
2697
  }
 
2698
  PreExprParserFree (pParser, (void (*)(...))::free);
 
2699
    
 
2700
  if (empty_expr) {
 
2701
    *err << location << sev_warning
 
2702
         << "Empty expression in conditional" 
 
2703
         << endMessage;
 
2704
  }
 
2705
 
 
2706
  if (result && ! parse_error) 
 
2707
    _result = true;
 
2708
  else 
 
2709
    _result = false;
 
2710
}
 
2711
 
 
2712
 
 
2713
} // namespace Puma
 
2714
 
 
2715
#line 167 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
2716
/* Next is all token values, in a form suitable for use by makeheaders.
 
2717
** This section will be null unless lemon is run with the -m switch.
 
2718
*/
 
2719
/* 
 
2720
** These constants (all generated automatically by the parser generator)
 
2721
** specify the various kinds of tokens (terminals) that the parser
 
2722
** understands. 
 
2723
**
 
2724
** Each symbol here is a terminal symbol in the grammar.
 
2725
*/
 
2726
/* Make sure the INTERFACE macro is defined.
 
2727
*/
 
2728
#ifndef INTERFACE
 
2729
# define INTERFACE 1
 
2730
#endif
 
2731
/* The next thing included is series of defines which control
 
2732
** various aspects of the generated parser.
 
2733
**    YYCODETYPE         is the data type used for storing terminal
 
2734
**                       and nonterminal numbers.  "unsigned char" is
 
2735
**                       used if there are fewer than 250 terminals
 
2736
**                       and nonterminals.  "int" is used otherwise.
 
2737
**    YYNOCODE           is a number of type YYCODETYPE which corresponds
 
2738
**                       to no legal terminal or nonterminal number.  This
 
2739
**                       number is used to fill in empty slots of the hash 
 
2740
**                       table.
 
2741
**    YYACTIONTYPE       is the data type used for storing terminal
 
2742
**                       and nonterminal numbers.  "unsigned char" is
 
2743
**                       used if there are fewer than 250 rules and
 
2744
**                       states combined.  "int" is used otherwise.
 
2745
**    PreExprParserTOKENTYPE     is the data type used for minor tokens given 
 
2746
**                       directly to the parser from the tokenizer.
 
2747
**    YYMINORTYPE        is the data type used for all minor tokens.
 
2748
**                       This is typically a union of many types, one of
 
2749
**                       which is PreExprParserTOKENTYPE.  The entry in the union
 
2750
**                       for base tokens is called "yy0".
 
2751
**    YYSTACKDEPTH       is the maximum depth of the parser's stack.
 
2752
**    PreExprParserARGDECL       is a declaration of a 3rd argument to the
 
2753
**                       parser, or null if there is no extra argument.
 
2754
**    PreExprParserKRARGDECL     A version of PreExprParserARGDECL for K&R C.
 
2755
**    PreExprParserANSIARGDECL   A version of PreExprParserARGDECL for ANSI C.
 
2756
**    YYNSTATE           the combined number of states.
 
2757
**    YYNRULE            the number of rules in the grammar
 
2758
**    YYERRORSYMBOL      is the code number of the error symbol.  If not
 
2759
**                       defined, then do no error processing.
 
2760
*/
 
2761
/*  */
 
2762
#define YYCODETYPE unsigned char
 
2763
#define YYNOCODE 39
 
2764
#define YYACTIONTYPE unsigned char
 
2765
#define PreExprParserTOKENTYPE char*
 
2766
typedef union {
 
2767
  PreExprParserTOKENTYPE yy0;
 
2768
  PreExpr* yy25;
 
2769
  int yy77;
 
2770
} YYMINORTYPE;
 
2771
#define YYSTACKDEPTH 1000
 
2772
#define PreExprParserARGDECL ,result
 
2773
#define PreExprParserXARGDECL int &result;
 
2774
#define PreExprParserANSIARGDECL ,int &result
 
2775
#define YYNSTATE 61
 
2776
#define YYNRULE 33
 
2777
#define YYERRORSYMBOL 34
 
2778
#define YYERRSYMDT yy77
 
2779
#define YY_NO_ACTION      (YYNSTATE+YYNRULE+2)
 
2780
#define YY_ACCEPT_ACTION  (YYNSTATE+YYNRULE+1)
 
2781
#define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)
 
2782
/* Next is the action table.  Each entry in this table contains
 
2783
**
 
2784
**  +  An integer which is the number representing the look-ahead
 
2785
**     token
 
2786
**
 
2787
**  +  An integer indicating what action to take.  Number (N) between
 
2788
**     0 and YYNSTATE-1 mean shift the look-ahead and go to state N.
 
2789
**     Numbers between YYNSTATE and YYNSTATE+YYNRULE-1 mean reduce by
 
2790
**     rule N-YYNSTATE.  Number YYNSTATE+YYNRULE means that a syntax
 
2791
**     error has occurred.  Number YYNSTATE+YYNRULE+1 means the parser
 
2792
**     accepts its input.
 
2793
**
 
2794
**  +  A pointer to the next entry with the same hash value.
 
2795
**
 
2796
** The action table is really a series of hash tables.  Each hash
 
2797
** table contains a number of entries which is a power of two.  The
 
2798
** "state" table (which follows) contains information about the starting
 
2799
** point and size of each hash table.
 
2800
*/
 
2801
 
 
2802
#line 2803 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2803
class WinIfExists;
 
2804
class WinImportHandler;
 
2805
class WinMacros;
 
2806
class CMatchSyntax;
 
2807
class ExtGnu;
 
2808
class ExtAC;
 
2809
class ExtACTree;
 
2810
class WinAsm;
 
2811
class WinDeclSpecs;
 
2812
class WinMemberExplSpec;
 
2813
class WinTypeKeywords;
 
2814
class PragmaOnceUnitState;
 
2815
class PragmaOnce;
 
2816
class CCExprResolve;
 
2817
class CExprResolve;
 
2818
 
 
2819
#line 252 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
2820
struct yyActionEntry {
 
2821
#line 2822 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
2822
  friend class ::WinIfExists;
 
2823
  friend class ::WinImportHandler;
 
2824
  friend class ::WinMacros;
 
2825
  friend class ::CMatchSyntax;
 
2826
  friend class ::ExtGnu;
 
2827
  friend class ::ExtAC;
 
2828
  friend class ::ExtACTree;
 
2829
  friend class ::WinAsm;
 
2830
  friend class ::WinDeclSpecs;
 
2831
  friend class ::WinMemberExplSpec;
 
2832
  friend class ::WinTypeKeywords;
 
2833
  friend class ::PragmaOnceUnitState;
 
2834
  friend class ::PragmaOnce;
 
2835
  friend class ::CCExprResolve;
 
2836
  friend class ::CExprResolve;
 
2837
 
 
2838
#line 252 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
2839
 
 
2840
  YYCODETYPE   lookahead;   /* The value of the look-ahead token */
 
2841
  YYACTIONTYPE action;      /* Action to take for this look-ahead */
 
2842
  struct yyActionEntry *next; /* Next look-ahead with the same hash, or NULL */
 
2843
};
 
2844
static struct yyActionEntry yyActionTable[] = {
 
2845
/* State 0 */
 
2846
  {  32,   1, &yyActionTable[   2] }, /* conditional_expression shift  1 */
 
2847
  {  33,   2, &yyActionTable[   6] }, /*    constant_expression shift  2 */
 
2848
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
2849
  {  35,  95, &yyActionTable[   8] }, /*         pre_expression accept */
 
2850
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
2851
  {  37,   7, &yyActionTable[   9] }, /*       unary_expression shift  7 */
 
2852
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
2853
  {  23,   9, &yyActionTable[  11] }, /*          TOK_EXPR_PLUS shift  9 */
 
2854
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
2855
  {  21,  17, &yyActionTable[  12] }, /*           TOK_EXPR_OCT shift  17 */
 
2856
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
2857
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
2858
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
2859
  {  29,  13, &yyActionTable[  14] }, /*         TOK_EXPR_TILDE shift  13 */
 
2860
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
2861
  {YYNOCODE,0,0}, /* Unused */
 
2862
/* State 1 */
 
2863
  {   0,  61, 0                    }, /*                      $ reduce 0 */
 
2864
/* State 2 */
 
2865
  {YYNOCODE,0,0}, /* Unused */
 
2866
  {   1,  27, 0                    }, /*           TOK_EXPR_AND shift  27 */
 
2867
  {   2,  33, 0                    }, /*        TOK_EXPR_BITAND shift  33 */
 
2868
  {   3,  29, 0                    }, /*         TOK_EXPR_BITOR shift  29 */
 
2869
  {   4,  31, 0                    }, /*        TOK_EXPR_BITXOR shift  31 */
 
2870
  {YYNOCODE,0,0}, /* Unused */
 
2871
  {YYNOCODE,0,0}, /* Unused */
 
2872
  {YYNOCODE,0,0}, /* Unused */
 
2873
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
2874
  {   9,  35, 0                    }, /*            TOK_EXPR_EQ shift  35 */
 
2875
  {YYNOCODE,0,0}, /* Unused */
 
2876
  {  11,  45, 0                    }, /*           TOK_EXPR_GEQ shift  45 */
 
2877
  {  12,  41, 0                    }, /*       TOK_EXPR_GREATER shift  41 */
 
2878
  {YYNOCODE,0,0}, /* Unused */
 
2879
  {  14,  43, 0                    }, /*           TOK_EXPR_LEQ shift  43 */
 
2880
  {  15,  39, 0                    }, /*          TOK_EXPR_LESS shift  39 */
 
2881
  {YYNOCODE,0,0}, /* Unused */
 
2882
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
2883
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
2884
  {YYNOCODE,0,0}, /* Unused */
 
2885
  {  20,  37, 0                    }, /*         TOK_EXPR_NOTEQ shift  37 */
 
2886
  {YYNOCODE,0,0}, /* Unused */
 
2887
  {  22,  25, 0                    }, /*            TOK_EXPR_OR shift  25 */
 
2888
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
2889
  {  24,   3, 0                    }, /*      TOK_EXPR_QUESTION shift  3 */
 
2890
  {YYNOCODE,0,0}, /* Unused */
 
2891
  {  26,  57, 0                    }, /*        TOK_EXPR_SHIFTL shift  57 */
 
2892
  {  27,  59, 0                    }, /*        TOK_EXPR_SHIFTR shift  59 */
 
2893
  {  28,  51, 0                    }, /*          TOK_EXPR_STAR shift  51 */
 
2894
  {YYNOCODE,0,0}, /* Unused */
 
2895
  {YYNOCODE,0,0}, /* Unused */
 
2896
  {YYNOCODE,0,0}, /* Unused */
 
2897
/* State 3 */
 
2898
  {  32,   4, &yyActionTable[  51] }, /* conditional_expression shift  4 */
 
2899
  {  33,   2, &yyActionTable[  55] }, /*    constant_expression shift  2 */
 
2900
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
2901
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
2902
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
2903
  {  37,   7, &yyActionTable[  57] }, /*       unary_expression shift  7 */
 
2904
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
2905
  {  23,   9, &yyActionTable[  58] }, /*          TOK_EXPR_PLUS shift  9 */
 
2906
  {  21,  17, &yyActionTable[  60] }, /*           TOK_EXPR_OCT shift  17 */
 
2907
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
2908
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
2909
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
2910
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
2911
  {  29,  13, &yyActionTable[  61] }, /*         TOK_EXPR_TILDE shift  13 */
 
2912
  {YYNOCODE,0,0}, /* Unused */
 
2913
  {YYNOCODE,0,0}, /* Unused */
 
2914
/* State 4 */
 
2915
  {   6,   5, 0                    }, /*         TOK_EXPR_COLON shift  5 */
 
2916
/* State 5 */
 
2917
  {  32,   6, &yyActionTable[  68] }, /* conditional_expression shift  6 */
 
2918
  {  33,   2, &yyActionTable[  72] }, /*    constant_expression shift  2 */
 
2919
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
2920
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
2921
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
2922
  {  37,   7, &yyActionTable[  74] }, /*       unary_expression shift  7 */
 
2923
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
2924
  {  23,   9, &yyActionTable[  75] }, /*          TOK_EXPR_PLUS shift  9 */
 
2925
  {  21,  17, &yyActionTable[  77] }, /*           TOK_EXPR_OCT shift  17 */
 
2926
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
2927
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
2928
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
2929
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
2930
  {  29,  13, &yyActionTable[  78] }, /*         TOK_EXPR_TILDE shift  13 */
 
2931
  {YYNOCODE,0,0}, /* Unused */
 
2932
  {YYNOCODE,0,0}, /* Unused */
 
2933
/* State 6 */
 
2934
  {YYNOCODE,0,0}, /* Unused */
 
2935
/* State 7 */
 
2936
  {YYNOCODE,0,0}, /* Unused */
 
2937
/* State 8 */
 
2938
  {YYNOCODE,0,0}, /* Unused */
 
2939
/* State 9 */
 
2940
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
2941
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
2942
  {  21,  17, &yyActionTable[  91] }, /*           TOK_EXPR_OCT shift  17 */
 
2943
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
2944
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
2945
  {  37,  10, &yyActionTable[  87] }, /*       unary_expression shift  10 */
 
2946
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
2947
  {  23,   9, &yyActionTable[  93] }, /*          TOK_EXPR_PLUS shift  9 */
 
2948
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
2949
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
2950
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
2951
  {YYNOCODE,0,0}, /* Unused */
 
2952
  {YYNOCODE,0,0}, /* Unused */
 
2953
  {  29,  13, &yyActionTable[  94] }, /*         TOK_EXPR_TILDE shift  13 */
 
2954
  {YYNOCODE,0,0}, /* Unused */
 
2955
  {YYNOCODE,0,0}, /* Unused */
 
2956
/* State 10 */
 
2957
  {YYNOCODE,0,0}, /* Unused */
 
2958
/* State 11 */
 
2959
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
2960
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
2961
  {  21,  17, &yyActionTable[ 108] }, /*           TOK_EXPR_OCT shift  17 */
 
2962
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
2963
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
2964
  {  37,  12, &yyActionTable[ 104] }, /*       unary_expression shift  12 */
 
2965
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
2966
  {  23,   9, &yyActionTable[ 110] }, /*          TOK_EXPR_PLUS shift  9 */
 
2967
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
2968
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
2969
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
2970
  {YYNOCODE,0,0}, /* Unused */
 
2971
  {YYNOCODE,0,0}, /* Unused */
 
2972
  {  29,  13, &yyActionTable[ 111] }, /*         TOK_EXPR_TILDE shift  13 */
 
2973
  {YYNOCODE,0,0}, /* Unused */
 
2974
  {YYNOCODE,0,0}, /* Unused */
 
2975
/* State 12 */
 
2976
  {YYNOCODE,0,0}, /* Unused */
 
2977
/* State 13 */
 
2978
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
2979
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
2980
  {  21,  17, &yyActionTable[ 125] }, /*           TOK_EXPR_OCT shift  17 */
 
2981
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
2982
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
2983
  {  37,  14, &yyActionTable[ 121] }, /*       unary_expression shift  14 */
 
2984
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
2985
  {  23,   9, &yyActionTable[ 127] }, /*          TOK_EXPR_PLUS shift  9 */
 
2986
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
2987
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
2988
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
2989
  {YYNOCODE,0,0}, /* Unused */
 
2990
  {YYNOCODE,0,0}, /* Unused */
 
2991
  {  29,  13, &yyActionTable[ 128] }, /*         TOK_EXPR_TILDE shift  13 */
 
2992
  {YYNOCODE,0,0}, /* Unused */
 
2993
  {YYNOCODE,0,0}, /* Unused */
 
2994
/* State 14 */
 
2995
  {YYNOCODE,0,0}, /* Unused */
 
2996
/* State 15 */
 
2997
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
2998
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
2999
  {  21,  17, &yyActionTable[ 142] }, /*           TOK_EXPR_OCT shift  17 */
 
3000
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3001
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3002
  {  37,  16, &yyActionTable[ 138] }, /*       unary_expression shift  16 */
 
3003
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3004
  {  23,   9, &yyActionTable[ 144] }, /*          TOK_EXPR_PLUS shift  9 */
 
3005
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3006
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3007
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3008
  {YYNOCODE,0,0}, /* Unused */
 
3009
  {YYNOCODE,0,0}, /* Unused */
 
3010
  {  29,  13, &yyActionTable[ 145] }, /*         TOK_EXPR_TILDE shift  13 */
 
3011
  {YYNOCODE,0,0}, /* Unused */
 
3012
  {YYNOCODE,0,0}, /* Unused */
 
3013
/* State 16 */
 
3014
  {YYNOCODE,0,0}, /* Unused */
 
3015
/* State 17 */
 
3016
  {YYNOCODE,0,0}, /* Unused */
 
3017
/* State 18 */
 
3018
  {YYNOCODE,0,0}, /* Unused */
 
3019
/* State 19 */
 
3020
  {YYNOCODE,0,0}, /* Unused */
 
3021
/* State 20 */
 
3022
  {YYNOCODE,0,0}, /* Unused */
 
3023
/* State 21 */
 
3024
  {YYNOCODE,0,0}, /* Unused */
 
3025
/* State 22 */
 
3026
  {  32,  23, &yyActionTable[ 160] }, /* conditional_expression shift  23 */
 
3027
  {  33,   2, &yyActionTable[ 164] }, /*    constant_expression shift  2 */
 
3028
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3029
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3030
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3031
  {  37,   7, &yyActionTable[ 166] }, /*       unary_expression shift  7 */
 
3032
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3033
  {  23,   9, &yyActionTable[ 167] }, /*          TOK_EXPR_PLUS shift  9 */
 
3034
  {  21,  17, &yyActionTable[ 169] }, /*           TOK_EXPR_OCT shift  17 */
 
3035
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3036
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3037
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3038
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3039
  {  29,  13, &yyActionTable[ 170] }, /*         TOK_EXPR_TILDE shift  13 */
 
3040
  {YYNOCODE,0,0}, /* Unused */
 
3041
  {YYNOCODE,0,0}, /* Unused */
 
3042
/* State 23 */
 
3043
  {  25,  24, 0                    }, /*        TOK_EXPR_RPAREN shift  24 */
 
3044
/* State 24 */
 
3045
  {YYNOCODE,0,0}, /* Unused */
 
3046
/* State 25 */
 
3047
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3048
  {  33,  26, &yyActionTable[ 178] }, /*    constant_expression shift  26 */
 
3049
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3050
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3051
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3052
  {  37,   7, &yyActionTable[ 182] }, /*       unary_expression shift  7 */
 
3053
  {  21,  17, &yyActionTable[ 184] }, /*           TOK_EXPR_OCT shift  17 */
 
3054
  {  23,   9, &yyActionTable[ 185] }, /*          TOK_EXPR_PLUS shift  9 */
 
3055
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3056
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3057
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3058
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3059
  {YYNOCODE,0,0}, /* Unused */
 
3060
  {  29,  13, &yyActionTable[ 187] }, /*         TOK_EXPR_TILDE shift  13 */
 
3061
  {YYNOCODE,0,0}, /* Unused */
 
3062
  {YYNOCODE,0,0}, /* Unused */
 
3063
/* State 26 */
 
3064
  {YYNOCODE,0,0}, /* Unused */
 
3065
  {   1,  27, 0                    }, /*           TOK_EXPR_AND shift  27 */
 
3066
  {   2,  33, 0                    }, /*        TOK_EXPR_BITAND shift  33 */
 
3067
  {   3,  29, 0                    }, /*         TOK_EXPR_BITOR shift  29 */
 
3068
  {   4,  31, 0                    }, /*        TOK_EXPR_BITXOR shift  31 */
 
3069
  {YYNOCODE,0,0}, /* Unused */
 
3070
  {YYNOCODE,0,0}, /* Unused */
 
3071
  {YYNOCODE,0,0}, /* Unused */
 
3072
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3073
  {   9,  35, 0                    }, /*            TOK_EXPR_EQ shift  35 */
 
3074
  {YYNOCODE,0,0}, /* Unused */
 
3075
  {  11,  45, 0                    }, /*           TOK_EXPR_GEQ shift  45 */
 
3076
  {  12,  41, 0                    }, /*       TOK_EXPR_GREATER shift  41 */
 
3077
  {YYNOCODE,0,0}, /* Unused */
 
3078
  {  14,  43, 0                    }, /*           TOK_EXPR_LEQ shift  43 */
 
3079
  {  15,  39, 0                    }, /*          TOK_EXPR_LESS shift  39 */
 
3080
  {YYNOCODE,0,0}, /* Unused */
 
3081
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3082
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3083
  {YYNOCODE,0,0}, /* Unused */
 
3084
  {  20,  37, 0                    }, /*         TOK_EXPR_NOTEQ shift  37 */
 
3085
  {YYNOCODE,0,0}, /* Unused */
 
3086
  {YYNOCODE,0,0}, /* Unused */
 
3087
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3088
  {YYNOCODE,0,0}, /* Unused */
 
3089
  {YYNOCODE,0,0}, /* Unused */
 
3090
  {  26,  57, 0                    }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3091
  {  27,  59, 0                    }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3092
  {  28,  51, 0                    }, /*          TOK_EXPR_STAR shift  51 */
 
3093
  {YYNOCODE,0,0}, /* Unused */
 
3094
  {YYNOCODE,0,0}, /* Unused */
 
3095
  {YYNOCODE,0,0}, /* Unused */
 
3096
/* State 27 */
 
3097
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3098
  {  33,  28, &yyActionTable[ 226] }, /*    constant_expression shift  28 */
 
3099
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3100
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3101
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3102
  {  37,   7, &yyActionTable[ 230] }, /*       unary_expression shift  7 */
 
3103
  {  21,  17, &yyActionTable[ 232] }, /*           TOK_EXPR_OCT shift  17 */
 
3104
  {  23,   9, &yyActionTable[ 233] }, /*          TOK_EXPR_PLUS shift  9 */
 
3105
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3106
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3107
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3108
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3109
  {YYNOCODE,0,0}, /* Unused */
 
3110
  {  29,  13, &yyActionTable[ 235] }, /*         TOK_EXPR_TILDE shift  13 */
 
3111
  {YYNOCODE,0,0}, /* Unused */
 
3112
  {YYNOCODE,0,0}, /* Unused */
 
3113
/* State 28 */
 
3114
  {   2,  33, 0                    }, /*        TOK_EXPR_BITAND shift  33 */
 
3115
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3116
  {  18,  55, &yyActionTable[ 240] }, /*           TOK_EXPR_MOD shift  55 */
 
3117
  {   3,  29, 0                    }, /*         TOK_EXPR_BITOR shift  29 */
 
3118
  {  20,  37, &yyActionTable[ 245] }, /*         TOK_EXPR_NOTEQ shift  37 */
 
3119
  {   4,  31, 0                    }, /*        TOK_EXPR_BITXOR shift  31 */
 
3120
  {  11,  45, 0                    }, /*           TOK_EXPR_GEQ shift  45 */
 
3121
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3122
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3123
  {   9,  35, 0                    }, /*            TOK_EXPR_EQ shift  35 */
 
3124
  {  26,  57, 0                    }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3125
  {  27,  59, &yyActionTable[ 246] }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3126
  {  28,  51, &yyActionTable[ 253] }, /*          TOK_EXPR_STAR shift  51 */
 
3127
  {  12,  41, 0                    }, /*       TOK_EXPR_GREATER shift  41 */
 
3128
  {  14,  43, 0                    }, /*           TOK_EXPR_LEQ shift  43 */
 
3129
  {  15,  39, 0                    }, /*          TOK_EXPR_LESS shift  39 */
 
3130
/* State 29 */
 
3131
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3132
  {  33,  30, &yyActionTable[ 258] }, /*    constant_expression shift  30 */
 
3133
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3134
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3135
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3136
  {  37,   7, &yyActionTable[ 262] }, /*       unary_expression shift  7 */
 
3137
  {  21,  17, &yyActionTable[ 264] }, /*           TOK_EXPR_OCT shift  17 */
 
3138
  {  23,   9, &yyActionTable[ 265] }, /*          TOK_EXPR_PLUS shift  9 */
 
3139
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3140
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3141
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3142
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3143
  {YYNOCODE,0,0}, /* Unused */
 
3144
  {  29,  13, &yyActionTable[ 267] }, /*         TOK_EXPR_TILDE shift  13 */
 
3145
  {YYNOCODE,0,0}, /* Unused */
 
3146
  {YYNOCODE,0,0}, /* Unused */
 
3147
/* State 30 */
 
3148
  {   2,  33, 0                    }, /*        TOK_EXPR_BITAND shift  33 */
 
3149
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3150
  {  18,  55, &yyActionTable[ 272] }, /*           TOK_EXPR_MOD shift  55 */
 
3151
  {   4,  31, 0                    }, /*        TOK_EXPR_BITXOR shift  31 */
 
3152
  {  20,  37, &yyActionTable[ 275] }, /*         TOK_EXPR_NOTEQ shift  37 */
 
3153
  {  11,  45, 0                    }, /*           TOK_EXPR_GEQ shift  45 */
 
3154
  {  12,  41, 0                    }, /*       TOK_EXPR_GREATER shift  41 */
 
3155
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3156
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3157
  {   9,  35, 0                    }, /*            TOK_EXPR_EQ shift  35 */
 
3158
  {  26,  57, 0                    }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3159
  {  27,  59, &yyActionTable[ 277] }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3160
  {  28,  51, &yyActionTable[ 278] }, /*          TOK_EXPR_STAR shift  51 */
 
3161
  {YYNOCODE,0,0}, /* Unused */
 
3162
  {  14,  43, 0                    }, /*           TOK_EXPR_LEQ shift  43 */
 
3163
  {  15,  39, 0                    }, /*          TOK_EXPR_LESS shift  39 */
 
3164
/* State 31 */
 
3165
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3166
  {  33,  32, &yyActionTable[ 290] }, /*    constant_expression shift  32 */
 
3167
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3168
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3169
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3170
  {  37,   7, &yyActionTable[ 294] }, /*       unary_expression shift  7 */
 
3171
  {  21,  17, &yyActionTable[ 296] }, /*           TOK_EXPR_OCT shift  17 */
 
3172
  {  23,   9, &yyActionTable[ 297] }, /*          TOK_EXPR_PLUS shift  9 */
 
3173
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3174
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3175
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3176
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3177
  {YYNOCODE,0,0}, /* Unused */
 
3178
  {  29,  13, &yyActionTable[ 299] }, /*         TOK_EXPR_TILDE shift  13 */
 
3179
  {YYNOCODE,0,0}, /* Unused */
 
3180
  {YYNOCODE,0,0}, /* Unused */
 
3181
/* State 32 */
 
3182
  {   2,  33, 0                    }, /*        TOK_EXPR_BITAND shift  33 */
 
3183
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3184
  {  18,  55, &yyActionTable[ 304] }, /*           TOK_EXPR_MOD shift  55 */
 
3185
  {  11,  45, 0                    }, /*           TOK_EXPR_GEQ shift  45 */
 
3186
  {  20,  37, 0                    }, /*         TOK_EXPR_NOTEQ shift  37 */
 
3187
  {  12,  41, 0                    }, /*       TOK_EXPR_GREATER shift  41 */
 
3188
  {YYNOCODE,0,0}, /* Unused */
 
3189
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3190
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3191
  {   9,  35, 0                    }, /*            TOK_EXPR_EQ shift  35 */
 
3192
  {  26,  57, 0                    }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3193
  {  27,  59, &yyActionTable[ 307] }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3194
  {  28,  51, &yyActionTable[ 309] }, /*          TOK_EXPR_STAR shift  51 */
 
3195
  {YYNOCODE,0,0}, /* Unused */
 
3196
  {  14,  43, 0                    }, /*           TOK_EXPR_LEQ shift  43 */
 
3197
  {  15,  39, 0                    }, /*          TOK_EXPR_LESS shift  39 */
 
3198
/* State 33 */
 
3199
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3200
  {  33,  34, &yyActionTable[ 322] }, /*    constant_expression shift  34 */
 
3201
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3202
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3203
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3204
  {  37,   7, &yyActionTable[ 326] }, /*       unary_expression shift  7 */
 
3205
  {  21,  17, &yyActionTable[ 328] }, /*           TOK_EXPR_OCT shift  17 */
 
3206
  {  23,   9, &yyActionTable[ 329] }, /*          TOK_EXPR_PLUS shift  9 */
 
3207
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3208
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3209
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3210
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3211
  {YYNOCODE,0,0}, /* Unused */
 
3212
  {  29,  13, &yyActionTable[ 331] }, /*         TOK_EXPR_TILDE shift  13 */
 
3213
  {YYNOCODE,0,0}, /* Unused */
 
3214
  {YYNOCODE,0,0}, /* Unused */
 
3215
/* State 34 */
 
3216
  {  11,  45, 0                    }, /*           TOK_EXPR_GEQ shift  45 */
 
3217
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3218
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3219
  {  12,  41, 0                    }, /*       TOK_EXPR_GREATER shift  41 */
 
3220
  {  20,  37, 0                    }, /*         TOK_EXPR_NOTEQ shift  37 */
 
3221
  {YYNOCODE,0,0}, /* Unused */
 
3222
  {YYNOCODE,0,0}, /* Unused */
 
3223
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3224
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3225
  {   9,  35, 0                    }, /*            TOK_EXPR_EQ shift  35 */
 
3226
  {  26,  57, 0                    }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3227
  {  27,  59, &yyActionTable[ 336] }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3228
  {  28,  51, &yyActionTable[ 339] }, /*          TOK_EXPR_STAR shift  51 */
 
3229
  {YYNOCODE,0,0}, /* Unused */
 
3230
  {  14,  43, 0                    }, /*           TOK_EXPR_LEQ shift  43 */
 
3231
  {  15,  39, 0                    }, /*          TOK_EXPR_LESS shift  39 */
 
3232
/* State 35 */
 
3233
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3234
  {  33,  36, &yyActionTable[ 354] }, /*    constant_expression shift  36 */
 
3235
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3236
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3237
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3238
  {  37,   7, &yyActionTable[ 358] }, /*       unary_expression shift  7 */
 
3239
  {  21,  17, &yyActionTable[ 360] }, /*           TOK_EXPR_OCT shift  17 */
 
3240
  {  23,   9, &yyActionTable[ 361] }, /*          TOK_EXPR_PLUS shift  9 */
 
3241
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3242
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3243
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3244
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3245
  {YYNOCODE,0,0}, /* Unused */
 
3246
  {  29,  13, &yyActionTable[ 363] }, /*         TOK_EXPR_TILDE shift  13 */
 
3247
  {YYNOCODE,0,0}, /* Unused */
 
3248
  {YYNOCODE,0,0}, /* Unused */
 
3249
/* State 36 */
 
3250
  {  11,  45, 0                    }, /*           TOK_EXPR_GEQ shift  45 */
 
3251
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3252
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3253
  {  12,  41, 0                    }, /*       TOK_EXPR_GREATER shift  41 */
 
3254
  {YYNOCODE,0,0}, /* Unused */
 
3255
  {YYNOCODE,0,0}, /* Unused */
 
3256
  {YYNOCODE,0,0}, /* Unused */
 
3257
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3258
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3259
  {YYNOCODE,0,0}, /* Unused */
 
3260
  {  26,  57, 0                    }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3261
  {  27,  59, &yyActionTable[ 368] }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3262
  {  28,  51, &yyActionTable[ 371] }, /*          TOK_EXPR_STAR shift  51 */
 
3263
  {YYNOCODE,0,0}, /* Unused */
 
3264
  {  14,  43, 0                    }, /*           TOK_EXPR_LEQ shift  43 */
 
3265
  {  15,  39, 0                    }, /*          TOK_EXPR_LESS shift  39 */
 
3266
/* State 37 */
 
3267
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3268
  {  33,  38, &yyActionTable[ 386] }, /*    constant_expression shift  38 */
 
3269
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3270
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3271
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3272
  {  37,   7, &yyActionTable[ 390] }, /*       unary_expression shift  7 */
 
3273
  {  21,  17, &yyActionTable[ 392] }, /*           TOK_EXPR_OCT shift  17 */
 
3274
  {  23,   9, &yyActionTable[ 393] }, /*          TOK_EXPR_PLUS shift  9 */
 
3275
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3276
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3277
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3278
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3279
  {YYNOCODE,0,0}, /* Unused */
 
3280
  {  29,  13, &yyActionTable[ 395] }, /*         TOK_EXPR_TILDE shift  13 */
 
3281
  {YYNOCODE,0,0}, /* Unused */
 
3282
  {YYNOCODE,0,0}, /* Unused */
 
3283
/* State 38 */
 
3284
  {  11,  45, 0                    }, /*           TOK_EXPR_GEQ shift  45 */
 
3285
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3286
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3287
  {  12,  41, 0                    }, /*       TOK_EXPR_GREATER shift  41 */
 
3288
  {YYNOCODE,0,0}, /* Unused */
 
3289
  {YYNOCODE,0,0}, /* Unused */
 
3290
  {YYNOCODE,0,0}, /* Unused */
 
3291
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3292
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3293
  {YYNOCODE,0,0}, /* Unused */
 
3294
  {  26,  57, 0                    }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3295
  {  27,  59, &yyActionTable[ 400] }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3296
  {  28,  51, &yyActionTable[ 403] }, /*          TOK_EXPR_STAR shift  51 */
 
3297
  {YYNOCODE,0,0}, /* Unused */
 
3298
  {  14,  43, 0                    }, /*           TOK_EXPR_LEQ shift  43 */
 
3299
  {  15,  39, 0                    }, /*          TOK_EXPR_LESS shift  39 */
 
3300
/* State 39 */
 
3301
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3302
  {  33,  40, &yyActionTable[ 418] }, /*    constant_expression shift  40 */
 
3303
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3304
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3305
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3306
  {  37,   7, &yyActionTable[ 422] }, /*       unary_expression shift  7 */
 
3307
  {  21,  17, &yyActionTable[ 424] }, /*           TOK_EXPR_OCT shift  17 */
 
3308
  {  23,   9, &yyActionTable[ 425] }, /*          TOK_EXPR_PLUS shift  9 */
 
3309
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3310
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3311
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3312
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3313
  {YYNOCODE,0,0}, /* Unused */
 
3314
  {  29,  13, &yyActionTable[ 427] }, /*         TOK_EXPR_TILDE shift  13 */
 
3315
  {YYNOCODE,0,0}, /* Unused */
 
3316
  {YYNOCODE,0,0}, /* Unused */
 
3317
/* State 40 */
 
3318
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3319
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3320
  {  26,  57, &yyActionTable[ 437] }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3321
  {  27,  59, 0                    }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3322
  {  28,  51, 0                    }, /*          TOK_EXPR_STAR shift  51 */
 
3323
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3324
  {YYNOCODE,0,0}, /* Unused */
 
3325
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3326
/* State 41 */
 
3327
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3328
  {  33,  42, &yyActionTable[ 442] }, /*    constant_expression shift  42 */
 
3329
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3330
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3331
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3332
  {  37,   7, &yyActionTable[ 446] }, /*       unary_expression shift  7 */
 
3333
  {  21,  17, &yyActionTable[ 448] }, /*           TOK_EXPR_OCT shift  17 */
 
3334
  {  23,   9, &yyActionTable[ 449] }, /*          TOK_EXPR_PLUS shift  9 */
 
3335
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3336
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3337
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3338
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3339
  {YYNOCODE,0,0}, /* Unused */
 
3340
  {  29,  13, &yyActionTable[ 451] }, /*         TOK_EXPR_TILDE shift  13 */
 
3341
  {YYNOCODE,0,0}, /* Unused */
 
3342
  {YYNOCODE,0,0}, /* Unused */
 
3343
/* State 42 */
 
3344
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3345
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3346
  {  26,  57, &yyActionTable[ 461] }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3347
  {  27,  59, 0                    }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3348
  {  28,  51, 0                    }, /*          TOK_EXPR_STAR shift  51 */
 
3349
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3350
  {YYNOCODE,0,0}, /* Unused */
 
3351
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3352
/* State 43 */
 
3353
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3354
  {  33,  44, &yyActionTable[ 466] }, /*    constant_expression shift  44 */
 
3355
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3356
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3357
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3358
  {  37,   7, &yyActionTable[ 470] }, /*       unary_expression shift  7 */
 
3359
  {  21,  17, &yyActionTable[ 472] }, /*           TOK_EXPR_OCT shift  17 */
 
3360
  {  23,   9, &yyActionTable[ 473] }, /*          TOK_EXPR_PLUS shift  9 */
 
3361
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3362
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3363
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3364
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3365
  {YYNOCODE,0,0}, /* Unused */
 
3366
  {  29,  13, &yyActionTable[ 475] }, /*         TOK_EXPR_TILDE shift  13 */
 
3367
  {YYNOCODE,0,0}, /* Unused */
 
3368
  {YYNOCODE,0,0}, /* Unused */
 
3369
/* State 44 */
 
3370
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3371
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3372
  {  26,  57, &yyActionTable[ 485] }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3373
  {  27,  59, 0                    }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3374
  {  28,  51, 0                    }, /*          TOK_EXPR_STAR shift  51 */
 
3375
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3376
  {YYNOCODE,0,0}, /* Unused */
 
3377
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3378
/* State 45 */
 
3379
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3380
  {  33,  46, &yyActionTable[ 490] }, /*    constant_expression shift  46 */
 
3381
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3382
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3383
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3384
  {  37,   7, &yyActionTable[ 494] }, /*       unary_expression shift  7 */
 
3385
  {  21,  17, &yyActionTable[ 496] }, /*           TOK_EXPR_OCT shift  17 */
 
3386
  {  23,   9, &yyActionTable[ 497] }, /*          TOK_EXPR_PLUS shift  9 */
 
3387
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3388
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3389
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3390
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3391
  {YYNOCODE,0,0}, /* Unused */
 
3392
  {  29,  13, &yyActionTable[ 499] }, /*         TOK_EXPR_TILDE shift  13 */
 
3393
  {YYNOCODE,0,0}, /* Unused */
 
3394
  {YYNOCODE,0,0}, /* Unused */
 
3395
/* State 46 */
 
3396
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3397
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3398
  {  26,  57, &yyActionTable[ 509] }, /*        TOK_EXPR_SHIFTL shift  57 */
 
3399
  {  27,  59, 0                    }, /*        TOK_EXPR_SHIFTR shift  59 */
 
3400
  {  28,  51, 0                    }, /*          TOK_EXPR_STAR shift  51 */
 
3401
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3402
  {YYNOCODE,0,0}, /* Unused */
 
3403
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3404
/* State 47 */
 
3405
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3406
  {  33,  48, &yyActionTable[ 514] }, /*    constant_expression shift  48 */
 
3407
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3408
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3409
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3410
  {  37,   7, &yyActionTable[ 518] }, /*       unary_expression shift  7 */
 
3411
  {  21,  17, &yyActionTable[ 520] }, /*           TOK_EXPR_OCT shift  17 */
 
3412
  {  23,   9, &yyActionTable[ 521] }, /*          TOK_EXPR_PLUS shift  9 */
 
3413
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3414
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3415
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3416
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3417
  {YYNOCODE,0,0}, /* Unused */
 
3418
  {  29,  13, &yyActionTable[ 523] }, /*         TOK_EXPR_TILDE shift  13 */
 
3419
  {YYNOCODE,0,0}, /* Unused */
 
3420
  {YYNOCODE,0,0}, /* Unused */
 
3421
/* State 48 */
 
3422
  {  28,  51, &yyActionTable[ 529] }, /*          TOK_EXPR_STAR shift  51 */
 
3423
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3424
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3425
  {YYNOCODE,0,0}, /* Unused */
 
3426
/* State 49 */
 
3427
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3428
  {  33,  50, &yyActionTable[ 534] }, /*    constant_expression shift  50 */
 
3429
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3430
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3431
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3432
  {  37,   7, &yyActionTable[ 538] }, /*       unary_expression shift  7 */
 
3433
  {  21,  17, &yyActionTable[ 540] }, /*           TOK_EXPR_OCT shift  17 */
 
3434
  {  23,   9, &yyActionTable[ 541] }, /*          TOK_EXPR_PLUS shift  9 */
 
3435
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3436
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3437
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3438
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3439
  {YYNOCODE,0,0}, /* Unused */
 
3440
  {  29,  13, &yyActionTable[ 543] }, /*         TOK_EXPR_TILDE shift  13 */
 
3441
  {YYNOCODE,0,0}, /* Unused */
 
3442
  {YYNOCODE,0,0}, /* Unused */
 
3443
/* State 50 */
 
3444
  {  28,  51, &yyActionTable[ 549] }, /*          TOK_EXPR_STAR shift  51 */
 
3445
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3446
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3447
  {YYNOCODE,0,0}, /* Unused */
 
3448
/* State 51 */
 
3449
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3450
  {  33,  52, &yyActionTable[ 554] }, /*    constant_expression shift  52 */
 
3451
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3452
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3453
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3454
  {  37,   7, &yyActionTable[ 558] }, /*       unary_expression shift  7 */
 
3455
  {  21,  17, &yyActionTable[ 560] }, /*           TOK_EXPR_OCT shift  17 */
 
3456
  {  23,   9, &yyActionTable[ 561] }, /*          TOK_EXPR_PLUS shift  9 */
 
3457
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3458
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3459
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3460
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3461
  {YYNOCODE,0,0}, /* Unused */
 
3462
  {  29,  13, &yyActionTable[ 563] }, /*         TOK_EXPR_TILDE shift  13 */
 
3463
  {YYNOCODE,0,0}, /* Unused */
 
3464
  {YYNOCODE,0,0}, /* Unused */
 
3465
/* State 52 */
 
3466
  {YYNOCODE,0,0}, /* Unused */
 
3467
/* State 53 */
 
3468
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3469
  {  33,  54, &yyActionTable[ 571] }, /*    constant_expression shift  54 */
 
3470
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3471
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3472
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3473
  {  37,   7, &yyActionTable[ 575] }, /*       unary_expression shift  7 */
 
3474
  {  21,  17, &yyActionTable[ 577] }, /*           TOK_EXPR_OCT shift  17 */
 
3475
  {  23,   9, &yyActionTable[ 578] }, /*          TOK_EXPR_PLUS shift  9 */
 
3476
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3477
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3478
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3479
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3480
  {YYNOCODE,0,0}, /* Unused */
 
3481
  {  29,  13, &yyActionTable[ 580] }, /*         TOK_EXPR_TILDE shift  13 */
 
3482
  {YYNOCODE,0,0}, /* Unused */
 
3483
  {YYNOCODE,0,0}, /* Unused */
 
3484
/* State 54 */
 
3485
  {YYNOCODE,0,0}, /* Unused */
 
3486
/* State 55 */
 
3487
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3488
  {  33,  56, &yyActionTable[ 588] }, /*    constant_expression shift  56 */
 
3489
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3490
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3491
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3492
  {  37,   7, &yyActionTable[ 592] }, /*       unary_expression shift  7 */
 
3493
  {  21,  17, &yyActionTable[ 594] }, /*           TOK_EXPR_OCT shift  17 */
 
3494
  {  23,   9, &yyActionTable[ 595] }, /*          TOK_EXPR_PLUS shift  9 */
 
3495
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3496
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3497
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3498
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3499
  {YYNOCODE,0,0}, /* Unused */
 
3500
  {  29,  13, &yyActionTable[ 597] }, /*         TOK_EXPR_TILDE shift  13 */
 
3501
  {YYNOCODE,0,0}, /* Unused */
 
3502
  {YYNOCODE,0,0}, /* Unused */
 
3503
/* State 56 */
 
3504
  {YYNOCODE,0,0}, /* Unused */
 
3505
/* State 57 */
 
3506
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3507
  {  33,  58, &yyActionTable[ 605] }, /*    constant_expression shift  58 */
 
3508
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3509
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3510
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3511
  {  37,   7, &yyActionTable[ 609] }, /*       unary_expression shift  7 */
 
3512
  {  21,  17, &yyActionTable[ 611] }, /*           TOK_EXPR_OCT shift  17 */
 
3513
  {  23,   9, &yyActionTable[ 612] }, /*          TOK_EXPR_PLUS shift  9 */
 
3514
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3515
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3516
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3517
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3518
  {YYNOCODE,0,0}, /* Unused */
 
3519
  {  29,  13, &yyActionTable[ 614] }, /*         TOK_EXPR_TILDE shift  13 */
 
3520
  {YYNOCODE,0,0}, /* Unused */
 
3521
  {YYNOCODE,0,0}, /* Unused */
 
3522
/* State 58 */
 
3523
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3524
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3525
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3526
  {YYNOCODE,0,0}, /* Unused */
 
3527
  {  28,  51, 0                    }, /*          TOK_EXPR_STAR shift  51 */
 
3528
  {YYNOCODE,0,0}, /* Unused */
 
3529
  {YYNOCODE,0,0}, /* Unused */
 
3530
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3531
/* State 59 */
 
3532
  {  16,  22, 0                    }, /*        TOK_EXPR_LPAREN shift  22 */
 
3533
  {  33,  60, &yyActionTable[ 629] }, /*    constant_expression shift  60 */
 
3534
  {  17,  11, 0                    }, /*         TOK_EXPR_MINUS shift  11 */
 
3535
  {  19,  15, 0                    }, /*           TOK_EXPR_NOT shift  15 */
 
3536
  {  36,   8, 0                    }, /*     primary_expression shift  8 */
 
3537
  {  37,   7, &yyActionTable[ 633] }, /*       unary_expression shift  7 */
 
3538
  {  21,  17, &yyActionTable[ 635] }, /*           TOK_EXPR_OCT shift  17 */
 
3539
  {  23,   9, &yyActionTable[ 636] }, /*          TOK_EXPR_PLUS shift  9 */
 
3540
  {   5,  20, 0                    }, /*          TOK_EXPR_CHAR shift  20 */
 
3541
  {   7,  18, 0                    }, /*           TOK_EXPR_DEC shift  18 */
 
3542
  {  10,  21, 0                    }, /*         TOK_EXPR_FLOAT shift  21 */
 
3543
  {  13,  19, 0                    }, /*           TOK_EXPR_HEX shift  19 */
 
3544
  {YYNOCODE,0,0}, /* Unused */
 
3545
  {  29,  13, &yyActionTable[ 638] }, /*         TOK_EXPR_TILDE shift  13 */
 
3546
  {YYNOCODE,0,0}, /* Unused */
 
3547
  {YYNOCODE,0,0}, /* Unused */
 
3548
/* State 60 */
 
3549
  {   8,  53, 0                    }, /*           TOK_EXPR_DIV shift  53 */
 
3550
  {  17,  49, 0                    }, /*         TOK_EXPR_MINUS shift  49 */
 
3551
  {  18,  55, 0                    }, /*           TOK_EXPR_MOD shift  55 */
 
3552
  {YYNOCODE,0,0}, /* Unused */
 
3553
  {  28,  51, 0                    }, /*          TOK_EXPR_STAR shift  51 */
 
3554
  {YYNOCODE,0,0}, /* Unused */
 
3555
  {YYNOCODE,0,0}, /* Unused */
 
3556
  {  23,  47, 0                    }, /*          TOK_EXPR_PLUS shift  47 */
 
3557
};
 
3558
 
 
3559
/* The state table contains information needed to look up the correct
 
3560
** action in the action table, given the current state of the parser.
 
3561
** Information needed includes:
 
3562
**
 
3563
**  +  A pointer to the start of the action hash table in yyActionTable.
 
3564
**
 
3565
**  +  A mask used to hash the look-ahead token.  The mask is an integer
 
3566
**     which is one less than the size of the hash table.  
 
3567
**
 
3568
**  +  The default action.  This is the action to take if no entry for
 
3569
**     the given look-ahead is found in the action hash table.
 
3570
*/
 
3571
 
 
3572
#line 3573 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
3573
class WinIfExists;
 
3574
class WinImportHandler;
 
3575
class WinMacros;
 
3576
class CMatchSyntax;
 
3577
class ExtGnu;
 
3578
class ExtAC;
 
3579
class ExtACTree;
 
3580
class WinAsm;
 
3581
class WinDeclSpecs;
 
3582
class WinMemberExplSpec;
 
3583
class WinTypeKeywords;
 
3584
class PragmaOnceUnitState;
 
3585
class PragmaOnce;
 
3586
class CCExprResolve;
 
3587
class CExprResolve;
 
3588
 
 
3589
#line 984 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
3590
struct yyStateEntry {
 
3591
#line 3592 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
3592
  friend class ::WinIfExists;
 
3593
  friend class ::WinImportHandler;
 
3594
  friend class ::WinMacros;
 
3595
  friend class ::CMatchSyntax;
 
3596
  friend class ::ExtGnu;
 
3597
  friend class ::ExtAC;
 
3598
  friend class ::ExtACTree;
 
3599
  friend class ::WinAsm;
 
3600
  friend class ::WinDeclSpecs;
 
3601
  friend class ::WinMemberExplSpec;
 
3602
  friend class ::WinTypeKeywords;
 
3603
  friend class ::PragmaOnceUnitState;
 
3604
  friend class ::PragmaOnce;
 
3605
  friend class ::CCExprResolve;
 
3606
  friend class ::CExprResolve;
 
3607
 
 
3608
#line 984 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
3609
 
 
3610
  struct yyActionEntry *hashtbl; /* Start of the hash table in yyActionTable */
 
3611
  int mask;                      /* Mask used for hashing the look-ahead */
 
3612
  YYACTIONTYPE actionDefault;    /* Default action if look-ahead not found */
 
3613
};
 
3614
static struct yyStateEntry yyStateTable[] = {
 
3615
  { &yyActionTable[0], 15, 94},
 
3616
  { &yyActionTable[16], 0, 94},
 
3617
  { &yyActionTable[17], 31, 62},
 
3618
  { &yyActionTable[49], 15, 94},
 
3619
  { &yyActionTable[65], 0, 94},
 
3620
  { &yyActionTable[66], 15, 94},
 
3621
  { &yyActionTable[82], 0, 63},
 
3622
  { &yyActionTable[83], 0, 82},
 
3623
  { &yyActionTable[84], 0, 83},
 
3624
  { &yyActionTable[85], 15, 94},
 
3625
  { &yyActionTable[101], 0, 84},
 
3626
  { &yyActionTable[102], 15, 94},
 
3627
  { &yyActionTable[118], 0, 85},
 
3628
  { &yyActionTable[119], 15, 94},
 
3629
  { &yyActionTable[135], 0, 86},
 
3630
  { &yyActionTable[136], 15, 94},
 
3631
  { &yyActionTable[152], 0, 87},
 
3632
  { &yyActionTable[153], 0, 88},
 
3633
  { &yyActionTable[154], 0, 89},
 
3634
  { &yyActionTable[155], 0, 90},
 
3635
  { &yyActionTable[156], 0, 91},
 
3636
  { &yyActionTable[157], 0, 92},
 
3637
  { &yyActionTable[158], 15, 94},
 
3638
  { &yyActionTable[174], 0, 94},
 
3639
  { &yyActionTable[175], 0, 93},
 
3640
  { &yyActionTable[176], 15, 94},
 
3641
  { &yyActionTable[192], 31, 64},
 
3642
  { &yyActionTable[224], 15, 94},
 
3643
  { &yyActionTable[240], 15, 65},
 
3644
  { &yyActionTable[256], 15, 94},
 
3645
  { &yyActionTable[272], 15, 66},
 
3646
  { &yyActionTable[288], 15, 94},
 
3647
  { &yyActionTable[304], 15, 67},
 
3648
  { &yyActionTable[320], 15, 94},
 
3649
  { &yyActionTable[336], 15, 68},
 
3650
  { &yyActionTable[352], 15, 94},
 
3651
  { &yyActionTable[368], 15, 69},
 
3652
  { &yyActionTable[384], 15, 94},
 
3653
  { &yyActionTable[400], 15, 70},
 
3654
  { &yyActionTable[416], 15, 94},
 
3655
  { &yyActionTable[432], 7, 71},
 
3656
  { &yyActionTable[440], 15, 94},
 
3657
  { &yyActionTable[456], 7, 72},
 
3658
  { &yyActionTable[464], 15, 94},
 
3659
  { &yyActionTable[480], 7, 73},
 
3660
  { &yyActionTable[488], 15, 94},
 
3661
  { &yyActionTable[504], 7, 74},
 
3662
  { &yyActionTable[512], 15, 94},
 
3663
  { &yyActionTable[528], 3, 75},
 
3664
  { &yyActionTable[532], 15, 94},
 
3665
  { &yyActionTable[548], 3, 76},
 
3666
  { &yyActionTable[552], 15, 94},
 
3667
  { &yyActionTable[568], 0, 77},
 
3668
  { &yyActionTable[569], 15, 94},
 
3669
  { &yyActionTable[585], 0, 78},
 
3670
  { &yyActionTable[586], 15, 94},
 
3671
  { &yyActionTable[602], 0, 79},
 
3672
  { &yyActionTable[603], 15, 94},
 
3673
  { &yyActionTable[619], 7, 80},
 
3674
  { &yyActionTable[627], 15, 94},
 
3675
  { &yyActionTable[643], 7, 81},
 
3676
};
 
3677
 
 
3678
/* The following structure represents a single element of the
 
3679
** parser's stack.  Information stored includes:
 
3680
**
 
3681
**   +  The state number for the parser at this level of the stack.
 
3682
**
 
3683
**   +  The value of the token stored at this level of the stack.
 
3684
**      (In other words, the "major" token.)
 
3685
**
 
3686
**   +  The semantic value stored at this level of the stack.  This is
 
3687
**      the information used by the action routines in the grammar.
 
3688
**      It is sometimes called the "minor" token.
 
3689
*/
 
3690
 
 
3691
#line 3692 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
3692
class WinIfExists;
 
3693
class WinImportHandler;
 
3694
class WinMacros;
 
3695
class CMatchSyntax;
 
3696
class ExtGnu;
 
3697
class ExtAC;
 
3698
class ExtACTree;
 
3699
class WinAsm;
 
3700
class WinDeclSpecs;
 
3701
class WinMemberExplSpec;
 
3702
class WinTypeKeywords;
 
3703
class PragmaOnceUnitState;
 
3704
class PragmaOnce;
 
3705
class CCExprResolve;
 
3706
class CExprResolve;
 
3707
 
 
3708
#line 1065 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
3709
struct yyStackEntry {
 
3710
#line 3711 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
3711
  friend class ::WinIfExists;
 
3712
  friend class ::WinImportHandler;
 
3713
  friend class ::WinMacros;
 
3714
  friend class ::CMatchSyntax;
 
3715
  friend class ::ExtGnu;
 
3716
  friend class ::ExtAC;
 
3717
  friend class ::ExtACTree;
 
3718
  friend class ::WinAsm;
 
3719
  friend class ::WinDeclSpecs;
 
3720
  friend class ::WinMemberExplSpec;
 
3721
  friend class ::WinTypeKeywords;
 
3722
  friend class ::PragmaOnceUnitState;
 
3723
  friend class ::PragmaOnce;
 
3724
  friend class ::CCExprResolve;
 
3725
  friend class ::CExprResolve;
 
3726
 
 
3727
#line 1065 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
3728
 
 
3729
  int stateno;       /* The state-number */
 
3730
  int major;         /* The major token value.  This is the code
 
3731
                     ** number for the token at this stack level */
 
3732
  YYMINORTYPE minor; /* The user-supplied minor token value.  This
 
3733
                     ** is the value of the token  */
 
3734
};
 
3735
 
 
3736
/* The state of the parser is completely contained in an instance of
 
3737
** the following structure */
 
3738
 
 
3739
#line 3740 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
3740
class WinIfExists;
 
3741
class WinImportHandler;
 
3742
class WinMacros;
 
3743
class CMatchSyntax;
 
3744
class ExtGnu;
 
3745
class ExtAC;
 
3746
class ExtACTree;
 
3747
class WinAsm;
 
3748
class WinDeclSpecs;
 
3749
class WinMemberExplSpec;
 
3750
class WinTypeKeywords;
 
3751
class PragmaOnceUnitState;
 
3752
class PragmaOnce;
 
3753
class CCExprResolve;
 
3754
class CExprResolve;
 
3755
 
 
3756
#line 1075 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
3757
struct yyParser {
 
3758
#line 3759 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
3759
  friend class ::WinIfExists;
 
3760
  friend class ::WinImportHandler;
 
3761
  friend class ::WinMacros;
 
3762
  friend class ::CMatchSyntax;
 
3763
  friend class ::ExtGnu;
 
3764
  friend class ::ExtAC;
 
3765
  friend class ::ExtACTree;
 
3766
  friend class ::WinAsm;
 
3767
  friend class ::WinDeclSpecs;
 
3768
  friend class ::WinMemberExplSpec;
 
3769
  friend class ::WinTypeKeywords;
 
3770
  friend class ::PragmaOnceUnitState;
 
3771
  friend class ::PragmaOnce;
 
3772
  friend class ::CCExprResolve;
 
3773
  friend class ::CExprResolve;
 
3774
 
 
3775
#line 1075 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
3776
 
 
3777
  int idx;                            /* Index of top element in stack */
 
3778
  int errcnt;                         /* Shifts left before out of the error */
 
3779
  struct yyStackEntry *top;           /* Pointer to the top stack element */
 
3780
  struct yyStackEntry stack[YYSTACKDEPTH];  /* The parser's stack */
 
3781
};
 
3782
typedef struct yyParser yyParser;
 
3783
 
 
3784
#ifndef NDEBUG
 
3785
#include <stdio.h>
 
3786
static FILE *yyTraceFILE = 0;
 
3787
static char *yyTracePrompt = 0;
 
3788
 
 
3789
/* 
 
3790
** Turn parser tracing on by giving a stream to which to write the trace
 
3791
** and a prompt to preface each trace message.  Tracing is turned off
 
3792
** by making either argument NULL 
 
3793
**
 
3794
** Inputs:
 
3795
** <ul>
 
3796
** <li> A FILE* to which trace output should be written.
 
3797
**      If NULL, then tracing is turned off.
 
3798
** <li> A prefix string written at the beginning of every
 
3799
**      line of trace output.  If NULL, then tracing is
 
3800
**      turned off.
 
3801
** </ul>
 
3802
**
 
3803
** Outputs:
 
3804
** None.
 
3805
*/
 
3806
void PreExprParserTrace(FILE *TraceFILE, char *zTracePrompt){
 
3807
  yyTraceFILE = TraceFILE;
 
3808
  yyTracePrompt = zTracePrompt;
 
3809
  if( yyTraceFILE==0 ) yyTracePrompt = 0;
 
3810
  else if( yyTracePrompt==0 ) yyTraceFILE = 0;
 
3811
}
 
3812
 
 
3813
/* For tracing shifts, the names of all terminals and nonterminals
 
3814
** are required.  The following table supplies these names */
 
3815
static char *yyTokenName[] = { 
 
3816
  "$",             "TOK_EXPR_AND",  "TOK_EXPR_BITAND",  "TOK_EXPR_BITOR",
 
3817
  "TOK_EXPR_BITXOR",  "TOK_EXPR_CHAR",  "TOK_EXPR_COLON",  "TOK_EXPR_DEC",
 
3818
  "TOK_EXPR_DIV",  "TOK_EXPR_EQ",   "TOK_EXPR_FLOAT",  "TOK_EXPR_GEQ",
 
3819
  "TOK_EXPR_GREATER",  "TOK_EXPR_HEX",  "TOK_EXPR_LEQ",  "TOK_EXPR_LESS",
 
3820
  "TOK_EXPR_LPAREN",  "TOK_EXPR_MINUS",  "TOK_EXPR_MOD",  "TOK_EXPR_NOT",
 
3821
  "TOK_EXPR_NOTEQ",  "TOK_EXPR_OCT",  "TOK_EXPR_OR",   "TOK_EXPR_PLUS",
 
3822
  "TOK_EXPR_QUESTION",  "TOK_EXPR_RPAREN",  "TOK_EXPR_SHIFTL",  "TOK_EXPR_SHIFTR",
 
3823
  "TOK_EXPR_STAR",  "TOK_EXPR_TILDE",  "TOK_EXPR_WSPACE",  "TOK_PRE_UNARY",
 
3824
  "conditional_expression",  "constant_expression",  "error",         "pre_expression",
 
3825
  "primary_expression",  "unary_expression",
 
3826
};
 
3827
#define YYTRACE(X) if( yyTraceFILE ) fprintf(yyTraceFILE,"%sReduce [%s].\n",yyTracePrompt,X);
 
3828
#else
 
3829
#define YYTRACE(X)
 
3830
#endif
 
3831
 
 
3832
/* 
 
3833
** This function allocates a new parser.
 
3834
** The only argument is a pointer to a function which works like
 
3835
** malloc.
 
3836
**
 
3837
** Inputs:
 
3838
** A pointer to the function used to allocate memory.
 
3839
**
 
3840
** Outputs:
 
3841
** A pointer to a parser.  This pointer is used in subsequent calls
 
3842
** to PreExprParser and PreExprParserFree.
 
3843
*/
 
3844
void *PreExprParserAlloc(void *(*mallocProc)(...)){
 
3845
  yyParser *pParser;
 
3846
  pParser = (yyParser*)(*mallocProc)( sizeof(yyParser), __FILE__, __LINE__ );
 
3847
  if( pParser ){
 
3848
    pParser->idx = -1;
 
3849
  }
 
3850
  return pParser;
 
3851
}
 
3852
 
 
3853
/* The following function deletes the value associated with a
 
3854
** symbol.  The symbol can be either a terminal or nonterminal.
 
3855
** "yymajor" is the symbol code, and "yypminor" is a pointer to
 
3856
** the value.
 
3857
*/
 
3858
static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
 
3859
  switch( yymajor ){
 
3860
    /* Here is inserted the actions which take place when a
 
3861
    ** terminal or non-terminal is destroyed.  This can happen
 
3862
    ** when the symbol is popped from the stack during a
 
3863
    ** reduce or during error processing or when a parser is 
 
3864
    ** being destroyed before it is finished parsing.
 
3865
    **
 
3866
    ** Note: during a reduce, the only symbols destroyed are those
 
3867
    ** which appear on the RHS of the rule, but which are not used
 
3868
    ** inside the C code.
 
3869
    */
 
3870
    default:  break;   /* If no destructor action specified: do nothing */
 
3871
  }
 
3872
}
 
3873
 
 
3874
/*
 
3875
** Pop the parser's stack once.
 
3876
**
 
3877
** If there is a destructor routine associated with the token which
 
3878
** is popped from the stack, then call it.
 
3879
**
 
3880
** Return the major token number for the symbol popped.
 
3881
*/
 
3882
static int yy_pop_parser_stack(yyParser *pParser){
 
3883
  YYCODETYPE yymajor;
 
3884
 
 
3885
  if( pParser->idx<0 ) return 0;
 
3886
#ifndef NDEBUG
 
3887
  if( yyTraceFILE && pParser->idx>=0 ){
 
3888
    fprintf(yyTraceFILE,"%sPopping %s\n",
 
3889
      yyTracePrompt,
 
3890
      yyTokenName[pParser->top->major]);
 
3891
  }
 
3892
#endif
 
3893
  yymajor = pParser->top->major;
 
3894
  yy_destructor( yymajor, &pParser->top->minor);
 
3895
  pParser->idx--;
 
3896
  pParser->top--;
 
3897
  return yymajor;
 
3898
}
 
3899
 
 
3900
/* 
 
3901
** Deallocate and destroy a parser.  Destructors are all called for
 
3902
** all stack elements before shutting the parser down.
 
3903
**
 
3904
** Inputs:
 
3905
** <ul>
 
3906
** <li>  A pointer to the parser.  This should be a pointer
 
3907
**       obtained from PreExprParserAlloc.
 
3908
** <li>  A pointer to a function used to reclaim memory obtained
 
3909
**       from malloc.
 
3910
** </ul>
 
3911
*/
 
3912
void PreExprParserFree(
 
3913
  void *p,               /* The parser to be deleted */
 
3914
  void (*freeProc)(...)     /* Function used to reclaim memory */
 
3915
){
 
3916
  yyParser *pParser = (yyParser*)p;
 
3917
  if( pParser==0 ) return;
 
3918
  while( pParser->idx>=0 ) yy_pop_parser_stack(pParser);
 
3919
  (*freeProc)(pParser, __FILE__, __LINE__);
 
3920
}
 
3921
 
 
3922
/*
 
3923
** Find the appropriate action for a parser given the look-ahead token.
 
3924
**
 
3925
** If the look-ahead token is YYNOCODE, then check to see if the action is
 
3926
** independent of the look-ahead.  If it is, return the action, otherwise
 
3927
** return YY_NO_ACTION.
 
3928
*/
 
3929
static int yy_find_parser_action(
 
3930
  yyParser *pParser,        /* The parser */
 
3931
  int iLookAhead             /* The look-ahead token */
 
3932
){
 
3933
  struct yyStateEntry *pState;   /* Appropriate entry in the state table */
 
3934
  struct yyActionEntry *pAction; /* Action appropriate for the look-ahead */
 
3935
 
 
3936
  /* if( pParser->idx<0 ) return YY_NO_ACTION;  */
 
3937
  pState = &yyStateTable[pParser->top->stateno];
 
3938
  if( iLookAhead!=YYNOCODE ){
 
3939
    pAction = &pState->hashtbl[iLookAhead & pState->mask];
 
3940
    while( pAction ){
 
3941
      if( pAction->lookahead==iLookAhead ) return pAction->action;
 
3942
      pAction = pAction->next;
 
3943
    }
 
3944
  }else if( pState->mask!=0 || pState->hashtbl->lookahead!=YYNOCODE ){
 
3945
    return YY_NO_ACTION;
 
3946
  }
 
3947
  return pState->actionDefault;
 
3948
}
 
3949
 
 
3950
/*
 
3951
** Perform a shift action.
 
3952
*/
 
3953
static void yy_shift(
 
3954
  yyParser *yypParser,          /* The parser to be shifted */
 
3955
  int yyNewState,               /* The new state to shift in */
 
3956
  int yyMajor,                  /* The major token to shift in */
 
3957
  YYMINORTYPE *yypMinor         /* Pointer ot the minor token to shift in */
 
3958
){
 
3959
  yypParser->idx++;
 
3960
  yypParser->top++;
 
3961
  if( yypParser->idx>=YYSTACKDEPTH ){
 
3962
     yypParser->idx--;
 
3963
     yypParser->top--;
 
3964
#ifndef NDEBUG
 
3965
     if( yyTraceFILE ){
 
3966
       fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
 
3967
     }
 
3968
#endif
 
3969
     while( yypParser->idx>=0 ) yy_pop_parser_stack(yypParser);
 
3970
     /* Here code is inserted which will execute if the parser
 
3971
     ** stack every overflows */
 
3972
#line 197 "cpp/PreExprParser.lem"
 
3973
 
 
3974
  *err << location << sev_fatal 
 
3975
       << "Giving up. Preprocessor expression parser stack overflow (>1000)" 
 
3976
       << endMessage;
 
3977
  parse_error = true;
 
3978
 
 
3979
#line 1278 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
3980
     return;
 
3981
  }
 
3982
  yypParser->top->stateno = yyNewState;
 
3983
  yypParser->top->major = yyMajor;
 
3984
  yypParser->top->minor = *yypMinor;
 
3985
#ifndef NDEBUG
 
3986
  if( yyTraceFILE && yypParser->idx>0 ){
 
3987
    int i;
 
3988
    fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
 
3989
    fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
 
3990
    for(i=1; i<=yypParser->idx; i++)
 
3991
      fprintf(yyTraceFILE," %s",yyTokenName[yypParser->stack[i].major]);
 
3992
    fprintf(yyTraceFILE,"\n");
 
3993
  }
 
3994
#endif
 
3995
}
 
3996
 
 
3997
/* The following table contains information about every rule that
 
3998
** is used during the reduce.
 
3999
*/
 
4000
 
 
4001
#line 4002 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
4002
class WinIfExists;
 
4003
class WinImportHandler;
 
4004
class WinMacros;
 
4005
class CMatchSyntax;
 
4006
class ExtGnu;
 
4007
class ExtAC;
 
4008
class ExtACTree;
 
4009
class WinAsm;
 
4010
class WinDeclSpecs;
 
4011
class WinMemberExplSpec;
 
4012
class WinTypeKeywords;
 
4013
class PragmaOnceUnitState;
 
4014
class PragmaOnce;
 
4015
class CCExprResolve;
 
4016
class CExprResolve;
 
4017
 
 
4018
#line 1299 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4019
static struct {
 
4020
#line 4021 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
4021
  friend class ::WinIfExists;
 
4022
  friend class ::WinImportHandler;
 
4023
  friend class ::WinMacros;
 
4024
  friend class ::CMatchSyntax;
 
4025
  friend class ::ExtGnu;
 
4026
  friend class ::ExtAC;
 
4027
  friend class ::ExtACTree;
 
4028
  friend class ::WinAsm;
 
4029
  friend class ::WinDeclSpecs;
 
4030
  friend class ::WinMemberExplSpec;
 
4031
  friend class ::WinTypeKeywords;
 
4032
  friend class ::PragmaOnceUnitState;
 
4033
  friend class ::PragmaOnce;
 
4034
  friend class ::CCExprResolve;
 
4035
  friend class ::CExprResolve;
 
4036
 
 
4037
#line 1299 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4038
 
 
4039
  YYCODETYPE lhs;         /* Symbol on the left-hand side of the rule */
 
4040
  unsigned char nrhs;     /* Number of right-hand side symbols in the rule */
 
4041
} yyRuleInfo[] = {
 
4042
  { 35, 1 },
 
4043
  { 32, 1 },
 
4044
  { 32, 5 },
 
4045
  { 33, 3 },
 
4046
  { 33, 3 },
 
4047
  { 33, 3 },
 
4048
  { 33, 3 },
 
4049
  { 33, 3 },
 
4050
  { 33, 3 },
 
4051
  { 33, 3 },
 
4052
  { 33, 3 },
 
4053
  { 33, 3 },
 
4054
  { 33, 3 },
 
4055
  { 33, 3 },
 
4056
  { 33, 3 },
 
4057
  { 33, 3 },
 
4058
  { 33, 3 },
 
4059
  { 33, 3 },
 
4060
  { 33, 3 },
 
4061
  { 33, 3 },
 
4062
  { 33, 3 },
 
4063
  { 33, 1 },
 
4064
  { 37, 1 },
 
4065
  { 37, 2 },
 
4066
  { 37, 2 },
 
4067
  { 37, 2 },
 
4068
  { 37, 2 },
 
4069
  { 36, 1 },
 
4070
  { 36, 1 },
 
4071
  { 36, 1 },
 
4072
  { 36, 1 },
 
4073
  { 36, 1 },
 
4074
  { 36, 3 },
 
4075
};
 
4076
 
 
4077
static void yy_accept(
 
4078
  yyParser *yypParser           /* The parser */
 
4079
  PreExprParserANSIARGDECL              /* Extra arguments (if any) */
 
4080
);  /* Forward declaration */
 
4081
 
 
4082
/*
 
4083
** Perform a reduce action and the shift that must immediately
 
4084
** follow the reduce.
 
4085
*/
 
4086
static void yy_reduce(
 
4087
  yyParser *yypParser,         /* The parser */
 
4088
  int yyruleno                 /* Number of the rule by which to reduce */
 
4089
  PreExprParserANSIARGDECL
 
4090
){
 
4091
  int yygoto;                     /* The next state */
 
4092
  int yyact;                      /* The next action */
 
4093
  YYMINORTYPE yygotominor;        /* The LHS of the rule reduced */
 
4094
  struct yyStackEntry *yymsp;     /* The top of the parser's stack */
 
4095
  int yysize;                     /* Amount to pop the stack */
 
4096
  yymsp = yypParser->top;
 
4097
  switch( yyruleno ){
 
4098
  /* Beginning here are the reduction cases.  A typical example
 
4099
  ** follows:
 
4100
  **   case 0:
 
4101
  **     YYTRACE("<text of the rule>");
 
4102
  **  #line <lineno> <grammarfile>
 
4103
  **     { ... }           // User supplied code
 
4104
  **  #line <lineno> <thisfile>
 
4105
  **     break;
 
4106
  */
 
4107
      case 0:
 
4108
        YYTRACE("pre_expression ::= conditional_expression")
 
4109
#line 220 "cpp/PreExprParser.lem"
 
4110
{        
 
4111
        if (yymsp[0].minor.yy25->val > 0) result = 1; 
 
4112
        else result = 0;         
 
4113
        delete yymsp[0].minor.yy25;
 
4114
    }
 
4115
#line 1376 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4116
        break;
 
4117
      case 1:
 
4118
        YYTRACE("conditional_expression ::= constant_expression")
 
4119
#line 231 "cpp/PreExprParser.lem"
 
4120
{        
 
4121
        yygotominor.yy25 = yymsp[0].minor.yy25;
 
4122
    }
 
4123
#line 1384 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4124
        break;
 
4125
      case 2:
 
4126
        YYTRACE("conditional_expression ::= constant_expression TOK_EXPR_QUESTION conditional_expression TOK_EXPR_COLON conditional_expression")
 
4127
#line 237 "cpp/PreExprParser.lem"
 
4128
{        
 
4129
        if (yymsp[-4].minor.yy25->val > 0) {
 
4130
          yygotominor.yy25 = yymsp[-2].minor.yy25;
 
4131
          delete yymsp[0].minor.yy25;
 
4132
        } else {
 
4133
          yygotominor.yy25 = yymsp[0].minor.yy25;
 
4134
          delete yymsp[-2].minor.yy25;
 
4135
        }
 
4136
        delete yymsp[-4].minor.yy25;
 
4137
        delete[] yymsp[-3].minor.yy0;
 
4138
        delete[] yymsp[-1].minor.yy0;
 
4139
    }
 
4140
#line 1401 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4141
        break;
 
4142
      case 3:
 
4143
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_OR constant_expression")
 
4144
#line 255 "cpp/PreExprParser.lem"
 
4145
{        
 
4146
        yygotominor.yy25 = new PreExpr ();        
 
4147
        if (yymsp[-2].minor.yy25->val > 0 || yymsp[0].minor.yy25->val > 0) yygotominor.yy25->val = 1;
 
4148
        else yygotominor.yy25->val = 0;
 
4149
        delete yymsp[-2].minor.yy25;
 
4150
        delete yymsp[0].minor.yy25;
 
4151
        delete[] yymsp[-1].minor.yy0;
 
4152
    }
 
4153
#line 1414 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4154
        break;
 
4155
      case 4:
 
4156
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_AND constant_expression")
 
4157
#line 264 "cpp/PreExprParser.lem"
 
4158
{        
 
4159
        yygotominor.yy25 = new PreExpr ();        
 
4160
        if (yymsp[-2].minor.yy25->val > 0 && yymsp[0].minor.yy25->val > 0) yygotominor.yy25->val = 1;
 
4161
        else yygotominor.yy25->val = 0;
 
4162
        delete yymsp[-2].minor.yy25;
 
4163
        delete yymsp[0].minor.yy25;
 
4164
        delete[] yymsp[-1].minor.yy0;
 
4165
    }
 
4166
#line 1427 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4167
        break;
 
4168
      case 5:
 
4169
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_BITOR constant_expression")
 
4170
#line 273 "cpp/PreExprParser.lem"
 
4171
{        
 
4172
        yygotominor.yy25 = new PreExpr ((long int) yymsp[-2].minor.yy25->val | (long int) yymsp[0].minor.yy25->val);        
 
4173
        delete yymsp[-2].minor.yy25;
 
4174
        delete yymsp[0].minor.yy25;
 
4175
        delete[] yymsp[-1].minor.yy0;
 
4176
    }
 
4177
#line 1438 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4178
        break;
 
4179
      case 6:
 
4180
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_BITXOR constant_expression")
 
4181
#line 280 "cpp/PreExprParser.lem"
 
4182
{        
 
4183
        yygotominor.yy25 = new PreExpr ((long int) yymsp[-2].minor.yy25->val ^ (long int) yymsp[0].minor.yy25->val);        
 
4184
        delete yymsp[-2].minor.yy25;
 
4185
        delete yymsp[0].minor.yy25;
 
4186
        delete[] yymsp[-1].minor.yy0;
 
4187
    }
 
4188
#line 1449 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4189
        break;
 
4190
      case 7:
 
4191
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_BITAND constant_expression")
 
4192
#line 287 "cpp/PreExprParser.lem"
 
4193
{        
 
4194
        yygotominor.yy25 = new PreExpr ((long int) yymsp[-2].minor.yy25->val & (long int) yymsp[0].minor.yy25->val);        
 
4195
        delete yymsp[-2].minor.yy25;
 
4196
        delete yymsp[0].minor.yy25;
 
4197
        delete[] yymsp[-1].minor.yy0;
 
4198
    }
 
4199
#line 1460 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4200
        break;
 
4201
      case 8:
 
4202
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_EQ constant_expression")
 
4203
#line 294 "cpp/PreExprParser.lem"
 
4204
{        
 
4205
        yygotominor.yy25 = new PreExpr ();        
 
4206
        if (yymsp[-2].minor.yy25->val == yymsp[0].minor.yy25->val) yygotominor.yy25->val = 1;
 
4207
        else yygotominor.yy25->val = 0;
 
4208
        delete yymsp[-2].minor.yy25;
 
4209
        delete yymsp[0].minor.yy25;
 
4210
        delete[] yymsp[-1].minor.yy0;
 
4211
    }
 
4212
#line 1473 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4213
        break;
 
4214
      case 9:
 
4215
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_NOTEQ constant_expression")
 
4216
#line 303 "cpp/PreExprParser.lem"
 
4217
{        
 
4218
        yygotominor.yy25 = new PreExpr ();        
 
4219
        if (yymsp[-2].minor.yy25->val != yymsp[0].minor.yy25->val) yygotominor.yy25->val = 1;
 
4220
        else yygotominor.yy25->val = 0;                                        
 
4221
        delete yymsp[-2].minor.yy25;
 
4222
        delete yymsp[0].minor.yy25;
 
4223
        delete[] yymsp[-1].minor.yy0;
 
4224
    }
 
4225
#line 1486 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4226
        break;
 
4227
      case 10:
 
4228
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_LESS constant_expression")
 
4229
#line 312 "cpp/PreExprParser.lem"
 
4230
{        
 
4231
        yygotominor.yy25 = new PreExpr ();        
 
4232
        if (yymsp[-2].minor.yy25->val < yymsp[0].minor.yy25->val) yygotominor.yy25->val = 1;
 
4233
        else yygotominor.yy25->val = 0;                                        
 
4234
        delete yymsp[-2].minor.yy25;
 
4235
        delete yymsp[0].minor.yy25;
 
4236
        delete[] yymsp[-1].minor.yy0;
 
4237
    }
 
4238
#line 1499 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4239
        break;
 
4240
      case 11:
 
4241
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_GREATER constant_expression")
 
4242
#line 321 "cpp/PreExprParser.lem"
 
4243
{        
 
4244
        yygotominor.yy25 = new PreExpr ();        
 
4245
        if (yymsp[-2].minor.yy25->val > yymsp[0].minor.yy25->val) yygotominor.yy25->val = 1;
 
4246
        else yygotominor.yy25->val = 0;                                        
 
4247
        delete yymsp[-2].minor.yy25;
 
4248
        delete yymsp[0].minor.yy25;
 
4249
        delete[] yymsp[-1].minor.yy0;
 
4250
    }
 
4251
#line 1512 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4252
        break;
 
4253
      case 12:
 
4254
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_LEQ constant_expression")
 
4255
#line 330 "cpp/PreExprParser.lem"
 
4256
{        
 
4257
        yygotominor.yy25 = new PreExpr ();        
 
4258
        if (yymsp[-2].minor.yy25->val <= yymsp[0].minor.yy25->val) yygotominor.yy25->val = 1;
 
4259
        else yygotominor.yy25->val = 0;                                        
 
4260
        delete yymsp[-2].minor.yy25;
 
4261
        delete yymsp[0].minor.yy25;
 
4262
        delete[] yymsp[-1].minor.yy0;
 
4263
    }
 
4264
#line 1525 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4265
        break;
 
4266
      case 13:
 
4267
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_GEQ constant_expression")
 
4268
#line 339 "cpp/PreExprParser.lem"
 
4269
{        
 
4270
        yygotominor.yy25 = new PreExpr ();        
 
4271
        if (yymsp[-2].minor.yy25->val >= yymsp[0].minor.yy25->val) yygotominor.yy25->val = 1;
 
4272
        else yygotominor.yy25->val = 0;                                        
 
4273
        delete yymsp[-2].minor.yy25;
 
4274
        delete yymsp[0].minor.yy25;
 
4275
        delete[] yymsp[-1].minor.yy0;
 
4276
    }
 
4277
#line 1538 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4278
        break;
 
4279
      case 14:
 
4280
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_PLUS constant_expression")
 
4281
#line 348 "cpp/PreExprParser.lem"
 
4282
{        
 
4283
        yygotominor.yy25 = new PreExpr ((double) yymsp[-2].minor.yy25->val + (double) yymsp[0].minor.yy25->val);        
 
4284
        delete yymsp[-2].minor.yy25;
 
4285
        delete yymsp[0].minor.yy25;
 
4286
        delete[] yymsp[-1].minor.yy0;
 
4287
    }
 
4288
#line 1549 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4289
        break;
 
4290
      case 15:
 
4291
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_MINUS constant_expression")
 
4292
#line 355 "cpp/PreExprParser.lem"
 
4293
{        
 
4294
        yygotominor.yy25 = new PreExpr ((double) yymsp[-2].minor.yy25->val - (double) yymsp[0].minor.yy25->val);        
 
4295
        delete yymsp[-2].minor.yy25;
 
4296
        delete yymsp[0].minor.yy25;
 
4297
        delete[] yymsp[-1].minor.yy0;
 
4298
    }
 
4299
#line 1560 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4300
        break;
 
4301
      case 16:
 
4302
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_STAR constant_expression")
 
4303
#line 362 "cpp/PreExprParser.lem"
 
4304
{        
 
4305
        yygotominor.yy25 = new PreExpr ((double) yymsp[-2].minor.yy25->val * (double) yymsp[0].minor.yy25->val);        
 
4306
        delete yymsp[-2].minor.yy25;
 
4307
        delete yymsp[0].minor.yy25;
 
4308
        delete[] yymsp[-1].minor.yy0;
 
4309
    }
 
4310
#line 1571 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4311
        break;
 
4312
      case 17:
 
4313
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_DIV constant_expression")
 
4314
#line 369 "cpp/PreExprParser.lem"
 
4315
{        
 
4316
        yygotominor.yy25 = new PreExpr ((double) yymsp[-2].minor.yy25->val / (double) yymsp[0].minor.yy25->val);        
 
4317
        delete yymsp[-2].minor.yy25;
 
4318
        delete yymsp[0].minor.yy25;
 
4319
        delete[] yymsp[-1].minor.yy0;
 
4320
    }
 
4321
#line 1582 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4322
        break;
 
4323
      case 18:
 
4324
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_MOD constant_expression")
 
4325
#line 376 "cpp/PreExprParser.lem"
 
4326
{        
 
4327
        yygotominor.yy25 = new PreExpr ((long int) yymsp[-2].minor.yy25->val % (long int) yymsp[0].minor.yy25->val);        
 
4328
        delete yymsp[-2].minor.yy25;
 
4329
        delete yymsp[0].minor.yy25;
 
4330
        delete[] yymsp[-1].minor.yy0;
 
4331
    }
 
4332
#line 1593 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4333
        break;
 
4334
      case 19:
 
4335
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_SHIFTL constant_expression")
 
4336
#line 383 "cpp/PreExprParser.lem"
 
4337
{        
 
4338
        yygotominor.yy25 = new PreExpr ((long int) yymsp[-2].minor.yy25->val << (long int) yymsp[0].minor.yy25->val);        
 
4339
        delete yymsp[-2].minor.yy25;
 
4340
        delete yymsp[0].minor.yy25;
 
4341
        delete[] yymsp[-1].minor.yy0;
 
4342
    }
 
4343
#line 1604 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4344
        break;
 
4345
      case 20:
 
4346
        YYTRACE("constant_expression ::= constant_expression TOK_EXPR_SHIFTR constant_expression")
 
4347
#line 390 "cpp/PreExprParser.lem"
 
4348
{        
 
4349
        yygotominor.yy25 = new PreExpr ((long int) yymsp[-2].minor.yy25->val >> (long int) yymsp[0].minor.yy25->val);        
 
4350
        delete yymsp[-2].minor.yy25;
 
4351
        delete yymsp[0].minor.yy25;
 
4352
        delete[] yymsp[-1].minor.yy0;
 
4353
    }
 
4354
#line 1615 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4355
        break;
 
4356
      case 21:
 
4357
        YYTRACE("constant_expression ::= unary_expression")
 
4358
#line 397 "cpp/PreExprParser.lem"
 
4359
{        
 
4360
        yygotominor.yy25 = yymsp[0].minor.yy25;
 
4361
    }
 
4362
#line 1623 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4363
        break;
 
4364
      case 22:
 
4365
        YYTRACE("unary_expression ::= primary_expression")
 
4366
#line 406 "cpp/PreExprParser.lem"
 
4367
{        
 
4368
        yygotominor.yy25 = yymsp[0].minor.yy25; 
 
4369
    }
 
4370
#line 1631 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4371
        break;
 
4372
      case 23:
 
4373
        YYTRACE("unary_expression ::= TOK_EXPR_PLUS unary_expression")
 
4374
#line 410 "cpp/PreExprParser.lem"
 
4375
{        
 
4376
        yymsp[0].minor.yy25->val = +yymsp[0].minor.yy25->val; yygotominor.yy25 = yymsp[0].minor.yy25;
 
4377
        delete[] yymsp[-1].minor.yy0;
 
4378
    }
 
4379
#line 1640 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4380
        break;
 
4381
      case 24:
 
4382
        YYTRACE("unary_expression ::= TOK_EXPR_MINUS unary_expression")
 
4383
#line 415 "cpp/PreExprParser.lem"
 
4384
{        
 
4385
        yymsp[0].minor.yy25->val = -yymsp[0].minor.yy25->val; yygotominor.yy25 = yymsp[0].minor.yy25;
 
4386
        delete[] yymsp[-1].minor.yy0;
 
4387
    }
 
4388
#line 1649 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4389
        break;
 
4390
      case 25:
 
4391
        YYTRACE("unary_expression ::= TOK_EXPR_TILDE unary_expression")
 
4392
#line 420 "cpp/PreExprParser.lem"
 
4393
{        
 
4394
        yymsp[0].minor.yy25->val = ~(long int) yymsp[0].minor.yy25->val; yygotominor.yy25 = yymsp[0].minor.yy25;
 
4395
        delete[] yymsp[-1].minor.yy0;
 
4396
    }
 
4397
#line 1658 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4398
        break;
 
4399
      case 26:
 
4400
        YYTRACE("unary_expression ::= TOK_EXPR_NOT unary_expression")
 
4401
#line 425 "cpp/PreExprParser.lem"
 
4402
{        
 
4403
        yymsp[0].minor.yy25->val = !yymsp[0].minor.yy25->val; yygotominor.yy25 = yymsp[0].minor.yy25;
 
4404
        delete[] yymsp[-1].minor.yy0;
 
4405
    }
 
4406
#line 1667 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4407
        break;
 
4408
      case 27:
 
4409
        YYTRACE("primary_expression ::= TOK_EXPR_OCT")
 
4410
#line 435 "cpp/PreExprParser.lem"
 
4411
{        
 
4412
        yygotominor.yy25 = new PreExpr (strtoul (yymsp[0].minor.yy0, NULL, 8));
 
4413
        delete[] yymsp[0].minor.yy0;
 
4414
    }
 
4415
#line 1676 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4416
        break;
 
4417
      case 28:
 
4418
        YYTRACE("primary_expression ::= TOK_EXPR_DEC")
 
4419
#line 440 "cpp/PreExprParser.lem"
 
4420
{        
 
4421
        yygotominor.yy25 = new PreExpr (strtoul (yymsp[0].minor.yy0, NULL, 10));
 
4422
        delete[] yymsp[0].minor.yy0;
 
4423
    }
 
4424
#line 1685 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4425
        break;
 
4426
      case 29:
 
4427
        YYTRACE("primary_expression ::= TOK_EXPR_HEX")
 
4428
#line 445 "cpp/PreExprParser.lem"
 
4429
{        
 
4430
        yygotominor.yy25 = new PreExpr (strtoul (yymsp[0].minor.yy0, NULL, 16));
 
4431
        delete[] yymsp[0].minor.yy0;
 
4432
    }
 
4433
#line 1694 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4434
        break;
 
4435
      case 30:
 
4436
        YYTRACE("primary_expression ::= TOK_EXPR_CHAR")
 
4437
#line 450 "cpp/PreExprParser.lem"
 
4438
{        
 
4439
        yygotominor.yy25 = new PreExpr (PreExpr::convertChar (yymsp[0].minor.yy0));
 
4440
        delete[] yymsp[0].minor.yy0;
 
4441
    }
 
4442
#line 1703 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4443
        break;
 
4444
      case 31:
 
4445
        YYTRACE("primary_expression ::= TOK_EXPR_FLOAT")
 
4446
#line 455 "cpp/PreExprParser.lem"
 
4447
{        
 
4448
        yygotominor.yy25 = new PreExpr (strtod (yymsp[0].minor.yy0, NULL));
 
4449
        delete[] yymsp[0].minor.yy0;
 
4450
    }
 
4451
#line 1712 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4452
        break;
 
4453
      case 32:
 
4454
        YYTRACE("primary_expression ::= TOK_EXPR_LPAREN conditional_expression TOK_EXPR_RPAREN")
 
4455
#line 460 "cpp/PreExprParser.lem"
 
4456
{        
 
4457
        yygotominor.yy25 = yymsp[-1].minor.yy25;
 
4458
        delete[] yymsp[-2].minor.yy0;
 
4459
        delete[] yymsp[0].minor.yy0;
 
4460
    }
 
4461
#line 1722 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4462
        break;
 
4463
  };
 
4464
  yygoto = yyRuleInfo[yyruleno].lhs;
 
4465
  yysize = yyRuleInfo[yyruleno].nrhs;
 
4466
  yypParser->idx -= yysize;
 
4467
  yypParser->top -= yysize;
 
4468
  yyact = yy_find_parser_action(yypParser,yygoto);
 
4469
  if( yyact < YYNSTATE ){
 
4470
    yy_shift(yypParser,yyact,yygoto,&yygotominor);
 
4471
  }else if( yyact == YYNSTATE + YYNRULE + 1 ){
 
4472
    yy_accept(yypParser PreExprParserARGDECL);
 
4473
  }
 
4474
}
 
4475
 
 
4476
/*
 
4477
** The following code executes when the parse fails
 
4478
*/
 
4479
static void yy_parse_failed(
 
4480
  yyParser *yypParser           /* The parser */
 
4481
  PreExprParserANSIARGDECL              /* Extra arguments (if any) */
 
4482
){
 
4483
#ifndef NDEBUG
 
4484
  if( yyTraceFILE ){
 
4485
    fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
 
4486
  }
 
4487
#endif
 
4488
  while( yypParser->idx>=0 ) yy_pop_parser_stack(yypParser);
 
4489
  /* Here code is inserted which will be executed whenever the
 
4490
  ** parser fails */
 
4491
}
 
4492
 
 
4493
/*
 
4494
** The following code executes when a syntax error first occurs.
 
4495
*/
 
4496
static void yy_syntax_error(
 
4497
  yyParser *yypParser,           /* The parser */
 
4498
  int yymajor,                   /* The major type of the error token */
 
4499
  YYMINORTYPE yyminor            /* The minor type of the error token */
 
4500
  PreExprParserANSIARGDECL               /* Extra arguments (if any) */
 
4501
){
 
4502
#define TOKEN (yyminor.yy0)
 
4503
#line 204 "cpp/PreExprParser.lem"
 
4504
 
 
4505
    *err << location << sev_error;
 
4506
    if (at_eos)
 
4507
      *err << "Unexpected end of conditional";
 
4508
    else 
 
4509
      *err << "Unexpected token `" << current_token << "' in conditional";
 
4510
    *err << endMessage;
 
4511
    parse_error = true;
 
4512
 
 
4513
#line 1774 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/src/PreExprParser.cc"
 
4514
}
 
4515
 
 
4516
/*
 
4517
** The following is executed when the parser accepts
 
4518
*/
 
4519
static void yy_accept(
 
4520
  yyParser *yypParser           /* The parser */
 
4521
  PreExprParserANSIARGDECL              /* Extra arguments (if any) */
 
4522
){
 
4523
#ifndef NDEBUG
 
4524
  if( yyTraceFILE ){
 
4525
    fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
 
4526
  }
 
4527
#endif
 
4528
  while( yypParser->idx>=0 ) yy_pop_parser_stack(yypParser);
 
4529
  /* Here code is inserted which will be executed whenever the
 
4530
  ** parser accepts */
 
4531
}
 
4532
 
 
4533
/* The main parser program.
 
4534
** The first argument is a pointer to a structure obtained from
 
4535
** "PreExprParserAlloc" which describes the current state of the parser.
 
4536
** The second argument is the major token number.  The third is
 
4537
** the minor token.  The fourth optional argument is whatever the
 
4538
** user wants (and specified in the grammar) and is available for
 
4539
** use by the action routines.
 
4540
**
 
4541
** Inputs:
 
4542
** <ul>
 
4543
** <li> A pointer to the parser (an opaque structure.)
 
4544
** <li> The major token number.
 
4545
** <li> The minor token number.
 
4546
** <li> An option argument of a grammar-specified type.
 
4547
** </ul>
 
4548
**
 
4549
** Outputs:
 
4550
** None.
 
4551
*/
 
4552
void PreExprParser(
 
4553
  void *yyp,                   /* The parser */
 
4554
  int yymajor,                 /* The major token code number */
 
4555
  PreExprParserTOKENTYPE yyminor       /* The value for the token */
 
4556
  PreExprParserANSIARGDECL
 
4557
){
 
4558
  YYMINORTYPE yyminorunion;
 
4559
  int yyact;            /* The parser action. */
 
4560
  int yyendofinput;     /* True if we are at the end of input */
 
4561
  int yyerrorhit = 0;   /* True if yymajor has invoked an error */
 
4562
  yyParser *yypParser;  /* The parser */
 
4563
 
 
4564
  /* (re)initialize the parser, if necessary */
 
4565
  yypParser = (yyParser*)yyp;
 
4566
  if( yypParser->idx<0 ){
 
4567
    /* Olaf: Empty files must be parse too!  if( yymajor==0 ) return; */
 
4568
    yypParser->idx = 0;
 
4569
    yypParser->errcnt = -1;
 
4570
    yypParser->top = &yypParser->stack[0];
 
4571
    yypParser->top->stateno = 0;
 
4572
    yypParser->top->major = 0;
 
4573
  }
 
4574
  yyminorunion.yy0 = yyminor;
 
4575
  yyendofinput = (yymajor==0);
 
4576
 
 
4577
#ifndef NDEBUG
 
4578
  if( yyTraceFILE ){
 
4579
    fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
 
4580
  }
 
4581
#endif
 
4582
 
 
4583
  do{
 
4584
    yyact = yy_find_parser_action(yypParser,yymajor);
 
4585
    if( yyact<YYNSTATE ){
 
4586
      yy_shift(yypParser,yyact,yymajor,&yyminorunion);
 
4587
      yypParser->errcnt--;
 
4588
      if( yyendofinput && yypParser->idx>=0 ){
 
4589
        yymajor = 0;
 
4590
      }else{
 
4591
        yymajor = YYNOCODE;
 
4592
      }
 
4593
    }else if( yyact < YYNSTATE + YYNRULE ){
 
4594
      yy_reduce(yypParser,yyact-YYNSTATE PreExprParserARGDECL);
 
4595
    }else if( yyact == YY_ERROR_ACTION ){
 
4596
#ifndef NDEBUG
 
4597
      if( yyTraceFILE ){
 
4598
        fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
 
4599
      }
 
4600
#endif
 
4601
#ifdef YYERRORSYMBOL
 
4602
      /* A syntax error has occurred.
 
4603
      ** The response to an error depends upon whether or not the
 
4604
      ** grammar defines an error token "ERROR".  
 
4605
      **
 
4606
      ** This is what we do if the grammar does define ERROR:
 
4607
      **
 
4608
      **  * Call the %syntax_error function.
 
4609
      **
 
4610
      **  * Begin popping the stack until we enter a state where
 
4611
      **    it is legal to shift the error symbol, then shift
 
4612
      **    the error symbol.
 
4613
      **
 
4614
      **  * Set the error count to three.
 
4615
      **
 
4616
      **  * Begin accepting and shifting new tokens.  No new error
 
4617
      **    processing will occur until three tokens have been
 
4618
      **    shifted successfully.
 
4619
      **
 
4620
      */
 
4621
      if( yypParser->errcnt<0 ){
 
4622
        yy_syntax_error(yypParser,yymajor,yyminorunion PreExprParserARGDECL);
 
4623
      }
 
4624
      if( yypParser->top->major==YYERRORSYMBOL || yyerrorhit ){
 
4625
#ifndef NDEBUG
 
4626
        if( yyTraceFILE ){
 
4627
          fprintf(yyTraceFILE,"%sDiscard input token %s\n",
 
4628
             yyTracePrompt,yyTokenName[yymajor]);
 
4629
        }
 
4630
#endif
 
4631
        yy_destructor(yymajor,&yyminorunion);
 
4632
        yymajor = YYNOCODE;
 
4633
      }else{
 
4634
         while(
 
4635
          yypParser->idx >= 0 &&
 
4636
          yypParser->top->major != YYERRORSYMBOL &&
 
4637
          (yyact = yy_find_parser_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE
 
4638
        ){
 
4639
          yy_pop_parser_stack(yypParser);
 
4640
        }
 
4641
        if( yypParser->idx < 0 || yymajor==0 ){
 
4642
          yy_destructor(yymajor,&yyminorunion);
 
4643
          yy_parse_failed(yypParser PreExprParserARGDECL);
 
4644
          yymajor = YYNOCODE;
 
4645
        }else if( yypParser->top->major!=YYERRORSYMBOL ){
 
4646
          YYMINORTYPE u2;
 
4647
          u2.YYERRSYMDT = 0;
 
4648
          yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
 
4649
        }
 
4650
      }
 
4651
      yypParser->errcnt = 3;
 
4652
      yyerrorhit = 1;
 
4653
#else  /* YYERRORSYMBOL is not defined */
 
4654
      /* This is what we do if the grammar does not define ERROR:
 
4655
      **
 
4656
      **  * Report an error message, and throw away the input token.
 
4657
      **
 
4658
      **  * If the input token is $, then fail the parse.
 
4659
      **
 
4660
      ** As before, subsequent error messages are suppressed until
 
4661
      ** three input tokens have been successfully shifted.
 
4662
      */
 
4663
      if( yypParser->errcnt<=0 ){
 
4664
        yy_syntax_error(yypParser,yymajor,yyminorunion PreExprParserARGDECL);
 
4665
      }
 
4666
      yypParser->errcnt = 3;
 
4667
      yy_destructor(yymajor,&yyminorunion);
 
4668
      if( yyendofinput ){
 
4669
        yy_parse_failed(yypParser PreExprParserARGDECL);
 
4670
      }
 
4671
      yymajor = YYNOCODE;
 
4672
#endif
 
4673
    }else{
 
4674
      yy_accept(yypParser PreExprParserARGDECL);
 
4675
      yymajor = YYNOCODE;
 
4676
    }
 
4677
  }while( yymajor!=YYNOCODE && yypParser->idx>=0 );
 
4678
  return;
 
4679
}
 
4680
 
 
4681
#line 4682 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/src/PreExprParser.cc"
 
4682
 
 
4683
#ifdef __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_src_PreExprParser_cc__
 
4684
/*** begin of aspect includes ***/
 
4685
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__)
 
4686
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
4687
#include "WinIfExists.ah"
 
4688
#endif
 
4689
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__)
 
4690
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
4691
#include "WinImportHandler.ah"
 
4692
#endif
 
4693
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__)
 
4694
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__
 
4695
#include "WinMacros.ah"
 
4696
#endif
 
4697
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__)
 
4698
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
4699
#include "CMatchSyntax.ah"
 
4700
#endif
 
4701
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__)
 
4702
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
4703
#include "ExtGnu.ah"
 
4704
#endif
 
4705
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__)
 
4706
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__
 
4707
#include "ExtAC.ah"
 
4708
#endif
 
4709
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__)
 
4710
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
4711
#include "ExtACTree.ah"
 
4712
#endif
 
4713
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__)
 
4714
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
4715
#include "TraceSyntax.ah"
 
4716
#endif
 
4717
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__)
 
4718
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__
 
4719
#include "WinAsm.ah"
 
4720
#endif
 
4721
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__)
 
4722
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
4723
#include "WinDeclSpecs.ah"
 
4724
#endif
 
4725
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__)
 
4726
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
4727
#include "WinMemberExplSpec.ah"
 
4728
#endif
 
4729
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__)
 
4730
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
4731
#include "WinTypeKeywords.ah"
 
4732
#endif
 
4733
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__)
 
4734
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
4735
#include "PragmaOnceUnitState.ah"
 
4736
#endif
 
4737
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__)
 
4738
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
4739
#include "PragmaOnce.ah"
 
4740
#endif
 
4741
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__)
 
4742
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__
 
4743
#include "CCExprResolve.ah"
 
4744
#endif
 
4745
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__)
 
4746
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__
 
4747
#include "CExprResolve.ah"
 
4748
#endif
 
4749
/*** end of aspect includes ***/
 
4750
#undef __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
4751
#undef __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_src_PreExprParser_cc__
 
4752
#endif // __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_src_PreExprParser_cc__