]>
Commit | Line | Data |
---|---|---|
e04a16fb | 1 | /* Language lexer definitions for the GNU compiler for the Java(TM) language. |
df32d2ce | 2 | Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. |
e04a16fb AG |
3 | Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com) |
4 | ||
5 | This file is part of GNU CC. | |
6 | ||
7 | GNU CC 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) | |
10 | any later version. | |
11 | ||
12 | GNU CC 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. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with GNU CC; see the file COPYING. If not, write to | |
19 | the Free Software Foundation, 59 Temple Place - Suite 330, | |
20 | Boston, MA 02111-1307, USA. | |
21 | ||
22 | Java and all Java-based marks are trademarks or registered trademarks | |
23 | of Sun Microsystems, Inc. in the United States and other countries. | |
24 | The Free Software Foundation is independent of Sun Microsystems, Inc. */ | |
25 | ||
26 | #ifndef JV_LEX_H | |
27 | #define JV_LEX_H | |
28 | ||
c583dd46 APB |
29 | #include <setjmp.h> /* set_float_handler argument uses it */ |
30 | ||
e04a16fb AG |
31 | /* Extern global variables declarations */ |
32 | extern FILE *finput; | |
33 | extern int lineno; | |
e04a16fb AG |
34 | |
35 | /* A Unicode character, as read from the input file */ | |
36 | typedef unsigned short unicode_t; | |
37 | ||
e04a16fb AG |
38 | /* Debug macro to print-out what we match */ |
39 | #ifdef JAVA_LEX_DEBUG | |
40 | #ifdef JAVA_LEX_DEBUG_CHAR | |
41 | #define JAVA_LEX_CHAR(c) printf ("java_lex:%d: char '%c'.%d\n", \ | |
42 | lineno, (c < 128 ? c : '.'), c); | |
43 | #else | |
44 | #define JAVA_LEX_CHAR(c) | |
45 | #endif | |
46 | #define JAVA_LEX_KW(c) printf ("java_lex:%d: keyword: '%s'\n", lineno,c) | |
47 | #define JAVA_LEX_ID(s) printf ("java_lex:%d: ID: '%s'\n", \ | |
48 | lineno, \ | |
49 | (all_ascii ? s : "<U>")) | |
50 | #define JAVA_LEX_LIT(s, r) printf ("java_lex:%d: literal '%s'_%d\n", \ | |
51 | lineno, s, r) | |
52 | #define JAVA_LEX_CHAR_LIT(s) printf ("java_lex:%d: literal '%d'\n", lineno, s) | |
53 | #define JAVA_LEX_STR_LIT(s) { \ | |
54 | int i; \ | |
55 | printf ("java_lex:%d: literal '%s'\n", \ | |
56 | lineno, s); \ | |
57 | } | |
58 | #define JAVA_LEX_SEP(c) printf ("java_lex:%d: separator '%c'\n",lineno,c) | |
59 | #define JAVA_LEX_OP(c) printf ("java_lex:%d: operator '%s'\n", lineno,c) | |
60 | #else | |
61 | #define JAVA_LEX_CHAR(c) | |
62 | #define JAVA_LEX_KW(c) | |
63 | #define JAVA_LEX_ID(s) | |
64 | #define JAVA_LEX_LIT(s,r) | |
65 | #define JAVA_LEX_CHAR_LIT(s) | |
66 | #define JAVA_LEX_STR_LIT(s) | |
67 | #define JAVA_LEX_SEP(c) | |
68 | #define JAVA_LEX_OP(s) | |
69 | #endif | |
70 | ||
71 | /* Line information containers */ | |
72 | struct java_line { | |
73 | unicode_t *line; /* The line's unicode */ | |
74 | char *unicode_escape_p; /* The maching char was a unicode escape */ | |
75 | unicode_t ahead[1]; /* Character ahead */ | |
76 | char unicode_escape_ahead_p; /* Character ahead is a unicode escape */ | |
77 | int max; /* buffer's max size */ | |
78 | int size; /* number of unicodes */ | |
79 | int current; /* Current position, unicode based */ | |
80 | int char_col; /* Current position, input char based */ | |
81 | int lineno; /* Its line number */ | |
82 | int white_space_only; /* If it contains only white spaces */ | |
83 | }; | |
84 | #define JAVA_COLUMN_DELTA(p) \ | |
85 | (ctxp->c_line->unicode_escape_p [ctxp->c_line->current+(p)] ? 6 : \ | |
86 | (ctxp->c_line->line [ctxp->c_line->current+(p)] == '\t' ? 8 : 1)) | |
87 | ||
88 | struct java_error { | |
89 | struct java_line *line; | |
90 | int error; | |
91 | }; | |
92 | ||
93 | typedef struct _java_lc { | |
94 | int line; | |
f8976021 | 95 | int prev_col; |
e04a16fb AG |
96 | int col; |
97 | } java_lc; | |
98 | ||
99 | ||
100 | #define JAVA_LINE_MAX 80 | |
101 | ||
45ec036e PB |
102 | /* Macro to read and unread bytes */ |
103 | #define UNGETC(c) ungetc(c, finput) | |
e04a16fb AG |
104 | #define GETC() getc(finput) |
105 | ||
106 | /* Build a location compound integer */ | |
107 | #define BUILD_LOCATION() ((ctxp->elc.line << 12) | (ctxp->elc.col & 0xfff)) | |
108 | ||
109 | /* Those macros are defined differently if we compile jc1-lite | |
110 | (JC1_LITE defined) or jc1. */ | |
111 | #ifdef JC1_LITE | |
112 | ||
113 | #define DCONST0 0 | |
e04a16fb AG |
114 | #define REAL_VALUE_TYPE int |
115 | #define SET_FLOAT_HANDLER(H) | |
116 | #define GET_IDENTIFIER(S) xstrdup ((S)) | |
117 | #define REAL_VALUE_ATOF(LIT,MODE) 0 | |
118 | #define REAL_VALUE_ISINF(VALUE) 0 | |
119 | #define REAL_VALUE_ISNAN(VALUE) 0 | |
120 | #define SET_REAL_VALUE_ATOF(TARGET,SOURCE) | |
121 | #define FLOAT_TYPE_NODE 0 | |
122 | #define DOUBLE_TYPE_NODE 0 | |
123 | #define SET_MODIFIER_CTX(TOKEN) java_lval->value = (TOKEN) | |
124 | #define GET_TYPE_PRECISION(NODE) 4 | |
125 | #define BUILD_OPERATOR(TOKEN) return TOKEN | |
05a3dfc7 | 126 | #define BUILD_OPERATOR2(TOKEN) return ASSIGN_ANY_TK |
e04a16fb AG |
127 | #define SET_LVAL_NODE(NODE) |
128 | #define SET_LVAL_NODE_TYPE(NODE, TYPE) | |
129 | #define BUILD_ID_WFL(EXP) (EXP) | |
130 | #define JAVA_FLOAT_RANGE_ERROR(S) {} | |
131 | #define JAVA_INTEGRAL_RANGE_ERROR(S) {} | |
132 | ||
133 | #else | |
134 | ||
df32d2ce | 135 | extern void set_float_handler PARAMS ((jmp_buf)); |
e04a16fb AG |
136 | #define SET_FLOAT_HANDLER(H) set_float_handler ((H)) |
137 | #define DCONST0 dconst0 | |
138 | #define GET_IDENTIFIER(S) get_identifier ((S)) | |
139 | #define SET_REAL_VALUE_ATOF(TARGET,SOURCE) (TARGET) = (SOURCE) | |
140 | #define FLOAT_TYPE_NODE float_type_node | |
141 | #define DOUBLE_TYPE_NODE double_type_node | |
142 | /* Set modifier_ctx according to TOKEN */ | |
143 | #define SET_MODIFIER_CTX(TOKEN) \ | |
144 | { \ | |
145 | ctxp->modifier_ctx [(TOKEN)-PUBLIC_TK] = build_wfl_node (NULL_TREE); \ | |
146 | java_lval->value = (TOKEN)-PUBLIC_TK; \ | |
147 | } | |
148 | /* Type precision for long */ | |
149 | #define GET_TYPE_PRECISION(NODE) TYPE_PRECISION (long_type_node) / 8; | |
150 | /* Build an operator tree node and return TOKEN */ | |
151 | #define BUILD_OPERATOR(TOKEN) \ | |
152 | { \ | |
153 | java_lval->operator.token = (TOKEN); \ | |
154 | java_lval->operator.location = BUILD_LOCATION(); \ | |
155 | return (TOKEN); \ | |
156 | } | |
157 | ||
158 | /* Build an operator tree node but return ASSIGN_ANY_TK */ | |
159 | #define BUILD_OPERATOR2(TOKEN) \ | |
160 | { \ | |
161 | java_lval->operator.token = (TOKEN); \ | |
162 | java_lval->operator.location = BUILD_LOCATION(); \ | |
163 | return ASSIGN_ANY_TK; \ | |
164 | } | |
165 | /* Set java_lval->node and TREE_TYPE(java_lval->node) in macros */ | |
166 | #define SET_LVAL_NODE(NODE) java_lval->node = (NODE) | |
167 | #define SET_LVAL_NODE_TYPE(NODE,TYPE) \ | |
168 | { \ | |
169 | java_lval->node = (NODE); \ | |
170 | TREE_TYPE (java_lval->node) = (TYPE); \ | |
171 | } | |
172 | /* Wrap identifier around a wfl */ | |
173 | #define BUILD_ID_WFL(EXP) build_wfl_node ((EXP)) | |
174 | /* Special ways to report error on numeric literals */ | |
175 | #define JAVA_FLOAT_RANGE_ERROR(m) \ | |
176 | { \ | |
177 | char msg [1024]; \ | |
178 | int i = ctxp->c_line->current; \ | |
179 | ctxp->c_line->current = number_beginning; \ | |
180 | sprintf (msg, "Floating pointer literal exceeds range of `%s'", (m)); \ | |
181 | java_lex_error (msg, 0); \ | |
182 | ctxp->c_line->current = i; \ | |
183 | value = dconst0; \ | |
184 | } | |
185 | #define JAVA_INTEGRAL_RANGE_ERROR(m) \ | |
186 | { \ | |
187 | int i = ctxp->c_line->current; \ | |
188 | ctxp->c_line->current = number_beginning; \ | |
189 | java_lex_error (m, 0); \ | |
190 | ctxp->c_line->current = i; \ | |
191 | } | |
192 | ||
193 | #endif /* Definitions for jc1 compilation only */ | |
194 | ||
195 | /* Macros to decode character ranges */ | |
196 | #define RANGE(c, l, h) (((c) >= l && (c) <= h)) | |
197 | #define JAVA_WHITE_SPACE_P(c) (c == ' ' || c == '\t' || c == '\f') | |
198 | #define JAVA_ID_CHAR_P(c) ((c < 128 && (RANGE (c, 'A', 'Z') || \ | |
199 | RANGE (c, 'a', 'z') || \ | |
200 | RANGE (c, '0', '9') || \ | |
201 | c == '_' || \ | |
202 | c == '$')) || \ | |
203 | (c > 127 && java_letter_or_digit_p (c))) | |
204 | #define JAVA_ASCII_DIGIT(c) RANGE(c,'0', '9') | |
205 | #define JAVA_ASCII_OCTDIGIT(c) RANGE(c,'0', '7') | |
206 | #define JAVA_ASCII_HEXDIGIT(c) (RANGE(c,'0', '9') || \ | |
207 | RANGE(c,'a', 'f') || \ | |
208 | RANGE(c,'A', 'F')) | |
209 | #define JAVA_ASCII_FPCHAR(c) (RANGE(c,'d', 'f') || RANGE(c,'D', 'F') || \ | |
210 | c == '.' || JAVA_ASCII_DIGIT (c)) | |
211 | #define JAVA_FP_SUFFIX(c) (c == 'D' || c == 'd' || c == 'f' || c == 'F') | |
212 | #define JAVA_FP_EXP(c) (c == 'E' || c == 'F') | |
213 | #define JAVA_FP_PM(c) (c == '-' || c == '+') | |
214 | #define JAVA_ASCII_LETTER(c) (RANGE(c,'a', 'z') || RANGE(c,'A', 'Z')) | |
215 | #define JAVA_DIGIT_P(c) \ | |
216 | (RANGE (c, 0x030, 0x039) || /* ISO-Latin-1 (and ASCII) digits ('0'-'9') */ \ | |
217 | RANGE (c, 0x660, 0x669) || /* Arabic-Indic digits */ \ | |
218 | RANGE (c, 0x6F0, 0x6F9) || /* Eastern Arabic-Indic digits */ \ | |
219 | RANGE (c, 0x966, 0x96F) || /* Devanagari digits */ \ | |
220 | RANGE (c, 0x9E6, 0x9EF) || /* Bengali digits */ \ | |
221 | RANGE (c, 0xA66, 0xA6F) || /* Gurmukhi digits */ \ | |
222 | RANGE (c, 0xAE6, 0xAEF) || /* Gujarati digits */ \ | |
223 | RANGE (c, 0xB66, 0xB6F) || /* Oriya digits */ \ | |
224 | RANGE (c, 0xBE7, 0xBEF) || /* Tamil digits */ \ | |
225 | RANGE (c, 0xC66, 0xC6F) || /* Telugu digits */ \ | |
226 | RANGE (c, 0xCE6, 0xCEF) || /* Kannada digits */ \ | |
227 | RANGE (c, 0xD66, 0xD6F) || /* Malayalam digits */ \ | |
228 | RANGE (c, 0xE50, 0xE59) || /* Thai digits */ \ | |
229 | RANGE (c, 0xED0, 0xED9)) /* Lao digits */ | |
230 | ||
231 | /* This is not to be used as a stand alone macro. Use JAVA_ID_CHAR_P() | |
232 | or the forcoming JAVA_LETTER_OR_DIGIT_P() instead. | |
233 | It need to be split by region. FIXME. */ | |
234 | #define _JAVA_LETTER_OR_DIGIT_P(c) \ | |
235 | (RANGE (c, 0x00C0, 0x00D6) || \ | |
236 | RANGE (c, 0x00D8, 0x00F6) || \ | |
237 | RANGE (c, 0x00F8, 0x01F5) || \ | |
238 | RANGE (c, 0x01FA, 0x0217) || \ | |
239 | RANGE (c, 0x0250, 0x02A8) || \ | |
240 | RANGE (c, 0x02B0, 0x02DE) || \ | |
241 | RANGE (c, 0x02E0, 0x02E9) || \ | |
242 | RANGE (c, 0x0300, 0x0345) || \ | |
243 | RANGE (c, 0x0360, 0x0361) || \ | |
244 | RANGE (c, 0x0374, 0x0375) || \ | |
245 | c == 0x037A || \ | |
246 | c == 0x037E || \ | |
247 | RANGE (c, 0x0384, 0x038A) || \ | |
248 | c == 0x038C || \ | |
249 | c == 0x038E || \ | |
250 | RANGE (c, 0x038F, 0x03A1) || \ | |
251 | RANGE (c, 0x03A3, 0x03CE) || \ | |
252 | RANGE (c, 0x03D0, 0x03D6) || \ | |
253 | RANGE (c, 0x03DA, 0x03E2) || \ | |
254 | c == 0x03DA || \ | |
255 | c == 0x03DC || \ | |
256 | c == 0x03DE || \ | |
257 | c == 0x03E0 || \ | |
258 | RANGE (c, 0x03E2, 0x03F3) || \ | |
259 | RANGE (c, 0x0401, 0x040C) || \ | |
260 | RANGE (c, 0x040E, 0x044F) || \ | |
261 | RANGE (c, 0x0451, 0x045C) || \ | |
262 | RANGE (c, 0x045E, 0x0486) || \ | |
263 | RANGE (c, 0x0490, 0x04C4) || \ | |
264 | RANGE (c, 0x04C7, 0x04C8) || \ | |
265 | RANGE (c, 0x04CB, 0x04CC) || \ | |
266 | RANGE (c, 0x04D0, 0x04EB) || \ | |
267 | RANGE (c, 0x04EE, 0x04F5) || \ | |
268 | RANGE (c, 0x04F8, 0x04F9) || \ | |
269 | RANGE (c, 0x0531, 0x0556) || \ | |
270 | RANGE (c, 0x0559, 0x055F) || \ | |
271 | RANGE (c, 0x0561, 0x0587) || \ | |
272 | c == 0x0589 || \ | |
273 | RANGE (c, 0x05B0, 0x05B9) || \ | |
274 | RANGE (c, 0x05BB, 0x05C3) || \ | |
275 | RANGE (c, 0x05D0, 0x05EA) || \ | |
276 | RANGE (c, 0x05F0, 0x05F4) || \ | |
277 | c == 0x060C || \ | |
278 | c == 0x061B || \ | |
279 | c == 0x061F || \ | |
280 | c == 0x0621 || \ | |
281 | RANGE (c, 0x0622, 0x063A) || \ | |
282 | RANGE (c, 0x0640, 0x0652) || \ | |
283 | RANGE (c, 0x0660, 0x066D) || \ | |
284 | RANGE (c, 0x0670, 0x06B7) || \ | |
285 | RANGE (c, 0x06BA, 0x06BE) || \ | |
286 | RANGE (c, 0x06C0, 0x06CE) || \ | |
287 | RANGE (c, 0x06D0, 0x06ED) || \ | |
288 | RANGE (c, 0x06F0, 0x06F9) || \ | |
289 | RANGE (c, 0x0901, 0x0903) || \ | |
290 | RANGE (c, 0x0905, 0x0939) || \ | |
291 | RANGE (c, 0x093C, 0x094D) || \ | |
292 | RANGE (c, 0x0950, 0x0954) || \ | |
293 | RANGE (c, 0x0958, 0x0970) || \ | |
294 | RANGE (c, 0x0981, 0x0983) || \ | |
295 | RANGE (c, 0x0985, 0x098C) || \ | |
296 | RANGE (c, 0x098F, 0x0990) || \ | |
297 | RANGE (c, 0x0993, 0x09A8) || \ | |
298 | RANGE (c, 0x09AA, 0x09B0) || \ | |
299 | c == 0x09B2 || \ | |
300 | RANGE (c, 0x09B6, 0x09B9) || \ | |
301 | c == 0x09BC || \ | |
302 | c == 0x09BE || \ | |
303 | RANGE (c, 0x09BF, 0x09C4) || \ | |
304 | RANGE (c, 0x09C7, 0x09C8) || \ | |
305 | RANGE (c, 0x09CB, 0x09CD) || \ | |
306 | c == 0x09D7 || \ | |
307 | RANGE (c, 0x09DC, 0x09DD) || \ | |
308 | RANGE (c, 0x09DF, 0x09E3) || \ | |
309 | RANGE (c, 0x09E6, 0x09FA) || \ | |
310 | c == 0x0A02 || \ | |
311 | RANGE (c, 0x0A05, 0x0A0A) || \ | |
312 | RANGE (c, 0x0A0F, 0x0A10) || \ | |
313 | RANGE (c, 0x0A13, 0x0A28) || \ | |
314 | RANGE (c, 0x0A2A, 0x0A30) || \ | |
315 | RANGE (c, 0x0A32, 0x0A33) || \ | |
316 | RANGE (c, 0x0A35, 0x0A36) || \ | |
317 | RANGE (c, 0x0A38, 0x0A39) || \ | |
318 | c == 0x0A3C || \ | |
319 | c == 0x0A3E || \ | |
320 | RANGE (c, 0x0A3F, 0x0A42) || \ | |
321 | RANGE (c, 0x0A47, 0x0A48) || \ | |
322 | RANGE (c, 0x0A4B, 0x0A4D) || \ | |
323 | RANGE (c, 0x0A59, 0x0A5C) || \ | |
324 | c == 0x0A5E || \ | |
325 | RANGE (c, 0x0A66, 0x0A74) || \ | |
326 | RANGE (c, 0x0A81, 0x0A83) || \ | |
327 | RANGE (c, 0x0A85, 0x0A8B) || \ | |
328 | c == 0x0A8D || \ | |
329 | c == 0x0A8F || \ | |
330 | RANGE (c, 0x0A90, 0x0A91) || \ | |
331 | RANGE (c, 0x0A93, 0x0AA8) || \ | |
332 | RANGE (c, 0x0AAA, 0x0AB0) || \ | |
333 | RANGE (c, 0x0AB2, 0x0AB3) || \ | |
334 | RANGE (c, 0x0AB5, 0x0AB9) || \ | |
335 | RANGE (c, 0x0ABC, 0x0AC5) || \ | |
336 | RANGE (c, 0x0AC7, 0x0AC9) || \ | |
337 | RANGE (c, 0x0ACB, 0x0ACD) || \ | |
338 | c == 0x0AD0 || \ | |
339 | c == 0x0AE0 || \ | |
340 | RANGE (c, 0x0AE6, 0x0AEF) || \ | |
341 | RANGE (c, 0x0B01, 0x0B03) || \ | |
342 | RANGE (c, 0x0B05, 0x0B0C) || \ | |
343 | RANGE (c, 0x0B0F, 0x0B10) || \ | |
344 | RANGE (c, 0x0B13, 0x0B28) || \ | |
345 | RANGE (c, 0x0B2A, 0x0B30) || \ | |
346 | RANGE (c, 0x0B32, 0x0B33) || \ | |
347 | RANGE (c, 0x0B36, 0x0B39) || \ | |
348 | RANGE (c, 0x0B3C, 0x0B43) || \ | |
349 | RANGE (c, 0x0B47, 0x0B48) || \ | |
350 | RANGE (c, 0x0B4B, 0x0B4D) || \ | |
351 | RANGE (c, 0x0B56, 0x0B57) || \ | |
352 | RANGE (c, 0x0B5C, 0x0B5D) || \ | |
353 | RANGE (c, 0x0B5F, 0x0B61) || \ | |
354 | RANGE (c, 0x0B66, 0x0B70) || \ | |
355 | RANGE (c, 0x0B82, 0x0B83) || \ | |
356 | RANGE (c, 0x0B85, 0x0B8A) || \ | |
357 | RANGE (c, 0x0B8E, 0x0B90) || \ | |
358 | RANGE (c, 0x0B92, 0x0B95) || \ | |
359 | RANGE (c, 0x0B99, 0x0B9A) || \ | |
360 | c == 0x0B9C || \ | |
361 | c == 0x0B9E || \ | |
362 | c == 0x0B9F || \ | |
363 | RANGE (c, 0x0BA3, 0x0BA4) || \ | |
364 | RANGE (c, 0x0BA8, 0x0BAA) || \ | |
365 | RANGE (c, 0x0BAE, 0x0BB5) || \ | |
366 | RANGE (c, 0x0BB7, 0x0BB9) || \ | |
367 | RANGE (c, 0x0BBE, 0x0BC2) || \ | |
368 | RANGE (c, 0x0BC6, 0x0BC8) || \ | |
369 | RANGE (c, 0x0BCA, 0x0BCD) || \ | |
370 | c == 0x0BD7 || \ | |
371 | RANGE (c, 0x0BE7, 0x0BF2) || \ | |
372 | RANGE (c, 0x0C01, 0x0C03) || \ | |
373 | RANGE (c, 0x0C05, 0x0C0C) || \ | |
374 | RANGE (c, 0x0C0E, 0x0C10) || \ | |
375 | RANGE (c, 0x0C12, 0x0C28) || \ | |
376 | RANGE (c, 0x0C2A, 0x0C33) || \ | |
377 | RANGE (c, 0x0C35, 0x0C39) || \ | |
378 | RANGE (c, 0x0C3E, 0x0C44) || \ | |
379 | RANGE (c, 0x0C46, 0x0C48) || \ | |
380 | RANGE (c, 0x0C4A, 0x0C4D) || \ | |
381 | RANGE (c, 0x0C55, 0x0C56) || \ | |
382 | RANGE (c, 0x0C60, 0x0C61) || \ | |
383 | RANGE (c, 0x0C66, 0x0C6F) || \ | |
384 | RANGE (c, 0x0C82, 0x0C83) || \ | |
385 | RANGE (c, 0x0C85, 0x0C8C) || \ | |
386 | RANGE (c, 0x0C8E, 0x0C90) || \ | |
387 | RANGE (c, 0x0C92, 0x0CA8) || \ | |
388 | RANGE (c, 0x0CAA, 0x0CB3) || \ | |
389 | RANGE (c, 0x0CB5, 0x0CB9) || \ | |
390 | RANGE (c, 0x0CBE, 0x0CC4) || \ | |
391 | RANGE (c, 0x0CC6, 0x0CC8) || \ | |
392 | RANGE (c, 0x0CCA, 0x0CCD) || \ | |
393 | RANGE (c, 0x0CD5, 0x0CD6) || \ | |
394 | c == 0x0CDE || \ | |
395 | c == 0x0CE0 || \ | |
396 | c == 0x0CE1 || \ | |
397 | RANGE (c, 0x0CE6, 0x0CEF) || \ | |
398 | RANGE (c, 0x0D02, 0x0D03) || \ | |
399 | RANGE (c, 0x0D05, 0x0D0C) || \ | |
400 | RANGE (c, 0x0D0E, 0x0D10) || \ | |
401 | RANGE (c, 0x0D12, 0x0D28) || \ | |
402 | RANGE (c, 0x0D2A, 0x0D39) || \ | |
403 | RANGE (c, 0x0D3E, 0x0D43) || \ | |
404 | RANGE (c, 0x0D46, 0x0D48) || \ | |
405 | RANGE (c, 0x0D4A, 0x0D4D) || \ | |
406 | c == 0x0D57 || \ | |
407 | RANGE (c, 0x0D60, 0x0D61) || \ | |
408 | RANGE (c, 0x0D66, 0x0D6F) || \ | |
409 | RANGE (c, 0x0E01, 0x0E3A) || \ | |
410 | RANGE (c, 0x0E3F, 0x0E5B) || \ | |
411 | RANGE (c, 0x0E81, 0x0E82) || \ | |
412 | c == 0x0E84 || \ | |
413 | RANGE (c, 0x0E87, 0x0E88) || \ | |
414 | c == 0x0E8A || \ | |
415 | c == 0x0E8D || \ | |
416 | RANGE (c, 0x0E94, 0x0E97) || \ | |
417 | RANGE (c, 0x0E99, 0x0E9F) || \ | |
418 | RANGE (c, 0x0EA1, 0x0EA3) || \ | |
419 | c == 0x0EA5 || \ | |
420 | c == 0x0EA7 || \ | |
421 | RANGE (c, 0x0EAA, 0x0EAB) || \ | |
422 | RANGE (c, 0x0EAD, 0x0EB9) || \ | |
423 | RANGE (c, 0x0EBB, 0x0EBD) || \ | |
424 | RANGE (c, 0x0EC0, 0x0EC4) || \ | |
425 | c == 0x0EC6 || \ | |
426 | c == 0x0EC8 || \ | |
427 | RANGE (c, 0x0EC9, 0x0ECD) || \ | |
428 | RANGE (c, 0x0ED0, 0x0ED9) || \ | |
429 | RANGE (c, 0x0EDC, 0x0EDD) || \ | |
430 | RANGE (c, 0x10A0, 0x10C5) || \ | |
431 | RANGE (c, 0x10D0, 0x10F6) || \ | |
432 | c == 0x10FB || \ | |
433 | RANGE (c, 0x1100, 0x1159) || \ | |
434 | RANGE (c, 0x115F, 0x11A2) || \ | |
435 | RANGE (c, 0x11A8, 0x11F9) || \ | |
436 | RANGE (c, 0x1E00, 0x1E9A) || \ | |
437 | RANGE (c, 0x1EA0, 0x1EF9) || \ | |
438 | RANGE (c, 0x1F00, 0x1F15) || \ | |
439 | RANGE (c, 0x1F18, 0x1F1D) || \ | |
440 | RANGE (c, 0x1F20, 0x1F45) || \ | |
441 | RANGE (c, 0x1F48, 0x1F4D) || \ | |
442 | RANGE (c, 0x1F50, 0x1F57) || \ | |
443 | c == 0x1F59 || \ | |
444 | c == 0x1F5B || \ | |
445 | c == 0x1F5D || \ | |
446 | RANGE (c, 0x1F5F, 0x1F7D) || \ | |
447 | RANGE (c, 0x1F80, 0x1FB4) || \ | |
448 | RANGE (c, 0x1FB6, 0x1FC4) || \ | |
449 | RANGE (c, 0x1FC6, 0x1FD3) || \ | |
450 | RANGE (c, 0x1FD6, 0x1FDB) || \ | |
451 | RANGE (c, 0x1FDD, 0x1FEF) || \ | |
452 | RANGE (c, 0x1FF2, 0x1FF4) || \ | |
453 | RANGE (c, 0x1FF6, 0x1FFE) || \ | |
454 | RANGE (c, 0x3041, 0x3094) || \ | |
455 | RANGE (c, 0x3099, 0x309E) || \ | |
456 | RANGE (c, 0x30A1, 0x30FE) || \ | |
457 | RANGE (c, 0x3105, 0x312C) || \ | |
458 | RANGE (c, 0x3131, 0x318E) || \ | |
459 | RANGE (c, 0x3190, 0x319F) || \ | |
460 | RANGE (c, 0x3200, 0x321C) || \ | |
461 | RANGE (c, 0x3220, 0x3243) || \ | |
462 | RANGE (c, 0x3260, 0x327B) || \ | |
463 | RANGE (c, 0x327F, 0x32B0) || \ | |
464 | RANGE (c, 0x32C0, 0x32CB) || \ | |
465 | RANGE (c, 0x32D0, 0x32FE) || \ | |
466 | RANGE (c, 0x3300, 0x3376) || \ | |
467 | RANGE (c, 0x337B, 0x33DD) || \ | |
468 | RANGE (c, 0x33E0, 0x33FE) || \ | |
469 | RANGE (c, 0x3400, 0x9FA5) || \ | |
470 | RANGE (c, 0xF900, 0xFA2D) || \ | |
471 | RANGE (c, 0xFB00, 0xFB06) || \ | |
472 | RANGE (c, 0xFB13, 0xFB17) || \ | |
473 | RANGE (c, 0xFB1E, 0xFB36) || \ | |
474 | RANGE (c, 0xFB38, 0xFB3C) || \ | |
475 | c == 0xFB3E || \ | |
476 | c == 0xFB40 || \ | |
477 | c == 0xFB41 || \ | |
478 | c == 0xFB43 || \ | |
479 | c == 0xFB44 || \ | |
480 | c == 0xFB46 || \ | |
481 | RANGE (c, 0xFB47, 0xFBB1) || \ | |
482 | RANGE (c, 0xFBD3, 0xFD3F) || \ | |
483 | RANGE (c, 0xFD50, 0xFD8F) || \ | |
484 | RANGE (c, 0xFD92, 0xFDC7) || \ | |
485 | RANGE (c, 0xFDF0, 0xFDFB) || \ | |
486 | RANGE (c, 0xFE70, 0xFE72) || \ | |
487 | c == 0xFE74 || \ | |
488 | c == 0xFE76 || \ | |
489 | RANGE (c, 0xFE77, 0xFEFC) || \ | |
490 | RANGE (c, 0xFF10, 0xFF19) || \ | |
491 | RANGE (c, 0xFF21, 0xFF3A) || \ | |
492 | RANGE (c, 0xFF41, 0xFF5A) || \ | |
493 | RANGE (c, 0xFF66, 0xFFBE) || \ | |
494 | RANGE (c, 0xFFC2, 0xFFC7) || \ | |
495 | RANGE (c, 0xFFCA, 0xFFCF) || \ | |
496 | RANGE (c, 0xFFD2, 0xFFD7) || \ | |
497 | RANGE (c, 0xFFDA, 0xFFDC)) | |
498 | ||
499 | /* Constants */ | |
500 | #define JAVA_CHAR_ERROR 0xFFC1 /* This is an illegal unicode!?! FIXME */ | |
501 | #define JAVA_READ_BUFFER 256 | |
502 | #define UEOF (unicode_t)0xffff | |
503 | ||
504 | #endif |