~ubuntu-branches/ubuntu/trusty/anjuta/trusty

« back to all changes in this revision

Viewing changes to plugins/parser-cxx/cxxparser/flex-lexer-klass.h

  • Committer: Package Import Robot
  • Author(s): Jeremy Bicha
  • Date: 2012-08-17 23:48:26 UTC
  • mfrom: (1.1.50)
  • Revision ID: package-import@ubuntu.com-20120817234826-fvk3rfp6nmfaqi9p
Tags: 2:3.5.5-0ubuntu1
* New upstream release.
* debian/control.in:
  - Bump vala dependency to 0.18 series
  - Drop graphviz from build-depends
* debian/watch: Watch for unstable releases

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
 
2
/*
 
3
 * anjuta
 
4
 * Copyright (C) Eran Ifrah (Main file for CodeLite www.codelite.org/ )
 
5
 * Copyright (C) Massimo Cora' 2009 <maxcvs@email.it> (Customizations for Anjuta)
 
6
 * 
 
7
 * anjuta is free software: you can redistribute it and/or modify it
 
8
 * under the terms of the GNU General Public License as published by the
 
9
 * Free Software Foundation, either version 3 of the License, or
 
10
 * (at your option) any later version.
 
11
 * 
 
12
 * anjuta is distributed in the hope that it will be useful, but
 
13
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
15
 * See the GNU General Public License for more details.
 
16
 * 
 
17
 * You should have received a copy of the GNU General Public License along
 
18
 * with this program.  If not, see <http://www.gnu.org/licenses/>.
 
19
 */
 
20
 
 
21
//////////////////////////////////////////////////////////////////////////////
 
22
//////////////////////////////////////////////////////////////////////////////
 
23
//
 
24
// copyright            : (C) 2008 by Eran Ifrah                            
 
25
// file name            : FlexLexer.h              
 
26
//                                                                          
 
27
// -------------------------------------------------------------------------
 
28
// A                                                                        
 
29
//              _____           _      _     _ _                            
 
30
//             /  __ \         | |    | |   (_) |                           
 
31
//             | /  \/ ___   __| | ___| |    _| |_ ___                      
 
32
//             | |    / _ \ / _  |/ _ \ |   | | __/ _ )                     
 
33
//             | \__/\ (_) | (_| |  __/ |___| | ||  __/                     
 
34
//              \____/\___/ \__,_|\___\_____/_|\__\___|                     
 
35
//                                                                          
 
36
//                                                  F i l e                 
 
37
//                                                                          
 
38
//    This program is free software; you can redistribute it and/or modify  
 
39
//    it under the terms of the GNU General Public License as published by  
 
40
//    the Free Software Foundation; either version 2 of the License, or     
 
41
//    (at your option) any later version.                                   
 
42
//                                                                          
 
43
//////////////////////////////////////////////////////////////////////////////
 
44
//////////////////////////////////////////////////////////////////////////////
 
45
 // $Header: /CVS/wxUS/wxXtudio/Apps/USClient/FlexLexer.h,v 1.2 2006/02/08 14:30:12 eran Exp $
 
46
 
 
47
// FlexLexer.h -- define interfaces for lexical analyzer classes generated
 
48
//                by flex
 
49
 
 
50
// Copyright (c) 1993 The Regents of the University of California.
 
51
// All rights reserved.
 
52
//
 
53
// This code is derived from software contributed to Berkeley by
 
54
// Kent Williams and Tom Epperly.
 
55
//
 
56
// Redistribution and use in source and binary forms with or without
 
57
// modification are permitted provided that: (1) source distributions retain
 
58
// this entire copyright notice and comment, and (2) distributions including
 
59
// binaries display the following acknowledgement:  ``This product includes
 
60
// software developed by the University of California, Berkeley and its
 
61
// contributors'' in the documentation or other materials provided with the
 
62
// distribution and in all advertising materials mentioning features or use
 
63
// of this software.  Neither the name of the University nor the names of
 
64
// its contributors may be used to endorse or promote products derived from
 
65
// this software without specific prior written permission.
 
66
 
 
67
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 
68
// WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 
69
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
70
 
 
71
// This file defines FlexLexer, an abstract class which specifies the
 
72
// external interface provided to flex C++ lexer objects, and yyFlexLexer,
 
73
// which defines a particular lexer class.
 
74
//
 
75
// If you want to create multiple lexer classes, you use the -P flag
 
76
// to rename each yyFlexLexer to some other xxFlexLexer.  You then
 
77
// include <FlexLexer.h> in your other sources once per lexer class:
 
78
//
 
79
//      #undef yyFlexLexer
 
80
//      #define yyFlexLexer xxFlexLexer
 
81
//      #include <FlexLexer.h>
 
82
//
 
83
//      #undef yyFlexLexer
 
84
//      #define yyFlexLexer zzFlexLexer
 
85
//      #include <FlexLexer.h>
 
86
//      ...
 
87
 
 
88
#ifndef CODELITE_FLEX_LEXER_H
 
89
// Never included before - need to define base class.
 
90
#define CODELITE_FLEX_LEXER_H
 
91
#include <string>
 
92
#include <iostream>
 
93
#include <stdio.h>
 
94
 
 
95
//extern "C++" {
 
96
 
 
97
using namespace std;
 
98
 
 
99
namespace flex
 
