2 /*============================================================================
3 CMake - Cross Platform Makefile Generator
4 Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
6 Distributed under the OSI-approved BSD License (the "License");
7 see accompanying file Copyright.txt for details.
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 ============================================================================*/
15 This file must be translated to C and modified to build everywhere.
19 flex --prefix=cmDependsJava_yy --header-file=cmDependsJavaLexer.h -ocmDependsJavaLexer.cxx cmDependsJavaLexer.in.l
21 Modify cmDependsJavaLexer.c:
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(;;)
29 Modify cmDependsJavaLexer.h:
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)
37 #include "cmStandardLexer.h"
39 #include "cmDependsJavaParserHelper.h"
41 /* Replace the lexer input function. */
43 #define YY_INPUT(buf, result, max_size) \
44 { result = yyextra->LexInput(buf, max_size); }
46 /* Include the set of tokens from the parser. */
47 #include "cmDependsJavaParserTokens.h"
49 #define KEYWORD yylvalp->str = 0
50 #define SYMBOL yylvalp->str = 0
51 #define PRIMITIVE yylvalp->str = 0
53 /*--------------------------------------------------------------------------*/
64 "/*" { BEGIN(comment); }
65 <comment>"*/" { BEGIN(INITIAL); }
69 <string>\" { BEGIN(INITIAL); return jp_STRINGLITERAL; }
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; }
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; }
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; }
175 [a-z_A-Z][a-z_0-9A-Z]* {
176 yyextra->AllocateParserType(yylvalp, yytext, strlen(yytext));
183 std::cerr << "Unknown character: " << yytext[0]
184 << " (" << (int)yytext[0] << ")" << std::endl;
185 yyextra->Error("Unknown character");