Mercurial > hg > truffle
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; |