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