comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/Scanner.java @ 19289:62c43fcf5be2

Truffle-DSL: implement @Cached and fixes for the new guard expression syntax.
author Christian Humer <christian.humer@gmail.com>
date Tue, 03 Feb 2015 15:07:07 +0100
parents 08aa0372dad4
children 65d29fa81397
comparison
equal deleted inserted replaced
19288:3a37116ef37f 19289:62c43fcf5be2
309 @SuppressWarnings({"rawtypes"}) 309 @SuppressWarnings({"rawtypes"})
310 public class Scanner { 310 public class Scanner {
311 311
312 static final char EOL = '\n'; 312 static final char EOL = '\n';
313 static final int eofSym = 0; 313 static final int eofSym = 0;
314 static final int maxT = 14; 314 static final int maxT = 15;
315 static final int noSym = 14; 315 static final int noSym = 15;
316 316
317 317
318 public Buffer buffer; // scanner buffer 318 public Buffer buffer; // scanner buffer
319 319
320 Token t; // current token 320 Token t; // current token
334 int tlen; // length of current token 334 int tlen; // length of current token
335 335
336 static { 336 static {
337 start = new StartStates(); 337 start = new StartStates();
338 literals = new HashMap(); 338 literals = new HashMap();
339 for (int i = 36; i <= 36; ++i) start.set(i, 1);
339 for (int i = 65; i <= 90; ++i) start.set(i, 1); 340 for (int i = 65; i <= 90; ++i) start.set(i, 1);
341 for (int i = 95; i <= 95; ++i) start.set(i, 1);
340 for (int i = 97; i <= 122; ++i) start.set(i, 1); 342 for (int i = 97; i <= 122; ++i) start.set(i, 1);
341 for (int i = 49; i <= 57; ++i) start.set(i, 2); 343 for (int i = 49; i <= 57; ++i) start.set(i, 2);
342 start.set(48, 3); 344 start.set(48, 3);
343 start.set(33, 13); 345 start.set(124, 4);
344 start.set(60, 14); 346 start.set(60, 15);
345 start.set(62, 15); 347 start.set(62, 16);
346 start.set(61, 6); 348 start.set(61, 8);
347 start.set(40, 9); 349 start.set(33, 17);
348 start.set(41, 10); 350 start.set(40, 11);
349 start.set(44, 11); 351 start.set(41, 12);
350 start.set(46, 12); 352 start.set(44, 13);
353 start.set(46, 14);
351 start.set(Buffer.EOF, -1); 354 start.set(Buffer.EOF, -1);
352 355
353 } 356 }
354 357
355 public Scanner(String fileName) { 358 public Scanner(String fileName) {
461 t.kind = recKind; 464 t.kind = recKind;
462 break loop; 465 break loop;
463 } // NextCh already done 466 } // NextCh already done
464 case 1: 467 case 1:
465 recEnd = pos; recKind = 1; 468 recEnd = pos; recKind = 1;
466 if (ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {AddCh(); state = 1; break;} 469 if (ch == '$' || ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'Z' || ch == '_' || ch >= 'a' && ch <= 'z') {AddCh(); state = 1; break;}
467 else {t.kind = 1; break loop;} 470 else {t.kind = 1; break loop;}
468 case 2: 471 case 2:
469 recEnd = pos; recKind = 2; 472 recEnd = pos; recKind = 2;
470 if (ch >= '0' && ch <= '9') {AddCh(); state = 2; break;} 473 if (ch >= '0' && ch <= '9') {AddCh(); state = 2; break;}
471 else {t.kind = 2; break loop;} 474 else {t.kind = 2; break loop;}
472 case 3: 475 case 3:
473 {t.kind = 2; break loop;} 476 {t.kind = 2; break loop;}
474 case 4: 477 case 4:
478 if (ch == '|') {AddCh(); state = 5; break;}
479 else {state = 0; break;}
480 case 5:
481 {t.kind = 3; break loop;}
482 case 6:
475 {t.kind = 5; break loop;} 483 {t.kind = 5; break loop;}
476 case 5: 484 case 7:
477 {t.kind = 7; break loop;} 485 {t.kind = 7; break loop;}
478 case 6: 486 case 8:
487 if (ch == '=') {AddCh(); state = 9; break;}
488 else {state = 0; break;}
489 case 9:
490 {t.kind = 8; break loop;}
491 case 10:
492 {t.kind = 9; break loop;}
493 case 11:
494 {t.kind = 11; break loop;}
495 case 12:
496 {t.kind = 12; break loop;}
497 case 13:
498 {t.kind = 13; break loop;}
499 case 14:
500 {t.kind = 14; break loop;}
501 case 15:
502 recEnd = pos; recKind = 4;
503 if (ch == '=') {AddCh(); state = 6; break;}
504 else {t.kind = 4; break loop;}
505 case 16:
506 recEnd = pos; recKind = 6;
479 if (ch == '=') {AddCh(); state = 7; break;} 507 if (ch == '=') {AddCh(); state = 7; break;}
480 else {state = 0; break;}
481 case 7:
482 {t.kind = 8; break loop;}
483 case 8:
484 {t.kind = 9; break loop;}
485 case 9:
486 {t.kind = 10; break loop;}
487 case 10:
488 {t.kind = 11; break loop;}
489 case 11:
490 {t.kind = 12; break loop;}
491 case 12:
492 {t.kind = 13; break loop;}
493 case 13:
494 recEnd = pos; recKind = 3;
495 if (ch == '=') {AddCh(); state = 8; break;}
496 else {t.kind = 3; break loop;}
497 case 14:
498 recEnd = pos; recKind = 4;
499 if (ch == '=') {AddCh(); state = 4; break;}
500 else {t.kind = 4; break loop;}
501 case 15:
502 recEnd = pos; recKind = 6;
503 if (ch == '=') {AddCh(); state = 5; break;}
504 else {t.kind = 6; break loop;} 508 else {t.kind = 6; break loop;}
509 case 17:
510 recEnd = pos; recKind = 10;
511 if (ch == '=') {AddCh(); state = 10; break;}
512 else {t.kind = 10; break loop;}
505 513
506 } 514 }
507 } 515 }
508 t.val = new String(tval, 0, tlen); 516 t.val = new String(tval, 0, tlen);
509 return t; 517 return t;