diff --git a/src/lexer.c b/src/lexer.c index 72d211e0..d95bb221 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -1,6 +1,6 @@ -#line 1 "src/lexer.c" +#line 2 "src/lexer.c" -#line 3 "src/lexer.c" +#line 4 "src/lexer.c" #define YY_INT_ALIGNED short int @@ -582,44 +582,44 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[168] = +static const flex_int16_t yy_accept[171] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 52, 51, 51, 52, 42, 1, 37, 37, 38, 39, 37, 37, 37, 37, 37, 37, 41, 37, 37, 37, 37, 52, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 37, 46, 46, 44, 47, 2, 3, 2, 51, 4, - 50, 50, 31, 29, 27, 28, 35, 41, 49, 20, - 30, 41, 41, 0, 33, 5, 34, 0, 40, 48, - 0, 48, 6, 48, 48, 48, 48, 48, 48, 11, - 48, 48, 48, 48, 16, 48, 48, 48, 26, 46, + 37, 46, 46, 44, 47, 2, 3, 2, 2, 51, + 4, 50, 50, 31, 29, 27, 28, 35, 41, 49, + 20, 30, 41, 41, 0, 33, 5, 34, 0, 40, + 48, 0, 48, 6, 48, 48, 48, 48, 48, 48, + 11, 48, 48, 48, 48, 16, 48, 48, 48, 26, - 45, 43, 45, 2, 50, 0, 50, 49, 32, 41, - 0, 41, 36, 0, 15, 48, 48, 10, 48, 48, - 17, 48, 48, 48, 48, 48, 48, 48, 21, 0, - 45, 0, 50, 48, 48, 48, 14, 13, 48, 48, - 48, 48, 48, 48, 12, 45, 50, 24, 22, 48, - 48, 48, 23, 48, 48, 45, 50, 48, 7, 48, - 9, 18, 50, 19, 8, 25, 0 + 46, 45, 43, 45, 3, 2, 0, 50, 0, 50, + 49, 32, 41, 0, 41, 36, 0, 15, 48, 48, + 10, 48, 48, 17, 48, 48, 48, 48, 48, 48, + 48, 21, 0, 45, 0, 50, 48, 48, 48, 14, + 13, 48, 48, 48, 48, 48, 48, 12, 45, 50, + 24, 22, 48, 48, 48, 23, 48, 48, 45, 50, + 48, 7, 48, 9, 18, 50, 19, 8, 25, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 6, 7, 8, 1, 1, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 25, 25, 25, 26, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 27, 28, 29, 1, 30, 1, 31, 32, 33, 34, + 1, 2, 5, 6, 7, 8, 9, 1, 1, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 26, 26, 26, 27, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 28, 29, 30, 1, 31, 1, 32, 33, 34, 35, - 35, 36, 25, 37, 38, 25, 39, 40, 41, 42, - 43, 44, 25, 45, 46, 47, 48, 25, 25, 25, - 49, 25, 50, 51, 52, 1, 1, 1, 1, 1, + 36, 37, 26, 38, 39, 26, 40, 41, 42, 43, + 44, 45, 26, 46, 47, 48, 49, 26, 26, 26, + 50, 26, 51, 52, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -636,154 +636,158 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[53] = +static const YY_CHAR yy_meta[54] = { 0, - 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 4, 5, 1, 1, - 1, 1, 1, 1, 6, 6, 1, 7, 1, 8, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 1, 4, 5, 1, + 1, 1, 1, 1, 1, 6, 6, 1, 7, 1, + 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, - 1, 1 + 1, 1, 1 } ; -static const flex_int16_t yy_base[183] = +static const flex_int16_t yy_base[186] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 51, 54, 55, 331, 332, 57, 59, 309, 332, - 332, 299, 307, 332, 332, 306, 305, 332, 304, 48, - 48, 51, 303, 302, 301, 305, 0, 302, 49, 52, - 53, 54, 56, 57, 63, 62, 58, 67, 55, 69, - 298, 0, 0, 332, 79, 332, 332, 89, 100, 332, - 300, 89, 332, 332, 332, 332, 332, 94, 0, 296, - 332, 96, 106, 116, 332, 332, 332, 300, 0, 297, - 296, 76, 295, 90, 91, 98, 97, 106, 100, 294, - 108, 118, 121, 124, 293, 126, 119, 128, 332, 0, + 51, 52, 56, 58, 340, 341, 61, 64, 317, 341, + 341, 307, 315, 341, 341, 314, 313, 341, 312, 53, + 53, 56, 311, 310, 309, 313, 0, 310, 54, 57, + 58, 59, 63, 65, 70, 67, 72, 69, 60, 79, + 306, 0, 0, 341, 83, 341, 341, 324, 107, 116, + 341, 307, 83, 341, 341, 341, 341, 341, 103, 0, + 303, 341, 104, 108, 128, 341, 341, 341, 307, 0, + 304, 301, 110, 297, 114, 75, 115, 108, 118, 119, + 293, 109, 123, 129, 132, 290, 137, 130, 139, 341, - 282, 332, 281, 332, 288, 284, 129, 0, 332, 131, - 281, 278, 332, 0, 273, 131, 132, 270, 137, 141, - 268, 143, 138, 145, 149, 146, 150, 153, 265, 161, - 242, 0, 154, 247, 157, 156, 244, 239, 161, 162, - 164, 165, 168, 169, 237, 224, 170, 232, 228, 171, - 172, 181, 209, 182, 183, 196, 192, 188, 205, 193, - 203, 202, 196, 198, 195, 173, 332, 228, 236, 239, - 245, 250, 255, 263, 271, 276, 281, 286, 288, 293, - 297, 301 + 0, 276, 341, 273, 341, 341, 297, 278, 265, 140, + 0, 341, 142, 261, 258, 341, 0, 252, 142, 145, + 250, 149, 144, 247, 151, 152, 154, 156, 157, 158, + 165, 245, 172, 231, 0, 166, 222, 164, 171, 221, + 220, 169, 172, 174, 175, 178, 179, 218, 206, 180, + 215, 214, 181, 183, 192, 213, 184, 186, 201, 193, + 198, 210, 206, 209, 89, 207, 86, 81, 37, 341, + 242, 250, 253, 259, 264, 269, 277, 285, 290, 295, + 300, 302, 307, 311, 315 } ; -static const flex_int16_t yy_def[183] = +static const flex_int16_t yy_def[186] = { 0, - 167, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 168, 168, 169, 169, 167, 167, 167, 167, 167, 167, - 167, 170, 167, 167, 167, 167, 167, 167, 167, 171, - 167, 167, 167, 167, 167, 167, 172, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 167, 174, 174, 167, 175, 167, 167, 167, 167, 167, - 176, 176, 167, 167, 167, 167, 167, 167, 177, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 172, 173, - 167, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 167, 174, + 170, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 171, 171, 172, 172, 170, 170, 170, 170, 170, 170, + 170, 173, 170, 170, 170, 170, 170, 170, 170, 174, + 170, 170, 170, 170, 170, 170, 175, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 170, 177, 177, 170, 178, 170, 170, 170, 170, 170, + 170, 179, 179, 170, 170, 170, 170, 170, 170, 180, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 175, + 176, 170, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 170, - 167, 167, 178, 167, 176, 167, 176, 177, 167, 167, - 167, 167, 167, 179, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 175, - 180, 170, 176, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 181, 176, 173, 173, 173, - 173, 173, 173, 173, 173, 182, 176, 173, 173, 173, - 173, 173, 176, 173, 173, 176, 0, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167 + 177, 170, 170, 181, 170, 170, 170, 179, 170, 179, + 180, 170, 170, 170, 170, 170, 182, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 178, 183, 173, 179, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 184, 179, + 176, 176, 176, 176, 176, 176, 176, 176, 185, 179, + 176, 176, 176, 176, 176, 179, 176, 176, 179, 0, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170 } ; -static const flex_int16_t yy_nxt[385] = +static const flex_int16_t yy_nxt[395] = { 0, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 28, 28, 33, - 34, 35, 36, 37, 38, 38, 24, 16, 25, 38, - 39, 40, 41, 42, 43, 44, 38, 45, 38, 46, - 47, 38, 48, 38, 49, 38, 50, 38, 38, 24, - 51, 25, 53, 53, 54, 54, 57, 57, 59, 59, - 59, 59, 67, 70, 68, 72, 81, 73, 71, 81, - 81, 81, 81, 81, 81, 81, 74, 55, 55, 81, - 81, 58, 58, 85, 81, 74, 81, 102, 86, 96, - 82, 104, 93, 81, 83, 87, 84, 88, 90, 89, + 16, 17, 18, 17, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 28, 28, + 33, 34, 35, 36, 37, 38, 38, 24, 16, 25, + 38, 39, 40, 41, 42, 43, 44, 38, 45, 38, + 46, 47, 38, 48, 38, 49, 38, 50, 38, 38, + 24, 51, 25, 53, 53, 109, 54, 54, 57, 58, + 57, 58, 60, 60, 60, 60, 60, 60, 68, 71, + 69, 73, 82, 74, 72, 82, 82, 82, 82, 55, + 55, 82, 75, 82, 59, 82, 59, 82, 82, 86, + 82, 75, 103, 82, 87, 97, 83, 82, 94, 82, - 94, 59, 59, 91, 92, 97, 106, 81, 81, 115, - 68, 95, 110, 98, 81, 81, 104, 81, 107, 74, - 72, 74, 73, 81, 116, 81, 103, 111, 74, 111, - 74, 74, 112, 118, 119, 81, 81, 117, 81, 121, - 74, 81, 120, 81, 122, 81, 106, 110, 81, 81, - 124, 123, 125, 128, 81, 81, 74, 126, 81, 127, - 81, 135, 81, 81, 136, 74, 81, 81, 133, 167, - 81, 106, 137, 81, 81, 138, 129, 139, 81, 81, - 140, 81, 81, 142, 141, 81, 81, 106, 81, 81, - 106, 150, 149, 143, 145, 148, 147, 144, 81, 81, + 84, 109, 85, 88, 82, 89, 91, 82, 90, 106, + 107, 92, 93, 110, 96, 95, 98, 60, 60, 60, + 69, 113, 120, 73, 99, 74, 82, 82, 82, 75, + 75, 104, 82, 82, 75, 106, 82, 82, 75, 75, + 114, 82, 114, 75, 118, 115, 122, 82, 82, 119, + 82, 121, 124, 126, 123, 82, 127, 82, 109, 113, + 82, 128, 82, 82, 125, 131, 129, 82, 75, 82, + 82, 130, 82, 138, 82, 82, 82, 75, 139, 141, + 136, 170, 82, 82, 109, 140, 142, 82, 132, 82, + 82, 145, 82, 82, 144, 143, 82, 82, 109, 82, - 81, 155, 157, 158, 153, 81, 151, 154, 103, 106, - 81, 152, 81, 106, 160, 81, 161, 162, 159, 81, - 81, 163, 81, 130, 164, 166, 81, 165, 52, 52, - 52, 52, 52, 52, 52, 52, 56, 56, 56, 56, - 56, 56, 56, 56, 61, 81, 61, 69, 69, 81, - 69, 130, 69, 79, 81, 79, 81, 79, 80, 80, - 80, 81, 80, 100, 81, 100, 100, 100, 100, 130, - 100, 101, 101, 101, 101, 101, 101, 101, 101, 105, - 105, 105, 81, 105, 108, 81, 108, 81, 108, 131, - 81, 131, 131, 134, 112, 134, 146, 112, 146, 146, + 153, 82, 82, 151, 82, 146, 147, 148, 152, 150, + 82, 109, 158, 160, 161, 156, 82, 154, 157, 164, + 104, 165, 155, 166, 82, 109, 163, 82, 82, 133, + 162, 82, 82, 82, 133, 167, 82, 169, 82, 82, + 82, 168, 52, 52, 52, 52, 52, 52, 52, 52, + 56, 56, 56, 56, 56, 56, 56, 56, 62, 133, + 62, 70, 70, 82, 70, 82, 70, 80, 82, 80, + 82, 80, 81, 81, 81, 115, 81, 101, 115, 101, + 101, 101, 101, 135, 101, 102, 102, 102, 102, 102, + 102, 102, 102, 108, 108, 108, 109, 108, 111, 106, + + 111, 133, 111, 134, 133, 134, 134, 137, 82, 137, + 149, 82, 149, 149, 159, 82, 159, 159, 102, 117, + 102, 102, 82, 116, 112, 109, 105, 100, 82, 79, + 78, 77, 76, 67, 66, 65, 64, 63, 61, 170, + 15, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170 - 156, 132, 156, 156, 101, 106, 101, 101, 130, 130, - 81, 81, 81, 114, 81, 113, 109, 106, 99, 81, - 78, 77, 76, 75, 66, 65, 64, 63, 62, 60, - 167, 15, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167 } ; -static const flex_int16_t yy_chk[385] = +static const flex_int16_t yy_chk[395] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 11, 12, 11, 12, 13, 14, 17, 17, - 18, 18, 30, 31, 30, 32, 39, 32, 31, 40, - 41, 42, 49, 43, 44, 47, 32, 11, 12, 46, - 45, 13, 14, 41, 48, 32, 50, 55, 42, 49, - 39, 58, 46, 82, 39, 43, 40, 43, 45, 44, + 1, 1, 1, 11, 12, 169, 11, 12, 13, 13, + 14, 14, 17, 17, 17, 18, 18, 18, 30, 31, + 30, 32, 39, 32, 31, 40, 41, 42, 49, 11, + 12, 43, 32, 44, 13, 46, 14, 48, 45, 41, + 47, 32, 55, 86, 42, 49, 39, 50, 46, 168, - 47, 59, 59, 45, 45, 50, 62, 84, 85, 82, - 68, 48, 72, 50, 87, 86, 58, 89, 62, 68, - 73, 72, 73, 88, 84, 91, 55, 74, 68, 74, - 72, 73, 74, 86, 87, 92, 97, 85, 93, 88, - 73, 94, 87, 96, 89, 98, 107, 110, 116, 117, - 92, 91, 93, 97, 119, 123, 110, 94, 120, 96, - 122, 116, 124, 126, 117, 110, 125, 127, 107, 130, - 128, 133, 119, 136, 135, 120, 98, 122, 139, 140, - 123, 141, 142, 125, 124, 143, 144, 147, 150, 151, - 166, 139, 136, 126, 128, 135, 133, 127, 152, 154, + 39, 63, 40, 43, 167, 43, 45, 165, 44, 59, + 59, 45, 45, 63, 48, 47, 50, 60, 60, 60, + 69, 73, 86, 74, 50, 74, 88, 92, 83, 69, + 73, 55, 85, 87, 74, 59, 89, 90, 69, 73, + 75, 93, 75, 74, 83, 75, 88, 94, 98, 85, + 95, 87, 89, 92, 88, 97, 93, 99, 110, 113, + 119, 94, 123, 120, 90, 98, 95, 122, 113, 125, + 126, 97, 127, 119, 128, 129, 130, 113, 120, 123, + 110, 133, 138, 131, 136, 122, 125, 142, 99, 139, + 143, 128, 144, 145, 127, 126, 146, 147, 150, 153, - 155, 144, 147, 150, 142, 158, 140, 143, 130, 157, - 160, 141, 165, 163, 152, 164, 154, 155, 151, 162, - 161, 157, 159, 156, 158, 163, 153, 160, 168, 168, - 168, 168, 168, 168, 168, 168, 169, 169, 169, 169, - 169, 169, 169, 169, 170, 149, 170, 171, 171, 148, - 171, 146, 171, 172, 145, 172, 138, 172, 173, 173, - 173, 137, 173, 174, 134, 174, 174, 174, 174, 131, - 174, 175, 175, 175, 175, 175, 175, 175, 175, 176, - 176, 176, 129, 176, 177, 121, 177, 118, 177, 178, - 115, 178, 178, 179, 112, 179, 180, 111, 180, 180, + 142, 154, 157, 138, 158, 129, 130, 131, 139, 136, + 155, 160, 147, 150, 153, 145, 161, 143, 146, 157, + 133, 158, 144, 160, 163, 166, 155, 164, 162, 159, + 154, 156, 152, 151, 149, 161, 148, 166, 141, 140, + 137, 163, 171, 171, 171, 171, 171, 171, 171, 171, + 172, 172, 172, 172, 172, 172, 172, 172, 173, 134, + 173, 174, 174, 132, 174, 124, 174, 175, 121, 175, + 118, 175, 176, 176, 176, 115, 176, 177, 114, 177, + 177, 177, 177, 109, 177, 178, 178, 178, 178, 178, + 178, 178, 178, 179, 179, 179, 108, 179, 180, 107, + + 180, 104, 180, 181, 102, 181, 181, 182, 96, 182, + 183, 91, 183, 183, 184, 84, 184, 184, 185, 82, + 185, 185, 81, 79, 71, 62, 58, 51, 38, 36, + 35, 34, 33, 29, 27, 26, 23, 22, 19, 15, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170 - 181, 106, 181, 181, 182, 105, 182, 182, 103, 101, - 95, 90, 83, 81, 80, 78, 70, 61, 51, 38, - 36, 35, 34, 33, 29, 27, 26, 23, 22, 19, - 15, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167 } ; /* The intent behind this definition is that it'll catch @@ -810,14 +814,14 @@ struct lexer_param; yyset_extra(yylloc->end, yyscanner); \ } while (0); -#line 813 "src/lexer.c" +#line 818 "src/lexer.c" #line 26 "src/lexer.l" static int enter(int opening, int state, yyscan_t yyscanner); static int try_exit(int closing, int state, yyscan_t yyscanner); -#line 818 "src/lexer.c" +#line 823 "src/lexer.c" #define YY_NO_INPUT 1 -#line 820 "src/lexer.c" +#line 825 "src/lexer.c" #define INITIAL 0 #define IN_PAREN 1 @@ -1112,7 +1116,7 @@ YY_DECL #line 39 "src/lexer.l" -#line 1115 "src/lexer.c" +#line 1120 "src/lexer.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1139,13 +1143,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 >= 168 ) + if ( yy_current_state >= 171 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 332 ); + while ( yy_base[yy_current_state] != 341 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1474,7 +1478,7 @@ YY_RULE_SETUP #line 137 "src/lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1477 "src/lexer.c" +#line 1482 "src/lexer.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(IN_PAREN): case YY_STATE_EOF(IN_BRACKET): @@ -1778,7 +1782,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 >= 168 ) + if ( yy_current_state >= 171 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1807,11 +1811,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 >= 168 ) + if ( yy_current_state >= 171 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 167); + yy_is_jam = (yy_current_state == 170); (void)yyg; return yy_is_jam ? 0 : yy_current_state; diff --git a/src/lexer.h b/src/lexer.h index d204f4f9..3792a310 100644 --- a/src/lexer.h +++ b/src/lexer.h @@ -2,9 +2,9 @@ #define jq_yyHEADER_H 1 #define jq_yyIN_HEADER 1 -#line 5 "src/lexer.h" +#line 6 "src/lexer.h" -#line 7 "src/lexer.h" +#line 8 "src/lexer.h" #define YY_INT_ALIGNED short int @@ -735,6 +735,6 @@ extern int yylex \ #line 137 "src/lexer.l" -#line 738 "src/lexer.h" +#line 739 "src/lexer.h" #undef jq_yyIN_HEADER #endif /* jq_yyHEADER_H */ diff --git a/src/lexer.l b/src/lexer.l index 70e015dd..5ac46619 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -40,8 +40,8 @@ struct lexer_param; "#" { yy_push_state(IN_COMMENT, yyscanner); } { - \\[\\\n]|. { } - \n { yy_pop_state(yyscanner); } + \\(\\|\r?\n)|. { } + \r?\n { yy_pop_state(yyscanner); } } <> { yy_pop_state(yyscanner); } @@ -130,7 +130,7 @@ struct lexer_param; \.[a-zA-Z_][a-zA-Z_0-9]* { yylval->literal = jv_string(yytext+1); return FIELD;} \$([a-zA-Z_][a-zA-Z_0-9]*::)*[a-zA-Z_][a-zA-Z_0-9]* { yylval->literal = jv_string(yytext+1); return BINDING;} -[ \n\t]+ {} +[ \r\n\t]+ {} . { return INVALID_CHARACTER; } diff --git a/tests/shtest b/tests/shtest index e8c1580f..86e759ba 100755 --- a/tests/shtest +++ b/tests/shtest @@ -189,6 +189,12 @@ cmp $d/out $d/expected $JQ -V -h > $d/out 2>&1 cmp $d/out $d/expected +# CRLF line break support #1219 +if ! x=$($JQ -n "$(printf '1\r\n+\r\n2')") || [ "$x" != '3' ]; then + echo 'CRLF line break support failed?' 1>&2 + exit 1 +fi + ## Test streaming parser ## If we add an option to stream to the `import ... as $symbol;` directive @@ -657,6 +663,12 @@ if ! x=$($JQ -cn '[ exit 1 fi +if ! x=$($JQ -cn "$(printf '[\r\n1,# comment\r\n2,# comment\\\r\ncomment\r\n3\r\n]')") \ + || [ "$x" != '[1,2,3]' ]; then + echo 'multiline comment with CRLF line breaks was not handled correctly' + exit 1 +fi + # CVE-2023-50268: No stack overflow comparing a nan with a large payload if $JQ -ne 'have_decnum'; then $VALGRIND $Q $JQ '1 != .' <<\EOF >/dev/null @@ -715,20 +727,20 @@ if ! $msys && ! $mingw; then echo "Incorrectly formatted local time" exit 1 fi - + if ! r=$(TZ=Europe/Paris $JQ -rn '1731627341 | strflocaltime("%F %T %z %Z")') \ || [ "$r" != "2024-11-15 00:35:41 +0100 CET" ]; then echo "Incorrectly formatted local time" exit 1 fi - + if ! r=$(TZ=Europe/Paris $JQ -rn '1731627341 | strftime("%F %T %z %Z")') \ || ( [ "$r" != "2024-11-14 23:35:41 +0000 UTC" ] \ && [ "$r" != "2024-11-14 23:35:41 +0000 GMT" ] ); then echo "Incorrectly formatted universal time" exit 1 fi - + if ! r=$(TZ=Etc/GMT+7 $JQ -nc '1731627341 | .,. | [strftime("%FT%T"),strflocaltime("%FT%T%z")]' ) \ || [ "$r" != '["2024-11-14T23:35:41","2024-11-14T16:35:41-0700"]