Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/Scanner.java @ 20169:65d29fa81397
DSL: add support for hex, oct and binary integer literals.
author | Chris Seaton <chris.seaton@oracle.com> |
---|---|
date | Sun, 05 Apr 2015 19:51:46 +0100 |
parents | 62c43fcf5be2 |
children | b1530a6cce8c |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/Scanner.java Sun Apr 05 09:45:58 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/Scanner.java Sun Apr 05 19:51:46 2015 +0100 @@ -340,17 +340,17 @@ for (int i = 65; i <= 90; ++i) start.set(i, 1); for (int i = 95; i <= 95; ++i) start.set(i, 1); for (int i = 97; i <= 122; ++i) start.set(i, 1); - for (int i = 49; i <= 57; ++i) start.set(i, 2); - start.set(48, 3); - start.set(124, 4); - start.set(60, 15); - start.set(62, 16); - start.set(61, 8); - start.set(33, 17); - start.set(40, 11); - start.set(41, 12); - start.set(44, 13); - start.set(46, 14); + for (int i = 49; i <= 57; ++i) start.set(i, 6); + start.set(48, 2); + start.set(124, 7); + start.set(60, 18); + start.set(62, 19); + start.set(61, 11); + start.set(33, 20); + start.set(40, 14); + start.set(41, 15); + start.set(44, 16); + start.set(46, 17); start.set(Buffer.EOF, -1); } @@ -417,7 +417,7 @@ tval = newBuf; } if (ch != Buffer.EOF) { - tval[tlen++] = (char)ch; + tval[tlen++] = (char)ch; NextCh(); } @@ -435,7 +435,7 @@ } Token NextToken() { - while (ch == ' ' || + while (ch == ' ' || false ) NextCh(); @@ -470,45 +470,61 @@ else {t.kind = 1; break loop;} case 2: recEnd = pos; recKind = 2; - if (ch >= '0' && ch <= '9') {AddCh(); state = 2; break;} + if (ch >= '0' && ch <= '7') {AddCh(); state = 5; break;} + else if (ch == 'x') {AddCh(); state = 3; break;} + else if (ch == 'b') {AddCh(); state = 4; break;} else {t.kind = 2; break loop;} case 3: - {t.kind = 2; break loop;} + recEnd = pos; recKind = 2; + if (ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'F' || ch >= 'a' && ch <= 'f') {AddCh(); state = 3; break;} + else {t.kind = 2; break loop;} case 4: - if (ch == '|') {AddCh(); state = 5; break;} - else {state = 0; break;} + recEnd = pos; recKind = 2; + if (ch >= '0' && ch <= '1') {AddCh(); state = 4; break;} + else {t.kind = 2; break loop;} case 5: - {t.kind = 3; break loop;} + recEnd = pos; recKind = 2; + if (ch >= '0' && ch <= '7') {AddCh(); state = 5; break;} + else {t.kind = 2; break loop;} case 6: - {t.kind = 5; break loop;} + recEnd = pos; recKind = 2; + if (ch >= '0' && ch <= '9') {AddCh(); state = 6; break;} + else {t.kind = 2; break loop;} case 7: - {t.kind = 7; break loop;} - case 8: - if (ch == '=') {AddCh(); state = 9; break;} + if (ch == '|') {AddCh(); state = 8; break;} else {state = 0; break;} + case 8: + {t.kind = 3; break loop;} case 9: - {t.kind = 8; break loop;} + {t.kind = 5; break loop;} case 10: - {t.kind = 9; break loop;} + {t.kind = 7; break loop;} case 11: - {t.kind = 11; break loop;} + if (ch == '=') {AddCh(); state = 12; break;} + else {state = 0; break;} case 12: - {t.kind = 12; break loop;} + {t.kind = 8; break loop;} case 13: - {t.kind = 13; break loop;} + {t.kind = 9; break loop;} case 14: + {t.kind = 11; break loop;} + case 15: + {t.kind = 12; break loop;} + case 16: + {t.kind = 13; break loop;} + case 17: {t.kind = 14; break loop;} - case 15: + case 18: recEnd = pos; recKind = 4; - if (ch == '=') {AddCh(); state = 6; break;} + if (ch == '=') {AddCh(); state = 9; break;} else {t.kind = 4; break loop;} - case 16: + case 19: recEnd = pos; recKind = 6; - if (ch == '=') {AddCh(); state = 7; break;} + if (ch == '=') {AddCh(); state = 10; break;} else {t.kind = 6; break loop;} - case 17: + case 20: recEnd = pos; recKind = 10; - if (ch == '=') {AddCh(); state = 10; break;} + if (ch == '=') {AddCh(); state = 13; break;} else {t.kind = 10; break loop;} }