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