1<lexer>
2 <config>
3 <name>Java</name>
4 <alias>java</alias>
5 <filename>*.java</filename>
6 <mime_type>text/x-java</mime_type>
7 <dot_all>true</dot_all>
8 </config>
9 <rules>
10 <state name="root">
11 <rule pattern="(^\s*)((?:(?:public|private|protected|static|strictfp)(?:\s+))*)(record)\b">
12 <bygroups>
13 <token type="TextWhitespace" />
14 <usingself state="root" />
15 <token type="KeywordDeclaration" />
16 </bygroups>
17 <push state="class" />
18 </rule>
19 <rule pattern="[^\S\n]+">
20 <token type="TextWhitespace" />
21 </rule>
22 <rule pattern="(//.*?)(\n)">
23 <bygroups>
24 <token type="CommentSingle" />
25 <token type="TextWhitespace" />
26 </bygroups>
27 </rule>
28 <rule pattern="/\*.*?\*/">
29 <token type="CommentMultiline" />
30 </rule>
31 <rule
32 pattern="(assert|break|case|catch|continue|default|do|else|finally|for|if|goto|instanceof|new|return|switch|this|throw|try|while)\b">
33 <token type="Keyword" />
34 </rule>
35 <rule pattern="((?:(?:[^\W\d]|\$)[\w.\[\]$<>]*\s+)+?)((?:[^\W\d]|\$)[\w$]*)(\s*)(\()">
36 <bygroups>
37 <usingself state="root" />
38 <token type="NameFunction" />
39 <token type="TextWhitespace" />
40 <token type="Punctuation" />
41 </bygroups>
42 </rule>
43 <rule pattern="@[^\W\d][\w.]*">
44 <token type="NameDecorator" />
45 </rule>
46 <rule
47 pattern="(abstract|const|enum|extends|final|implements|native|private|protected|public|sealed|static|strictfp|super|synchronized|throws|transient|volatile|yield)\b">
48 <token type="KeywordDeclaration" />
49 </rule>
50 <rule pattern="(boolean|byte|char|double|float|int|long|short|void)\b">
51 <token type="KeywordType" />
52 </rule>
53 <rule pattern="(package)(\s+)">
54 <bygroups>
55 <token type="KeywordNamespace" />
56 <token type="TextWhitespace" />
57 </bygroups>
58 <push state="import" />
59 </rule>
60 <rule pattern="(true|false|null)\b">
61 <token type="KeywordConstant" />
62 </rule>
63 <rule pattern="(class|interface)\b">
64 <token type="KeywordDeclaration" />
65 <push state="class" />
66 </rule>
67 <rule pattern="(var)(\s+)">
68 <bygroups>
69 <token type="KeywordDeclaration" />
70 <token type="TextWhitespace" />
71 </bygroups>
72 <push state="var" />
73 </rule>
74 <rule pattern="(import(?:\s+static)?)(\s+)">
75 <bygroups>
76 <token type="KeywordNamespace" />
77 <token type="TextWhitespace" />
78 </bygroups>
79 <push state="import" />
80 </rule>
81 <rule pattern=""""\n">
82 <token type="LiteralString" />
83 <push state="multiline_string" />
84 </rule>
85 <rule pattern=""">
86 <token type="LiteralString" />
87 <push state="string" />
88 </rule>
89 <rule pattern="'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'">
90 <token type="LiteralStringChar" />
91 </rule>
92 <rule pattern="(\.)((?:[^\W\d]|\$)[\w$]*)">
93 <bygroups>
94 <token type="Punctuation" />
95 <token type="NameAttribute" />
96 </bygroups>
97 </rule>
98 <rule pattern="^(\s*)(default)(:)">
99 <bygroups>
100 <token type="TextWhitespace" />
101 <token type="Keyword" />
102 <token type="Punctuation" />
103 </bygroups>
104 </rule>
105 <rule pattern="^(\s*)((?:[^\W\d]|\$)[\w$]*)(:)">
106 <bygroups>
107 <token type="TextWhitespace" />
108 <token type="NameLabel" />
109 <token type="Punctuation" />
110 </bygroups>
111 </rule>
112 <rule pattern="([^\W\d]|\$)[\w$]*">
113 <token type="Name" />
114 </rule>
115 <rule
116 pattern="([0-9][0-9_]*\.([0-9][0-9_]*)?|\.[0-9][0-9_]*)([eE][+\-]?[0-9][0-9_]*)?[fFdD]?|[0-9][eE][+\-]?[0-9][0-9_]*[fFdD]?|[0-9]([eE][+\-]?[0-9][0-9_]*)?[fFdD]|0[xX]([0-9a-fA-F][0-9a-fA-F_]*\.?|([0-9a-fA-F][0-9a-fA-F_]*)?\.[0-9a-fA-F][0-9a-fA-F_]*)[pP][+\-]?[0-9][0-9_]*[fFdD]?">
117 <token type="LiteralNumberFloat" />
118 </rule>
119 <rule pattern="0[xX][0-9a-fA-F][0-9a-fA-F_]*[lL]?">
120 <token type="LiteralNumberHex" />
121 </rule>
122 <rule pattern="0[bB][01][01_]*[lL]?">
123 <token type="LiteralNumberBin" />
124 </rule>
125 <rule pattern="0[0-7_]+[lL]?">
126 <token type="LiteralNumberOct" />
127 </rule>
128 <rule pattern="0|[1-9][0-9_]*[lL]?">
129 <token type="LiteralNumberInteger" />
130 </rule>
131 <rule pattern="[~^*!%&\[\]<>|+=/?-]">
132 <token type="Operator" />
133 </rule>
134 <rule pattern="[{}();:.,]">
135 <token type="Punctuation" />
136 </rule>
137 <rule pattern="\n">
138 <token type="TextWhitespace" />
139 </rule>
140 </state>
141 <state name="class">
142 <rule pattern="\s+">
143 <token type="Text" />
144 </rule>
145 <rule pattern="([^\W\d]|\$)[\w$]*">
146 <token type="NameClass" />
147 <pop depth="1" />
148 </rule>
149 </state>
150 <state name="var">
151 <rule pattern="([^\W\d]|\$)[\w$]*">
152 <token type="Name" />
153 <pop depth="1" />
154 </rule>
155 </state>
156 <state name="import">
157 <rule pattern="[\w.]+\*?">
158 <token type="NameNamespace" />
159 <pop depth="1" />
160 </rule>
161 </state>
162 <state name="multiline_string">
163 <rule pattern=""""">
164 <token type="LiteralString" />
165 <pop depth="1" />
166 </rule>
167 <rule pattern=""">
168 <token type="LiteralString" />
169 </rule>
170 <rule>
171 <include state="string" />
172 </rule>
173 </state>
174 <state name="string">
175 <rule pattern="[^\\"]+">
176 <token type="LiteralString" />
177 </rule>
178 <rule pattern="\\\\">
179 <token type="LiteralString" />
180 </rule>
181 <rule pattern="\\"">
182 <token type="LiteralString" />
183 </rule>
184 <rule pattern="\\">
185 <token type="LiteralString" />
186 </rule>
187 <rule pattern=""">
188 <token type="LiteralString" />
189 <pop depth="1" />
190 </rule>
191 </state>
192 </rules>
193</lexer>