1
/* A Bison parser, made by GNU Bison 2.3. */
3
/* Skeleton interface for Bison LALR(1) parsers in C++
5
Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
7
This program is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 2, or (at your option)
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with this program; if not, write to the Free Software
19
Foundation, Inc., 51 Franklin Street, Fifth Floor,
20
Boston, MA 02110-1301, USA. */
22
/* As a special exception, you may create a larger work that contains
23
part or all of the Bison parser skeleton and distribute that work
24
under terms of your choice, so long as that work isn't itself a
25
parser generator using the skeleton or a modified version thereof
26
as a parser skeleton. Alternatively, if you modify or redistribute
27
the parser skeleton itself, you may (at your option) remove this
28
special exception, which will cause the skeleton and the resulting
29
Bison output files to be licensed under the GNU General Public
30
License without this special exception.
32
This special exception was added by the Free Software Foundation in
33
version 2.2 of Bison. */
35
/* C++ LALR(1) parser skeleton written by Akim Demaille. */
37
#ifndef PARSER_HEADER_H
38
# define PARSER_HEADER_H
50
/* First part of user declarations. */
51
#line 1 "pgscript/pgsParser.yy"
52
/*** C/C++ Declarations ***/
54
//////////////////////////////////////////////////////////////////////////
56
// pgScript - PostgreSQL Tools
57
// RCS-ID: $Id: pgsParser.yy,v 1.6 2008/08/10 22:11:29 pgunittest Exp $
58
// Copyright (C) 2002 - 2009, The pgAdmin Development Team
59
// This software is released under the BSD Licence
61
//////////////////////////////////////////////////////////////////////////
63
#include "pgscript/pgScript.h"
64
#include "pgscript/statements/pgsStatements.h"
65
#include "pgscript/expressions/pgsExpressions.h"
66
#include "pgscript/objects/pgsObjects.h"
67
#include "pgscript/utilities/pgsContext.h"
71
/* Line 35 of lalr1.cc. */
72
#line 73 "pgscript/parser.tab.hh"
74
#include "location.hh"
76
/* Enabling traces. */
81
/* Enabling verbose error messages. */
82
#ifdef YYERROR_VERBOSE
83
# undef YYERROR_VERBOSE
84
# define YYERROR_VERBOSE 1
86
# define YYERROR_VERBOSE 1
89
/* Enabling the token table. */
91
# define YYTOKEN_TABLE 0
94
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
95
If N is 0, then set CURRENT to the empty location which ends
96
the previous symbol: RHS[0] (always defined). */
98
#ifndef YYLLOC_DEFAULT
99
# define YYLLOC_DEFAULT(Current, Rhs, N) \
103
(Current).begin = (Rhs)[1].begin; \
104
(Current).end = (Rhs)[N].end; \
108
(Current).begin = (Current).end = (Rhs)[0].end; \
120
/// Symbol semantic values.
123
#line 106 "pgscript/pgsParser.yy"
125
const wxString * str;
127
pgsExpression * expr;
129
pgsStmtList * stmt_list;
131
/* Line 35 of lalr1.cc. */
132
#line 133 "pgscript/parser.tab.hh"
135
typedef YYSTYPE semantic_type;
137
/// Symbol locations.
138
typedef location location_type;
158
PGS_CNT_COLUMNS = 271,
182
PGS_SET_ASSIGN = 295,
183
PGS_DECLARE_ASSGN = 296,
188
PGS_CHECKPOINT = 301,
195
PGS_DEALLOCATE = 308,
228
PGS_IDENTIFIER = 341,
236
typedef token::yytokentype token_type;
238
/// Build a parser object.
239
pgsParser (class pgsDriver & driver_yyarg);
240
virtual ~pgsParser ();
243
/// \returns 0 iff parsing succeeded.
244
virtual int parse ();
246
/// The current debugging stream.
247
std::ostream& debug_stream () const;
248
/// Set the current debugging stream.
249
void set_debug_stream (std::ostream &);
251
/// Type for debugging levels.
252
typedef int debug_level_type;
253
/// The current debugging level.
254
debug_level_type debug_level () const;
255
/// Set the current debugging level.
256
void set_debug_level (debug_level_type l);
259
/// Report a syntax error.
260
/// \param loc where the syntax error is found.
261
/// \param msg a description of the syntax error.
262
virtual void error (const location_type& loc, const std::string& msg);
264
/// Generate an error message.
265
/// \param state the state where the error occurred.
266
/// \param tok the look-ahead token.
267
virtual std::string yysyntax_error_ (int yystate, int tok);
270
/// \brief Report a symbol value on the debug stream.
271
/// \param yytype The token type.
272
/// \param yyvaluep Its semantic value.
273
/// \param yylocationp Its location.
274
virtual void yy_symbol_value_print_ (int yytype,
275
const semantic_type* yyvaluep,
276
const location_type* yylocationp);
277
/// \brief Report a symbol on the debug stream.
278
/// \param yytype The token type.
279
/// \param yyvaluep Its semantic value.
280
/// \param yylocationp Its location.
281
virtual void yy_symbol_print_ (int yytype,
282
const semantic_type* yyvaluep,
283
const location_type* yylocationp);
284
#endif /* ! YYDEBUG */
288
typedef int state_type;
289
/// State stack type.
290
typedef stack<state_type> state_stack_type;
291
/// Semantic value stack type.
292
typedef stack<semantic_type> semantic_stack_type;
293
/// location stack type.
294
typedef stack<location_type> location_stack_type;
297
state_stack_type yystate_stack_;
298
/// The semantic value stack.
299
semantic_stack_type yysemantic_stack_;
300
/// The location stack.
301
location_stack_type yylocation_stack_;
303
/// Internal symbol numbers.
304
typedef unsigned char token_number_type;
306
/// For a state, the index in \a yytable_ of its portion.
307
static const short int yypact_[];
308
static const signed char yypact_ninf_;
310
/// For a state, default rule to reduce.
311
/// Unless\a yytable_ specifies something else to do.
312
/// Zero means the default is an error.
313
static const unsigned char yydefact_[];
315
static const short int yypgoto_[];
316
static const short int yydefgoto_[];
318
/// What to do in a state.
319
/// \a yytable_[yypact_[s]]: what to do in state \a s.
320
/// - if positive, shift that token.
321
/// - if negative, reduce the rule which number is the opposite.
322
/// - if zero, do what YYDEFACT says.
323
static const unsigned short int yytable_[];
324
static const signed char yytable_ninf_;
326
static const short int yycheck_[];
328
/// For a state, its accessing symbol.
329
static const unsigned char yystos_[];
331
/// For a rule, its LHS.
332
static const unsigned char yyr1_[];
333
/// For a rule, its RHS length.
334
static const unsigned char yyr2_[];
336
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
337
/// For a symbol, its name in clear.
338
static const char* const yytname_[];
342
/// Convert the symbol name \a n to a form suitable for a diagnostic.
343
virtual std::string yytnamerr_ (const char *n);
347
/// A type to store symbol numbers and -1.
348
typedef short int rhs_number_type;
349
/// A `-1'-separated list of the rules' RHS.
350
static const rhs_number_type yyrhs_[];
351
/// For each rule, the index of the first RHS symbol in \a yyrhs_.
352
static const unsigned short int yyprhs_[];
353
/// For each rule, its source line number.
354
static const unsigned short int yyrline_[];
355
/// For each scanner token number, its symbol number.
356
static const unsigned short int yytoken_number_[];
357
/// Report on the debug stream that the rule \a r is going to be reduced.
358
virtual void yy_reduce_print_ (int r);
359
/// Print the state stack on the debug stream.
360
virtual void yystack_print_ ();
363
/// Convert a scanner token number \a t to a symbol number.
364
token_number_type yytranslate_ (int t);
366
/// \brief Reclaim the memory associated to a symbol.
367
/// \param yymsg Why this token is reclaimed.
368
/// \param yytype The symbol type.
369
/// \param yyvaluep Its semantic value.
370
/// \param yylocationp Its location.
371
inline void yydestruct_ (const char* yymsg,
373
semantic_type* yyvaluep,
374
location_type* yylocationp);
376
/// Pop \a n symbols the three stacks.
377
inline void yypop_ (unsigned int n = 1);
380
static const int yyeof_;
381
/* LAST_ -- Last index in TABLE_. */
382
static const int yylast_;
383
static const int yynnts_;
384
static const int yyempty_;
385
static const int yyfinal_;
386
static const int yyterror_;
387
static const int yyerrcode_;
388
static const int yyntokens_;
389
static const unsigned int yyuser_token_number_max_;
390
static const token_number_type yyundef_token_;
394
std::ostream* yycdebug_;
397
/* User arguments. */
398
class pgsDriver & driver;
403
#endif /* ! defined PARSER_HEADER_H */