annotate generator/parser/lexer.h @ 7:b8a79f9fba5a

More fixes and cleanups in CMake build script.
author SokoL_SD
date Thu, 14 May 2009 08:36:04 +0000
parents e78566595089
children 09a0f1d048f2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
e78566595089 initial import
mandel
parents:
diff changeset
1 /****************************************************************************
e78566595089 initial import
mandel
parents:
diff changeset
2 **
e78566595089 initial import
mandel
parents:
diff changeset
3 ** Copyright (C) 1992-2008 Nokia. All rights reserved.
e78566595089 initial import
mandel
parents:
diff changeset
4 ** Copyright (C) 2002-2005 Roberto Raggi <roberto@kdevelop.org>
e78566595089 initial import
mandel
parents:
diff changeset
5 **
e78566595089 initial import
mandel
parents:
diff changeset
6 ** This file is part of Qt Jambi.
e78566595089 initial import
mandel
parents:
diff changeset
7 **
e78566595089 initial import
mandel
parents:
diff changeset
8 ** * Commercial Usage
e78566595089 initial import
mandel
parents:
diff changeset
9 * Licensees holding valid Qt Commercial licenses may use this file in
e78566595089 initial import
mandel
parents:
diff changeset
10 * accordance with the Qt Commercial License Agreement provided with the
e78566595089 initial import
mandel
parents:
diff changeset
11 * Software or, alternatively, in accordance with the terms contained in
e78566595089 initial import
mandel
parents:
diff changeset
12 * a written agreement between you and Nokia.
e78566595089 initial import
mandel
parents:
diff changeset
13 *
e78566595089 initial import
mandel
parents:
diff changeset
14 *
e78566595089 initial import
mandel
parents:
diff changeset
15 * GNU General Public License Usage
e78566595089 initial import
mandel
parents:
diff changeset
16 * Alternatively, this file may be used under the terms of the GNU
e78566595089 initial import
mandel
parents:
diff changeset
17 * General Public License versions 2.0 or 3.0 as published by the Free
e78566595089 initial import
mandel
parents:
diff changeset
18 * Software Foundation and appearing in the file LICENSE.GPL included in
e78566595089 initial import
mandel
parents:
diff changeset
19 * the packaging of this file. Please review the following information
e78566595089 initial import
mandel
parents:
diff changeset
20 * to ensure GNU General Public Licensing requirements will be met:
e78566595089 initial import
mandel
parents:
diff changeset
21 * http://www.fsf.org/licensing/licenses/info/GPLv2.html and
e78566595089 initial import
mandel
parents:
diff changeset
22 * http://www.gnu.org/copyleft/gpl.html. In addition, as a special
e78566595089 initial import
mandel
parents:
diff changeset
23 * exception, Nokia gives you certain additional rights. These rights
e78566595089 initial import
mandel
parents:
diff changeset
24 * are described in the Nokia Qt GPL Exception version 1.2, included in
e78566595089 initial import
mandel
parents:
diff changeset
25 * the file GPL_EXCEPTION.txt in this package.
e78566595089 initial import
mandel
parents:
diff changeset
26 *
e78566595089 initial import
mandel
parents:
diff changeset
27 * Qt for Windows(R) Licensees
e78566595089 initial import
mandel
parents:
diff changeset
28 * As a special exception, Nokia, as the sole copyright holder for Qt
e78566595089 initial import
mandel
parents:
diff changeset
29 * Designer, grants users of the Qt/Eclipse Integration plug-in the
e78566595089 initial import
mandel
parents:
diff changeset
30 * right for the Qt/Eclipse Integration to link to functionality
e78566595089 initial import
mandel
parents:
diff changeset
31 * provided by Qt Designer and its related libraries.
e78566595089 initial import
mandel
parents:
diff changeset
32 *
e78566595089 initial import
mandel
parents:
diff changeset
33 *
e78566595089 initial import
mandel
parents:
diff changeset
34 * If you are unsure which license is appropriate for your use, please
e78566595089 initial import
mandel
parents:
diff changeset
35 * contact the sales department at qt-sales@nokia.com.
e78566595089 initial import
mandel
parents:
diff changeset
36
e78566595089 initial import
mandel
parents:
diff changeset
37 **
e78566595089 initial import
mandel
parents:
diff changeset
38 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
e78566595089 initial import
mandel
parents:
diff changeset
39 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
e78566595089 initial import
mandel
parents:
diff changeset
40 **
e78566595089 initial import
mandel
parents:
diff changeset
41 ****************************************************************************/
e78566595089 initial import
mandel
parents:
diff changeset
42
e78566595089 initial import
mandel
parents:
diff changeset
43
e78566595089 initial import
mandel
parents:
diff changeset
44 #ifndef LEXER_H
e78566595089 initial import
mandel
parents:
diff changeset
45 #define LEXER_H
e78566595089 initial import
mandel
parents:
diff changeset
46
e78566595089 initial import
mandel
parents:
diff changeset
47 #include "symbol.h"
e78566595089 initial import
mandel
parents:
diff changeset
48
e78566595089 initial import
mandel
parents:
diff changeset
49 #include <QtCore/QString>
e78566595089 initial import
mandel
parents:
diff changeset
50 #include <cstdlib>
e78566595089 initial import
mandel
parents:
diff changeset
51 #include <cassert>
e78566595089 initial import
mandel
parents:
diff changeset
52
e78566595089 initial import
mandel
parents:
diff changeset
53 struct NameSymbol;
e78566595089 initial import
mandel
parents:
diff changeset
54 class Lexer;
e78566595089 initial import
mandel
parents:
diff changeset
55 class Control;
e78566595089 initial import
mandel
parents:
diff changeset
56
e78566595089 initial import
mandel
parents:
diff changeset
57 typedef void (Lexer::*scan_fun_ptr)();
e78566595089 initial import
mandel
parents:
diff changeset
58
e78566595089 initial import
mandel
parents:
diff changeset
59 class Token
e78566595089 initial import
mandel
parents:
diff changeset
60 {
e78566595089 initial import
mandel
parents:
diff changeset
61 public:
e78566595089 initial import
mandel
parents:
diff changeset
62 int kind;
e78566595089 initial import
mandel
parents:
diff changeset
63 std::size_t position;
e78566595089 initial import
mandel
parents:
diff changeset
64 std::size_t size;
e78566595089 initial import
mandel
parents:
diff changeset
65 char const *text;
e78566595089 initial import
mandel
parents:
diff changeset
66
e78566595089 initial import
mandel
parents:
diff changeset
67 union
e78566595089 initial import
mandel
parents:
diff changeset
68 {
e78566595089 initial import
mandel
parents:
diff changeset
69 const NameSymbol *symbol;
e78566595089 initial import
mandel
parents:
diff changeset
70 std::size_t right_brace;
e78566595089 initial import
mandel
parents:
diff changeset
71 } extra;
e78566595089 initial import
mandel
parents:
diff changeset
72 };
e78566595089 initial import
mandel
parents:
diff changeset
73
e78566595089 initial import
mandel
parents:
diff changeset
74 class LocationTable
e78566595089 initial import
mandel
parents:
diff changeset
75 {
e78566595089 initial import
mandel
parents:
diff changeset
76 private:
e78566595089 initial import
mandel
parents:
diff changeset
77 LocationTable(const LocationTable &source);
e78566595089 initial import
mandel
parents:
diff changeset
78 void operator = (const LocationTable &source);
e78566595089 initial import
mandel
parents:
diff changeset
79
e78566595089 initial import
mandel
parents:
diff changeset
80 public:
e78566595089 initial import
mandel
parents:
diff changeset
81 inline LocationTable(std::size_t size = 1024)
e78566595089 initial import
mandel
parents:
diff changeset
82 : lines(0),
e78566595089 initial import
mandel
parents:
diff changeset
83 line_count(0),
e78566595089 initial import
mandel
parents:
diff changeset
84 current_line(0)
e78566595089 initial import
mandel
parents:
diff changeset
85 {
e78566595089 initial import
mandel
parents:
diff changeset
86 resize(size);
e78566595089 initial import
mandel
parents:
diff changeset
87 }
e78566595089 initial import
mandel
parents:
diff changeset
88
e78566595089 initial import
mandel
parents:
diff changeset
89 inline ~LocationTable()
e78566595089 initial import
mandel
parents:
diff changeset
90 {
e78566595089 initial import
mandel
parents:
diff changeset
91 free(lines);
e78566595089 initial import
mandel
parents:
diff changeset
92 }
e78566595089 initial import
mandel
parents:
diff changeset
93
e78566595089 initial import
mandel
parents:
diff changeset
94 inline std::size_t size() const
e78566595089 initial import
mandel
parents:
diff changeset
95 { return line_count; }
e78566595089 initial import
mandel
parents:
diff changeset
96
e78566595089 initial import
mandel
parents:
diff changeset
97 void resize(std::size_t size)
e78566595089 initial import
mandel
parents:
diff changeset
98 {
e78566595089 initial import
mandel
parents:
diff changeset
99 Q_ASSERT(size > 0);
e78566595089 initial import
mandel
parents:
diff changeset
100 lines = (std::size_t*) ::realloc(lines, sizeof(std::size_t) * size);
e78566595089 initial import
mandel
parents:
diff changeset
101 line_count = size;
e78566595089 initial import
mandel
parents:
diff changeset
102 }
e78566595089 initial import
mandel
parents:
diff changeset
103
e78566595089 initial import
mandel
parents:
diff changeset
104 void positionAt(std::size_t offset, int *line, int *column) const
e78566595089 initial import
mandel
parents:
diff changeset
105 { positionAt(offset, (int) current_line, line, column); }
e78566595089 initial import
mandel
parents:
diff changeset
106
e78566595089 initial import
mandel
parents:
diff changeset
107 void positionAt(std::size_t offset, int max_line, int *line, int *column) const;
e78566595089 initial import
mandel
parents:
diff changeset
108
e78566595089 initial import
mandel
parents:
diff changeset
109 inline std::size_t &operator[](int index)
e78566595089 initial import
mandel
parents:
diff changeset
110 { return lines[index]; }
e78566595089 initial import
mandel
parents:
diff changeset
111
e78566595089 initial import
mandel
parents:
diff changeset
112 private:
e78566595089 initial import
mandel
parents:
diff changeset
113 std::size_t *lines;
e78566595089 initial import
mandel
parents:
diff changeset
114 std::size_t line_count;
e78566595089 initial import
mandel
parents:
diff changeset
115 std::size_t current_line;
e78566595089 initial import
mandel
parents:
diff changeset
116
e78566595089 initial import
mandel
parents:
diff changeset
117 friend class Lexer;
e78566595089 initial import
mandel
parents:
diff changeset
118 };
e78566595089 initial import
mandel
parents:
diff changeset
119
e78566595089 initial import
mandel
parents:
diff changeset
120 class TokenStream
e78566595089 initial import
mandel
parents:
diff changeset
121 {
e78566595089 initial import
mandel
parents:
diff changeset
122 private:
e78566595089 initial import
mandel
parents:
diff changeset
123 TokenStream(const TokenStream &);
e78566595089 initial import
mandel
parents:
diff changeset
124 void operator = (const TokenStream &);
e78566595089 initial import
mandel
parents:
diff changeset
125
e78566595089 initial import
mandel
parents:
diff changeset
126 public:
e78566595089 initial import
mandel
parents:
diff changeset
127 inline TokenStream(std::size_t size = 1024)
e78566595089 initial import
mandel
parents:
diff changeset
128 : tokens(0),
e78566595089 initial import
mandel
parents:
diff changeset
129 index(0),
e78566595089 initial import
mandel
parents:
diff changeset
130 token_count(0)
e78566595089 initial import
mandel
parents:
diff changeset
131 {
e78566595089 initial import
mandel
parents:
diff changeset
132 resize(size);
e78566595089 initial import
mandel
parents:
diff changeset
133 }
e78566595089 initial import
mandel
parents:
diff changeset
134
e78566595089 initial import
mandel
parents:
diff changeset
135 inline ~TokenStream()
e78566595089 initial import
mandel
parents:
diff changeset
136 { ::free(tokens); }
e78566595089 initial import
mandel
parents:
diff changeset
137
e78566595089 initial import
mandel
parents:
diff changeset
138 inline std::size_t size() const
e78566595089 initial import
mandel
parents:
diff changeset
139 { return token_count; }
e78566595089 initial import
mandel
parents:
diff changeset
140
e78566595089 initial import
mandel
parents:
diff changeset
141 inline std::size_t cursor() const
e78566595089 initial import
mandel
parents:
diff changeset
142 { return index; }
e78566595089 initial import
mandel
parents:
diff changeset
143
e78566595089 initial import
mandel
parents:
diff changeset
144 inline void rewind(int i)
e78566595089 initial import
mandel
parents:
diff changeset
145 { index = i; }
e78566595089 initial import
mandel
parents:
diff changeset
146
e78566595089 initial import
mandel
parents:
diff changeset
147 void resize(std::size_t size)
e78566595089 initial import
mandel
parents:
diff changeset
148 {
e78566595089 initial import
mandel
parents:
diff changeset
149 Q_ASSERT(size > 0);
e78566595089 initial import
mandel
parents:
diff changeset
150 tokens = (Token*) ::realloc(tokens, sizeof(Token) * size);
e78566595089 initial import
mandel
parents:
diff changeset
151 token_count = size;
e78566595089 initial import
mandel
parents:
diff changeset
152 }
e78566595089 initial import
mandel
parents:
diff changeset
153
e78566595089 initial import
mandel
parents:
diff changeset
154 inline std::size_t nextToken()
e78566595089 initial import
mandel
parents:
diff changeset
155 { return index++; }
e78566595089 initial import
mandel
parents:
diff changeset
156
e78566595089 initial import
mandel
parents:
diff changeset
157 inline int lookAhead(std::size_t i = 0) const
e78566595089 initial import
mandel
parents:
diff changeset
158 { return tokens[index + i].kind; }
e78566595089 initial import
mandel
parents:
diff changeset
159
e78566595089 initial import
mandel
parents:
diff changeset
160 inline int kind(std::size_t i) const
e78566595089 initial import
mandel
parents:
diff changeset
161 { return tokens[i].kind; }
e78566595089 initial import
mandel
parents:
diff changeset
162
e78566595089 initial import
mandel
parents:
diff changeset
163 inline std::size_t position(std::size_t i) const
e78566595089 initial import
mandel
parents:
diff changeset
164 { return tokens[i].position; }
e78566595089 initial import
mandel
parents:
diff changeset
165
e78566595089 initial import
mandel
parents:
diff changeset
166 inline const NameSymbol *symbol(std::size_t i) const
e78566595089 initial import
mandel
parents:
diff changeset
167 { return tokens[i].extra.symbol; }
e78566595089 initial import
mandel
parents:
diff changeset
168
e78566595089 initial import
mandel
parents:
diff changeset
169 inline std::size_t matchingBrace(std::size_t i) const
e78566595089 initial import
mandel
parents:
diff changeset
170 { return tokens[i].extra.right_brace; }
e78566595089 initial import
mandel
parents:
diff changeset
171
e78566595089 initial import
mandel
parents:
diff changeset
172 inline Token &operator[](int index)
e78566595089 initial import
mandel
parents:
diff changeset
173 { return tokens[index]; }
e78566595089 initial import
mandel
parents:
diff changeset
174
e78566595089 initial import
mandel
parents:
diff changeset
175 inline const Token &token(int index) const
e78566595089 initial import
mandel
parents:
diff changeset
176 { return tokens[index]; }
e78566595089 initial import
mandel
parents:
diff changeset
177
e78566595089 initial import
mandel
parents:
diff changeset
178 private:
e78566595089 initial import
mandel
parents:
diff changeset
179 Token *tokens;
e78566595089 initial import
mandel
parents:
diff changeset
180 std::size_t index;
e78566595089 initial import
mandel
parents:
diff changeset
181 std::size_t token_count;
e78566595089 initial import
mandel
parents:
diff changeset
182
e78566595089 initial import
mandel
parents:
diff changeset
183 private:
e78566595089 initial import
mandel
parents:
diff changeset
184 friend class Lexer;
e78566595089 initial import
mandel
parents:
diff changeset
185 };
e78566595089 initial import
mandel
parents:
diff changeset
186
e78566595089 initial import
mandel
parents:
diff changeset
187 class LocationManager
e78566595089 initial import
mandel
parents:
diff changeset
188 {
e78566595089 initial import
mandel
parents:
diff changeset
189 LocationManager(LocationManager const &__other);
e78566595089 initial import
mandel
parents:
diff changeset
190 void operator = (LocationManager const &__other);
e78566595089 initial import
mandel
parents:
diff changeset
191
e78566595089 initial import
mandel
parents:
diff changeset
192 public:
e78566595089 initial import
mandel
parents:
diff changeset
193 LocationManager (TokenStream &__token_stream,
e78566595089 initial import
mandel
parents:
diff changeset
194 LocationTable &__location_table,
e78566595089 initial import
mandel
parents:
diff changeset
195 LocationTable &__line_table):
e78566595089 initial import
mandel
parents:
diff changeset
196 token_stream (__token_stream),
e78566595089 initial import
mandel
parents:
diff changeset
197 location_table (__location_table),
e78566595089 initial import
mandel
parents:
diff changeset
198 line_table (__line_table) {}
e78566595089 initial import
mandel
parents:
diff changeset
199
e78566595089 initial import
mandel
parents:
diff changeset
200 void positionAt(std::size_t offset, int *line, int *column,
e78566595089 initial import
mandel
parents:
diff changeset
201 QString *filename) const;
e78566595089 initial import
mandel
parents:
diff changeset
202
e78566595089 initial import
mandel
parents:
diff changeset
203 void extract_line(int offset, int *line, QString *filename) const;
e78566595089 initial import
mandel
parents:
diff changeset
204
e78566595089 initial import
mandel
parents:
diff changeset
205 TokenStream &token_stream;
e78566595089 initial import
mandel
parents:
diff changeset
206 LocationTable &location_table;
e78566595089 initial import
mandel
parents:
diff changeset
207 LocationTable &line_table;
e78566595089 initial import
mandel
parents:
diff changeset
208 };
e78566595089 initial import
mandel
parents:
diff changeset
209
e78566595089 initial import
mandel
parents:
diff changeset
210 class Lexer
e78566595089 initial import
mandel
parents:
diff changeset
211 {
e78566595089 initial import
mandel
parents:
diff changeset
212 public:
e78566595089 initial import
mandel
parents:
diff changeset
213 Lexer(LocationManager &__location, Control *__control):
e78566595089 initial import
mandel
parents:
diff changeset
214 _M_location(__location),
e78566595089 initial import
mandel
parents:
diff changeset
215 token_stream(_M_location.token_stream),
e78566595089 initial import
mandel
parents:
diff changeset
216 location_table(_M_location.location_table),
e78566595089 initial import
mandel
parents:
diff changeset
217 line_table(_M_location.line_table),
e78566595089 initial import
mandel
parents:
diff changeset
218 control(__control) {}
e78566595089 initial import
mandel
parents:
diff changeset
219
e78566595089 initial import
mandel
parents:
diff changeset
220 void tokenize(const char *contents, std::size_t size);
e78566595089 initial import
mandel
parents:
diff changeset
221
e78566595089 initial import
mandel
parents:
diff changeset
222 LocationManager &_M_location;
e78566595089 initial import
mandel
parents:
diff changeset
223 TokenStream &token_stream;
e78566595089 initial import
mandel
parents:
diff changeset
224 LocationTable &location_table;
e78566595089 initial import
mandel
parents:
diff changeset
225 LocationTable &line_table;
e78566595089 initial import
mandel
parents:
diff changeset
226
e78566595089 initial import
mandel
parents:
diff changeset
227 private:
e78566595089 initial import
mandel
parents:
diff changeset
228 void reportError(const QString& msg);
e78566595089 initial import
mandel
parents:
diff changeset
229
e78566595089 initial import
mandel
parents:
diff changeset
230 void initialize_scan_table();
e78566595089 initial import
mandel
parents:
diff changeset
231 void scan_newline();
e78566595089 initial import
mandel
parents:
diff changeset
232 void scan_white_spaces();
e78566595089 initial import
mandel
parents:
diff changeset
233 void scan_identifier_or_keyword();
e78566595089 initial import
mandel
parents:
diff changeset
234 void scan_identifier_or_literal();
e78566595089 initial import
mandel
parents:
diff changeset
235 void scan_int_constant();
e78566595089 initial import
mandel
parents:
diff changeset
236 void scan_char_constant();
e78566595089 initial import
mandel
parents:
diff changeset
237 void scan_string_constant();
e78566595089 initial import
mandel
parents:
diff changeset
238 void scan_invalid_input();
e78566595089 initial import
mandel
parents:
diff changeset
239 void scan_preprocessor();
e78566595089 initial import
mandel
parents:
diff changeset
240
e78566595089 initial import
mandel
parents:
diff changeset
241 // keywords
e78566595089 initial import
mandel
parents:
diff changeset
242 void scanKeyword0();
e78566595089 initial import
mandel
parents:
diff changeset
243 void scanKeyword2();
e78566595089 initial import
mandel
parents:
diff changeset
244 void scanKeyword3();
e78566595089 initial import
mandel
parents:
diff changeset
245 void scanKeyword4();
e78566595089 initial import
mandel
parents:
diff changeset
246 void scanKeyword5();
e78566595089 initial import
mandel
parents:
diff changeset
247 void scanKeyword6();
e78566595089 initial import
mandel
parents:
diff changeset
248 void scanKeyword7();
e78566595089 initial import
mandel
parents:
diff changeset
249 void scanKeyword8();
e78566595089 initial import
mandel
parents:
diff changeset
250 void scanKeyword9();
e78566595089 initial import
mandel
parents:
diff changeset
251 void scanKeyword10();
e78566595089 initial import
mandel
parents:
diff changeset
252 void scanKeyword11();
e78566595089 initial import
mandel
parents:
diff changeset
253 void scanKeyword12();
e78566595089 initial import
mandel
parents:
diff changeset
254 void scanKeyword13();
e78566595089 initial import
mandel
parents:
diff changeset
255 void scanKeyword14();
e78566595089 initial import
mandel
parents:
diff changeset
256 void scanKeyword16();
e78566595089 initial import
mandel
parents:
diff changeset
257
e78566595089 initial import
mandel
parents:
diff changeset
258 // operators
e78566595089 initial import
mandel
parents:
diff changeset
259 void scan_not();
e78566595089 initial import
mandel
parents:
diff changeset
260 void scan_remainder();
e78566595089 initial import
mandel
parents:
diff changeset
261 void scan_and();
e78566595089 initial import
mandel
parents:
diff changeset
262 void scan_left_paren();
e78566595089 initial import
mandel
parents:
diff changeset
263 void scan_right_paren();
e78566595089 initial import
mandel
parents:
diff changeset
264 void scan_star();
e78566595089 initial import
mandel
parents:
diff changeset
265 void scan_plus();
e78566595089 initial import
mandel
parents:
diff changeset
266 void scan_comma();
e78566595089 initial import
mandel
parents:
diff changeset
267 void scan_minus();
e78566595089 initial import
mandel
parents:
diff changeset
268 void scan_dot();
e78566595089 initial import
mandel
parents:
diff changeset
269 void scan_divide();
e78566595089 initial import
mandel
parents:
diff changeset
270 void scan_colon();
e78566595089 initial import
mandel
parents:
diff changeset
271 void scan_semicolon();
e78566595089 initial import
mandel
parents:
diff changeset
272 void scan_less();
e78566595089 initial import
mandel
parents:
diff changeset
273 void scan_equal();
e78566595089 initial import
mandel
parents:
diff changeset
274 void scan_greater();
e78566595089 initial import
mandel
parents:
diff changeset
275 void scan_question();
e78566595089 initial import
mandel
parents:
diff changeset
276 void scan_left_bracket();
e78566595089 initial import
mandel
parents:
diff changeset
277 void scan_right_bracket();
e78566595089 initial import
mandel
parents:
diff changeset
278 void scan_xor();
e78566595089 initial import
mandel
parents:
diff changeset
279 void scan_left_brace();
e78566595089 initial import
mandel
parents:
diff changeset
280 void scan_or();
e78566595089 initial import
mandel
parents:
diff changeset
281 void scan_right_brace();
e78566595089 initial import
mandel
parents:
diff changeset
282 void scan_tilde();
e78566595089 initial import
mandel
parents:
diff changeset
283 void scan_EOF();
e78566595089 initial import
mandel
parents:
diff changeset
284
e78566595089 initial import
mandel
parents:
diff changeset
285 private:
e78566595089 initial import
mandel
parents:
diff changeset
286 Control *control;
e78566595089 initial import
mandel
parents:
diff changeset
287 const unsigned char *cursor;
e78566595089 initial import
mandel
parents:
diff changeset
288 const unsigned char *begin_buffer;
e78566595089 initial import
mandel
parents:
diff changeset
289 const unsigned char *end_buffer;
e78566595089 initial import
mandel
parents:
diff changeset
290 std::size_t index;
e78566595089 initial import
mandel
parents:
diff changeset
291
e78566595089 initial import
mandel
parents:
diff changeset
292 static scan_fun_ptr s_scan_table[];
e78566595089 initial import
mandel
parents:
diff changeset
293 static scan_fun_ptr s_scan_keyword_table[];
e78566595089 initial import
mandel
parents:
diff changeset
294 static bool s_initialized;
e78566595089 initial import
mandel
parents:
diff changeset
295 };
e78566595089 initial import
mandel
parents:
diff changeset
296
e78566595089 initial import
mandel
parents:
diff changeset
297 #endif // LEXER_H
e78566595089 initial import
mandel
parents:
diff changeset
298
e78566595089 initial import
mandel
parents:
diff changeset
299 // kate: space-indent on; indent-width 2; replace-tabs on;