source: trunk/yao/share/antlr-2.7.7/examples/cpp/flexLexer/java.l @ 1

Last change on this file since 1 was 1, checked in by lnalod, 15 years ago

Initial import of YAO sources

File size: 4.5 KB
Line 
1%{
2#include <stdio.h>
3#include "JavaTokenTypes.hpp"
4extern void newLine();
5
6char string_buf[1024];
7char* string_buf_ptr = 0;
8
9%}
10
11HexDigit                        [0-9a-fA-F]
12Digit                           [0-9]
13OctalDigit              [0-7]
14NonZeroDigit    [1-9]
15AnyButSlash             [^\/]
16AnyButAstr              [^\*]
17
18Unicode                 [\\][u]{HexDigit}{HexDigit}{HexDigit}{HexDigit}
19Octal                           [\\]{OctalDigit}({Digit}({Digit})?)?
20Escape                  [\\]([r]|[n]|[b]|[f]|[t]|[\\]|[']|["])|{Unicode}|{Octal}
21
22IntSuffix               ([l]|[L])
23DecimalNum              {NonZeroDigit}{Digit}*{IntSuffix}?
24OctalNum                        [0]{OctalDigit}*{IntSuffix}?
25HexNum                  [0]([x]|[X]){HexDigit}{HexDigit}*{IntSuffix}?
26IntegerLiteral  ({DecimalNum}|{OctalNum}|{HexNum})
27
28Sign                            ([\+]|[\-])
29FlSuffix                        ([f]|[F]|[d][D])
30SignedInt               {Sign}?{Digit}+
31Expo                            ([e]|[E])
32ExponentPart    {Expo}{SignedInt}?
33Float1                  {Digit}+[\.]{Digit}+?{ExponentPart}?{FlSuffix}?
34Float2                  [\.]{Digit}+{ExponentPart}?{FlSuffix}?
35Float3                  {Digit}+{ExponentPart}{FlSuffix}?
36Float4                  {Digit}+{FlSuffix}
37FloatingPoint   ({Float1}|{Float2}|{Float3}|{Float4})
38
39%x string comment
40%%
41"?"                             return QUESTION;
42"("                             return LPAREN;
43")"                             return RPAREN;
44"["                             return LBRACK;
45"]"                             return RBRACK;
46"{"                             return LCURLY;
47"}"                             return RCURLY;
48":"                             return COLON;
49","                             return COMMA;
50"."                             return DOT;
51"=="                            return EQUAL;
52"="                             return ASSIGN;
53"!"                             return LNOT;
54"~"                             return BNOT;
55"!="                            return NOT_EQUAL;
56"/="                            return DIV_ASSIGN;
57"/"                             return DIV;
58"+="                            return PLUS_ASSIGN;
59"++"                            return INC;
60"+"                             return PLUS;
61"-="                            return MINUS_ASSIGN;
62"--"                            return DEC;
63"-"                             return MINUS;
64"*="                            return STAR_ASSIGN;
65"*"                             return STAR;
66"%="                            return MOD_ASSIGN;
67"%"                             return MOD;
68">>>="                  return BSR_ASSIGN;
69">>>"                           return BSR;
70">>="                           return SR_ASSIGN;
71">>"                            return SR;
72">="                            return GE;
73">"                             return GT;
74"<<="                           return SL_ASSIGN;
75"<<"                            return SL;
76"<="                            return LE;
77"<"                             return LT_;
78"^="                            return BXOR_ASSIGN;
79"^"                             return BXOR;
80"|="                            return BOR_ASSIGN;
81"||"                            return LOR;
82"|"                             return BOR;
83"&="                            return BAND_ASSIGN;
84"&&"                            return LAND;
85"&"                             return BAND;
86";"                             return SEMI;
87
88[ \f\t]                 ;
89"\r\n"|\r|\n    { newLine(); }
90
91"//".*                  ;
92
93[\']({Escape}|[^\'])[\']        return CHAR_LITERAL;
94
95"/*"    BEGIN(comment);
96<comment>{
97[^*\n]*        /* eat anything that's not a '*' */
98"*"+[^*/\n]*   /* eat up '*'s not followed by '/'s */
99\n             { newLine(); }
100"*"+"/"        BEGIN(INITIAL);
101}
102
103[\"] {
104        BEGIN(string);
105        string_buf_ptr = string_buf;
106}
107<string>{
108\" {
109        BEGIN(INITIAL);
110        *string_buf_ptr = '\0';
111        return STRING_LITERAL;
112}
113{Octal} {
114        int result;
115        sscanf( yytext + 1, "%o", &result );
116        *string_buf_ptr++ = result;
117}
118{Unicode} {
119        int result;
120        sscanf( yytext + 1, "%x", &result );
121        *string_buf_ptr++ = result;
122}
123\\n             *string_buf_ptr++ = '\n';
124\\t             *string_buf_ptr++ = '\t';
125\\r             *string_buf_ptr++ = '\r';
126\\b             *string_buf_ptr++ = '\b';
127\\f             *string_buf_ptr++ = '\f';
128\\(.|\n)        *string_buf_ptr++ = yytext[1];
129[^\\\n\"]+ {
130        char *yptr = yytext;
131
132        while ( *yptr )
133                *string_buf_ptr++ = *yptr++;
134        }
135}       // end string states
136
137while                           return LITERAL_while;
138volatile                        return LITERAL_volatile;
139void                            return LITERAL_void;
140try                             return LITERAL_try;
141true                            return LITERAL_true;
142transient               return LITERAL_transient;
143throws                  return LITERAL_throws;
144throw                           return LITERAL_throw;
145threadsafe              return LITERAL_threadsafe;
146this                            return LITERAL_this;
147synchronized    return LITERAL_synchronized;
148switch                  return LITERAL_switch;
149super                           return LITERAL_super;
150static                  return LITERAL_static;
151short                           return LITERAL_short;
152return                  return LITERAL_return;
153public                  return LITERAL_public;
154protected               return LITERAL_protected;
155private                 return LITERAL_private;
156package                 return LITERAL_package;
157null                            return LITERAL_null;
158new                             return LITERAL_new;
159native                  return LITERAL_native;
160long                            return LITERAL_long;
161interface               return LITERAL_interface;
162int                             return LITERAL_int;
163instanceof              return LITERAL_instanceof;
164import                  return LITERAL_import;
165implements              return LITERAL_implements;
166if                                      return LITERAL_if;
167for                             return LITERAL_for;
168float                           return LITERAL_float;
169finally                 return LITERAL_finally;
170final                           return FINAL;
171false                           return LITERAL_false;
172extends                 return LITERAL_extends;
173else                            return LITERAL_else;
174double                  return LITERAL_double;
175do                                      return LITERAL_do;
176default                 return LITERAL_default;
177continue                        return LITERAL_continue;
178class                           return LITERAL_class;
179char                            return LITERAL_char;
180catch                           return LITERAL_catch;
181case                            return LITERAL_case;
182byte                            return LITERAL_byte;
183break                           return LITERAL_break;
184boolean                 return LITERAL_boolean;
185abstract                        return ABSTRACT;
186
187[a-zA-Z_$][a-zA-Z_0-9$]*        return IDENT;
188
189{IntegerLiteral}        return NUM_INT;
190{FloatingPoint} return NUM_FLOAT;
191
192%%
Note: See TracBrowser for help on using the repository browser.