JavaScriptCore:
[WebKit-https.git] / WebCore / css / maketokenizer
1 print <<END;
2 /*
3  * This file is part of the DOM implementation for KDE.
4  *
5  * Copyright (C) 2003 Lars Knoll (knoll\@kde.org)
6  *
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public License
19  * along with this library; see the file COPYING.LIB.  If not, write to
20  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23
24 /* This file is mostly data generated by flex. Unfortunately flex
25    can't handle 16bit strings directly, so we just copy the part of
26    the code we need and modify it to our needs.
27
28    Most of the defines below are to make sure we can easily use the
29    flex generated code, using as little editing as possible.
30
31    The flex syntax to generate the lexer are more or less directly
32    copied from the CSS2.1 specs, with some fixes for comments and
33    the important symbol.
34
35    To regenerate, run flex on tokenizer.flex. After this, copy the
36    data tables and the YY_DECL method over to this file. Remove the
37    init code from YY_DECL and change the YY_END_OF_BUFFER to only call
38    yyterminate().
39
40 */
41
42 // --------- begin generated code -------------------
43
44 END
45
46 # Not sure what the earliest version with the defines is
47 # Using the OS for now
48 $os=`uname`;
49 if( $os = ~/Linux/ ) {
50 print<<END
51 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
52
53 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
54 #include <inttypes.h>
55 typedef int8_t flex_int8_t;
56 typedef uint8_t flex_uint8_t;
57 typedef int16_t flex_int16_t;
58 typedef uint16_t flex_uint16_t;
59 typedef int32_t flex_int32_t;
60 typedef uint32_t flex_uint32_t;
61 #else
62 typedef signed char flex_int8_t;
63 typedef short int flex_int16_t;
64 typedef int flex_int32_t;
65 typedef unsigned char flex_uint8_t;
66 typedef unsigned short int flex_uint16_t;
67 typedef unsigned int flex_uint32_t;
68 #endif /* ! C99 */
69 END
70 }
71
72
73 while (<>) {
74     last if /YY_NUM_RULES/;
75 }
76
77 print;
78 while (<>) {
79     last if /yy_last_accepting/;
80     print;
81 }
82
83 # media query, tokenizer state support
84 while (<>) {
85   last if /yytext/;
86 }
87 while (<>) {
88   last if not (/define/ || /line/) ;
89   print;
90 }
91
92 while (<>) {
93     last if /^YY_DECL/;
94 }
95
96 print;
97 while (<>) {
98     s/char/UChar/;
99     print;
100     last if /yy_act/;
101 }
102
103 while (<>) {
104     last if /while \( 1 \)/;
105 }
106
107 print;
108 while (<>) {
109     next if /^yy_match:/;
110     next if /^do_action:/;
111     last if /YY_END_OF_BUFFER/;
112     print;
113     print "case YY_END_OF_BUFFER:\n" if /^case YY_STATE_EOF\(INITIAL\):/;
114 }
115
116 while (<>) {
117     last if /default:/;
118 }
119
120 print;
121 while (<>) {
122     print;
123     last if /end of yylex/;
124 }