source: other-projects/rsyntax-textarea/devel-packages/jflex-1.4.3/examples/simple/simple.flex@ 25584

Last change on this file since 25584 was 25584, checked in by davidb, 12 years ago

Initial cut an a text edit area for GLI that supports color syntax highlighting

File size: 2.8 KB
Line 
1/* this is the scanner example from the JLex website
2 (with small modifications to make it more readable) */
3
4%%
5
6%{
7 private int comment_count = 0;
8%}
9
10%line
11%char
12%state COMMENT
13%full
14
15%debug
16
17ALPHA=[A-Za-z]
18DIGIT=[0-9]
19NONNEWLINE_WHITE_SPACE_CHAR=[\ \t\b\012]
20NEWLINE=\r|\n|\r\n
21WHITE_SPACE_CHAR=[\n\r\ \t\b\012]
22STRING_TEXT=(\\\"|[^\n\r\"]|\\{WHITE_SPACE_CHAR}+\\)*
23COMMENT_TEXT=([^*/\n]|[^*\n]"/"[^*\n]|[^/\n]"*"[^/\n]|"*"[^/\n]|"/"[^*\n])*
24Ident = {ALPHA}({ALPHA}|{DIGIT}|_)*
25
26%%
27
28<YYINITIAL> {
29 "," { return (new Yytoken(0,yytext(),yyline,yychar,yychar+1)); }
30 ":" { return (new Yytoken(1,yytext(),yyline,yychar,yychar+1)); }
31 ";" { return (new Yytoken(2,yytext(),yyline,yychar,yychar+1)); }
32 "(" { return (new Yytoken(3,yytext(),yyline,yychar,yychar+1)); }
33 ")" { return (new Yytoken(4,yytext(),yyline,yychar,yychar+1)); }
34 "[" { return (new Yytoken(5,yytext(),yyline,yychar,yychar+1)); }
35 "]" { return (new Yytoken(6,yytext(),yyline,yychar,yychar+1)); }
36 "{" { return (new Yytoken(7,yytext(),yyline,yychar,yychar+1)); }
37 "}" { return (new Yytoken(8,yytext(),yyline,yychar,yychar+1)); }
38 "." { return (new Yytoken(9,yytext(),yyline,yychar,yychar+1)); }
39 "+" { return (new Yytoken(10,yytext(),yyline,yychar,yychar+1)); }
40 "-" { return (new Yytoken(11,yytext(),yyline,yychar,yychar+1)); }
41 "*" { return (new Yytoken(12,yytext(),yyline,yychar,yychar+1)); }
42 "/" { return (new Yytoken(13,yytext(),yyline,yychar,yychar+1)); }
43 "=" { return (new Yytoken(14,yytext(),yyline,yychar,yychar+1)); }
44 "<>" { return (new Yytoken(15,yytext(),yyline,yychar,yychar+2)); }
45 "<" { return (new Yytoken(16,yytext(),yyline,yychar,yychar+1)); }
46 "<=" { return (new Yytoken(17,yytext(),yyline,yychar,yychar+2)); }
47 ">" { return (new Yytoken(18,yytext(),yyline,yychar,yychar+1)); }
48 ">=" { return (new Yytoken(19,yytext(),yyline,yychar,yychar+2)); }
49 "&" { return (new Yytoken(20,yytext(),yyline,yychar,yychar+1)); }
50 "|" { return (new Yytoken(21,yytext(),yyline,yychar,yychar+1)); }
51 ":=" { return (new Yytoken(22,yytext(),yyline,yychar,yychar+2)); }
52
53 {NONNEWLINE_WHITE_SPACE_CHAR}+ { }
54
55 "/*" { yybegin(COMMENT); comment_count++; }
56
57 \"{STRING_TEXT}\" {
58 String str = yytext().substring(1,yylength()-1);
59 return (new Yytoken(40,str,yyline,yychar,yychar+yylength()));
60 }
61
62 \"{STRING_TEXT} {
63 String str = yytext().substring(1,yytext().length());
64 Utility.error(Utility.E_UNCLOSEDSTR);
65 return (new Yytoken(41,str,yyline,yychar,yychar + str.length()));
66 }
67
68 {DIGIT}+ { return (new Yytoken(42,yytext(),yyline,yychar,yychar+yylength())); }
69
70 {Ident} { return (new Yytoken(43,yytext(),yyline,yychar,yychar+yylength())); }
71}
72
73<COMMENT> {
74 "/*" { comment_count++; }
75 "*/" { if (--comment_count == 0) yybegin(YYINITIAL); }
76 {COMMENT_TEXT} { }
77}
78
79
80{NEWLINE} { }
81
82. {
83 System.out.println("Illegal character: <" + yytext() + ">");
84 Utility.error(Utility.E_UNMATCHED);
85}
86
Note: See TracBrowser for help on using the repository browser.