@@ -27,7 +27,6 @@ AT : '@';
27
27
PERCENT : ' %' ;
28
28
DOLLAR : ' $' ;
29
29
AMPERSAND : ' &' ;
30
- EXP : ' ^' ;
31
30
ACCESS : A C C E S S ;
32
31
ADDRESSOF : A D D R E S S O F ;
33
32
ALIAS : A L I A S ;
@@ -114,7 +113,6 @@ LOAD : L O A D;
114
113
LOCK : L O C K ;
115
114
LONG : L O N G ;
116
115
LOOP : L O O P ;
117
- LEN : L E N ;
118
116
LET : L E T ;
119
117
LIB : L I B ;
120
118
LIKE : L I K E ;
@@ -216,6 +214,11 @@ NEQ : '<>';
216
214
PLUS : ' +' ;
217
215
POW : ' ^' ;
218
216
RPAREN : ' )' ;
217
+ HASHCONST : WS * HASH CONST ;
218
+ HASHIF : WS * HASH I F ;
219
+ HASHELSEIF : WS * HASH E L S E I F ;
220
+ HASHELSE : WS * HASH E L S E ;
221
+ HASHENDIF : WS * HASH E N D WS * I F ;
219
222
L_SQUARE_BRACKET : ' [' ;
220
223
R_SQUARE_BRACKET : ' ]' ;
221
224
STRINGLITERAL : ' "' (~[" \r\n ] | '" " ')* '" ' ;
@@ -224,15 +227,48 @@ HEXLITERAL : '&H' [0-9A-F]+ '&'?;
224
227
SHORTLITERAL : (PLUS|MINUS)? DIGIT+ (' #' | ' &' | ' @' )?;
225
228
INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
226
229
DOUBLELITERAL : (PLUS|MINUS)? DIGIT* ' .' DIGIT+ (E SHORTLITERAL)?;
227
- DATELITERAL : ' #' ~' #' + ' #' ;
228
- NEWLINE : [\r\n\u2028\u2029 ]+;
230
+ DATELITERAL : ' #' DATEORTIME ' #' ;
231
+ fragment DATEORTIME : DATEVALUE WS? TIMEVALUE | DATEVALUE | TIMEVALUE;
232
+ fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DATEVALUEPART)?;
233
+ fragment DATEVALUEPART : DIGIT+ | MONTHNAME;
234
+ fragment DATESEPARATOR : WS? [/,-]? WS?;
235
+ fragment MONTHNAME : ENGLISHMONTHNAME | ENGLISHMONTHABBREVIATION;
236
+ fragment ENGLISHMONTHNAME : JANUARY | FEBRUARY | MARCH | APRIL | MAY | JUNE | JULY | AUGUST | SEPTEMBER | OCTOBER | NOVEMBER | DECEMBER;
237
+ fragment ENGLISHMONTHABBREVIATION : JAN | FEB | MAR | APR | JUN | JUL | AUG | SEP | OCT | NOV | DEC;
238
+ fragment TIMEVALUE : DIGIT+ AMPM | DIGIT+ TIMESEPARATOR DIGIT+ (TIMESEPARATOR DIGIT+)? AMPM?;
239
+ fragment TIMESEPARATOR : WS? (' :' | ' .' ) WS?;
240
+ fragment AMPM : WS? (A M | P M | A | P);
241
+ fragment JANUARY : J A N U A R Y;
242
+ fragment FEBRUARY : F E B R U A R Y;
243
+ fragment MARCH : M A R C H;
244
+ fragment APRIL : A P R I L;
245
+ fragment MAY : M A Y;
246
+ fragment JUNE : J U N E;
247
+ fragment JULY : J U L Y;
248
+ fragment AUGUST : A U G U S T;
249
+ fragment SEPTEMBER : S E P T E M B E R;
250
+ fragment OCTOBER : O C T O B E R;
251
+ fragment NOVEMBER : N O V E M B E R;
252
+ fragment DECEMBER : D E C E M B E R;
253
+ fragment JAN : J A N;
254
+ fragment FEB : F E B;
255
+ fragment MAR: M A R;
256
+ fragment APR : A P R;
257
+ fragment JUN : J U N;
258
+ fragment JUL: J U L;
259
+ fragment AUG : A U G;
260
+ fragment SEP : S E P;
261
+ fragment OCT : O C T;
262
+ fragment NOV : N O V;
263
+ fragment DEC : D E C;
264
+ NEWLINE : ' \r' ' \n' | [\r\n\u2028\u2029 ];
229
265
REMCOMMENT : COLON? REM WS (LINE_CONTINUATION | ~[\r\n\u2028\u2029 ])*;
230
266
COMMENT : SINGLEQUOTE (LINE_CONTINUATION | ~[\r\n\u2028\u2029 ])*;
231
267
SINGLEQUOTE : ' \' ' ;
232
268
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' ;
269
+ WS : [ \t];
270
+ IDENTIFIER : ~[\[\]\(\)\r\n\t.,' "|!@#$%^&*-+:=; 0-9-/ \\ ] ~[ \[\]\(\)\r\n\t ., ' " |!@#$%^&*-+:=; ]* | L_SQUARE_BRACKET (~[!\]\r\n ])+ R_SQUARE_BRACKET;
271
+ LINE_CONTINUATION : [ \t ]* UNDERSCORE [ \t ]* '\r '? '\n ';
236
272
fragment LETTER : [a-zA-Z_äöüÄÖÜ];
237
273
fragment DIGIT : [0-9];
238
274
fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ];
0 commit comments