...
1<lexer>
2 <config>
3 <name>PSL</name>
4 <alias>psl</alias>
5 <filename>*.psl</filename>
6 <filename>*.BATCH</filename>
7 <filename>*.TRIG</filename>
8 <filename>*.PROC</filename>
9 <mime_type>text/x-psl</mime_type>
10 </config>
11 <rules>
12 <!-- NameFunction|TypeName -->
13 <state name="root">
14 <rule pattern="[^\S\n]+">
15 <token type="Text"/>
16 </rule>
17 <rule pattern="\\\n">
18 <token type="Text"/>
19 </rule>
20 <rule pattern="\n">
21 <token type="Text"/>
22 </rule>
23 <rule pattern="//.*$">
24 <token type="CommentSingle"/>
25 </rule>
26 <rule pattern="/(\\\n)?[*](.|\n)*?[*](\\\n)?/">
27 <token type="CommentMultiline"/>
28 </rule>
29 <rule pattern="\+|-|\*|\/|\b%\b|<|>|=|'|\band\b|\bor\b|_|:|!">
30 <token type="Operator"/>
31 </rule>
32 <rule pattern="[{}(,)\[\]]">
33 <token type="Punctuation"/>
34 <push state="root"/>
35 </rule>
36 <rule pattern="#">
37 <token type="KeywordPseudo"/>
38 <push state="directive"/>
39 </rule>
40 <rule pattern="\.?\d+">
41 <token type="LiteralNumber"/>
42 </rule>
43 <rule pattern=""">
44 <token type="LiteralString"/>
45 <push state="string"/>
46 </rule>
47 <rule pattern="\b(do|set|if|else|for|while|quit|catch|return|ret|while)\b">
48 <token type="Keyword"/>
49 </rule>
50 <rule pattern="\b(true|false)\b">
51 <token type="KeywordConstant"/>
52 </rule>
53 <rule pattern="\btype\b">
54 <token type="KeywordDeclaration"/>
55 <push state="typename"/>
56 </rule>
57 <rule pattern="\b(public|req|private|void)\b">
58 <token type="KeywordDeclaration"/>
59 </rule>
60 <rule pattern="\b(Boolean|String|Number|Date)\b">
61 <token type="KeywordType"/>
62 </rule>
63 <rule pattern="(\${0,2}[_a-zA-z]\w*)?(\^[_a-zA-Z]\w*)">
64 <bygroups>
65 <token type="NameFunction"/>
66 <token type="NameClass"/>
67 </bygroups>
68 </rule>
69 <rule pattern="([_a-zA-z]\w*)(\.[_a-zA-Z]\w*)(\()">
70 <bygroups>
71 <token type="Name"/>
72 <token type="NameFunction"/>
73 <token type="Punctuation"/>
74 </bygroups>
75 </rule>
76 <rule pattern="(\${0,2}[_a-zA-z]\w*)(\.[_a-zA-Z]\w*)">
77 <bygroups>
78 <token type="Name"/>
79 <token type="NameProperty"/>
80 </bygroups>
81 </rule>
82 <rule pattern="\.?(%|\${0,2})[_a-zA-Z]\w*">
83 <token type="Name"/>
84 </rule>
85 </state>
86 <state name="string">
87 <rule pattern=""">
88 <token type="LiteralString"/>
89 <pop depth="1"/>
90 </rule>
91 <rule pattern="\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})">
92 <token type="LiteralStringEscape"/>
93 </rule>
94 <rule pattern="[^\\"\n]+">
95 <token type="LiteralString"/>
96 </rule>
97 <rule pattern="\\\n">
98 <token type="LiteralString"/>
99 </rule>
100 <rule pattern="\\">
101 <token type="LiteralString"/>
102 </rule>
103 </state>
104 <state name="typename">
105 <rule pattern="\s+">
106 <token type="Text"/>
107 </rule>
108 <rule pattern="\b(public|req|private|void)\b">
109 <token type="KeywordDeclaration"/>
110 </rule>
111 <rule pattern="([_a-zA-Z]\w*)?(\s+)([_a-zA-Z]\w*)">
112 <bygroups>
113 <token type="NameClass"/>
114 <token type="Text"/>
115 <token type="Name"/>
116 </bygroups>
117 <pop depth="1"/>
118 </rule>
119 <rule>
120 <pop depth="1"/>
121 </rule>
122 </state>
123 <state name="directive">
124 <rule pattern="ACCEPT">
125 <token type="KeywordPseudo"/>
126 <push state="accept-directive"/>
127 </rule>
128 <rule pattern="CLASSDEF">
129 <token type="KeywordPseudo"/>
130 <push state="classdef-directive"/>
131 </rule>
132 <rule pattern="IF|ELSEIF">
133 <token type="KeywordPseudo"/>
134 <push state="if-directive"/>
135 </rule>
136 <rule pattern="PACKAGE">
137 <token type="KeywordPseudo"/>
138 <push state="package-directive"/>
139 </rule>
140 <rule pattern="PROPERTYDEF">
141 <token type="KeywordPseudo"/>
142 <pop depth="1"/>
143 </rule>
144 <rule pattern="INFO|WARN">
145 <token type="KeywordPseudo"/>
146 <push state="warn-directive"/>
147 </rule>
148 <rule pattern="OPTION">
149 <token type="KeywordPseudo"/>
150 <push state="option-directive"/>
151 </rule>
152 <rule pattern="BYPASS|ELSE|END|ENDBYPASS|ENDIF|OPTIMIZE">
153 <token type="KeywordPseudo"/>
154 <push state="other-directive"/>
155 </rule>
156 </state>
157 <state name="accept-directive">
158 <rule pattern=".+$">
159 <token type="CommentSingle"/>
160 </rule>
161 </state>
162 <state name="other-directive">
163 <rule pattern=".+$">
164 <token type="CommentSingle"/>
165 </rule>
166 </state>
167 <state name="classdef-directive">
168 <rule pattern="\s+">
169 <token type="Text"/>
170 </rule>
171 <rule pattern="delimiter|extends">
172 <token type="Keyword"/>
173 </rule>
174 <rule pattern="public">
175 <token type="KeywordDeclaration"/>
176 </rule>
177 <rule pattern="=">
178 <token type="Operator"/>
179 </rule>
180 <rule pattern="[\w\d]+">
181 <token type="NameClass"/>
182 </rule>
183 </state>
184 <state name="if-directive">
185 <rule pattern=".+$">
186 <include state="root"/>
187 </rule>
188 </state>
189 <state name="option-directive">
190 <rule pattern="\s+">
191 <token type="Text"/>
192 </rule>
193 <rule pattern="ON|OFF">
194 <token type="KeywordConstant"/>
195 <pop depth="1"/>
196 </rule>
197 <rule pattern="[\w\d]+">
198 <token type="Name"/>
199 </rule>
200 </state>
201 <state name="package-directive">
202 <rule pattern="\s+">
203 <token type="Text"/>
204 </rule>
205 <rule pattern="\w+">
206 <token type="Name"/>
207 </rule>
208 <rule>
209 <include state="root"/>
210 </rule>
211 </state>
212 </rules>
213</lexer>
View as plain text