File: java.l

package info (click to toggle)
antlr 2.7.7%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 9,928 kB
  • ctags: 10,225
  • sloc: java: 54,649; cs: 12,533; makefile: 8,963; cpp: 7,359; pascal: 5,273; sh: 4,337; python: 4,301; lisp: 1,969; xml: 220; lex: 192; ansic: 134
file content (192 lines) | stat: -rw-r--r-- 4,633 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
%{
#include <stdio.h>
#include "JavaTokenTypes.hpp"
extern void newLine();

char string_buf[1024];
char* string_buf_ptr = 0;

%}

HexDigit			[0-9a-fA-F]
Digit				[0-9]
OctalDigit		[0-7]
NonZeroDigit	[1-9]
AnyButSlash		[^\/]
AnyButAstr		[^\*]

Unicode			[\\][u]{HexDigit}{HexDigit}{HexDigit}{HexDigit}
Octal				[\\]{OctalDigit}({Digit}({Digit})?)?
Escape			[\\]([r]|[n]|[b]|[f]|[t]|[\\]|[']|["])|{Unicode}|{Octal}

IntSuffix		([l]|[L])
DecimalNum		{NonZeroDigit}{Digit}*{IntSuffix}?
OctalNum			[0]{OctalDigit}*{IntSuffix}?
HexNum			[0]([x]|[X]){HexDigit}{HexDigit}*{IntSuffix}?
IntegerLiteral	({DecimalNum}|{OctalNum}|{HexNum})

Sign				([\+]|[\-])
FlSuffix			([f]|[F]|[d][D])
SignedInt		{Sign}?{Digit}+
Expo				([e]|[E])
ExponentPart	{Expo}{SignedInt}?
Float1			{Digit}+[\.]{Digit}+?{ExponentPart}?{FlSuffix}?
Float2			[\.]{Digit}+{ExponentPart}?{FlSuffix}?
Float3			{Digit}+{ExponentPart}{FlSuffix}?
Float4			{Digit}+{FlSuffix}
FloatingPoint	({Float1}|{Float2}|{Float3}|{Float4})

%x string comment
%%
"?"				return QUESTION;
"("				return LPAREN;
")"				return RPAREN;
"["				return LBRACK;
"]"				return RBRACK;
"{"				return LCURLY;
"}"				return RCURLY;
":"				return COLON;
","				return COMMA;
"."				return DOT;
"=="				return EQUAL;
"="				return ASSIGN;
"!"				return LNOT;
"~"				return BNOT;
"!="				return NOT_EQUAL;
"/="				return DIV_ASSIGN;
"/"				return DIV;
"+="				return PLUS_ASSIGN;
"++"				return INC;
"+"				return PLUS;
"-="				return MINUS_ASSIGN;
"--"				return DEC;
"-"				return MINUS;
"*="				return STAR_ASSIGN;
"*"				return STAR;
"%="				return MOD_ASSIGN;
"%"				return MOD;
">>>="			return BSR_ASSIGN;
">>>"				return BSR;
">>="				return SR_ASSIGN;
">>"				return SR;
">="				return GE;
">"				return GT;
"<<="				return SL_ASSIGN;
"<<"				return SL;
"<="				return LE;
"<"				return LT_;
"^="				return BXOR_ASSIGN;
"^"				return BXOR;
"|="				return BOR_ASSIGN;
"||"				return LOR;
"|"				return BOR;
"&="				return BAND_ASSIGN;
"&&"				return LAND;
"&"				return BAND;
";"				return SEMI;

[ \f\t]			;
"\r\n"|\r|\n	{ newLine(); }

"//".*			;

[\']({Escape}|[^\'])[\']	return CHAR_LITERAL;

"/*" 	BEGIN(comment);
<comment>{
[^*\n]*        /* eat anything that's not a '*' */
"*"+[^*/\n]*   /* eat up '*'s not followed by '/'s */
\n             { newLine(); }
"*"+"/"        BEGIN(INITIAL);
}

[\"] {
	BEGIN(string);
	string_buf_ptr = string_buf;
}
<string>{
\" {
	BEGIN(INITIAL);
	*string_buf_ptr = '\0';
	return STRING_LITERAL;
}
{Octal} {
	int result;
	sscanf( yytext + 1, "%o", &result );
	*string_buf_ptr++ = result;
}
{Unicode} {
	int result;
	sscanf( yytext + 1, "%x", &result );
	*string_buf_ptr++ = result;
}
\\n  		*string_buf_ptr++ = '\n';
\\t  		*string_buf_ptr++ = '\t';
\\r  		*string_buf_ptr++ = '\r';
\\b  		*string_buf_ptr++ = '\b';
\\f		*string_buf_ptr++ = '\f';
\\(.|\n)	*string_buf_ptr++ = yytext[1];
[^\\\n\"]+ {
	char *yptr = yytext;

	while ( *yptr )
		*string_buf_ptr++ = *yptr++;
	}
}	// end string states

while				return LITERAL_while;
volatile			return LITERAL_volatile;
void				return LITERAL_void;
try				return LITERAL_try;
true				return LITERAL_true;
transient		return LITERAL_transient;
throws			return LITERAL_throws;
throw				return LITERAL_throw;
threadsafe		return LITERAL_threadsafe;
this				return LITERAL_this;
synchronized	return LITERAL_synchronized;
switch			return LITERAL_switch;
super				return LITERAL_super;
static			return LITERAL_static;
short				return LITERAL_short;
return			return LITERAL_return;
public			return LITERAL_public;
protected		return LITERAL_protected;
private			return LITERAL_private;
package			return LITERAL_package;
null				return LITERAL_null;
new				return LITERAL_new;
native			return LITERAL_native;
long				return LITERAL_long;
interface		return LITERAL_interface;
int				return LITERAL_int;
instanceof		return LITERAL_instanceof;
import			return LITERAL_import;
implements		return LITERAL_implements;
if					return LITERAL_if;
for				return LITERAL_for;
float				return LITERAL_float;
finally			return LITERAL_finally;
final				return FINAL;
false				return LITERAL_false;
extends			return LITERAL_extends;
else				return LITERAL_else;
double			return LITERAL_double;
do					return LITERAL_do;
default			return LITERAL_default;
continue			return LITERAL_continue;
class				return LITERAL_class;
char				return LITERAL_char;
catch				return LITERAL_catch;
case				return LITERAL_case;
byte				return LITERAL_byte;
break				return LITERAL_break;
boolean			return LITERAL_boolean;
abstract			return ABSTRACT;

[a-zA-Z_$][a-zA-Z_0-9$]*	return IDENT;

{IntegerLiteral}	return NUM_INT;
{FloatingPoint}	return NUM_FLOAT;

%%