1
+ /*
2
+ * Copyright (C) 2014 Ulrich Wolffgang <u.wol@wwu.de>
3
+ *
4
+ * This program is free software: you can redistribute it and/or modify
5
+ * it under the terms of the GNU General Public License as published by
6
+ * the Free Software Foundation, either version 3 of the License, or
7
+ * (at your option) any later version.
8
+ *
9
+ * This program is distributed in the hope that it will be useful,
10
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ * GNU General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+
18
+ lexer grammar VBALexer;
19
+
20
+ COMMA : ' ,' ;
21
+ COLON : ' :' ;
22
+ SEMICOLON : ' ;' ;
23
+ EXCLAMATIONPOINT : ' !' ;
24
+ DOT : ' .' ;
25
+ HASH : ' #' ;
26
+ AT : ' @' ;
27
+ PERCENT : ' %' ;
28
+ DOLLAR : ' $' ;
29
+ AMPERSAND : ' &' ;
30
+ EXP : ' ^' ;
31
+ ACCESS : A C C E S S ;
32
+ ADDRESSOF : A D D R E S S O F ;
33
+ ALIAS : A L I A S ;
34
+ AND : A N D ;
35
+ ATTRIBUTE : A T T R I B U T E ;
36
+ APPACTIVATE : A P P A C T I V A T E ;
37
+ APPEND : A P P E N D ;
38
+ AS : A S ;
39
+ BEGIN : B E G I N ;
40
+ BEEP : B E E P ;
41
+ BINARY : B I N A R Y ;
42
+ BOOLEAN : B O O L E A N ;
43
+ BYVAL : B Y V A L ;
44
+ BYREF : B Y R E F ;
45
+ BYTE : B Y T E ;
46
+ CALL : C A L L ;
47
+ CASE : C A S E ;
48
+ CHDIR : C H D I R ;
49
+ CHDRIVE : C H D R I V E ;
50
+ CLASS : C L A S S ;
51
+ CLOSE : C L O S E ;
52
+ COLLECTION : C O L L E C T I O N ;
53
+ CONST : C O N S T ;
54
+ DATABASE : D A T A B A S E ;
55
+ DATE : D A T E ;
56
+ DECLARE : D E C L A R E ;
57
+ DEFBOOL : D E F B O O L ;
58
+ DEFBYTE : D E F B Y T E ;
59
+ DEFDATE : D E F D A T E ;
60
+ DEFDBL : D E F D B L ;
61
+ DEFDEC : D E F D E C ;
62
+ DEFCUR : D E F C U R ;
63
+ DEFINT : D E F I N T ;
64
+ DEFLNG : D E F L N G ;
65
+ DEFOBJ : D E F O B J ;
66
+ DEFSNG : D E F S N G ;
67
+ DEFSTR : D E F S T R ;
68
+ DEFVAR : D E F V A R ;
69
+ DELETESETTING : D E L E T E S E T T I N G ;
70
+ DIM : D I M ;
71
+ DO : D O ;
72
+ DOUBLE : D O U B L E ;
73
+ EACH : E A C H ;
74
+ ELSE : E L S E ;
75
+ ELSEIF : E L S E I F ;
76
+ EMPTY : E M P T Y ;
77
+ END_ENUM : E N D WS E N U M ;
78
+ END_FUNCTION : E N D WS F U N C T I O N ;
79
+ END_IF : E N D WS I F ;
80
+ END_PROPERTY : E N D WS P R O P E R T Y ;
81
+ END_SELECT : E N D WS S E L E C T ;
82
+ END_SUB : E N D WS S U B ;
83
+ END_TYPE : E N D WS T Y P E ;
84
+ END_WITH : E N D WS W I T H ;
85
+ END : E N D ;
86
+ ENUM : E N U M ;
87
+ EQV : E Q V ;
88
+ ERASE : E R A S E ;
89
+ ERROR : E R R O R ;
90
+ EVENT : E V E N T ;
91
+ EXIT_DO : E X I T WS D O ;
92
+ EXIT_FOR : E X I T WS F O R ;
93
+ EXIT_FUNCTION : E X I T WS F U N C T I O N ;
94
+ EXIT_PROPERTY : E X I T WS P R O P E R T Y ;
95
+ EXIT_SUB : E X I T WS S U B ;
96
+ FALSE : F A L S E ;
97
+ FILECOPY : F I L E C O P Y ;
98
+ FRIEND : F R I E N D ;
99
+ FOR : F O R ;
100
+ FUNCTION : F U N C T I O N ;
101
+ GET : G E T ;
102
+ GLOBAL : G L O B A L ;
103
+ GOSUB : G O S U B ;
104
+ GOTO : G O T O ;
105
+ IF : I F ;
106
+ IMP : I M P ;
107
+ IMPLEMENTS : I M P L E M E N T S ;
108
+ IN : I N ;
109
+ INPUT : I N P U T ;
110
+ IS : I S ;
111
+ INTEGER : I N T E G E R ;
112
+ KILL : K I L L ;
113
+ LOAD : L O A D ;
114
+ LOCK : L O C K ;
115
+ LONG : L O N G ;
116
+ LOOP : L O O P ;
117
+ LEN : L E N ;
118
+ LET : L E T ;
119
+ LIB : L I B ;
120
+ LIKE : L I K E ;
121
+ LINE_INPUT : L I N E WS I N P U T ;
122
+ LOCK_READ : L O C K WS R E A D ;
123
+ LOCK_WRITE : L O C K WS W R I T E ;
124
+ LOCK_READ_WRITE : L O C K WS R E A D WS W R I T E ;
125
+ LSET : L S E T ;
126
+ ME : M E ;
127
+ MID : M I D ;
128
+ MKDIR : M K D I R ;
129
+ MOD : M O D ;
130
+ NAME : N A M E ;
131
+ NEXT : N E X T ;
132
+ NEW : N E W ;
133
+ NOT : N O T ;
134
+ NOTHING : N O T H I N G ;
135
+ NULL : N U L L ;
136
+ ON : O N ;
137
+ ON_ERROR : O N WS E R R O R ;
138
+ ON_LOCAL_ERROR : O N WS L O C A L WS E R R O R ;
139
+ OPEN : O P E N ;
140
+ OPTIONAL : O P T I O N A L ;
141
+ OPTION_BASE : O P T I O N WS B A S E ;
142
+ OPTION_EXPLICIT : O P T I O N WS E X P L I C I T ;
143
+ OPTION_COMPARE : O P T I O N WS C O M P A R E ;
144
+ OPTION_PRIVATE_MODULE : O P T I O N WS P R I V A T E WS M O D U L E ;
145
+ OR : O R ;
146
+ OUTPUT : O U T P U T ;
147
+ PARAMARRAY : P A R A M A R R A Y ;
148
+ PRESERVE : P R E S E R V E ;
149
+ PRINT : P R I N T ;
150
+ PRIVATE : P R I V A T E ;
151
+ PROPERTY_GET : P R O P E R T Y WS G E T ;
152
+ PROPERTY_LET : P R O P E R T Y WS L E T ;
153
+ PROPERTY_SET : P R O P E R T Y WS S E T ;
154
+ PTRSAFE : P T R S A F E ;
155
+ PUBLIC : P U B L I C ;
156
+ PUT : P U T ;
157
+ RANDOM : R A N D O M ;
158
+ RANDOMIZE : R A N D O M I Z E ;
159
+ RAISEEVENT : R A I S E E V E N T ;
160
+ READ : R E A D ;
161
+ READ_WRITE : R E A D WS W R I T E ;
162
+ REDIM : R E D I M ;
163
+ REM : R E M ;
164
+ RESET : R E S E T ;
165
+ RESUME : R E S U M E ;
166
+ RETURN : R E T U R N ;
167
+ RMDIR : R M D I R ;
168
+ RSET : R S E T ;
169
+ SAVEPICTURE : S A V E P I C T U R E ;
170
+ SAVESETTING : S A V E S E T T I N G ;
171
+ SEEK : S E E K ;
172
+ SELECT : S E L E C T ;
173
+ SENDKEYS : S E N D K E Y S ;
174
+ SET : S E T ;
175
+ SETATTR : S E T A T T R ;
176
+ SHARED : S H A R E D ;
177
+ SINGLE : S I N G L E ;
178
+ SPC : S P C ;
179
+ STATIC : S T A T I C ;
180
+ STEP : S T E P ;
181
+ STOP : S T O P ;
182
+ STRING : S T R I N G ;
183
+ SUB : S U B ;
184
+ TAB : T A B ;
185
+ TEXT : T E X T ;
186
+ THEN : T H E N ;
187
+ TIME : T I M E ;
188
+ TO : T O ;
189
+ TRUE : T R U E ;
190
+ TYPE : T Y P E ;
191
+ TYPEOF : T Y P E O F ;
192
+ UNLOAD : U N L O A D ;
193
+ UNLOCK : U N L O C K ;
194
+ UNTIL : U N T I L ;
195
+ VARIANT : V A R I A N T ;
196
+ VERSION : V E R S I O N ;
197
+ WEND : W E N D ;
198
+ WHILE : W H I L E ;
199
+ WIDTH : W I D T H ;
200
+ WITH : W I T H ;
201
+ WITHEVENTS : W I T H E V E N T S ;
202
+ WRITE : W R I T E ;
203
+ XOR : X O R ;
204
+ ASSIGN : ' :=' ;
205
+ DIV : ' /' ;
206
+ INTDIV : ' \\ ' ;
207
+ EQ : ' =' ;
208
+ GEQ : ' >=' ;
209
+ GT : ' >' ;
210
+ LEQ : ' <=' ;
211
+ LPAREN : ' (' ;
212
+ LT : ' <' ;
213
+ MINUS : ' -' ;
214
+ MULT : ' *' ;
215
+ NEQ : ' <>' ;
216
+ PLUS : ' +' ;
217
+ POW : ' ^' ;
218
+ RPAREN : ' )' ;
219
+ L_SQUARE_BRACKET : ' [' ;
220
+ R_SQUARE_BRACKET : ' ]' ;
221
+ STRINGLITERAL : ' "' (~[" \r\n ] | '" " ')* '" ' ;
222
+ OCTLITERAL : ' &O ' [0-8]+ ' &' ?;
223
+ HEXLITERAL : ' &H ' [0-9A-F]+ ' &' ?;
224
+ SHORTLITERAL : (PLUS|MINUS)? DIGIT+ (' #' | ' &' | ' @' )?;
225
+ INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
226
+ DOUBLELITERAL : (PLUS|MINUS)? DIGIT* ' .' DIGIT+ (E SHORTLITERAL)?;
227
+ DATELITERAL : ' #' ~' #' + ' #' ;
228
+ NEWLINE : [\r\n\u2028\u2029 ]+;
229
+ REMCOMMENT : COLON? REM WS (LINE_CONTINUATION | ~[\r\n\u2028\u2029 ])*;
230
+ COMMENT : SINGLEQUOTE (LINE_CONTINUATION | ~[\r\n\u2028\u2029 ])*;
231
+ SINGLEQUOTE : ' \' ' ;
232
+ UNDERSCORE : ' _' ;
233
+ WS : ([ \t] | LINE_CONTINUATION )+;
234
+ IDENTIFIER : (~[\[\]\(\)\r\n\t.,' "|!@#$%^&*-+:=; ])+ | L_SQUARE_BRACKET (~[!\]\r\n ])+ R_SQUARE_BRACKET;
235
+ fragment LINE_CONTINUATION : [ \t ]+ UNDERSCORE ' \r' ? ' \n' ;
236
+ fragment LETTER : [a-zA-Z_äöüÄÖÜ];
237
+ fragment DIGIT : [0-9];
238
+ fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ];
239
+ fragment A:(' a' |' A ' );
240
+ fragment B:(' b' |' B ' );
241
+ fragment C:(' c' |' C ' );
242
+ fragment D:(' d' |' D ' );
243
+ fragment E:(' e' |' E ' );
244
+ fragment F:(' f' |' F ' );
245
+ fragment G:(' g' |' G ' );
246
+ fragment H:(' h' |' H ' );
247
+ fragment I:(' i' |' I ' );
248
+ fragment J:(' j' |' J ' );
249
+ fragment K:(' k' |' K ' );
250
+ fragment L:(' l' |' L ' );
251
+ fragment M:(' m' |' M ' );
252
+ fragment N:(' n' |' N ' );
253
+ fragment O:(' o' |' O ' );
254
+ fragment P:(' p' |' P ' );
255
+ fragment Q:(' q' |' Q ' );
256
+ fragment R:(' r' |' R ' );
257
+ fragment S:(' s' |' S ' );
258
+ fragment T:(' t' |' T ' );
259
+ fragment U:(' u' |' U ' );
260
+ fragment V:(' v' |' V ' );
261
+ fragment W:(' w' |' W ' );
262
+ fragment X:(' x' |' X ' );
263
+ fragment Y:(' y' |' Y ' );
264
+ fragment Z:(' z' |' Z ' );
265
+ ERRORCHAR : .;
0 commit comments