packaging: Initial packaging
[platform/upstream/cmake.git] / Source / cmDependsJavaLexer.in.l
1 %{
2 /*============================================================================
3   CMake - Cross Platform Makefile Generator
4   Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
5
6   Distributed under the OSI-approved BSD License (the "License");
7   see accompanying file Copyright.txt for details.
8
9   This software is distributed WITHOUT ANY WARRANTY; without even the
10   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11   See the License for more information.
12 ============================================================================*/
13 /*
14
15 This file must be translated to C and modified to build everywhere.
16
17 Run flex like this:
18
19   flex --prefix=cmDependsJava_yy --header-file=cmDependsJavaLexer.h -ocmDependsJavaLexer.cxx cmDependsJavaLexer.in.l
20
21 Modify cmDependsJavaLexer.c:
22   - remove TABs
23   - remove use of the 'register' storage class specifier
24   - remove "yyscanner" argument from these methods:
25       yy_fatal_error, cmDependsJava_yyalloc, cmDependsJava_yyrealloc, cmDependsJava_yyfree
26   - remove all YY_BREAK lines occurring right after return statements
27   - change while ( 1 ) to for(;;)
28
29 Modify cmDependsJavaLexer.h:
30   - remove TABs
31   - remove the yy_init_globals function
32   - remove the block that includes unistd.h
33   - remove #line directives (avoids bogus warning on old Sun)
34
35 */
36
37 #include "cmStandardLexer.h"
38
39 #include "cmDependsJavaParserHelper.h"
40
41 /* Replace the lexer input function.  */
42 #undef YY_INPUT
43 #define YY_INPUT(buf, result, max_size) \
44   { result = yyextra->LexInput(buf, max_size); }
45
46 /* Include the set of tokens from the parser.  */
47 #include "cmDependsJavaParserTokens.h"
48
49 #define KEYWORD yylvalp->str = 0
50 #define SYMBOL yylvalp->str = 0
51 #define PRIMITIVE  yylvalp->str = 0
52
53 /*--------------------------------------------------------------------------*/
54 %}
55
56 %option reentrant
57 %option noyywrap
58 %pointer
59
60 %x comment
61 %x string
62
63 %%
64 "/*" { BEGIN(comment); }
65 <comment>"*/" { BEGIN(INITIAL); }
66 <comment>.|\n {}
67
68 \" { BEGIN(string); }
69 <string>\" { BEGIN(INITIAL); return jp_STRINGLITERAL; }
70 <string>. {}
71
72 abstract { KEYWORD; return jp_ABSTRACT; }
73 assert { KEYWORD; return jp_ASSERT; }
74 boolean { KEYWORD; return jp_BOOLEAN_TYPE; }
75 break { KEYWORD; return jp_BREAK; }
76 byte { KEYWORD; return jp_BYTE_TYPE; }
77 case { KEYWORD; return jp_CASE; }
78 catch { KEYWORD; return jp_CATCH; }
79 char { KEYWORD; return jp_CHAR_TYPE; }
80 class { KEYWORD; return jp_CLASS; }
81 continue { KEYWORD; return jp_CONTINUE; }
82 default { KEYWORD; return jp_DEFAULT; }
83 do { KEYWORD; return jp_DO; }
84 double { KEYWORD; return jp_DOUBLE_TYPE; }
85 else { KEYWORD; return jp_ELSE; }
86 extends { KEYWORD; return jp_EXTENDS; }
87 final { KEYWORD; return jp_FINAL; }
88 finally { KEYWORD; return jp_FINALLY; }
89 float { KEYWORD; return jp_FLOAT_TYPE; }
90 for { KEYWORD; return jp_FOR; }
91 if { KEYWORD; return jp_IF; }
92 implements { KEYWORD; return jp_IMPLEMENTS; }
93 import { KEYWORD; return jp_IMPORT; }
94 instanceof { KEYWORD; return jp_INSTANCEOF; }
95 int { KEYWORD; return jp_INT_TYPE; }
96 interface { KEYWORD; return jp_INTERFACE; }
97 long { KEYWORD; return jp_LONG_TYPE; }
98 native { KEYWORD; return jp_NATIVE; }
99 new { KEYWORD; return jp_NEW; }
100 package { KEYWORD; return jp_PACKAGE; }
101 private { KEYWORD; return jp_PRIVATE; }
102 protected { KEYWORD; return jp_PROTECTED; }
103 public { KEYWORD; return jp_PUBLIC; }
104 return { KEYWORD; return jp_RETURN; }
105 short { KEYWORD; return jp_SHORT_TYPE; }
106 static { KEYWORD; return jp_STATIC; }
107 strictfp { KEYWORD; return jp_STRICTFP; }
108 super { KEYWORD; return jp_SUPER; }
109 switch { KEYWORD; return jp_SWITCH; }
110 synchronized { KEYWORD; return jp_SYNCHRONIZED; }
111 this { KEYWORD; return jp_THIS; }
112 throw { KEYWORD; return jp_THROW; }
113 throws { KEYWORD; return jp_THROWS; }
114 transient { KEYWORD; return jp_TRANSIENT; }
115 try { KEYWORD; return jp_TRY; }
116 void { KEYWORD; return jp_VOID; }
117 volatile { KEYWORD; return jp_VOLATILE; }
118 while { KEYWORD; return jp_WHILE; }
119
120 (true|false) { PRIMITIVE; return jp_BOOLEANLITERAL; }
121 \'([^\\]|\\.|\\u[0-9a-fA-F]*|\\[0-7]*)\' { PRIMITIVE; return jp_CHARACTERLITERAL; }
122 (0|[0-9]+)[lL]? { PRIMITIVE; return jp_DECIMALINTEGERLITERAL; }
123 ([0-9]+\.[0-9]*|\.[0-9]+|[0-9]+)([eE][+\-]?[0-9]+)?[fFdD]? { PRIMITIVE; return jp_FLOATINGPOINTLITERAL; }
124 0[xX][0-9a-fA-F]+[lL]? { PRIMITIVE; return jp_HEXINTEGERLITERAL; }
125 null { PRIMITIVE; return jp_NULLLITERAL; }
126
127 "&" { SYMBOL; return jp_AND; }
128 "&&" { SYMBOL; return jp_ANDAND; }
129 "&=" { SYMBOL; return jp_ANDEQUALS; }
130 "\]" { SYMBOL; return jp_BRACKETEND; }
131 "\[" { SYMBOL; return jp_BRACKETSTART; }
132 "\^" { SYMBOL; return jp_CARROT; }
133 "\^=" { SYMBOL; return jp_CARROTEQUALS; }
134 ":" { SYMBOL; return jp_COLON; }
135 "," { SYMBOL; return jp_COMMA; }
136 "}" { SYMBOL; return jp_CURLYEND; }
137 "{" { SYMBOL; return jp_CURLYSTART; }
138 "/" { SYMBOL; return jp_DIVIDE; }
139 "/=" { SYMBOL; return jp_DIVIDEEQUALS; }
140 "\$" { SYMBOL; return jp_DOLLAR; }
141 "\." { SYMBOL; return jp_DOT; }
142 "=" { SYMBOL; return jp_EQUALS; }
143 "==" { SYMBOL; return jp_EQUALSEQUALS; }
144 "\!" { SYMBOL; return jp_EXCLAMATION; }
145 "\!=" { SYMBOL; return jp_EXCLAMATIONEQUALS; }
146 ">" { SYMBOL; return jp_GREATER; }
147 ">=" { SYMBOL; return jp_GTEQUALS; }
148 ">>" { SYMBOL; return jp_GTGT; }
149 ">>=" { SYMBOL; return jp_GTGTEQUALS; }
150 ">>>" { SYMBOL; return jp_GTGTGT; }
151 ">>>=" { SYMBOL; return jp_GTGTGTEQUALS; }
152 "<<=" { SYMBOL; return jp_LESLESEQUALS; }
153 "<" { SYMBOL; return jp_LESSTHAN; }
154 "<=" { SYMBOL; return jp_LTEQUALS; }
155 "<<" { SYMBOL; return jp_LTLT; }
156 "-" { SYMBOL; return jp_MINUS; }
157 "-=" { SYMBOL; return jp_MINUSEQUALS; }
158 "--" { SYMBOL; return jp_MINUSMINUS; }
159 "\)" { SYMBOL; return jp_PAREEND; }
160 "\(" { SYMBOL; return jp_PARESTART; }
161 "%" { SYMBOL; return jp_PERCENT; }
162 "%=" { SYMBOL; return jp_PERCENTEQUALS; }
163 "\|" { SYMBOL; return jp_PIPE; }
164 "\|=" { SYMBOL; return jp_PIPEEQUALS; }
165 "\|\|" { SYMBOL; return jp_PIPEPIPE; }
166 "\+" { SYMBOL; return jp_PLUS; }
167 "\+=" { SYMBOL; return jp_PLUSEQUALS; }
168 "\+\+" { SYMBOL; return jp_PLUSPLUS; }
169 "\?" { SYMBOL; return jp_QUESTION; }
170 ";" { SYMBOL; return jp_SEMICOL; }
171 "\~" { SYMBOL; return jp_TILDE; }
172 "\*" { SYMBOL; return jp_TIMES; }
173 "\*=" { SYMBOL; return jp_TIMESEQUALS; }
174
175 [a-z_A-Z][a-z_0-9A-Z]* {
176   yyextra->AllocateParserType(yylvalp, yytext, strlen(yytext));
177   return jp_NAME;
178 }
179
180 \/\/.*\n { }
181 [ \f\t\n\r] { }
182 .       {
183   std::cerr << "Unknown character: " << yytext[0]
184     << " (" << (int)yytext[0] << ")" << std::endl;
185   yyextra->Error("Unknown character");
186   return jp_ERROR;
187 }
188
189 %%