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 VBALexerNext;
19
+
20
+ COMMA : ' ,' ;
21
+ COLON : ' :' ;
22
+ SEMICOLON : ' ;' ;
23
+ EXCLAMATIONPOINT : ' !' ;
24
+ DOT : ' .' ;
25
+ HASH : ' #' ;
26
+ AT : ' @' ;
27
+ PERCENT : ' %' ;
28
+ DOLLAR : ' $' ;
29
+ AMPERSAND : ' &' ;
30
+ ACCESS : A C C E S S ;
31
+ ADDRESSOF : A D D R E S S O F ;
32
+ ALIAS : A L I A S ;
33
+ AND : A N D ;
34
+ ATTRIBUTE : A T T R I B U T E ;
35
+ APPACTIVATE : A P P A C T I V A T E ;
36
+ APPEND : A P P E N D ;
37
+ AS : A S ;
38
+ BEGIN : B E G I N ;
39
+ BEEP : B E E P ;
40
+ BINARY : B I N A R Y ;
41
+ BOOLEAN : B O O L E A N ;
42
+ BYVAL : B Y V A L ;
43
+ BYREF : B Y R E F ;
44
+ BYTE : B Y T E ;
45
+ CALL : C A L L ;
46
+ CASE : C A S E ;
47
+ CHDIR : C H D I R ;
48
+ CHDRIVE : C H D R I V E ;
49
+ CLASS : C L A S S ;
50
+ CLOSE : C L O S E ;
51
+ COLLECTION : C O L L E C T I O N ;
52
+ CONST : C O N S T ;
53
+ DATABASE : D A T A B A S E ;
54
+ DATE : D A T E ;
55
+ DECLARE : D E C L A R E ;
56
+ DEFBOOL : D E F B O O L ;
57
+ DEFBYTE : D E F B Y T E ;
58
+ DEFDATE : D E F D A T E ;
59
+ DEFDBL : D E F D B L ;
60
+ DEFCUR : D E F C U R ;
61
+ DEFINT : D E F I N T ;
62
+ DEFLNG : D E F L N G ;
63
+ DEFLNGLNG : D E F L N G L N G ;
64
+ DEFLNGPTR : D E F L N G P T R ;
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
+ LET : L E T ;
118
+ LIB : L I B ;
119
+ LIKE : L I K E ;
120
+ LINE_INPUT : L I N E WS I N P U T ;
121
+ LOCK_READ : L O C K WS R E A D ;
122
+ LOCK_WRITE : L O C K WS W R I T E ;
123
+ LOCK_READ_WRITE : L O C K WS R E A D WS W R I T E ;
124
+ LSET : L S E T ;
125
+ ME : M E ;
126
+ MID : M I D ;
127
+ MKDIR : M K D I R ;
128
+ MOD : M O D ;
129
+ NAME : N A M E ;
130
+ NEXT : N E X T ;
131
+ NEW : N E W ;
132
+ NOT : N O T ;
133
+ NOTHING : N O T H I N G ;
134
+ NULL : N U L L ;
135
+ ON : O N ;
136
+ ON_ERROR : O N WS E R R O R ;
137
+ ON_LOCAL_ERROR : O N WS L O C A L WS E R R O R ;
138
+ OPEN : O P E N ;
139
+ OPTIONAL : O P T I O N A L ;
140
+ OPTION_BASE : O P T I O N WS B A S E ;
141
+ OPTION_EXPLICIT : O P T I O N WS E X P L I C I T ;
142
+ OPTION_COMPARE : O P T I O N WS C O M P A R E ;
143
+ OPTION_PRIVATE_MODULE : O P T I O N WS P R I V A T E WS M O D U L E ;
144
+ OR : O R ;
145
+ OUTPUT : O U T P U T ;
146
+ PARAMARRAY : P A R A M A R R A Y ;
147
+ PRESERVE : P R E S E R V E ;
148
+ PRINT : P R I N T ;
149
+ PRIVATE : P R I V A T E ;
150
+ PROPERTY_GET : P R O P E R T Y WS G E T ;
151
+ PROPERTY_LET : P R O P E R T Y WS L E T ;
152
+ PROPERTY_SET : P R O P E R T Y WS S E T ;
153
+ PTRSAFE : P T R S A F E ;
154
+ PUBLIC : P U B L I C ;
155
+ PUT : P U T ;
156
+ RANDOM : R A N D O M ;
157
+ RANDOMIZE : R A N D O M I Z E ;
158
+ RAISEEVENT : R A I S E E V E N T ;
159
+ READ : R E A D ;
160
+ READ_WRITE : R E A D WS W R I T E ;
161
+ REDIM : R E D I M ;
162
+ REM : R E M ;
163
+ RESET : R E S E T ;
164
+ RESUME : R E S U M E ;
165
+ RETURN : R E T U R N ;
166
+ RMDIR : R M D I R ;
167
+ RSET : R S E T ;
168
+ SAVEPICTURE : S A V E P I C T U R E ;
169
+ SAVESETTING : S A V E S E T T I N G ;
170
+ SEEK : S E E K ;
171
+ SELECT : S E L E C T ;
172
+ SENDKEYS : S E N D K E Y S ;
173
+ SET : S E T ;
174
+ SETATTR : S E T A T T R ;
175
+ SHARED : S H A R E D ;
176
+ SINGLE : S I N G L E ;
177
+ SPC : S P C ;
178
+ STATIC : S T A T I C ;
179
+ STEP : S T E P ;
180
+ STOP : S T O P ;
181
+ STRING : S T R I N G ;
182
+ SUB : S U B ;
183
+ TAB : T A B ;
184
+ TEXT : T E X T ;
185
+ THEN : T H E N ;
186
+ TIME : T I M E ;
187
+ TO : T O ;
188
+ TRUE : T R U E ;
189
+ TYPE : T Y P E ;
190
+ TYPEOF : T Y P E O F ;
191
+ UNLOAD : U N L O A D ;
192
+ UNLOCK : U N L O C K ;
193
+ UNTIL : U N T I L ;
194
+ VARIANT : V A R I A N T ;
195
+ VERSION : V E R S I O N ;
196
+ WEND : W E N D ;
197
+ WHILE : W H I L E ;
198
+ WIDTH : W I D T H ;
199
+ WITH : W I T H ;
200
+ WITHEVENTS : W I T H E V E N T S ;
201
+ WRITE : W R I T E ;
202
+ XOR : X O R ;
203
+ ASSIGN : ' :=' ;
204
+ DIV : ' /' ;
205
+ INTDIV : ' \\ ' ;
206
+ EQ : ' =' ;
207
+ GEQ : ' >=' ;
208
+ GT : ' >' ;
209
+ LEQ : ' <=' ;
210
+ LPAREN : ' (' ;
211
+ LT : ' <' ;
212
+ MINUS : ' -' ;
213
+ MULT : ' *' ;
214
+ NEQ : ' <>' ;
215
+ PLUS : ' +' ;
216
+ POW : ' ^' ;
217
+ RPAREN : ' )' ;
218
+ HASHCONST : WS * HASH CONST ;
219
+ HASHIF : WS * HASH I F ;
220
+ HASHELSEIF : WS * HASH E L S E I F ;
221
+ HASHELSE : WS * HASH E L S E ;
222
+ HASHENDIF : WS * HASH E N D WS * I F ;
223
+ L_SQUARE_BRACKET : ' [' ;
224
+ R_SQUARE_BRACKET : ' ]' ;
225
+ STRINGLITERAL : ' "' (~[" \r\n ] | '" " ')* '" ' ;
226
+ OCTLITERAL : ' &O ' [0-8]+ ' &' ?;
227
+ HEXLITERAL : ' &H ' [0-9A-F]+ ' &' ?;
228
+ SHORTLITERAL : (PLUS|MINUS)? DIGIT+ (' #' | ' &' | ' @' )?;
229
+ INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
230
+ DOUBLELITERAL : (PLUS|MINUS)? DIGIT* ' .' DIGIT+ (E SHORTLITERAL)?;
231
+ DATELITERAL : ' #' DATEORTIME ' #' ;
232
+ fragment DATEORTIME : DATEVALUE WS? TIMEVALUE | DATEVALUE | TIMEVALUE;
233
+ fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DATEVALUEPART)?;
234
+ fragment DATEVALUEPART : DIGIT+ | MONTHNAME;
235
+ fragment DATESEPARATOR : WS? [/,-]? WS?;
236
+ fragment MONTHNAME : ENGLISHMONTHNAME | ENGLISHMONTHABBREVIATION;
237
+ fragment ENGLISHMONTHNAME : JANUARY | FEBRUARY | MARCH | APRIL | MAY | JUNE | JULY | AUGUST | SEPTEMBER | OCTOBER | NOVEMBER | DECEMBER;
238
+ fragment ENGLISHMONTHABBREVIATION : JAN | FEB | MAR | APR | JUN | JUL | AUG | SEP | OCT | NOV | DEC;
239
+ fragment TIMEVALUE : DIGIT+ AMPM | DIGIT+ TIMESEPARATOR DIGIT+ (TIMESEPARATOR DIGIT+)? AMPM?;
240
+ fragment TIMESEPARATOR : WS? (' :' | ' .' ) WS?;
241
+ fragment AMPM : WS? (A M | P M | A | P);
242
+ fragment JANUARY : J A N U A R Y;
243
+ fragment FEBRUARY : F E B R U A R Y;
244
+ fragment MARCH : M A R C H;
245
+ fragment APRIL : A P R I L;
246
+ fragment MAY : M A Y;
247
+ fragment JUNE : J U N E;
248
+ fragment JULY : J U L Y;
249
+ fragment AUGUST : A U G U S T;
250
+ fragment SEPTEMBER : S E P T E M B E R;
251
+ fragment OCTOBER : O C T O B E R;
252
+ fragment NOVEMBER : N O V E M B E R;
253
+ fragment DECEMBER : D E C E M B E R;
254
+ fragment JAN : J A N;
255
+ fragment FEB : F E B;
256
+ fragment MAR: M A R;
257
+ fragment APR : A P R;
258
+ fragment JUN : J U N;
259
+ fragment JUL: J U L;
260
+ fragment AUG : A U G;
261
+ fragment SEP : S E P;
262
+ fragment OCT : O C T;
263
+ fragment NOV : N O V;
264
+ fragment DEC : D E C;
265
+ NEWLINE : ' \r' ' \n' | [\r\n\u2028\u2029 ];
266
+ REMCOMMENT : COLON? REM WS (LINE_CONTINUATION | ~[\r\n\u2028\u2029 ])*;
267
+ COMMENT : SINGLEQUOTE ~' @' (LINE_CONTINUATION | ~[\r\n\u2028\u2029 ])*;
268
+ SINGLEQUOTE : ' \' ' ;
269
+ UNDERSCORE : ' _' ;
270
+ WS : [ \t];
271
+ IDENTIFIER : ~[\[\]\(\)\r\n\t.,' "|!@#$%^&*-+:=; 0-9-/\\ ] ~[\[\]\(\)\r\n\t .,' " |!@#$%^&*-+:=; ]* | L_SQUARE_BRACKET (~[!\]\r\n ])+ R_SQUARE_BRACKET;
272
+ LINE_CONTINUATION : [ \t ]* UNDERSCORE [ \t ]* '\r '? '\n ';
273
+ GUIDLITERAL : '{' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '-' [0-9A-F]+ '}';
274
+ fragment LETTER : [a-zA-Z_äöüÄÖÜ];
275
+ fragment DIGIT : [0-9];
276
+ fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ];
277
+ fragment A:('a'|'A');
278
+ fragment B:('b'|'B');
279
+ fragment C:('c'|'C');
280
+ fragment D:('d'|'D');
281
+ fragment E:('e'|'E');
282
+ fragment F:('f'|'F');
283
+ fragment G:('g'|'G');
284
+ fragment H:('h'|'H');
285
+ fragment I:('i'|'I');
286
+ fragment J:('j'|'J');
287
+ fragment K:('k'|'K');
288
+ fragment L:('l'|'L');
289
+ fragment M:('m'|'M');
290
+ fragment N:('n'|'N');
291
+ fragment O:('o'|'O');
292
+ fragment P:('p'|'P');
293
+ fragment Q:('q'|'Q');
294
+ fragment R:('r'|'R');
295
+ fragment S:('s'|'S');
296
+ fragment T:('t'|'T');
297
+ fragment U:('u'|'U');
298
+ fragment V:('v'|'V');
299
+ fragment W:('w'|'W');
300
+ fragment X:('x'|'X');
301
+ fragment Y:('y'|'Y');
302
+ fragment Z:('z'|'Z');
303
+ ERRORCHAR : .;
0 commit comments