100
{
 
101
 
 
102
struct yy_buffer_state;
 
103
typedef int yy_state_type;
 
104
 
 
105
class FlexLexer {
 
106
public:
 
107
        virtual ~FlexLexer()    { }
 
108
 
 
109
        const char* YYText()    { return yytext; }
 
110
        int YYLeng()            { return yyleng; }
 
111
 
 
112
        virtual void
 
113
                yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0;
 
114
        virtual struct yy_buffer_state*
 
115
                yy_create_buffer( std::istream* s, int size ) = 0;
 
116
        virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0;
 
117
        virtual void yyrestart( std::istream* s ) = 0;
 
118
 
 
119
        virtual int yylex() = 0;
 
120
 
 
121
        /// Call yylex with new input/output sources.
 
122
        int yylex( std::istream* new_in, std::ostream* new_out = 0 )
 
123
                {
 
124
                switch_streams( new_in, new_out );
 
125
                return yylex();
 
126
                }
 
127
 
 
128
        /// Switch to new input/output streams.  A nil stream pointer
 
129
        /// indicates "keep the current one".
 
130
        virtual void switch_streams( std::istream* new_in = 0,
 
131
                                        std::ostream* new_out = 0 ) = 0;
 
132
 
 
133
        int lineno() const              { return yylineno; }
 
134
 
 
135
        int debug() const               { return yy_flex_debug; }
 
136
        void set_debug( int flag )      { yy_flex_debug = flag; }
 
137
 
 
138
protected:
 
139
        char* yytext;
 
140
        int yyleng;
 
141
        int yylineno;           ///< only maintained if you use %option yylineno
 
142
        int yy_flex_debug;      ///< only has effect with -d or "%option debug"
 
143
 
 
144
        /// Hack for keeping comments from the lexer
 
145
        string m_comment;
 
146
        int  m_keepComments;
 
147
        int  m_returnWhite;
 
148
};
 
149
 
 
150
//}
 
151
 
 
152
#endif
 
153
 
 
154
#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce)
 
155
// Either this is the first time through (yyFlexLexerOnce not defined),
 
156
// or this is a repeated include to define a different flavor of
 
157
// yyFlexLexer, as discussed in the flex man page.
 
158
#define yyFlexLexerOnce
 
159
 
 
160
class yyFlexLexer : public FlexLexer {
 
161
public:
 
162
        /// arg_yyin and arg_yyout default to the cin and cout, but we
 
163
        /// only make that assignment when initializing in yylex().
 
164
        yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 );
 
165
 
 
166
        virtual ~yyFlexLexer();
 
167
 
 
168
        void yy_switch_to_buffer( struct yy_buffer_state* new_buffer );
 
169
        struct yy_buffer_state* yy_create_buffer( std::istream* s, int size );
 
170
        void yy_delete_buffer( struct yy_buffer_state* b );
 
171
        void yyrestart( std::istream* s );
 
172
 
 
173
        virtual int yylex();
 
174
        virtual void switch_streams( std::istream* new_in, std::ostream* new_out );
 
175
 
 
176
protected:
 
177
        virtual int LexerInput( char* buf, int max_size );
 
178
        virtual void LexerOutput( const char* buf, int size );
 
179
        virtual void LexerError( const char* msg );
 
180
 
 
181
        void yyunput( int c, char* buf_ptr );
 
182
        int yyinput();
 
183
 
 
184
        void yy_load_buffer_state();
 
185
        void yy_init_buffer( struct yy_buffer_state* b, std::istream* s );
 
186
        void yy_flush_buffer( struct yy_buffer_state* b );
 
187
 
 
188
        int yy_start_stack_ptr;
 
189
        int yy_start_stack_depth;
 
190
        int* yy_start_stack;
 
191
 
 
192
        void yy_push_state( int new_state );
 
193
        void yy_pop_state();
 
194
        int yy_top_state();
 
195
 
 
196
        yy_state_type yy_get_previous_state();
 
197
        yy_state_type yy_try_NUL_trans( yy_state_type current_state );
 
198
        int yy_get_next_buffer();
 
199
 
 
200
        std::istream* yyin;         ///< input source for default LexerInput
 
201
        std::ostream* yyout;    ///< output sink for default LexerOutput
 
202
 
 
203
        struct yy_buffer_state* yy_current_buffer;
 
204
 
 
205
        /// yy_hold_char holds the character lost when yytext is formed.
 
206
        char yy_hold_char;
 
207
 
 
208
        /// Number of characters read into yy_ch_buf.
 
209
        int yy_n_chars;
 
210
 
 
211
        /// Points to current character in buffer.
 
212
        char* yy_c_buf_p;
 
213
 
 
214
        int yy_init;            ///< whether we need to initialize
 
215
        int yy_start;           ///< start state number
 
216
 
 
217
        /// Flag which is used to allow yywrap()'s to do buffer switches
 
218
        /// instead of setting up a fresh yyin.  A bit of a hack ...
 
219
        int yy_did_buffer_switch_on_eof;
 
220
 
 
221
        // The following are not always needed, but may be depending
 
222
        // on use of certain flex features (like REJECT or yymore()).
 
223
 
 
224
        yy_state_type yy_last_accepting_state;
 
225
        char* yy_last_accepting_cpos;
 
226
 
 
227
        yy_state_type* yy_state_buf;
 
228
        yy_state_type* yy_state_ptr;
 
229
 
 
230
        char* yy_full_match;
 
231
        int* yy_full_state;
 
232
        int yy_full_lp;
 
233
 
 
234
        int yy_lp;
 
235
        int yy_looking_for_trail_begin;
 
236
 
 
237
        int yy_more_flag;
 
238
        int yy_more_len;
 
239
        int yy_more_offset;
 
240
        int yy_prev_more_offset;
 
241
};
 
242
 
 
243
} // namespace flex
 
244
 
 
245
#endif // CODELITE_FLEX_LEXER_H