From 9433f4248405144a6ce9bf64e6df8b1f34f12bc6 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 19 Apr 2014 18:02:35 -0400 Subject: also handle splitting utf8 characters across reads --- parser.c | 357 ++++++++++++++++++++++++++++++++------------------------------- parser.l | 3 + 2 files changed, 185 insertions(+), 175 deletions(-) diff --git a/parser.c b/parser.c index b111df5..d9e085f 100644 --- a/parser.c +++ b/parser.c @@ -351,8 +351,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 46 -#define YY_END_OF_BUFFER 47 +#define YY_NUM_RULES 49 +#define YY_END_OF_BUFFER 50 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -360,22 +360,23 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[130] = +static yyconst flex_int16_t yy_accept[133] = { 0, - 0, 0, 47, 44, 1, 2, 3, 4, 5, 6, - 7, 37, 32, 45, 45, 45, 45, 42, 43, 12, - 13, 8, 9, 10, 35, 36, 11, 0, 0, 0, - 32, 0, 0, 0, 33, 0, 0, 38, 39, 34, - 34, 39, 39, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 0, 0, 0, 40, - 41, 41, 41, 41, 0, 0, 0, 0, 0, 0, - 34, 34, 34, 27, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 34, 0, 29, 0, 0, - 0, 0, 30, 0, 0, 0, 0, 31, 0, 0, - - 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 23, 24, 34, 0, 0, - 0, 34, 34, 0, 34, 34, 0, 34, 0 + 0, 0, 50, 47, 1, 2, 3, 4, 5, 6, + 7, 40, 32, 48, 34, 35, 36, 45, 46, 12, + 13, 8, 9, 10, 38, 39, 11, 0, 0, 0, + 32, 0, 0, 0, 33, 35, 36, 41, 42, 37, + 37, 42, 42, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 0, 0, 0, 43, + 44, 44, 44, 44, 0, 0, 0, 0, 0, 0, + 0, 36, 37, 37, 37, 27, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, + 29, 0, 0, 0, 0, 30, 0, 0, 0, 0, + + 31, 0, 0, 0, 0, 0, 37, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, + 37, 0, 0, 0, 37, 37, 0, 37, 37, 0, + 37, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -419,174 +420,174 @@ static yyconst flex_int32_t yy_meta[44] = 3, 3, 7 } ; -static yyconst flex_int16_t yy_base[144] = +static yyconst flex_int16_t yy_base[147] = { 0, - 0, 43, 315, 511, 511, 511, 511, 511, 511, 511, - 511, 86, 13, 511, 274, 273, 272, 511, 511, 511, - 511, 511, 511, 511, 128, 170, 511, 271, 270, 257, - 16, 256, 255, 254, 19, 253, 252, 511, 511, 0, + 0, 43, 318, 511, 511, 511, 511, 511, 511, 511, + 511, 86, 13, 511, 278, 277, 276, 511, 511, 511, + 511, 511, 511, 511, 128, 170, 511, 274, 273, 272, + 16, 271, 270, 257, 19, 256, 255, 511, 511, 0, 511, 212, 244, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 249, 248, 247, 511, - 511, 268, 267, 266, 243, 242, 241, 231, 230, 228, - 4, 45, 262, 511, 511, 227, 226, 24, 27, 30, - 225, 224, 223, 288, 0, 9, 222, 511, 33, 212, - 170, 169, 511, 165, 165, 164, 163, 511, 266, 162, - - 161, 158, 157, 0, 15, 163, 316, 156, 155, 154, - 153, 151, 147, 334, 58, 511, 511, 350, 86, 39, - 24, 368, 166, 384, 400, 170, 416, 0, 511, 454, - 459, 465, 469, 472, 477, 482, 487, 490, 493, 496, - 498, 501, 504 + 511, 511, 511, 511, 511, 511, 254, 253, 252, 511, + 511, 271, 270, 269, 246, 245, 244, 243, 242, 241, + 231, 230, 4, 45, 262, 511, 511, 228, 227, 24, + 27, 30, 226, 225, 224, 223, 288, 0, 9, 222, + 511, 33, 212, 170, 169, 511, 165, 165, 164, 163, + + 511, 266, 162, 161, 158, 157, 0, 15, 163, 316, + 156, 155, 154, 153, 151, 147, 334, 58, 511, 511, + 350, 86, 39, 24, 368, 166, 384, 400, 170, 416, + 0, 511, 454, 459, 465, 469, 472, 477, 482, 487, + 490, 493, 496, 498, 501, 504 } ; -static yyconst flex_int16_t yy_def[144] = +static yyconst flex_int16_t yy_def[147] = { 0, - 130, 130, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 131, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 132, 129, 129, 129, 129, - 131, 129, 129, 129, 133, 129, 129, 129, 129, 25, - 129, 129, 42, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 134, 42, 42, 129, 129, 129, 129, 135, 136, 137, - 129, 129, 129, 42, 129, 138, 129, 129, 135, 129, - 129, 129, 129, 136, 129, 129, 129, 129, 137, 129, - - 129, 129, 129, 84, 139, 140, 73, 129, 129, 129, - 129, 129, 129, 84, 141, 129, 129, 73, 129, 129, - 129, 84, 142, 84, 84, 143, 84, 127, 0, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129 + 133, 133, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 134, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 135, 132, 132, 132, 132, + 134, 132, 132, 132, 136, 132, 132, 132, 132, 25, + 132, 132, 42, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 137, 42, 42, 132, 132, 132, 132, 138, + 139, 140, 132, 132, 132, 132, 42, 132, 141, 132, + 132, 138, 132, 132, 132, 132, 139, 132, 132, 132, + + 132, 140, 132, 132, 132, 132, 87, 142, 143, 75, + 132, 132, 132, 132, 132, 132, 87, 144, 132, 132, + 75, 132, 132, 132, 87, 145, 87, 87, 146, 87, + 130, 0, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132 } ; static yyconst flex_int16_t yy_nxt[555] = { 0, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 129, - 106, 106, 106, 106, 106, 106, 71, 39, 39, 129, - 39, 85, 85, 129, 85, 88, 85, 85, 93, 85, - 129, 98, 85, 85, 88, 85, 129, 39, 14, 15, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 132, + 109, 109, 109, 109, 109, 109, 73, 39, 39, 132, + 39, 88, 88, 132, 88, 91, 88, 88, 96, 88, + 132, 101, 88, 88, 91, 88, 132, 39, 14, 15, 16, 17, 14, 4, 5, 6, 7, 8, 9, 10, 11, 12, 32, 33, 34, 32, 33, 34, 32, 33, - 34, 86, 99, 90, 91, 92, 95, 96, 97, 100, - 101, 102, 90, 91, 92, 85, 85, 94, 85, 53, + 34, 89, 102, 93, 94, 95, 98, 99, 100, 103, + 104, 105, 93, 94, 95, 88, 88, 97, 88, 53, 54, 14, 15, 16, 17, 14, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 20, 21, 19, 19, 22, 23, 19, 19, 19, 19, 19, 19, 19, 19, 19, 24, 19, 25, 26, 27, - 19, 19, 19, 19, 89, 28, 29, 30, 38, 38, + 19, 19, 19, 19, 92, 28, 29, 30, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 40, 40, 40, 40, 40, 40, 41, 42, 42, 39, 43, 44, 45, 46, 47, 48, 49, 50, 51, 39, 52, 39, - 39, 39, 53, 54, 55, 56, 93, 57, 58, 59, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 115, - 62, 63, 64, 85, 85, 121, 85, 85, 85, 99, - 85, 120, 94, 119, 89, 61, 113, 116, 117, 112, + 39, 39, 53, 54, 55, 56, 96, 57, 58, 59, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 118, + 62, 63, 64, 88, 88, 124, 88, 88, 88, 102, + 88, 123, 97, 122, 92, 61, 116, 119, 120, 115, - 99, 111, 110, 94, 95, 96, 97, 109, 108, 65, + 102, 114, 113, 97, 98, 99, 100, 112, 111, 65, 66, 67, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 39, 72, 72, 72, 72, 72, 72, 41, 39, + 38, 39, 74, 74, 74, 74, 74, 74, 41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 89, 57, 58, 59, 73, 73, 73, 73, 73, 73, - 39, 19, 103, 61, 87, 39, 35, 98, 83, 19, - 74, 75, 73, 73, 73, 73, 73, 73, 86, 82, - 81, 61, 80, 79, 78, 77, 76, 39, 74, 75, - 70, 35, 37, 36, 35, 69, 53, 54, 104, 104, - - 104, 104, 104, 104, 105, 100, 101, 102, 68, 19, - 37, 36, 35, 48, 129, 129, 129, 129, 129, 129, - 129, 129, 53, 54, 55, 56, 118, 118, 118, 118, - 118, 118, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 39, 39, 122, 122, 122, 122, 122, 122, - 123, 129, 129, 129, 129, 129, 129, 129, 129, 39, - 118, 118, 118, 118, 118, 118, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 39, 39, 122, 122, - 122, 122, 122, 122, 123, 129, 129, 129, 129, 129, - 129, 129, 129, 39, 125, 125, 125, 125, 125, 125, - - 126, 129, 129, 129, 129, 129, 129, 129, 129, 39, - 125, 125, 125, 125, 125, 125, 126, 129, 129, 129, - 129, 129, 129, 129, 129, 39, 128, 128, 128, 128, - 128, 128, 126, 129, 129, 129, 129, 129, 129, 129, - 129, 39, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 39, 13, 13, 13, 13, 13, 13, + 92, 57, 58, 59, 75, 75, 75, 75, 75, 75, + 39, 35, 19, 106, 61, 90, 39, 101, 35, 86, + 76, 77, 75, 75, 75, 75, 75, 75, 89, 35, + 85, 19, 84, 83, 61, 82, 81, 80, 76, 77, + 79, 78, 39, 72, 35, 71, 53, 54, 107, 107, + + 107, 107, 107, 107, 108, 103, 104, 105, 70, 35, + 69, 68, 19, 48, 37, 36, 35, 132, 132, 132, + 132, 132, 53, 54, 55, 56, 121, 121, 121, 121, + 121, 121, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 39, 39, 125, 125, 125, 125, 125, 125, + 126, 132, 132, 132, 132, 132, 132, 132, 132, 39, + 121, 121, 121, 121, 121, 121, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 39, 39, 125, 125, + 125, 125, 125, 125, 126, 132, 132, 132, 132, 132, + 132, 132, 132, 39, 128, 128, 128, 128, 128, 128, + + 129, 132, 132, 132, 132, 132, 132, 132, 132, 39, + 128, 128, 128, 128, 128, 128, 129, 132, 132, 132, + 132, 132, 132, 132, 132, 39, 131, 131, 131, 131, + 131, 131, 129, 132, 132, 132, 132, 132, 132, 132, + 132, 39, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 39, 13, 13, 13, 13, 13, 13, 13, 31, 31, 31, 31, 61, 61, 61, 61, 61, - 61, 35, 35, 35, 35, 84, 129, 84, 89, 89, - 89, 89, 89, 94, 94, 94, 94, 94, 99, 99, - 99, 99, 99, 107, 129, 107, 114, 129, 114, 106, - - 106, 106, 129, 106, 124, 129, 124, 127, 129, 127, - 3, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129 + 61, 35, 35, 35, 35, 87, 132, 87, 92, 92, + 92, 92, 92, 97, 97, 97, 97, 97, 102, 102, + 102, 102, 102, 110, 132, 110, 117, 132, 117, 109, + + 109, 109, 132, 109, 127, 132, 127, 130, 132, 130, + 3, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132 } ; static yyconst flex_int16_t yy_chk[555] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 85, 85, 85, 85, 85, 85, 40, 40, 40, 0, - 40, 71, 71, 0, 71, 78, 86, 86, 79, 86, - 0, 80, 105, 105, 89, 105, 0, 40, 1, 1, + 88, 88, 88, 88, 88, 88, 40, 40, 40, 0, + 40, 73, 73, 0, 73, 80, 89, 89, 81, 89, + 0, 82, 108, 108, 92, 108, 0, 40, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, 13, 13, 31, 31, 31, 35, 35, - 35, 72, 121, 78, 78, 78, 79, 79, 79, 80, - 80, 80, 89, 89, 89, 115, 115, 120, 115, 72, - 72, 2, 2, 2, 2, 2, 12, 12, 12, 12, + 35, 74, 124, 80, 80, 80, 81, 81, 81, 82, + 82, 82, 92, 92, 92, 118, 118, 123, 118, 74, + 74, 2, 2, 2, 2, 2, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 119, 12, 12, 12, 25, 25, + 12, 12, 12, 12, 122, 12, 12, 12, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 94, 25, 25, 25, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 106, - 26, 26, 26, 123, 123, 113, 123, 126, 126, 112, - 126, 111, 110, 109, 108, 103, 102, 106, 106, 101, + 25, 25, 25, 25, 25, 25, 97, 25, 25, 25, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 109, + 26, 26, 26, 126, 126, 116, 126, 129, 129, 115, + 129, 114, 113, 112, 111, 106, 105, 109, 109, 104, - 100, 97, 96, 95, 94, 94, 94, 92, 91, 26, + 103, 100, 99, 98, 97, 97, 97, 95, 94, 26, 26, 26, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 90, 42, 42, 42, 43, 43, 43, 43, 43, 43, - 87, 83, 82, 81, 77, 76, 70, 99, 69, 68, - 43, 43, 73, 73, 73, 73, 73, 73, 73, 67, - 66, 65, 64, 63, 62, 59, 58, 57, 73, 73, - 37, 36, 34, 33, 32, 30, 73, 73, 84, 84, - - 84, 84, 84, 84, 84, 99, 99, 99, 29, 28, - 17, 16, 15, 84, 3, 0, 0, 0, 0, 0, - 0, 0, 84, 84, 84, 84, 107, 107, 107, 107, - 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 107, 107, 114, 114, 114, 114, 114, 114, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 114, - 118, 118, 118, 118, 118, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 118, 122, 122, - 122, 122, 122, 122, 122, 0, 0, 0, 0, 0, - 0, 0, 0, 122, 124, 124, 124, 124, 124, 124, - - 124, 0, 0, 0, 0, 0, 0, 0, 0, 124, - 125, 125, 125, 125, 125, 125, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 127, 127, 127, 127, - 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, - 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 127, 130, 130, 130, 130, 130, 130, - 130, 131, 131, 131, 131, 132, 132, 132, 132, 132, - 132, 133, 133, 133, 133, 134, 0, 134, 135, 135, - 135, 135, 135, 136, 136, 136, 136, 136, 137, 137, - 137, 137, 137, 138, 0, 138, 139, 0, 139, 140, - - 140, 141, 0, 141, 142, 0, 142, 143, 0, 143, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129 + 93, 42, 42, 42, 43, 43, 43, 43, 43, 43, + 90, 86, 85, 84, 83, 79, 78, 102, 72, 71, + 43, 43, 75, 75, 75, 75, 75, 75, 75, 70, + 69, 68, 67, 66, 65, 64, 63, 62, 75, 75, + 59, 58, 57, 37, 36, 34, 75, 75, 87, 87, + + 87, 87, 87, 87, 87, 102, 102, 102, 33, 32, + 30, 29, 28, 87, 17, 16, 15, 3, 0, 0, + 0, 0, 87, 87, 87, 87, 110, 110, 110, 110, + 110, 110, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 110, 110, 117, 117, 117, 117, 117, 117, + 117, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 121, 121, 121, 121, 121, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 121, 121, 125, 125, + 125, 125, 125, 125, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 125, 127, 127, 127, 127, 127, 127, + + 127, 0, 0, 0, 0, 0, 0, 0, 0, 127, + 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 130, 130, 130, 130, + 130, 130, 130, 0, 0, 0, 0, 0, 0, 0, + 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 130, 133, 133, 133, 133, 133, 133, + 133, 134, 134, 134, 134, 135, 135, 135, 135, 135, + 135, 136, 136, 136, 136, 137, 0, 137, 138, 138, + 138, 138, 138, 139, 139, 139, 139, 139, 140, 140, + 140, 140, 140, 141, 0, 141, 142, 0, 142, 143, + + 143, 144, 0, 144, 145, 0, 145, 146, 0, 146, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132 } ; /* The intent behind this definition is that it'll catch @@ -642,7 +643,7 @@ static void runes_parser_handle_osc1(RunesTerm *t, char *buf, size_t len); static void runes_parser_handle_osc2(RunesTerm *t, char *buf, size_t len); static void runes_parser_handle_ascii(RunesTerm *t, char *text, size_t len); static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len); -#line 646 "parser.c" +#line 647 "parser.c" #define INITIAL 0 @@ -893,7 +894,7 @@ YY_DECL #line 110 "parser.l" -#line 897 "parser.c" +#line 898 "parser.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -920,13 +921,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 130 ) + if ( yy_current_state >= 133 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 129 ); + while ( yy_current_state != 132 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1115,18 +1116,24 @@ case 35: case 36: #line 154 "parser.l" case 37: +#line 155 "parser.l" +case 38: +#line 156 "parser.l" +case 39: +#line 157 "parser.l" +case 40: YY_RULE_SETUP -#line 154 "parser.l" +#line 157 "parser.l" return yyleng; YY_BREAK case YY_STATE_EOF(INITIAL): -#line 156 "parser.l" +#line 159 "parser.l" return 0; YY_BREAK -case 38: -/* rule 38 can match eol */ +case 41: +/* rule 41 can match eol */ YY_RULE_SETUP -#line 158 "parser.l" +#line 161 "parser.l" { fprintf( stderr, "unhandled CSI sequence: \\033%*s\\%hho\n", @@ -1134,9 +1141,9 @@ YY_RULE_SETUP return -1; } YY_BREAK -case 39: +case 42: YY_RULE_SETUP -#line 165 "parser.l" +#line 168 "parser.l" { fprintf( stderr, "unhandled CSI sequence: \\033%*s\n", @@ -1144,10 +1151,10 @@ YY_RULE_SETUP return -1; } YY_BREAK -case 40: -/* rule 40 can match eol */ +case 43: +/* rule 43 can match eol */ YY_RULE_SETUP -#line 172 "parser.l" +#line 175 "parser.l" { fprintf( stderr, "unhandled OSC sequence: \\033%*s\\%hho\n", @@ -1155,9 +1162,9 @@ YY_RULE_SETUP return -1; } YY_BREAK -case 41: +case 44: YY_RULE_SETUP -#line 179 "parser.l" +#line 182 "parser.l" { fprintf( stderr, "unhandled OSC sequence: \\033%*s\n", @@ -1165,18 +1172,18 @@ YY_RULE_SETUP return -1; } YY_BREAK -case 42: -/* rule 42 can match eol */ +case 45: +/* rule 45 can match eol */ YY_RULE_SETUP -#line 186 "parser.l" +#line 189 "parser.l" { fprintf(stderr, "unhandled escape sequence: \\%hho\n", yytext[1]); return -1; } YY_BREAK -case 43: +case 46: YY_RULE_SETUP -#line 191 "parser.l" +#line 194 "parser.l" { fprintf( stderr, "unhandled escape sequence: %*s\n", @@ -1184,28 +1191,28 @@ YY_RULE_SETUP return -1; } YY_BREAK -case 44: -/* rule 44 can match eol */ +case 47: +/* rule 47 can match eol */ YY_RULE_SETUP -#line 198 "parser.l" +#line 201 "parser.l" { fprintf(stderr, "unhandled control character: \\%hho\n", yytext[0]); return -1; } YY_BREAK -case 45: +case 48: YY_RULE_SETUP -#line 203 "parser.l" +#line 206 "parser.l" { fprintf(stderr, "invalid utf8 byte: \\%hho\n", yytext[0]); } YY_BREAK -case 46: +case 49: YY_RULE_SETUP -#line 207 "parser.l" +#line 210 "parser.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1209 "parser.c" +#line 1216 "parser.c" case YY_END_OF_BUFFER: { @@ -1499,7 +1506,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 130 ) + if ( yy_current_state >= 133 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1528,11 +1535,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 130 ) + if ( yy_current_state >= 133 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 129); + yy_is_jam = (yy_current_state == 132); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -2297,7 +2304,7 @@ static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 207 "parser.l" +#line 210 "parser.l" diff --git a/parser.l b/parser.l index e3f0065..fdf2aa3 100644 --- a/parser.l +++ b/parser.l @@ -148,6 +148,9 @@ static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len); {ASCII}+ runes_parser_handle_ascii(yyextra, yytext, yyleng); return -1; {CHAR}+ runes_parser_handle_text(yyextra, yytext, yyleng); return -1; +{LEAD2} | +{LEAD3}{CONT}? | +{LEAD4}{CONT}?{CONT}? | {CSI}[<=?]?{CSIPARAMS}[0-9;] | {CSI} | {OSC} | -- cgit v1.2.3-54-g00ecf