From a479ae1194e64b05beb4b97ab002ff73a711193a Mon Sep 17 00:00:00 2001 From: Ulya Fokanova Date: Tue, 31 Dec 2013 01:24:15 +0300 Subject: [PATCH] Fixed missprint in EBCDIC range expansion and updated broken tests. --- re2c/actions.cc | 2 +- re2c/test/bug1711240.ei.c | 236 +----------------------------- re2c/test/bug1711240.eis.c | 18 +-- re2c/test/calc_001.dei.c | 291 +++++-------------------------------- re2c/test/calc_001.ei.c | 275 ++++------------------------------- 5 files changed, 82 insertions(+), 740 deletions(-) mode change 100755 => 100644 re2c/test/bug1711240.ei.c mode change 100755 => 100644 re2c/test/calc_001.dei.c mode change 100755 => 100644 re2c/test/calc_001.ei.c diff --git a/re2c/actions.cc b/re2c/actions.cc index 619d7c74..846dd8c5 100644 --- a/re2c/actions.cc +++ b/re2c/actions.cc @@ -759,7 +759,7 @@ Range * Scanner::getRange(SubStr &s) const for(c = lb; c <= ub; c++) { - if (!(xlb <= xlat(c) && xlat(c) <= ub)) + if (!(xlb <= xlat(c) && xlat(c) <= xub)) { /* range doesn't work */ Range * r = new Range(xlb, xlb + 1); diff --git a/re2c/test/bug1711240.ei.c b/re2c/test/bug1711240.ei.c old mode 100755 new mode 100644 index 93a6d129..e16e1a4e --- a/re2c/test/bug1711240.ei.c +++ b/re2c/test/bug1711240.ei.c @@ -8,249 +8,27 @@ char scan(const unsigned char *s) if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - case 0x98: - case 0x99: - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - case 0xC0: - case 0xC1: - case 0xC2: - case 0xC3: - case 0xC4: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD5: - case 0xD6: - case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: goto yy9; - case 0x07: goto yy7; - case 0x61: goto yy5; - case 0x7F: goto yy3; - default: goto yy2; + case 0x07: goto yy6; + case 0x61: goto yy4; + case 0x7F: goto yy2; + default: goto yy8; } yy2: -yy3: ++YYCURSOR; { return '"'; } -yy5: +yy4: ++YYCURSOR; { return '\x2F'; } -yy7: +yy6: ++YYCURSOR; { return '\x7F'; } -yy9: +yy8: ++YYCURSOR; { return '\0'; diff --git a/re2c/test/bug1711240.eis.c b/re2c/test/bug1711240.eis.c index bef2a48a..e0b61426 100644 --- a/re2c/test/bug1711240.eis.c +++ b/re2c/test/bug1711240.eis.c @@ -7,30 +7,28 @@ char scan(const unsigned char *s) if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= 0x61) { - if (yych == 0x07) goto yy7; - if (yych <= 0x60) goto yy9; - goto yy5; + if (yych <= 0x60) { + if (yych == 0x07) goto yy6; + goto yy8; } else { - if (yych == 0x7F) goto yy3; - if (yych <= 0xDF) goto yy9; + if (yych <= 0x61) goto yy4; + if (yych != 0x7F) goto yy8; } -yy3: ++YYCURSOR; { return '"'; } -yy5: +yy4: ++YYCURSOR; { return '\x2F'; } -yy7: +yy6: ++YYCURSOR; { return '\x7F'; } -yy9: +yy8: ++YYCURSOR; { return '\0'; diff --git a/re2c/test/calc_001.dei.c b/re2c/test/calc_001.dei.c old mode 100755 new mode 100644 index 736cfc6c..b5397dc5 --- a/re2c/test/calc_001.dei.c +++ b/re2c/test/calc_001.dei.c @@ -26,231 +26,10 @@ int scan(char *s, int l) yych = *YYCURSOR; YYDEBUG(-1, yych); switch (yych) { - case 0x00: goto yy12; - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: /* */ - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: /* . */ - case 0x4C: /* < */ - case 0x4D: /* ( */ - case 0x4F: /* | */ - case 0x50: /* & */ - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: /* ! */ - case 0x5B: /* $ */ - case 0x5C: /* * */ - case 0x5D: /* ) */ - case 0x5E: /* ; */ - case 0x5F: - case 0x61: /* / */ - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: /* , */ - case 0x6C: /* % */ - case 0x6D: /* _ */ - case 0x6E: /* > */ - case 0x6F: /* ? */ - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: /* ` */ - case 0x7A: /* : */ - case 0x7B: /* # */ - case 0x7C: /* @ */ - case 0x7D: /* ' */ - case 0x7E: /* = */ - case 0x7F: /* " */ - case 0x80: - case 0x81: /* a */ - case 0x82: /* b */ - case 0x83: /* c */ - case 0x84: /* d */ - case 0x85: /* e */ - case 0x86: /* f */ - case 0x87: /* g */ - case 0x88: /* h */ - case 0x89: /* i */ - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: /* j */ - case 0x92: /* k */ - case 0x93: /* l */ - case 0x94: /* m */ - case 0x95: /* n */ - case 0x96: /* o */ - case 0x97: /* p */ - case 0x98: /* q */ - case 0x99: /* r */ - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - case 0xA0: - case 0xA1: /* ~ */ - case 0xA2: /* s */ - case 0xA3: /* t */ - case 0xA4: /* u */ - case 0xA5: /* v */ - case 0xA6: /* w */ - case 0xA7: /* x */ - case 0xA8: /* y */ - case 0xA9: /* z */ - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: /* ^ */ - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: /* [ */ - case 0xBB: /* ] */ - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - case 0xC0: /* { */ - case 0xC1: /* A */ - case 0xC2: /* B */ - case 0xC3: /* C */ - case 0xC4: /* D */ - case 0xC5: /* E */ - case 0xC6: /* F */ - case 0xC7: /* G */ - case 0xC8: /* H */ - case 0xC9: /* I */ - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: /* } */ - case 0xD1: /* J */ - case 0xD2: /* K */ - case 0xD3: /* L */ - case 0xD4: /* M */ - case 0xD5: /* N */ - case 0xD6: /* O */ - case 0xD7: /* P */ - case 0xD8: /* Q */ - case 0xD9: /* R */ - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: goto yy14; - case 0x4E: /* + */ goto yy8; - case 0x60: /* - */ goto yy10; - case 0xF0: /* 0 */ goto yy3; + case 0x00: goto yy10; + case 0x4E: /* + */ goto yy6; + case 0x60: /* - */ goto yy8; + case 0xF0: /* 0 */ goto yy2; case 0xF1: /* 1 */ case 0xF2: /* 2 */ case 0xF3: /* 3 */ @@ -259,13 +38,11 @@ int scan(char *s, int l) case 0xF6: /* 6 */ case 0xF7: /* 7 */ case 0xF8: /* 8 */ - case 0xF9: /* 9 */ goto yy5; - default: goto yy2; + case 0xF9: /* 9 */ goto yy4; + default: goto yy12; } yy2: YYDEBUG(2, *YYCURSOR); -yy3: - YYDEBUG(3, *YYCURSOR); ++YYCURSOR; YYDEBUG(-1, yych); switch ((yych = *YYCURSOR)) { @@ -279,54 +56,60 @@ yy3: case 0xF7: /* 7 */ case 0xF8: /* 8 */ case 0xF9: /* 9 */ goto yy16; - default: goto yy4; + default: goto yy3; } +yy3: + YYDEBUG(3, *YYCURSOR); + { printf("Num\n"); continue; } yy4: YYDEBUG(4, *YYCURSOR); - { printf("Num\n"); continue; } -yy5: - YYDEBUG(5, *YYCURSOR); ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; + goto yy15; +yy5: + YYDEBUG(5, *YYCURSOR); + { printf("Num\n"); continue; } +yy6: YYDEBUG(6, *YYCURSOR); - YYDEBUG(-1, yych); - switch (yych) { - case 0xF0: /* 0 */ - case 0xF1: /* 1 */ - case 0xF2: /* 2 */ - case 0xF3: /* 3 */ - case 0xF4: /* 4 */ - case 0xF5: /* 5 */ - case 0xF6: /* 6 */ - case 0xF7: /* 7 */ - case 0xF8: /* 8 */ - case 0xF9: /* 9 */ goto yy5; - default: goto yy7; - } -yy7: + ++YYCURSOR; YYDEBUG(7, *YYCURSOR); - { printf("Num\n"); continue; } + { printf("+\n"); continue; } yy8: YYDEBUG(8, *YYCURSOR); ++YYCURSOR; YYDEBUG(9, *YYCURSOR); - { printf("+\n"); continue; } + { printf("-\n"); continue; } yy10: YYDEBUG(10, *YYCURSOR); ++YYCURSOR; YYDEBUG(11, *YYCURSOR); - { printf("-\n"); continue; } + { printf("EOF\n"); return 0; } yy12: YYDEBUG(12, *YYCURSOR); ++YYCURSOR; YYDEBUG(13, *YYCURSOR); - { printf("EOF\n"); return 0; } + { printf("ERR\n"); return 1; } yy14: YYDEBUG(14, *YYCURSOR); ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy15: YYDEBUG(15, *YYCURSOR); - { printf("ERR\n"); return 1; } + YYDEBUG(-1, yych); + switch (yych) { + case 0xF0: /* 0 */ + case 0xF1: /* 1 */ + case 0xF2: /* 2 */ + case 0xF3: /* 3 */ + case 0xF4: /* 4 */ + case 0xF5: /* 5 */ + case 0xF6: /* 6 */ + case 0xF7: /* 7 */ + case 0xF8: /* 8 */ + case 0xF9: /* 9 */ goto yy14; + default: goto yy5; + } yy16: YYDEBUG(16, *YYCURSOR); ++YYCURSOR; diff --git a/re2c/test/calc_001.ei.c b/re2c/test/calc_001.ei.c old mode 100755 new mode 100644 index e8904140..734d3699 --- a/re2c/test/calc_001.ei.c +++ b/re2c/test/calc_001.ei.c @@ -24,231 +24,10 @@ int scan(char *s, int l) if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { - case 0x00: goto yy12; - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - case 0x98: - case 0x99: - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - case 0xC0: - case 0xC1: - case 0xC2: - case 0xC3: - case 0xC4: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD5: - case 0xD6: - case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: goto yy14; - case 0x4E: goto yy8; - case 0x60: goto yy10; - case 0xF0: goto yy3; + case 0x00: goto yy10; + case 0x4E: goto yy6; + case 0x60: goto yy8; + case 0xF0: goto yy2; case 0xF1: case 0xF2: case 0xF3: @@ -257,11 +36,10 @@ int scan(char *s, int l) case 0xF6: case 0xF7: case 0xF8: - case 0xF9: goto yy5; - default: goto yy2; + case 0xF9: goto yy4; + default: goto yy12; } yy2: -yy3: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case 0xF0: @@ -274,14 +52,33 @@ yy3: case 0xF7: case 0xF8: case 0xF9: goto yy16; - default: goto yy4; + default: goto yy3; } -yy4: +yy3: { printf("Num\n"); continue; } +yy4: + ++YYCURSOR; + yych = *YYCURSOR; + goto yy15; yy5: + { printf("Num\n"); continue; } +yy6: + ++YYCURSOR; + { printf("+\n"); continue; } +yy8: + ++YYCURSOR; + { printf("-\n"); continue; } +yy10: + ++YYCURSOR; + { printf("EOF\n"); return 0; } +yy12: + ++YYCURSOR; + { printf("ERR\n"); return 1; } +yy14: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; +yy15: switch (yych) { case 0xF0: case 0xF1: @@ -292,23 +89,9 @@ yy5: case 0xF6: case 0xF7: case 0xF8: - case 0xF9: goto yy5; - default: goto yy7; + case 0xF9: goto yy14; + default: goto yy5; } -yy7: - { printf("Num\n"); continue; } -yy8: - ++YYCURSOR; - { printf("+\n"); continue; } -yy10: - ++YYCURSOR; - { printf("-\n"); continue; } -yy12: - ++YYCURSOR; - { printf("EOF\n"); return 0; } -yy14: - ++YYCURSOR; - { printf("ERR\n"); return 1; } yy16: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); -- 2.40.0