]> granicus.if.org Git - re2c/commitdiff
- Fix issues with \a, \b, \f, \n, \r, \t, \v in -e mode
authorhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Fri, 28 Nov 2008 11:19:45 +0000 (11:19 +0000)
committerhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Fri, 28 Nov 2008 11:19:45 +0000 (11:19 +0000)
re2c/actions.cc
re2c/test/bug2102138.i.c [moved from re2c/test/bug2102138c.i.c with 100% similarity]
re2c/test/bug2102138.i.re [moved from re2c/test/bug2102138c.i.re with 100% similarity]
re2c/test/bug2102138.i.txt [moved from re2c/test/bug2102138c.i.txt with 100% similarity]
re2c/test/bug2102138c.ei.c [new file with mode: 0755]
re2c/test/bug2102138c.ei.re [new file with mode: 0755]
re2c/test/bug2102138c.ei.txt [new file with mode: 0755]

index 2e38afe415b03f728144a628ca88610701fd366f..f41fedc2b4f83187a306b179256d973e3ecbb8da 100644 (file)
@@ -535,13 +535,13 @@ uint Scanner::unescape(SubStr &s) const
 
        switch (c = *s.str++)
        {
-               case 'n': return xlat('\n');
-               case 't': return xlat('\t');
-               case 'v': return xlat('\v');
-               case 'b': return xlat('\b');
-               case 'r': return xlat('\r');
-               case 'f': return xlat('\f');
-               case 'a': return xlat('\a');
+               case 'n': return '\n';
+               case 't': return '\t';
+               case 'v': return '\v';
+               case 'b': return '\b';
+               case 'r': return '\r';
+               case 'f': return '\f';
+               case 'a': return '\a';
 
                case 'x':
                {
diff --git a/re2c/test/bug2102138c.ei.c b/re2c/test/bug2102138c.ei.c
new file mode 100755 (executable)
index 0000000..1324fde
--- /dev/null
@@ -0,0 +1,1067 @@
+/* Generated by re2c */
+#include <stdio.h>
+
+int scan(const unsigned char *cr)
+{
+       unsigned char  ch;
+
+{
+       unsigned char ch;
+
+       ch = *cr;
+       switch (ch) {
+       case 0x00:      goto yy2;
+       case 0x01:      goto yy4;
+       case 0x02:      goto yy6;
+       case 0x03:      goto yy8;
+       case 0x04:      goto yy314;
+       case 0x05:      goto yy20;
+       case 0x06:      goto yy270;
+       case 0x07:      goto yy256;
+       case 0x08:      goto yy304;
+       case 0x09:      goto yy284;
+       case 0x0A:      goto yy286;
+       case 0x0B:      goto yy24;
+       case 0x0C:      goto yy26;
+       case 0x0D:      goto yy28;
+       case 0x0E:      goto yy30;
+       case 0x0F:      goto yy32;
+       case 0x10:      goto yy34;
+       case 0x11:      goto yy36;
+       case 0x12:      goto yy38;
+       case 0x13:      goto yy40;
+       case 0x14:      goto yy316;
+       case 0x15:      goto yy268;
+       case 0x16:      goto yy18;
+       case 0x17:      goto yy272;
+       case 0x18:      goto yy50;
+       case 0x19:      goto yy52;
+       case 0x1A:      goto yy294;
+       case 0x1B:      goto yy288;
+       case 0x1C:      goto yy58;
+       case 0x1D:      goto yy60;
+       case 0x1E:      goto yy62;
+       case 0x1F:      goto yy64;
+       case 0x20:      goto yy258;
+       case 0x21:      goto yy260;
+       case 0x22:      goto yy262;
+       case 0x23:      goto yy264;
+       case 0x24:      goto yy266;
+       case 0x25:      goto yy22;
+       case 0x26:      goto yy48;
+       case 0x27:      goto yy56;
+       case 0x28:      goto yy274;
+       case 0x29:      goto yy276;
+       case 0x2A:      goto yy278;
+       case 0x2B:      goto yy280;
+       case 0x2C:      goto yy282;
+       case 0x2D:      goto yy12;
+       case 0x2E:      goto yy14;
+       case 0x2F:      goto yy16;
+       case 0x30:      goto yy290;
+       case 0x31:      goto yy292;
+       case 0x32:      goto yy46;
+       case 0x33:      goto yy296;
+       case 0x34:      goto yy298;
+       case 0x35:      goto yy300;
+       case 0x36:      goto yy302;
+       case 0x37:      goto yy10;
+       case 0x38:      goto yy306;
+       case 0x39:      goto yy308;
+       case 0x3A:      goto yy310;
+       case 0x3B:      goto yy312;
+       case 0x3C:      goto yy42;
+       case 0x3D:      goto yy44;
+       case 0x3E:      goto yy318;
+       case 0x3F:      goto yy54;
+       case 0x40:      goto yy66;
+       case 0x41:      goto yy322;
+       case 0x42:      goto yy454;
+       case 0x43:      goto yy458;
+       case 0x44:      goto yy450;
+       case 0x45:      goto yy452;
+       case 0x46:      goto yy456;
+       case 0x47:      goto yy460;
+       case 0x48:      goto yy464;
+       case 0x49:      goto yy484;
+       case 0x4A:      goto yy326;
+       case 0x4B:      goto yy94;
+       case 0x4C:      goto yy122;
+       case 0x4D:      goto yy82;
+       case 0x4E:      goto yy88;
+       case 0x4F:      goto yy250;
+       case 0x50:      goto yy78;
+       case 0x51:      goto yy468;
+       case 0x52:      goto yy470;
+       case 0x53:      goto yy472;
+       case 0x54:      goto yy466;
+       case 0x55:      goto yy476;
+       case 0x56:      goto yy478;
+       case 0x57:      goto yy480;
+       case 0x58:      goto yy474;
+       case 0x59:      goto yy448;
+       case 0x5A:      goto yy68;
+       case 0x5B:      goto yy74;
+       case 0x5C:      goto yy86;
+       case 0x5D:      goto yy84;
+       case 0x5E:      goto yy120;
+       case 0x5F:      goto yy346;
+       case 0x60:      goto yy92;
+       case 0x61:      goto yy96;
+       case 0x62:      goto yy390;
+       case 0x63:      goto yy394;
+       case 0x64:      goto yy386;
+       case 0x65:      goto yy388;
+       case 0x66:      goto yy392;
+       case 0x67:      goto yy396;
+       case 0x68:      goto yy400;
+       case 0x69:      goto yy420;
+       case 0x6A:      goto yy334;
+       case 0x6B:      goto yy90;
+       case 0x6C:      goto yy76;
+       case 0x6D:      goto yy192;
+       case 0x6E:      goto yy126;
+       case 0x6F:      goto yy128;
+       case 0x70:      goto yy498;
+       case 0x71:      goto yy404;
+       case 0x72:      goto yy406;
+       case 0x73:      goto yy408;
+       case 0x74:      goto yy402;
+       case 0x75:      goto yy412;
+       case 0x76:      goto yy414;
+       case 0x77:      goto yy416;
+       case 0x78:      goto yy410;
+       case 0x79:      goto yy194;
+       case 0x7A:      goto yy118;
+       case 0x7B:      goto yy72;
+       case 0x7C:      goto yy130;
+       case 0x7D:      goto yy80;
+       case 0x7E:      goto yy124;
+       case 0x7F:      goto yy70;
+       case 0x80:      goto yy434;
+       case 0x81:      goto yy196;
+       case 0x82:      goto yy198;
+       case 0x83:      goto yy200;
+       case 0x84:      goto yy202;
+       case 0x85:      goto yy204;
+       case 0x86:      goto yy206;
+       case 0x87:      goto yy208;
+       case 0x88:      goto yy210;
+       case 0x89:      goto yy212;
+       case 0x8A:      goto yy344;
+       case 0x8B:      goto yy376;
+       case 0x8C:      goto yy482;
+       case 0x8D:      goto yy508;
+       case 0x8E:      goto yy446;
+       case 0x8F:      goto yy356;
+       case 0x90:      goto yy354;
+       case 0x91:      goto yy214;
+       case 0x92:      goto yy216;
+       case 0x93:      goto yy218;
+       case 0x94:      goto yy220;
+       case 0x95:      goto yy222;
+       case 0x96:      goto yy224;
+       case 0x97:      goto yy226;
+       case 0x98:      goto yy228;
+       case 0x99:      goto yy230;
+       case 0x9A:      goto yy342;
+       case 0x9B:      goto yy374;
+       case 0x9C:      goto yy462;
+       case 0x9D:      goto yy370;
+       case 0x9E:      goto yy398;
+       case 0x9F:      goto yy330;
+       case 0xA0:      goto yy364;
+       case 0xA1:      goto yy254;
+       case 0xA2:      goto yy232;
+       case 0xA3:      goto yy234;
+       case 0xA4:      goto yy236;
+       case 0xA5:      goto yy238;
+       case 0xA6:      goto yy240;
+       case 0xA7:      goto yy242;
+       case 0xA8:      goto yy244;
+       case 0xA9:      goto yy246;
+       case 0xAA:      goto yy324;
+       case 0xAB:      goto yy384;
+       case 0xAC:      goto yy418;
+       case 0xAD:      goto yy444;
+       case 0xAE:      goto yy510;
+       case 0xAF:      goto yy350;
+       case 0xB0:      goto yy190;
+       case 0xB1:      goto yy328;
+       case 0xB2:      goto yy332;
+       case 0xB3:      goto yy368;
+       case 0xB4:      goto yy340;
+       case 0xB5:      goto yy336;
+       case 0xB6:      goto yy366;
+       case 0xB7:      goto yy378;
+       case 0xB8:      goto yy380;
+       case 0xB9:      goto yy382;
+       case 0xBA:      goto yy184;
+       case 0xBB:      goto yy188;
+       case 0xBC:      goto yy352;
+       case 0xBD:      goto yy338;
+       case 0xBE:      goto yy362;
+       case 0xBF:      goto yy432;
+       case 0xC0:      goto yy248;
+       case 0xC1:      goto yy132;
+       case 0xC2:      goto yy134;
+       case 0xC3:      goto yy136;
+       case 0xC4:      goto yy138;
+       case 0xC5:      goto yy140;
+       case 0xC6:      goto yy142;
+       case 0xC7:      goto yy144;
+       case 0xC8:      goto yy146;
+       case 0xC9:      goto yy148;
+       case 0xCA:      goto yy348;
+       case 0xCB:      goto yy490;
+       case 0xCC:      goto yy494;
+       case 0xCD:      goto yy486;
+       case 0xCE:      goto yy488;
+       case 0xCF:      goto yy492;
+       case 0xD0:      goto yy252;
+       case 0xD1:      goto yy150;
+       case 0xD2:      goto yy152;
+       case 0xD3:      goto yy154;
+       case 0xD4:      goto yy156;
+       case 0xD5:      goto yy158;
+       case 0xD6:      goto yy160;
+       case 0xD7:      goto yy162;
+       case 0xD8:      goto yy164;
+       case 0xD9:      goto yy166;
+       case 0xDA:      goto yy372;
+       case 0xDB:      goto yy504;
+       case 0xDC:      goto yy506;
+       case 0xDD:      goto yy500;
+       case 0xDE:      goto yy502;
+       case 0xDF:      goto yy512;
+       case 0xE0:      goto yy186;
+       case 0xE1:      goto yy496;
+       case 0xE2:      goto yy168;
+       case 0xE3:      goto yy170;
+       case 0xE4:      goto yy172;
+       case 0xE5:      goto yy174;
+       case 0xE6:      goto yy176;
+       case 0xE7:      goto yy178;
+       case 0xE8:      goto yy180;
+       case 0xE9:      goto yy182;
+       case 0xEA:      goto yy358;
+       case 0xEB:      goto yy426;
+       case 0xEC:      goto yy430;
+       case 0xED:      goto yy422;
+       case 0xEE:      goto yy424;
+       case 0xEF:      goto yy428;
+       case 0xF0:      goto yy98;
+       case 0xF1:      goto yy100;
+       case 0xF2:      goto yy102;
+       case 0xF3:      goto yy104;
+       case 0xF4:      goto yy106;
+       case 0xF5:      goto yy108;
+       case 0xF6:      goto yy110;
+       case 0xF7:      goto yy112;
+       case 0xF8:      goto yy114;
+       case 0xF9:      goto yy116;
+       case 0xFA:      goto yy360;
+       case 0xFB:      goto yy440;
+       case 0xFC:      goto yy442;
+       case 0xFD:      goto yy436;
+       case 0xFE:      goto yy438;
+       default:        goto yy320;
+       }
+yy2:
+       ++cr;
+       return 0x00;
+yy4:
+       ++cr;
+       return 0x01;
+yy6:
+       ++cr;
+       return 0x02;
+yy8:
+       ++cr;
+       return 0x03;
+yy10:
+       ++cr;
+       return 0x04;
+yy12:
+       ++cr;
+       return 0x05;
+yy14:
+       ++cr;
+       return 0x06;
+yy16:
+       ++cr;
+       return 0x07;
+yy18:
+       ++cr;
+       return 0x08;
+yy20:
+       ++cr;
+       return 0x09;
+yy22:
+       ++cr;
+       return 0x0A;
+yy24:
+       ++cr;
+       return 0x0B;
+yy26:
+       ++cr;
+       return 0x0C;
+yy28:
+       ++cr;
+       return 0x0D;
+yy30:
+       ++cr;
+       return 0x0E;
+yy32:
+       ++cr;
+       return 0x0F;
+yy34:
+       ++cr;
+       return 0x10;
+yy36:
+       ++cr;
+       return 0x11;
+yy38:
+       ++cr;
+       return 0x12;
+yy40:
+       ++cr;
+       return 0x13;
+yy42:
+       ++cr;
+       return 0x14;
+yy44:
+       ++cr;
+       return 0x15;
+yy46:
+       ++cr;
+       return 0x16;
+yy48:
+       ++cr;
+       return 0x17;
+yy50:
+       ++cr;
+       return 0x18;
+yy52:
+       ++cr;
+       return 0x19;
+yy54:
+       ++cr;
+       return 0x1A;
+yy56:
+       ++cr;
+       return 0x1B;
+yy58:
+       ++cr;
+       return 0x1C;
+yy60:
+       ++cr;
+       return 0x1D;
+yy62:
+       ++cr;
+       return 0x1E;
+yy64:
+       ++cr;
+       return 0x1F;
+yy66:
+       ++cr;
+       return 0x20;
+yy68:
+       ++cr;
+       return 0x21;
+yy70:
+       ++cr;
+       return 0x22;
+yy72:
+       ++cr;
+       return 0x23;
+yy74:
+       ++cr;
+       return 0x24;
+yy76:
+       ++cr;
+       return 0x25;
+yy78:
+       ++cr;
+       return 0x26;
+yy80:
+       ++cr;
+       return 0x27;
+yy82:
+       ++cr;
+       return 0x28;
+yy84:
+       ++cr;
+       return 0x29;
+yy86:
+       ++cr;
+       return 0x2A;
+yy88:
+       ++cr;
+       return 0x2B;
+yy90:
+       ++cr;
+       return 0x2C;
+yy92:
+       ++cr;
+       return 0x2D;
+yy94:
+       ++cr;
+       return 0x2E;
+yy96:
+       ++cr;
+       return 0x2F;
+yy98:
+       ++cr;
+       return 0x30;
+yy100:
+       ++cr;
+       return 0x31;
+yy102:
+       ++cr;
+       return 0x32;
+yy104:
+       ++cr;
+       return 0x33;
+yy106:
+       ++cr;
+       return 0x34;
+yy108:
+       ++cr;
+       return 0x35;
+yy110:
+       ++cr;
+       return 0x36;
+yy112:
+       ++cr;
+       return 0x37;
+yy114:
+       ++cr;
+       return 0x38;
+yy116:
+       ++cr;
+       return 0x39;
+yy118:
+       ++cr;
+       return 0x3A;
+yy120:
+       ++cr;
+       return 0x3B;
+yy122:
+       ++cr;
+       return 0x3C;
+yy124:
+       ++cr;
+       return 0x3D;
+yy126:
+       ++cr;
+       return 0x3E;
+yy128:
+       ++cr;
+       return 0x3F;
+yy130:
+       ++cr;
+       return 0x40;
+yy132:
+       ++cr;
+       return 0x41;
+yy134:
+       ++cr;
+       return 0x42;
+yy136:
+       ++cr;
+       return 0x43;
+yy138:
+       ++cr;
+       return 0x44;
+yy140:
+       ++cr;
+       return 0x45;
+yy142:
+       ++cr;
+       return 0x46;
+yy144:
+       ++cr;
+       return 0x47;
+yy146:
+       ++cr;
+       return 0x48;
+yy148:
+       ++cr;
+       return 0x49;
+yy150:
+       ++cr;
+       return 0x4A;
+yy152:
+       ++cr;
+       return 0x4B;
+yy154:
+       ++cr;
+       return 0x4C;
+yy156:
+       ++cr;
+       return 0x4D;
+yy158:
+       ++cr;
+       return 0x4E;
+yy160:
+       ++cr;
+       return 0x4F;
+yy162:
+       ++cr;
+       return 0x50;
+yy164:
+       ++cr;
+       return 0x51;
+yy166:
+       ++cr;
+       return 0x52;
+yy168:
+       ++cr;
+       return 0x53;
+yy170:
+       ++cr;
+       return 0x54;
+yy172:
+       ++cr;
+       return 0x55;
+yy174:
+       ++cr;
+       return 0x56;
+yy176:
+       ++cr;
+       return 0x57;
+yy178:
+       ++cr;
+       return 0x58;
+yy180:
+       ++cr;
+       return 0x59;
+yy182:
+       ++cr;
+       return 0x5A;
+yy184:
+       ++cr;
+       return 0x5B;
+yy186:
+       ++cr;
+       return 0x5C;
+yy188:
+       ++cr;
+       return 0x5D;
+yy190:
+       ++cr;
+       return 0x5E;
+yy192:
+       ++cr;
+       return 0x5F;
+yy194:
+       ++cr;
+       return 0x60;
+yy196:
+       ++cr;
+       return 0x61;
+yy198:
+       ++cr;
+       return 0x62;
+yy200:
+       ++cr;
+       return 0x63;
+yy202:
+       ++cr;
+       return 0x64;
+yy204:
+       ++cr;
+       return 0x65;
+yy206:
+       ++cr;
+       return 0x66;
+yy208:
+       ++cr;
+       return 0x67;
+yy210:
+       ++cr;
+       return 0x68;
+yy212:
+       ++cr;
+       return 0x69;
+yy214:
+       ++cr;
+       return 0x6A;
+yy216:
+       ++cr;
+       return 0x6B;
+yy218:
+       ++cr;
+       return 0x6C;
+yy220:
+       ++cr;
+       return 0x6D;
+yy222:
+       ++cr;
+       return 0x6E;
+yy224:
+       ++cr;
+       return 0x6F;
+yy226:
+       ++cr;
+       return 0x70;
+yy228:
+       ++cr;
+       return 0x71;
+yy230:
+       ++cr;
+       return 0x72;
+yy232:
+       ++cr;
+       return 0x73;
+yy234:
+       ++cr;
+       return 0x74;
+yy236:
+       ++cr;
+       return 0x75;
+yy238:
+       ++cr;
+       return 0x76;
+yy240:
+       ++cr;
+       return 0x77;
+yy242:
+       ++cr;
+       return 0x78;
+yy244:
+       ++cr;
+       return 0x79;
+yy246:
+       ++cr;
+       return 0x7A;
+yy248:
+       ++cr;
+       return 0x7B;
+yy250:
+       ++cr;
+       return 0x7C;
+yy252:
+       ++cr;
+       return 0x7D;
+yy254:
+       ++cr;
+       return 0x7E;
+yy256:
+       ++cr;
+       return 0x7F;
+yy258:
+       ++cr;
+       return 0x80;
+yy260:
+       ++cr;
+       return 0x81;
+yy262:
+       ++cr;
+       return 0x82;
+yy264:
+       ++cr;
+       return 0x83;
+yy266:
+       ++cr;
+       return 0x84;
+yy268:
+       ++cr;
+       return 0x85;
+yy270:
+       ++cr;
+       return 0x86;
+yy272:
+       ++cr;
+       return 0x87;
+yy274:
+       ++cr;
+       return 0x88;
+yy276:
+       ++cr;
+       return 0x89;
+yy278:
+       ++cr;
+       return 0x8A;
+yy280:
+       ++cr;
+       return 0x8B;
+yy282:
+       ++cr;
+       return 0x8C;
+yy284:
+       ++cr;
+       return 0x8D;
+yy286:
+       ++cr;
+       return 0x8E;
+yy288:
+       ++cr;
+       return 0x8F;
+yy290:
+       ++cr;
+       return 0x90;
+yy292:
+       ++cr;
+       return 0x91;
+yy294:
+       ++cr;
+       return 0x92;
+yy296:
+       ++cr;
+       return 0x93;
+yy298:
+       ++cr;
+       return 0x94;
+yy300:
+       ++cr;
+       return 0x95;
+yy302:
+       ++cr;
+       return 0x96;
+yy304:
+       ++cr;
+       return 0x97;
+yy306:
+       ++cr;
+       return 0x98;
+yy308:
+       ++cr;
+       return 0x99;
+yy310:
+       ++cr;
+       return 0x9A;
+yy312:
+       ++cr;
+       return 0x9B;
+yy314:
+       ++cr;
+       return 0x9C;
+yy316:
+       ++cr;
+       return 0x9D;
+yy318:
+       ++cr;
+       return 0x9E;
+yy320:
+       ++cr;
+       return 0x9F;
+yy322:
+       ++cr;
+       return 0xA0;
+yy324:
+       ++cr;
+       return 0xA1;
+yy326:
+       ++cr;
+       return 0xA2;
+yy328:
+       ++cr;
+       return 0xA3;
+yy330:
+       ++cr;
+       return 0xA4;
+yy332:
+       ++cr;
+       return 0xA5;
+yy334:
+       ++cr;
+       return 0xA6;
+yy336:
+       ++cr;
+       return 0xA7;
+yy338:
+       ++cr;
+       return 0xA8;
+yy340:
+       ++cr;
+       return 0xA9;
+yy342:
+       ++cr;
+       return 0xAA;
+yy344:
+       ++cr;
+       return 0xAB;
+yy346:
+       ++cr;
+       return 0xAC;
+yy348:
+       ++cr;
+       return 0xAD;
+yy350:
+       ++cr;
+       return 0xAE;
+yy352:
+       ++cr;
+       return 0xAF;
+yy354:
+       ++cr;
+       return 0xB0;
+yy356:
+       ++cr;
+       return 0xB1;
+yy358:
+       ++cr;
+       return 0xB2;
+yy360:
+       ++cr;
+       return 0xB3;
+yy362:
+       ++cr;
+       return 0xB4;
+yy364:
+       ++cr;
+       return 0xB5;
+yy366:
+       ++cr;
+       return 0xB6;
+yy368:
+       ++cr;
+       return 0xB7;
+yy370:
+       ++cr;
+       return 0xB8;
+yy372:
+       ++cr;
+       return 0xB9;
+yy374:
+       ++cr;
+       return 0xBA;
+yy376:
+       ++cr;
+       return 0xBB;
+yy378:
+       ++cr;
+       return 0xBC;
+yy380:
+       ++cr;
+       return 0xBD;
+yy382:
+       ++cr;
+       return 0xBE;
+yy384:
+       ++cr;
+       return 0xBF;
+yy386:
+       ++cr;
+       return 0xC0;
+yy388:
+       ++cr;
+       return 0xC1;
+yy390:
+       ++cr;
+       return 0xC2;
+yy392:
+       ++cr;
+       return 0xC3;
+yy394:
+       ++cr;
+       return 0xC4;
+yy396:
+       ++cr;
+       return 0xC5;
+yy398:
+       ++cr;
+       return 0xC6;
+yy400:
+       ++cr;
+       return 0xC7;
+yy402:
+       ++cr;
+       return 0xC8;
+yy404:
+       ++cr;
+       return 0xC9;
+yy406:
+       ++cr;
+       return 0xCA;
+yy408:
+       ++cr;
+       return 0xCB;
+yy410:
+       ++cr;
+       return 0xCC;
+yy412:
+       ++cr;
+       return 0xCD;
+yy414:
+       ++cr;
+       return 0xCE;
+yy416:
+       ++cr;
+       return 0xCF;
+yy418:
+       ++cr;
+       return 0xD0;
+yy420:
+       ++cr;
+       return 0xD1;
+yy422:
+       ++cr;
+       return 0xD2;
+yy424:
+       ++cr;
+       return 0xD3;
+yy426:
+       ++cr;
+       return 0xD4;
+yy428:
+       ++cr;
+       return 0xD5;
+yy430:
+       ++cr;
+       return 0xD6;
+yy432:
+       ++cr;
+       return 0xD7;
+yy434:
+       ++cr;
+       return 0xD8;
+yy436:
+       ++cr;
+       return 0xD9;
+yy438:
+       ++cr;
+       return 0xDA;
+yy440:
+       ++cr;
+       return 0xDB;
+yy442:
+       ++cr;
+       return 0xDC;
+yy444:
+       ++cr;
+       return 0xDD;
+yy446:
+       ++cr;
+       return 0xDE;
+yy448:
+       ++cr;
+       return 0xDF;
+yy450:
+       ++cr;
+       return 0xE0;
+yy452:
+       ++cr;
+       return 0xE1;
+yy454:
+       ++cr;
+       return 0xE2;
+yy456:
+       ++cr;
+       return 0xE3;
+yy458:
+       ++cr;
+       return 0xE4;
+yy460:
+       ++cr;
+       return 0xE5;
+yy462:
+       ++cr;
+       return 0xE6;
+yy464:
+       ++cr;
+       return 0xE7;
+yy466:
+       ++cr;
+       return 0xE8;
+yy468:
+       ++cr;
+       return 0xE9;
+yy470:
+       ++cr;
+       return 0xEA;
+yy472:
+       ++cr;
+       return 0xEB;
+yy474:
+       ++cr;
+       return 0xEC;
+yy476:
+       ++cr;
+       return 0xED;
+yy478:
+       ++cr;
+       return 0xEE;
+yy480:
+       ++cr;
+       return 0xEF;
+yy482:
+       ++cr;
+       return 0xF0;
+yy484:
+       ++cr;
+       return 0xF1;
+yy486:
+       ++cr;
+       return 0xF2;
+yy488:
+       ++cr;
+       return 0xF3;
+yy490:
+       ++cr;
+       return 0xF4;
+yy492:
+       ++cr;
+       return 0xF5;
+yy494:
+       ++cr;
+       return 0xF6;
+yy496:
+       ++cr;
+       return 0xF7;
+yy498:
+       ++cr;
+       return 0xF8;
+yy500:
+       ++cr;
+       return 0xF9;
+yy502:
+       ++cr;
+       return 0xFA;
+yy504:
+       ++cr;
+       return 0xFB;
+yy506:
+       ++cr;
+       return 0xFC;
+yy508:
+       ++cr;
+       return 0xFD;
+yy510:
+       ++cr;
+       return 0xFE;
+yy512:
+       ++cr;
+       return 0xFF;
+}
+
+}
+
+int main(int argc, char** argv) {
+       unsigned char buf[2];
+       unsigned int ch = 0;
+       buf[1] = 0u;
+
+       printf("const uint ebc2asc[256] =\n");
+       printf("    { /* Based on ISO 8859/1 and Code Page 37 */\n");
+       for (;;) {
+               if (ch % 16 == 0) {
+                       printf("        ");
+               }
+               buf[0] = ch++;
+               printf("0x%02x", scan(buf));
+               if (ch == 256) {
+                       printf("\n");
+                       break;
+               }
+               if (ch % 16 == 0) {
+                       printf(",\n");
+               } else {
+                       printf(", ");
+               }
+       }
+       printf("    };\n");
+       return 0;
+}
diff --git a/re2c/test/bug2102138c.ei.re b/re2c/test/bug2102138c.ei.re
new file mode 100755 (executable)
index 0000000..fd4c22a
--- /dev/null
@@ -0,0 +1,314 @@
+#include <stdio.h>
+
+int scan(const unsigned char *cr)
+{
+       unsigned char  ch;
+/*!re2c
+
+re2c:define:YYCTYPE     = "unsigned char";
+re2c:define:YYCURSOR    = cr;
+re2c:define:YYFILL      = fill;
+re2c:variable:yych      = ch;
+re2c:yyfill:enable      = 0;
+
+"\x00" := return 0x00;
+"\x01" := return 0x01;
+"\x02" := return 0x02;
+"\x03" := return 0x03;
+"\x04" := return 0x04;
+"\x05" := return 0x05;
+"\x06" := return 0x06;
+"\a"   := return 0x07;
+"\b"   := return 0x08;
+"\t"   := return 0x09;
+"\n"   := return 0x0A;
+"\v"   := return 0x0B;
+"\f"   := return 0x0C;
+"\r"   := return 0x0D;
+"\x0E" := return 0x0E;
+"\x0F" := return 0x0F;
+
+"\x10" := return 0x10;
+"\x11" := return 0x11;
+"\x12" := return 0x12;
+"\x13" := return 0x13;
+"\x14" := return 0x14;
+"\x15" := return 0x15;
+"\x16" := return 0x16;
+"\x17" := return 0x17;
+"\x18" := return 0x18;
+"\x19" := return 0x19;
+"\x1A" := return 0x1A;
+"\x1B" := return 0x1B;
+"\x1C" := return 0x1C;
+"\x1D" := return 0x1D;
+"\x1E" := return 0x1E;
+"\x1F" := return 0x1F;
+
+"\x20" := return 0x20;
+"\x21" := return 0x21;
+"\x22" := return 0x22;
+"\x23" := return 0x23;
+"\x24" := return 0x24;
+"\x25" := return 0x25;
+"\x26" := return 0x26;
+"\x27" := return 0x27;
+"\x28" := return 0x28;
+"\x29" := return 0x29;
+"\x2A" := return 0x2A;
+"\x2B" := return 0x2B;
+"\x2C" := return 0x2C;
+"\x2D" := return 0x2D;
+"\x2E" := return 0x2E;
+"\x2F" := return 0x2F;
+
+"\x30" := return 0x30;
+"\x31" := return 0x31;
+"\x32" := return 0x32;
+"\x33" := return 0x33;
+"\x34" := return 0x34;
+"\x35" := return 0x35;
+"\x36" := return 0x36;
+"\x37" := return 0x37;
+"\x38" := return 0x38;
+"\x39" := return 0x39;
+"\x3A" := return 0x3A;
+"\x3B" := return 0x3B;
+"\x3C" := return 0x3C;
+"\x3D" := return 0x3D;
+"\x3E" := return 0x3E;
+"\x3F" := return 0x3F;
+
+"\x40" := return 0x40;
+"\x41" := return 0x41;
+"\x42" := return 0x42;
+"\x43" := return 0x43;
+"\x44" := return 0x44;
+"\x45" := return 0x45;
+"\x46" := return 0x46;
+"\x47" := return 0x47;
+"\x48" := return 0x48;
+"\x49" := return 0x49;
+"\x4A" := return 0x4A;
+"\x4B" := return 0x4B;
+"\x4C" := return 0x4C;
+"\x4D" := return 0x4D;
+"\x4E" := return 0x4E;
+"\x4F" := return 0x4F;
+
+"\x50" := return 0x50;
+"\x51" := return 0x51;
+"\x52" := return 0x52;
+"\x53" := return 0x53;
+"\x54" := return 0x54;
+"\x55" := return 0x55;
+"\x56" := return 0x56;
+"\x57" := return 0x57;
+"\x58" := return 0x58;
+"\x59" := return 0x59;
+"\x5A" := return 0x5A;
+"\x5B" := return 0x5B;
+"\x5C" := return 0x5C;
+"\x5D" := return 0x5D;
+"\x5E" := return 0x5E;
+"\x5F" := return 0x5F;
+
+"\x60" := return 0x60;
+"\x61" := return 0x61;
+"\x62" := return 0x62;
+"\x63" := return 0x63;
+"\x64" := return 0x64;
+"\x65" := return 0x65;
+"\x66" := return 0x66;
+"\x67" := return 0x67;
+"\x68" := return 0x68;
+"\x69" := return 0x69;
+"\x6A" := return 0x6A;
+"\x6B" := return 0x6B;
+"\x6C" := return 0x6C;
+"\x6D" := return 0x6D;
+"\x6E" := return 0x6E;
+"\x6F" := return 0x6F;
+
+"\x70" := return 0x70;
+"\x71" := return 0x71;
+"\x72" := return 0x72;
+"\x73" := return 0x73;
+"\x74" := return 0x74;
+"\x75" := return 0x75;
+"\x76" := return 0x76;
+"\x77" := return 0x77;
+"\x78" := return 0x78;
+"\x79" := return 0x79;
+"\x7A" := return 0x7A;
+"\x7B" := return 0x7B;
+"\x7C" := return 0x7C;
+"\x7D" := return 0x7D;
+"\x7E" := return 0x7E;
+"\x7F" := return 0x7F;
+
+"\x80" := return 0x80;
+"\x81" := return 0x81;
+"\x82" := return 0x82;
+"\x83" := return 0x83;
+"\x84" := return 0x84;
+"\x85" := return 0x85;
+"\x86" := return 0x86;
+"\x87" := return 0x87;
+"\x88" := return 0x88;
+"\x89" := return 0x89;
+"\x8A" := return 0x8A;
+"\x8B" := return 0x8B;
+"\x8C" := return 0x8C;
+"\x8D" := return 0x8D;
+"\x8E" := return 0x8E;
+"\x8F" := return 0x8F;
+
+"\x90" := return 0x90;
+"\x91" := return 0x91;
+"\x92" := return 0x92;
+"\x93" := return 0x93;
+"\x94" := return 0x94;
+"\x95" := return 0x95;
+"\x96" := return 0x96;
+"\x97" := return 0x97;
+"\x98" := return 0x98;
+"\x99" := return 0x99;
+"\x9A" := return 0x9A;
+"\x9B" := return 0x9B;
+"\x9C" := return 0x9C;
+"\x9D" := return 0x9D;
+"\x9E" := return 0x9E;
+"\x9F" := return 0x9F;
+
+"\xA0" := return 0xA0;
+"\xA1" := return 0xA1;
+"\xA2" := return 0xA2;
+"\xA3" := return 0xA3;
+"\xA4" := return 0xA4;
+"\xA5" := return 0xA5;
+"\xA6" := return 0xA6;
+"\xA7" := return 0xA7;
+"\xA8" := return 0xA8;
+"\xA9" := return 0xA9;
+"\xAA" := return 0xAA;
+"\xAB" := return 0xAB;
+"\xAC" := return 0xAC;
+"\xAD" := return 0xAD;
+"\xAE" := return 0xAE;
+"\xAF" := return 0xAF;
+
+"\xB0" := return 0xB0;
+"\xB1" := return 0xB1;
+"\xB2" := return 0xB2;
+"\xB3" := return 0xB3;
+"\xB4" := return 0xB4;
+"\xB5" := return 0xB5;
+"\xB6" := return 0xB6;
+"\xB7" := return 0xB7;
+"\xB8" := return 0xB8;
+"\xB9" := return 0xB9;
+"\xBA" := return 0xBA;
+"\xBB" := return 0xBB;
+"\xBC" := return 0xBC;
+"\xBD" := return 0xBD;
+"\xBE" := return 0xBE;
+"\xBF" := return 0xBF;
+
+"\xC0" := return 0xC0;
+"\xC1" := return 0xC1;
+"\xC2" := return 0xC2;
+"\xC3" := return 0xC3;
+"\xC4" := return 0xC4;
+"\xC5" := return 0xC5;
+"\xC6" := return 0xC6;
+"\xC7" := return 0xC7;
+"\xC8" := return 0xC8;
+"\xC9" := return 0xC9;
+"\xCA" := return 0xCA;
+"\xCB" := return 0xCB;
+"\xCC" := return 0xCC;
+"\xCD" := return 0xCD;
+"\xCE" := return 0xCE;
+"\xCF" := return 0xCF;
+
+"\xD0" := return 0xD0;
+"\xD1" := return 0xD1;
+"\xD2" := return 0xD2;
+"\xD3" := return 0xD3;
+"\xD4" := return 0xD4;
+"\xD5" := return 0xD5;
+"\xD6" := return 0xD6;
+"\xD7" := return 0xD7;
+"\xD8" := return 0xD8;
+"\xD9" := return 0xD9;
+"\xDA" := return 0xDA;
+"\xDB" := return 0xDB;
+"\xDC" := return 0xDC;
+"\xDD" := return 0xDD;
+"\xDE" := return 0xDE;
+"\xDF" := return 0xDF;
+
+"\xE0" := return 0xE0;
+"\xE1" := return 0xE1;
+"\xE2" := return 0xE2;
+"\xE3" := return 0xE3;
+"\xE4" := return 0xE4;
+"\xE5" := return 0xE5;
+"\xE6" := return 0xE6;
+"\xE7" := return 0xE7;
+"\xE8" := return 0xE8;
+"\xE9" := return 0xE9;
+"\xEA" := return 0xEA;
+"\xEB" := return 0xEB;
+"\xEC" := return 0xEC;
+"\xED" := return 0xED;
+"\xEE" := return 0xEE;
+"\xEF" := return 0xEF;
+
+"\xF0" := return 0xF0;
+"\xF1" := return 0xF1;
+"\xF2" := return 0xF2;
+"\xF3" := return 0xF3;
+"\xF4" := return 0xF4;
+"\xF5" := return 0xF5;
+"\xF6" := return 0xF6;
+"\xF7" := return 0xF7;
+"\xF8" := return 0xF8;
+"\xF9" := return 0xF9;
+"\xFA" := return 0xFA;
+"\xFB" := return 0xFB;
+"\xFC" := return 0xFC;
+"\xFD" := return 0xFD;
+"\xFE" := return 0xFE;
+"\xFF" := return 0xFF;
+
+*/
+}
+
+int main(int argc, char** argv) {
+       unsigned char buf[2];
+       unsigned int ch = 0;
+       buf[1] = 0u;
+
+       printf("const uint ebc2asc[256] =\n");
+       printf("    { /* Based on ISO 8859/1 and Code Page 37 */\n");
+       for (;;) {
+               if (ch % 16 == 0) {
+                       printf("        ");
+               }
+               buf[0] = ch++;
+               printf("0x%02x", scan(buf));
+               if (ch == 256) {
+                       printf("\n");
+                       break;
+               }
+               if (ch % 16 == 0) {
+                       printf(",\n");
+               } else {
+                       printf(", ");
+               }
+       }
+       printf("    };\n");
+       return 0;
+}
diff --git a/re2c/test/bug2102138c.ei.txt b/re2c/test/bug2102138c.ei.txt
new file mode 100755 (executable)
index 0000000..e952201
--- /dev/null
@@ -0,0 +1,19 @@
+const uint ebc2asc[256] =
+    { /* Based on ISO 8859/1 and Code Page 37 */
+        0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f, 0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+        0x10, 0x11, 0x12, 0x13, 0x9d, 0x85, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
+        0x80, 0x81, 0x82, 0x83, 0x84, 0x0a, 0x17, 0x1b, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
+        0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
+        0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
+        0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac,
+        0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
+        0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
+        0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xde, 0xb1,
+        0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
+        0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xfe, 0xae,
+        0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, 0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7,
+        0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
+        0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
+        0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
+        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f
+    };