From: Francis Dupont Date: Thu, 28 Sep 2017 12:15:04 +0000 (+0000) Subject: [trac5363] regen flex/bison X-Git-Tag: trac5381_base~3^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0d1ab76a92aff9e0fdf6a2a8e193a8a8bd27ea9;p=thirdparty%2Fkea.git [trac5363] regen flex/bison --- diff --git a/src/lib/eval/lexer.cc b/src/lib/eval/lexer.cc index a04aed10dc..470ef7bffa 100644 --- a/src/lib/eval/lexer.cc +++ b/src/lib/eval/lexer.cc @@ -710,8 +710,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 51 -#define YY_END_OF_BUFFER 52 +#define YY_NUM_RULES 52 +#define YY_END_OF_BUFFER 53 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -719,41 +719,42 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_acclist[280] = +static const flex_int16_t yy_acclist[285] = { 0, - 52, 50, 51, 1, 50, 51, 2, 51, 50, 51, - 44, 50, 51, 45, 50, 51, 49, 50, 51, 48, - 50, 51, 50, 51, 43, 50, 51, 5, 50, 51, - 5, 50, 51, 50, 51, 50, 51, 50, 51,16390, - 50, 51,16390, 46, 50, 51, 47, 50, 51, 50, - 51,16390, 50, 51,16390, 50, 51,16390, 50, 51, - 16390, 50, 51,16390, 50, 51,16390, 50, 51,16390, - 50, 51,16390, 50, 51,16390, 50, 51,16390, 50, - 51,16390, 50, 51,16390, 50, 51,16390, 50, 51, - 16390, 50, 51,16390, 50, 51,16390, 50, 51,16390, + 53, 51, 52, 1, 51, 52, 2, 52, 51, 52, + 45, 51, 52, 46, 51, 52, 50, 51, 52, 49, + 51, 52, 51, 52, 44, 51, 52, 5, 51, 52, + 5, 51, 52, 51, 52, 51, 52, 51, 52,16390, + 51, 52,16390, 47, 51, 52, 48, 51, 52, 51, + 52,16390, 51, 52,16390, 51, 52,16390, 51, 52, + 16390, 51, 52,16390, 51, 52,16390, 51, 52,16390, + 51, 52,16390, 51, 52,16390, 51, 52,16390, 51, + 52,16390, 51, 52,16390, 51, 52,16390, 51, 52, + 16390, 51, 52,16390, 51, 52,16390, 51, 52,16390, 1, 2, 3, 5, 5, 7, 8,16390,16390, 8198, 16390,16390,16390,16390,16390,16390,16390,16390,16390,16390, - 16390,16390,16390,16390,16390,16390,16390,16390,16390, 42, + 16390,16390,16390,16390,16390,16390,16390,16390,16390, 43, 16390,16390,16390,16390,16390,16390,16390,16390,16390,16390, - 16390, 4, 7, 38,16390, 41,16390,16390,16390,16390, + 16390, 4, 7, 38,16390, 42,16390,16390,16390,16390, 20,16390,16390,16390,16390, 15,16390,16390,16390,16390, - 21,16390,16390, 23,16390,16390, 40,16390,16390,16390, - 17,16390,16390,16390, 19,16390,16390,16390,16390,16390, - 16390,16390,16390, 35,16390,16390,16390,16390, 24,16390, - 16390,16390,16390,16390,16390,16390, 22,16390, 30,16390, - - 16390,16390,16390, 14,16390,16390,16390,16390,16390,16390, - 16390,16390,16390, 25,16390, 18,16390,16390,16390,16390, - 16390,16390,16390,16390,16390,16390,16390, 26,16390, 39, - 16390,16390, 16,16390, 27,16390,16390,16390, 9,16390, - 16390, 10,16390, 11,16390, 29,16390,16390,16390, 33, - 16390, 28,16390, 7,16390,16390, 31,16390,16390,16390, - 32,16390,16390, 13,16390, 12,16390,16390,16390,16390, - 37,16390,16390, 36,16390,16390,16390, 34,16390 + 16390, 21,16390,16390, 23,16390,16390, 41,16390,16390, + 16390, 17,16390,16390,16390, 19,16390,16390,16390,16390, + 16390,16390,16390,16390, 35,16390,16390,16390,16390, 24, + 16390,16390,16390,16390,16390,16390,16390,16390, 22,16390, + + 30,16390,16390,16390,16390, 14,16390,16390,16390,16390, + 16390,16390,16390,16390,16390, 25,16390, 18,16390,16390, + 16390,16390,16390,16390,16390,16390,16390,16390,16390,16390, + 26,16390, 39,16390,16390, 16,16390, 27,16390, 40, + 16390,16390,16390, 9,16390,16390, 10,16390, 11,16390, + 29,16390,16390,16390, 33,16390, 28,16390, 7,16390, + 16390, 31,16390,16390,16390, 32,16390,16390, 13,16390, + 12,16390,16390,16390,16390, 37,16390,16390, 36,16390, + 16390,16390, 34,16390 } ; -static const flex_int16_t yy_accept[199] = +static const flex_int16_t yy_accept[203] = { 0, 1, 1, 1, 2, 4, 7, 9, 11, 14, 17, 20, 23, 25, 28, 31, 34, 36, 38, 41, 44, @@ -766,17 +767,18 @@ static const flex_int16_t yy_accept[199] = 136, 137, 138, 139, 140, 141, 142, 142, 143, 144, 146, 148, 149, 150, 151, 153, 154, 155, 156, 158, - 159, 160, 161, 163, 164, 166, 167, 169, 170, 171, - 173, 174, 175, 177, 178, 179, 180, 181, 182, 182, - 183, 184, 186, 187, 188, 189, 191, 192, 193, 194, - 195, 196, 197, 199, 201, 202, 203, 204, 206, 207, - 208, 209, 209, 210, 211, 212, 213, 214, 216, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 228, 230, 232, 233, 235, 237, 238, 239, 241, 242, - 244, 246, 248, 249, 250, 252, 254, 255, 256, 257, - 259, 260, 261, 263, 263, 264, 266, 268, 269, 270, - 271, 273, 274, 276, 277, 278, 280, 280 - + 159, 160, 161, 162, 164, 165, 167, 168, 170, 171, + 172, 174, 175, 176, 178, 179, 180, 181, 182, 183, + 183, 184, 185, 187, 188, 189, 190, 192, 193, 194, + 195, 196, 197, 198, 199, 201, 203, 204, 205, 206, + 208, 209, 210, 211, 211, 212, 213, 214, 215, 216, + 218, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 231, 233, 235, 236, 238, 240, 242, + 243, 244, 246, 247, 249, 251, 253, 254, 255, 257, + 259, 260, 261, 262, 264, 265, 266, 268, 268, 269, + 271, 273, 274, 275, 276, 278, 279, 281, 282, 283, + + 285, 285 } ; static const YY_CHAR yy_ec[256] = @@ -820,104 +822,104 @@ static const YY_CHAR yy_meta[45] = 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[203] = +static const flex_int16_t yy_base[207] = { 0, - 0, 0, 310, 311, 307, 305, 303, 311, 311, 311, - 311, 34, 311, 39, 36, 291, 289, 81, 115, 311, - 311, 24, 37, 37, 26, 273, 45, 275, 43, 48, - 266, 43, 59, 274, 106, 50, 273, 268, 296, 294, - 292, 311, 122, 137, 112, 280, 279, 0, 278, 0, - 311, 143, 150, 0, 0, 311, 259, 265, 267, 254, - 248, 247, 246, 254, 261, 240, 255, 237, 257, 244, - 243, 252, 247, 235, 234, 0, 246, 232, 238, 247, - 244, 244, 224, 243, 230, 241, 146, 0, 0, 0, - 0, 237, 237, 238, 0, 233, 220, 232, 0, 222, - - 219, 230, 0, 222, 0, 213, 0, 221, 213, 148, - 227, 223, 0, 209, 207, 211, 219, 218, 154, 217, - 219, 0, 203, 200, 213, 0, 211, 210, 213, 191, - 198, 210, 0, 0, 188, 205, 190, 0, 190, 192, - 201, 162, 188, 185, 187, 184, 184, 0, 0, 195, - 173, 172, 180, 156, 167, 165, 171, 163, 162, 166, - 0, 0, 161, 0, 0, 172, 170, 0, 170, 0, - 0, 0, 164, 168, 184, 0, 170, 161, 153, 0, - 152, 154, 0, 183, 149, 0, 0, 158, 130, 127, - 0, 78, 0, 58, 50, 0, 311, 208, 210, 212, - - 71, 215 + 0, 0, 314, 315, 311, 309, 307, 315, 315, 315, + 315, 34, 315, 39, 36, 295, 293, 81, 115, 315, + 315, 24, 37, 37, 26, 277, 45, 279, 43, 48, + 270, 43, 59, 278, 106, 50, 277, 272, 300, 298, + 296, 315, 122, 137, 112, 284, 283, 0, 282, 0, + 315, 143, 150, 0, 0, 315, 263, 269, 271, 258, + 252, 251, 250, 258, 265, 244, 259, 241, 74, 249, + 248, 257, 252, 240, 239, 0, 251, 237, 243, 252, + 249, 249, 229, 248, 235, 246, 146, 0, 0, 0, + 0, 242, 242, 243, 0, 238, 225, 237, 0, 227, + + 224, 235, 226, 0, 226, 0, 217, 0, 225, 217, + 148, 231, 227, 0, 213, 211, 215, 223, 222, 154, + 221, 223, 0, 207, 204, 217, 0, 215, 214, 201, + 216, 194, 201, 213, 0, 0, 191, 208, 193, 0, + 193, 195, 204, 162, 191, 188, 190, 187, 187, 0, + 0, 197, 197, 185, 186, 184, 156, 169, 168, 174, + 165, 164, 166, 0, 0, 163, 0, 0, 0, 174, + 172, 0, 172, 0, 0, 0, 166, 170, 186, 0, + 170, 163, 155, 0, 154, 156, 0, 183, 151, 0, + 0, 160, 155, 160, 0, 140, 0, 115, 50, 0, + + 315, 208, 210, 212, 71, 215 } ; -static const flex_int16_t yy_def[203] = +static const flex_int16_t yy_def[207] = { 0, - 197, 1, 197, 197, 197, 197, 198, 197, 197, 197, - 197, 197, 197, 197, 14, 199, 197, 197, 18, 197, - 197, 18, 18, 18, 18, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 197, 197, - 198, 197, 197, 197, 14, 199, 200, 201, 199, 202, - 197, 197, 19, 18, 19, 197, 19, 19, 19, 19, + 201, 1, 201, 201, 201, 201, 202, 201, 201, 201, + 201, 201, 201, 201, 14, 203, 201, 201, 18, 201, + 201, 18, 18, 18, 18, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 201, 201, + 202, 201, 201, 201, 14, 203, 204, 205, 203, 206, + 201, 201, 19, 18, 19, 201, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 197, 201, 202, 19, + 19, 19, 19, 19, 19, 19, 201, 205, 206, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 197, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 201, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 197, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 197, + 19, 19, 19, 201, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 197, 19, 19, 19, + 19, 19, 201, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 201, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 0, 197, 197, 197, - 197, 197 + 0, 201, 201, 201, 201, 201 } ; -static const flex_int16_t yy_nxt[356] = +static const flex_int16_t yy_nxt[360] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 16, 17, 18, 19, 19, 20, 21, 4, 22, 18, 23, 24, 25, 18, 26, 27, 28, 19, 29, 30, 31, 32, 33, 34, 35, 36, 19, 37, 19, 38, 43, 43, 43, 43, 44, 45, - 45, 45, 45, 46, 197, 47, 57, 48, 58, 61, + 45, 45, 45, 46, 201, 47, 57, 48, 58, 61, 63, 47, 47, 47, 47, 47, 47, 59, 64, 70, - 72, 66, 60, 71, 88, 62, 83, 67, 197, 75, - 76, 48, 52, 52, 68, 77, 73, 84, 196, 53, - 78, 54, 54, 54, 54, 46, 195, 54, 55, 55, + 72, 66, 60, 71, 88, 62, 83, 67, 201, 75, + 76, 48, 52, 52, 68, 77, 73, 84, 200, 53, + 78, 54, 54, 54, 54, 46, 102, 54, 55, 55, - 194, 56, 53, 54, 54, 54, 54, 54, 54, 55, + 103, 56, 53, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, 55, 197, - 197, 55, 43, 43, 43, 43, 80, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 201, + 201, 55, 43, 43, 43, 43, 80, 55, 55, 55, 55, 55, 55, 81, 52, 52, 82, 87, 87, 87, - 87, 197, 197, 193, 197, 119, 87, 87, 87, 87, - 133, 134, 192, 56, 142, 142, 142, 142, 170, 171, - 197, 160, 142, 142, 142, 142, 177, 177, 177, 177, - 177, 177, 177, 177, 197, 197, 191, 190, 188, 187, - 186, 185, 184, 183, 182, 181, 180, 179, 178, 176, + 87, 201, 201, 199, 201, 120, 87, 87, 87, 87, + 135, 136, 198, 56, 144, 144, 144, 144, 174, 175, + 201, 163, 144, 144, 144, 144, 181, 181, 181, 181, + 181, 181, 181, 181, 201, 201, 197, 196, 195, 194, + 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, - 175, 174, 173, 197, 172, 169, 168, 189, 41, 167, + 182, 180, 179, 201, 178, 177, 176, 193, 41, 173, 41, 41, 41, 49, 49, 47, 47, 89, 89, 89, - 166, 165, 164, 163, 162, 161, 159, 158, 157, 156, - 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, - 145, 144, 143, 141, 140, 139, 138, 137, 136, 135, - 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, - 122, 121, 120, 118, 117, 116, 115, 114, 113, 112, - 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, - 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, - 91, 90, 50, 46, 50, 42, 40, 39, 86, 85, - - 79, 74, 69, 65, 51, 50, 42, 40, 39, 197, - 3, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197 + 172, 171, 170, 169, 168, 167, 166, 165, 164, 162, + 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, + 151, 150, 149, 148, 147, 146, 145, 143, 142, 141, + 140, 139, 138, 137, 134, 133, 132, 131, 130, 129, + 128, 127, 126, 125, 124, 123, 122, 121, 119, 118, + 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, + 107, 106, 105, 104, 101, 100, 99, 98, 97, 96, + 95, 94, 93, 92, 91, 90, 50, 46, 50, 42, + + 40, 39, 86, 85, 79, 74, 69, 65, 51, 50, + 42, 40, 39, 201, 3, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201 } ; -static const flex_int16_t yy_chk[356] = +static const flex_int16_t yy_chk[360] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -926,57 +928,58 @@ static const flex_int16_t yy_chk[356] = 1, 1, 1, 1, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 15, 14, 22, 14, 22, 24, 25, 14, 14, 14, 14, 14, 14, 23, 25, 29, - 30, 27, 23, 29, 201, 24, 36, 27, 15, 32, - 32, 14, 18, 18, 27, 33, 30, 36, 195, 18, - 33, 18, 18, 18, 18, 18, 194, 18, 18, 18, + 30, 27, 23, 29, 205, 24, 36, 27, 15, 32, + 32, 14, 18, 18, 27, 33, 30, 36, 199, 18, + 33, 18, 18, 18, 18, 18, 69, 18, 18, 18, - 192, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 69, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 45, 19, 43, 43, 43, 43, 35, 19, 19, 19, 19, 19, 19, 35, 52, 52, 35, 44, 44, 44, - 44, 53, 53, 190, 45, 87, 87, 87, 87, 87, - 110, 110, 189, 52, 119, 119, 119, 119, 154, 154, - 53, 142, 142, 142, 142, 142, 160, 160, 160, 160, - 177, 177, 177, 177, 184, 184, 188, 185, 182, 181, - 179, 178, 175, 174, 173, 169, 167, 166, 163, 159, - - 158, 157, 156, 184, 155, 153, 152, 184, 198, 151, - 198, 198, 198, 199, 199, 200, 200, 202, 202, 202, - 150, 147, 146, 145, 144, 143, 141, 140, 139, 137, - 136, 135, 132, 131, 130, 129, 128, 127, 125, 124, - 123, 121, 120, 118, 117, 116, 115, 114, 112, 111, - 109, 108, 106, 104, 102, 101, 100, 98, 97, 96, - 94, 93, 92, 86, 85, 84, 83, 82, 81, 80, - 79, 78, 77, 75, 74, 73, 72, 71, 70, 69, - 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, - 58, 57, 49, 47, 46, 41, 40, 39, 38, 37, - - 34, 31, 28, 26, 17, 16, 7, 6, 5, 3, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197 + 44, 53, 53, 198, 45, 87, 87, 87, 87, 87, + 111, 111, 196, 52, 120, 120, 120, 120, 157, 157, + 53, 144, 144, 144, 144, 144, 163, 163, 163, 163, + 181, 181, 181, 181, 188, 188, 194, 193, 192, 189, + 186, 185, 183, 182, 179, 178, 177, 173, 171, 170, + + 166, 162, 161, 188, 160, 159, 158, 188, 202, 156, + 202, 202, 202, 203, 203, 204, 204, 206, 206, 206, + 155, 154, 153, 152, 149, 148, 147, 146, 145, 143, + 142, 141, 139, 138, 137, 134, 133, 132, 131, 130, + 129, 128, 126, 125, 124, 122, 121, 119, 118, 117, + 116, 115, 113, 112, 110, 109, 107, 105, 103, 102, + 101, 100, 98, 97, 96, 94, 93, 92, 86, 85, + 84, 83, 82, 81, 80, 79, 78, 77, 75, 74, + 73, 72, 71, 70, 68, 67, 66, 65, 64, 63, + 62, 61, 60, 59, 58, 57, 49, 47, 46, 41, + + 40, 39, 38, 37, 34, 31, 28, 26, 17, 16, + 7, 6, 5, 3, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201 } ; /* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[52] = +static const flex_int32_t yy_rule_can_match_eol[53] = { 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[51] = +static const flex_int16_t yy_rule_linenum[52] = { 0, 102, 107, 113, 123, 129, 147, 154, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210 + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211 } ; static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; @@ -1038,7 +1041,7 @@ namespace { /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::eval::EvalContext::fatal(msg) -#line 1041 "lexer.cc" +#line 1044 "lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And using yywrap requires linking with -lfl, which provides the default yywrap @@ -1063,8 +1066,8 @@ namespace { by moving it ahead by yyleng bytes. yyleng specifies the length of the currently matched token. */ #define YY_USER_ACTION loc.columns(evalleng); -#line 1066 "lexer.cc" -#line 1067 "lexer.cc" +#line 1069 "lexer.cc" +#line 1070 "lexer.cc" #define INITIAL 0 @@ -1369,7 +1372,7 @@ YY_DECL -#line 1372 "lexer.cc" +#line 1375 "lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1397,14 +1400,14 @@ 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 >= 198 ) + if ( yy_current_state >= 202 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; *(yy_state_ptr)++ = yy_current_state; ++yy_cp; } - while ( yy_current_state != 197 ); + while ( yy_current_state != 201 ); yy_find_action: /* %% [10.0] code to find the action number goes here */ @@ -1467,13 +1470,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 51 ) + else if ( yy_act < 52 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 51 ) + else if ( yy_act == 52 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 52 ) + else if ( yy_act == 53 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -1734,68 +1737,73 @@ return isc::eval::EvalParser::make_CONCAT(loc); case 40: YY_RULE_SETUP #line 200 "lexer.ll" -return isc::eval::EvalParser::make_NOT(loc); +return isc::eval::EvalParser::make_IFELSE(loc); YY_BREAK case 41: YY_RULE_SETUP #line 201 "lexer.ll" -return isc::eval::EvalParser::make_AND(loc); +return isc::eval::EvalParser::make_NOT(loc); YY_BREAK case 42: YY_RULE_SETUP #line 202 "lexer.ll" -return isc::eval::EvalParser::make_OR(loc); +return isc::eval::EvalParser::make_AND(loc); YY_BREAK case 43: YY_RULE_SETUP #line 203 "lexer.ll" -return isc::eval::EvalParser::make_DOT(loc); +return isc::eval::EvalParser::make_OR(loc); YY_BREAK case 44: YY_RULE_SETUP #line 204 "lexer.ll" -return isc::eval::EvalParser::make_LPAREN(loc); +return isc::eval::EvalParser::make_DOT(loc); YY_BREAK case 45: YY_RULE_SETUP #line 205 "lexer.ll" -return isc::eval::EvalParser::make_RPAREN(loc); +return isc::eval::EvalParser::make_LPAREN(loc); YY_BREAK case 46: YY_RULE_SETUP #line 206 "lexer.ll" -return isc::eval::EvalParser::make_LBRACKET(loc); +return isc::eval::EvalParser::make_RPAREN(loc); YY_BREAK case 47: YY_RULE_SETUP #line 207 "lexer.ll" -return isc::eval::EvalParser::make_RBRACKET(loc); +return isc::eval::EvalParser::make_LBRACKET(loc); YY_BREAK case 48: YY_RULE_SETUP #line 208 "lexer.ll" -return isc::eval::EvalParser::make_COMA(loc); +return isc::eval::EvalParser::make_RBRACKET(loc); YY_BREAK case 49: YY_RULE_SETUP #line 209 "lexer.ll" -return isc::eval::EvalParser::make_ANY(loc); +return isc::eval::EvalParser::make_COMA(loc); YY_BREAK case 50: YY_RULE_SETUP #line 210 "lexer.ll" +return isc::eval::EvalParser::make_ANY(loc); + YY_BREAK +case 51: +YY_RULE_SETUP +#line 211 "lexer.ll" driver.error (loc, "Invalid character: " + std::string(evaltext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 211 "lexer.ll" +#line 212 "lexer.ll" return isc::eval::EvalParser::make_END(loc); YY_BREAK -case 51: +case 52: YY_RULE_SETUP -#line 212 "lexer.ll" +#line 213 "lexer.ll" ECHO; YY_BREAK -#line 1798 "lexer.cc" +#line 1806 "lexer.cc" case YY_END_OF_BUFFER: { @@ -2081,7 +2089,7 @@ static int yy_get_next_buffer (void) 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 >= 198 ) + if ( yy_current_state >= 202 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2109,11 +2117,11 @@ static int yy_get_next_buffer (void) 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 >= 198 ) + if ( yy_current_state >= 202 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 197); + yy_is_jam = (yy_current_state == 201); if ( ! yy_is_jam ) *(yy_state_ptr)++ = yy_current_state; @@ -2879,7 +2887,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 212 "lexer.ll" +#line 213 "lexer.ll" using namespace isc::eval; diff --git a/src/lib/eval/location.hh b/src/lib/eval/location.hh index 66556de21c..ec80e2deb6 100644 --- a/src/lib/eval/location.hh +++ b/src/lib/eval/location.hh @@ -1,4 +1,4 @@ -// Generated 201707051218 +// Generated 201709281214 // A Bison parser, made by GNU Bison 3.0.4. // Locations for Bison parsers in C++ diff --git a/src/lib/eval/parser.cc b/src/lib/eval/parser.cc index f952ef31de..3d95cddcea 100644 --- a/src/lib/eval/parser.cc +++ b/src/lib/eval/parser.cc @@ -253,44 +253,44 @@ namespace isc { namespace eval { { switch (that.type_get ()) { - case 59: // option_repr_type + case 60: // option_repr_type value.move< TokenOption::RepresentationType > (that.value); break; - case 63: // pkt4_field + case 64: // pkt4_field value.move< TokenPkt4::FieldType > (that.value); break; - case 64: // pkt6_field + case 65: // pkt6_field value.move< TokenPkt6::FieldType > (that.value); break; - case 61: // pkt_metadata + case 62: // pkt_metadata value.move< TokenPkt::MetadataType > (that.value); break; - case 65: // relay6_field + case 66: // relay6_field value.move< TokenRelay6Field::FieldType > (that.value); break; - case 60: // nest_level + case 61: // nest_level value.move< int8_t > (that.value); break; - case 47: // "constant string" - case 48: // "integer" - case 49: // "constant hexstring" - case 50: // "option name" - case 51: // "ip address" + case 48: // "constant string" + case 49: // "integer" + case 50: // "constant hexstring" + case 51: // "option name" + case 52: // "ip address" value.move< std::string > (that.value); break; - case 58: // option_code + case 59: // option_code value.move< uint16_t > (that.value); break; - case 57: // integer_expr - case 62: // enterprise_id + case 58: // integer_expr + case 63: // enterprise_id value.move< uint32_t > (that.value); break; @@ -309,44 +309,44 @@ namespace isc { namespace eval { state = that.state; switch (that.type_get ()) { - case 59: // option_repr_type + case 60: // option_repr_type value.copy< TokenOption::RepresentationType > (that.value); break; - case 63: // pkt4_field + case 64: // pkt4_field value.copy< TokenPkt4::FieldType > (that.value); break; - case 64: // pkt6_field + case 65: // pkt6_field value.copy< TokenPkt6::FieldType > (that.value); break; - case 61: // pkt_metadata + case 62: // pkt_metadata value.copy< TokenPkt::MetadataType > (that.value); break; - case 65: // relay6_field + case 66: // relay6_field value.copy< TokenRelay6Field::FieldType > (that.value); break; - case 60: // nest_level + case 61: // nest_level value.copy< int8_t > (that.value); break; - case 47: // "constant string" - case 48: // "integer" - case 49: // "constant hexstring" - case 50: // "option name" - case 51: // "ip address" + case 48: // "constant string" + case 49: // "integer" + case 50: // "constant hexstring" + case 51: // "option name" + case 52: // "ip address" value.copy< std::string > (that.value); break; - case 58: // option_code + case 59: // option_code value.copy< uint16_t > (that.value); break; - case 57: // integer_expr - case 62: // enterprise_id + case 58: // integer_expr + case 63: // enterprise_id value.copy< uint32_t > (that.value); break; @@ -386,100 +386,100 @@ namespace isc { namespace eval { << yysym.location << ": "; switch (yytype) { - case 47: // "constant string" + case 48: // "constant string" -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< std::string > (); } #line 394 "parser.cc" // lalr1.cc:636 break; - case 48: // "integer" + case 49: // "integer" -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< std::string > (); } #line 401 "parser.cc" // lalr1.cc:636 break; - case 49: // "constant hexstring" + case 50: // "constant hexstring" -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< std::string > (); } #line 408 "parser.cc" // lalr1.cc:636 break; - case 50: // "option name" + case 51: // "option name" -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< std::string > (); } #line 415 "parser.cc" // lalr1.cc:636 break; - case 51: // "ip address" + case 52: // "ip address" -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< std::string > (); } #line 422 "parser.cc" // lalr1.cc:636 break; - case 57: // integer_expr + case 58: // integer_expr -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< uint32_t > (); } #line 429 "parser.cc" // lalr1.cc:636 break; - case 58: // option_code + case 59: // option_code -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< uint16_t > (); } #line 436 "parser.cc" // lalr1.cc:636 break; - case 59: // option_repr_type + case 60: // option_repr_type -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< TokenOption::RepresentationType > (); } #line 443 "parser.cc" // lalr1.cc:636 break; - case 60: // nest_level + case 61: // nest_level -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< int8_t > (); } #line 450 "parser.cc" // lalr1.cc:636 break; - case 61: // pkt_metadata + case 62: // pkt_metadata -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< TokenPkt::MetadataType > (); } #line 457 "parser.cc" // lalr1.cc:636 break; - case 62: // enterprise_id + case 63: // enterprise_id -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< uint32_t > (); } #line 464 "parser.cc" // lalr1.cc:636 break; - case 63: // pkt4_field + case 64: // pkt4_field -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< TokenPkt4::FieldType > (); } #line 471 "parser.cc" // lalr1.cc:636 break; - case 64: // pkt6_field + case 65: // pkt6_field -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< TokenPkt6::FieldType > (); } #line 478 "parser.cc" // lalr1.cc:636 break; - case 65: // relay6_field + case 66: // relay6_field -#line 108 "parser.yy" // lalr1.cc:636 +#line 109 "parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< TokenRelay6Field::FieldType > (); } #line 485 "parser.cc" // lalr1.cc:636 break; @@ -586,7 +586,7 @@ namespace isc { namespace eval { /// The return value of parse (). int yyresult; - // FIXME: This should be completely indented. It is not yet to + // FIXME: This shoud be completely indented. It is not yet to // avoid gratuitous conflicts when merging into the master branch. try { @@ -681,44 +681,44 @@ namespace isc { namespace eval { when using variants. */ switch (yyr1_[yyn]) { - case 59: // option_repr_type + case 60: // option_repr_type yylhs.value.build< TokenOption::RepresentationType > (); break; - case 63: // pkt4_field + case 64: // pkt4_field yylhs.value.build< TokenPkt4::FieldType > (); break; - case 64: // pkt6_field + case 65: // pkt6_field yylhs.value.build< TokenPkt6::FieldType > (); break; - case 61: // pkt_metadata + case 62: // pkt_metadata yylhs.value.build< TokenPkt::MetadataType > (); break; - case 65: // relay6_field + case 66: // relay6_field yylhs.value.build< TokenRelay6Field::FieldType > (); break; - case 60: // nest_level + case 61: // nest_level yylhs.value.build< int8_t > (); break; - case 47: // "constant string" - case 48: // "integer" - case 49: // "constant hexstring" - case 50: // "option name" - case 51: // "ip address" + case 48: // "constant string" + case 49: // "integer" + case 50: // "constant hexstring" + case 51: // "option name" + case 52: // "ip address" yylhs.value.build< std::string > (); break; - case 58: // option_code + case 59: // option_code yylhs.value.build< uint16_t > (); break; - case 57: // integer_expr - case 62: // enterprise_id + case 58: // integer_expr + case 63: // enterprise_id yylhs.value.build< uint32_t > (); break; @@ -740,7 +740,7 @@ namespace isc { namespace eval { switch (yyn) { case 6: -#line 128 "parser.yy" // lalr1.cc:859 +#line 129 "parser.yy" // lalr1.cc:859 { TokenPtr neg(new TokenNot()); ctx.expression.push_back(neg); @@ -749,7 +749,7 @@ namespace isc { namespace eval { break; case 7: -#line 133 "parser.yy" // lalr1.cc:859 +#line 134 "parser.yy" // lalr1.cc:859 { TokenPtr neg(new TokenAnd()); ctx.expression.push_back(neg); @@ -758,7 +758,7 @@ namespace isc { namespace eval { break; case 8: -#line 138 "parser.yy" // lalr1.cc:859 +#line 139 "parser.yy" // lalr1.cc:859 { TokenPtr neg(new TokenOr()); ctx.expression.push_back(neg); @@ -767,7 +767,7 @@ namespace isc { namespace eval { break; case 9: -#line 143 "parser.yy" // lalr1.cc:859 +#line 144 "parser.yy" // lalr1.cc:859 { TokenPtr eq(new TokenEqual()); ctx.expression.push_back(eq); @@ -776,7 +776,7 @@ namespace isc { namespace eval { break; case 10: -#line 148 "parser.yy" // lalr1.cc:859 +#line 149 "parser.yy" // lalr1.cc:859 { TokenPtr opt(new TokenOption(yystack_[3].value.as< uint16_t > (), TokenOption::EXISTS)); ctx.expression.push_back(opt); @@ -785,7 +785,7 @@ namespace isc { namespace eval { break; case 11: -#line 153 "parser.yy" // lalr1.cc:859 +#line 154 "parser.yy" // lalr1.cc:859 { switch (ctx.getUniverse()) { case Option::V4: @@ -809,7 +809,7 @@ namespace isc { namespace eval { break; case 12: -#line 173 "parser.yy" // lalr1.cc:859 +#line 174 "parser.yy" // lalr1.cc:859 { switch (ctx.getUniverse()) { case Option::V6: @@ -827,7 +827,7 @@ namespace isc { namespace eval { break; case 13: -#line 187 "parser.yy" // lalr1.cc:859 +#line 188 "parser.yy" // lalr1.cc:859 { // Expression: vendor-class[1234].exists // @@ -840,7 +840,7 @@ namespace isc { namespace eval { break; case 14: -#line 196 "parser.yy" // lalr1.cc:859 +#line 197 "parser.yy" // lalr1.cc:859 { // Expression: vendor[1234].exists // @@ -853,7 +853,7 @@ namespace isc { namespace eval { break; case 15: -#line 205 "parser.yy" // lalr1.cc:859 +#line 206 "parser.yy" // lalr1.cc:859 { // Expression vendor[1234].option[123].exists // @@ -867,7 +867,7 @@ namespace isc { namespace eval { break; case 16: -#line 217 "parser.yy" // lalr1.cc:859 +#line 218 "parser.yy" // lalr1.cc:859 { TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ())); ctx.expression.push_back(str); @@ -876,7 +876,7 @@ namespace isc { namespace eval { break; case 17: -#line 222 "parser.yy" // lalr1.cc:859 +#line 223 "parser.yy" // lalr1.cc:859 { TokenPtr hex(new TokenHexString(yystack_[0].value.as< std::string > ())); ctx.expression.push_back(hex); @@ -885,7 +885,7 @@ namespace isc { namespace eval { break; case 18: -#line 227 "parser.yy" // lalr1.cc:859 +#line 228 "parser.yy" // lalr1.cc:859 { TokenPtr ip(new TokenIpAddress(yystack_[0].value.as< std::string > ())); ctx.expression.push_back(ip); @@ -894,7 +894,7 @@ namespace isc { namespace eval { break; case 19: -#line 232 "parser.yy" // lalr1.cc:859 +#line 233 "parser.yy" // lalr1.cc:859 { TokenPtr opt(new TokenOption(yystack_[3].value.as< uint16_t > (), yystack_[0].value.as< TokenOption::RepresentationType > ())); ctx.expression.push_back(opt); @@ -903,7 +903,7 @@ namespace isc { namespace eval { break; case 20: -#line 237 "parser.yy" // lalr1.cc:859 +#line 238 "parser.yy" // lalr1.cc:859 { switch (ctx.getUniverse()) { case Option::V4: @@ -927,7 +927,7 @@ namespace isc { namespace eval { break; case 21: -#line 258 "parser.yy" // lalr1.cc:859 +#line 259 "parser.yy" // lalr1.cc:859 { switch (ctx.getUniverse()) { case Option::V6: @@ -945,7 +945,7 @@ namespace isc { namespace eval { break; case 22: -#line 273 "parser.yy" // lalr1.cc:859 +#line 274 "parser.yy" // lalr1.cc:859 { TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as< TokenPkt::MetadataType > ())); ctx.expression.push_back(pkt_metadata); @@ -954,7 +954,7 @@ namespace isc { namespace eval { break; case 23: -#line 278 "parser.yy" // lalr1.cc:859 +#line 279 "parser.yy" // lalr1.cc:859 { switch (ctx.getUniverse()) { case Option::V4: @@ -972,7 +972,7 @@ namespace isc { namespace eval { break; case 24: -#line 292 "parser.yy" // lalr1.cc:859 +#line 293 "parser.yy" // lalr1.cc:859 { switch (ctx.getUniverse()) { case Option::V6: @@ -990,7 +990,7 @@ namespace isc { namespace eval { break; case 25: -#line 306 "parser.yy" // lalr1.cc:859 +#line 307 "parser.yy" // lalr1.cc:859 { switch (ctx.getUniverse()) { case Option::V6: @@ -1008,7 +1008,7 @@ namespace isc { namespace eval { break; case 26: -#line 321 "parser.yy" // lalr1.cc:859 +#line 322 "parser.yy" // lalr1.cc:859 { TokenPtr sub(new TokenSubstring()); ctx.expression.push_back(sub); @@ -1017,7 +1017,7 @@ namespace isc { namespace eval { break; case 27: -#line 326 "parser.yy" // lalr1.cc:859 +#line 327 "parser.yy" // lalr1.cc:859 { TokenPtr conc(new TokenConcat()); ctx.expression.push_back(conc); @@ -1026,7 +1026,16 @@ namespace isc { namespace eval { break; case 28: -#line 331 "parser.yy" // lalr1.cc:859 +#line 332 "parser.yy" // lalr1.cc:859 + { + TokenPtr cond(new TokenIfElse()); + ctx.expression.push_back(cond); + } +#line 1035 "parser.cc" // lalr1.cc:859 + break; + + case 29: +#line 337 "parser.yy" // lalr1.cc:859 { // expression: vendor.enterprise // @@ -1035,11 +1044,11 @@ namespace isc { namespace eval { TokenPtr vendor(new TokenVendor(ctx.getUniverse(), 0, TokenVendor::ENTERPRISE_ID)); ctx.expression.push_back(vendor); } -#line 1039 "parser.cc" // lalr1.cc:859 +#line 1048 "parser.cc" // lalr1.cc:859 break; - case 29: -#line 340 "parser.yy" // lalr1.cc:859 + case 30: +#line 346 "parser.yy" // lalr1.cc:859 { // expression: vendor-class.enterprise // @@ -1049,11 +1058,11 @@ namespace isc { namespace eval { TokenVendor::ENTERPRISE_ID)); ctx.expression.push_back(vendor); } -#line 1053 "parser.cc" // lalr1.cc:859 +#line 1062 "parser.cc" // lalr1.cc:859 break; - case 30: -#line 350 "parser.yy" // lalr1.cc:859 + case 31: +#line 356 "parser.yy" // lalr1.cc:859 { // This token will search for vendor option with // specified enterprise-id. If found, will search @@ -1062,11 +1071,11 @@ namespace isc { namespace eval { TokenPtr opt(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as< uint32_t > (), yystack_[0].value.as< TokenOption::RepresentationType > (), yystack_[3].value.as< uint16_t > ())); ctx.expression.push_back(opt); } -#line 1066 "parser.cc" // lalr1.cc:859 +#line 1075 "parser.cc" // lalr1.cc:859 break; - case 31: -#line 359 "parser.yy" // lalr1.cc:859 + case 32: +#line 365 "parser.yy" // lalr1.cc:859 { // expression: vendor-class[1234].data // @@ -1079,11 +1088,11 @@ namespace isc { namespace eval { TokenVendor::DATA, 0)); ctx.expression.push_back(vendor_class); } -#line 1083 "parser.cc" // lalr1.cc:859 +#line 1092 "parser.cc" // lalr1.cc:859 break; - case 32: -#line 372 "parser.yy" // lalr1.cc:859 + case 33: +#line 378 "parser.yy" // lalr1.cc:859 { // expression: vendor-class[1234].data[5] // @@ -1096,247 +1105,247 @@ namespace isc { namespace eval { TokenVendor::DATA, index)); ctx.expression.push_back(vendor_class); } -#line 1100 "parser.cc" // lalr1.cc:859 +#line 1109 "parser.cc" // lalr1.cc:859 break; - case 33: -#line 385 "parser.yy" // lalr1.cc:859 + case 34: +#line 391 "parser.yy" // lalr1.cc:859 { TokenPtr integer(new TokenInteger(yystack_[0].value.as< uint32_t > ())); ctx.expression.push_back(integer); } -#line 1109 "parser.cc" // lalr1.cc:859 +#line 1118 "parser.cc" // lalr1.cc:859 break; - case 34: -#line 392 "parser.yy" // lalr1.cc:859 + case 35: +#line 398 "parser.yy" // lalr1.cc:859 { yylhs.value.as< uint32_t > () = ctx.convertUint32(yystack_[0].value.as< std::string > (), yystack_[0].location); } -#line 1117 "parser.cc" // lalr1.cc:859 +#line 1126 "parser.cc" // lalr1.cc:859 break; - case 35: -#line 398 "parser.yy" // lalr1.cc:859 + case 36: +#line 404 "parser.yy" // lalr1.cc:859 { yylhs.value.as< uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as< std::string > (), yystack_[0].location); } -#line 1125 "parser.cc" // lalr1.cc:859 +#line 1134 "parser.cc" // lalr1.cc:859 break; - case 36: -#line 402 "parser.yy" // lalr1.cc:859 + case 37: +#line 408 "parser.yy" // lalr1.cc:859 { yylhs.value.as< uint16_t > () = ctx.convertOptionName(yystack_[0].value.as< std::string > (), yystack_[0].location); } -#line 1133 "parser.cc" // lalr1.cc:859 +#line 1142 "parser.cc" // lalr1.cc:859 break; - case 37: -#line 408 "parser.yy" // lalr1.cc:859 + case 38: +#line 414 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenOption::RepresentationType > () = TokenOption::TEXTUAL; } -#line 1141 "parser.cc" // lalr1.cc:859 +#line 1150 "parser.cc" // lalr1.cc:859 break; - case 38: -#line 412 "parser.yy" // lalr1.cc:859 + case 39: +#line 418 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL; } -#line 1149 "parser.cc" // lalr1.cc:859 +#line 1158 "parser.cc" // lalr1.cc:859 break; - case 39: -#line 418 "parser.yy" // lalr1.cc:859 + case 40: +#line 424 "parser.yy" // lalr1.cc:859 { yylhs.value.as< int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as< std::string > (), yystack_[0].location); } -#line 1157 "parser.cc" // lalr1.cc:859 +#line 1166 "parser.cc" // lalr1.cc:859 break; - case 40: -#line 427 "parser.yy" // lalr1.cc:859 + case 41: +#line 433 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt::MetadataType > () = TokenPkt::IFACE; } -#line 1165 "parser.cc" // lalr1.cc:859 +#line 1174 "parser.cc" // lalr1.cc:859 break; - case 41: -#line 431 "parser.yy" // lalr1.cc:859 + case 42: +#line 437 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt::MetadataType > () = TokenPkt::SRC; } -#line 1173 "parser.cc" // lalr1.cc:859 +#line 1182 "parser.cc" // lalr1.cc:859 break; - case 42: -#line 435 "parser.yy" // lalr1.cc:859 + case 43: +#line 441 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt::MetadataType > () = TokenPkt::DST; } -#line 1181 "parser.cc" // lalr1.cc:859 +#line 1190 "parser.cc" // lalr1.cc:859 break; - case 43: -#line 439 "parser.yy" // lalr1.cc:859 + case 44: +#line 445 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt::MetadataType > () = TokenPkt::LEN; } -#line 1189 "parser.cc" // lalr1.cc:859 +#line 1198 "parser.cc" // lalr1.cc:859 break; - case 44: -#line 445 "parser.yy" // lalr1.cc:859 + case 45: +#line 451 "parser.yy" // lalr1.cc:859 { yylhs.value.as< uint32_t > () = ctx.convertUint32(yystack_[0].value.as< std::string > (), yystack_[0].location); } -#line 1197 "parser.cc" // lalr1.cc:859 +#line 1206 "parser.cc" // lalr1.cc:859 break; - case 45: -#line 449 "parser.yy" // lalr1.cc:859 + case 46: +#line 455 "parser.yy" // lalr1.cc:859 { yylhs.value.as< uint32_t > () = 0; } -#line 1205 "parser.cc" // lalr1.cc:859 +#line 1214 "parser.cc" // lalr1.cc:859 break; - case 46: -#line 455 "parser.yy" // lalr1.cc:859 + case 47: +#line 461 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::CHADDR; } -#line 1213 "parser.cc" // lalr1.cc:859 +#line 1222 "parser.cc" // lalr1.cc:859 break; - case 47: -#line 459 "parser.yy" // lalr1.cc:859 + case 48: +#line 465 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::HLEN; } -#line 1221 "parser.cc" // lalr1.cc:859 +#line 1230 "parser.cc" // lalr1.cc:859 break; - case 48: -#line 463 "parser.yy" // lalr1.cc:859 + case 49: +#line 469 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::HTYPE; } -#line 1229 "parser.cc" // lalr1.cc:859 +#line 1238 "parser.cc" // lalr1.cc:859 break; - case 49: -#line 467 "parser.yy" // lalr1.cc:859 + case 50: +#line 473 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::CIADDR; } -#line 1237 "parser.cc" // lalr1.cc:859 +#line 1246 "parser.cc" // lalr1.cc:859 break; - case 50: -#line 471 "parser.yy" // lalr1.cc:859 + case 51: +#line 477 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::GIADDR; } -#line 1245 "parser.cc" // lalr1.cc:859 +#line 1254 "parser.cc" // lalr1.cc:859 break; - case 51: -#line 475 "parser.yy" // lalr1.cc:859 + case 52: +#line 481 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::YIADDR; } -#line 1253 "parser.cc" // lalr1.cc:859 +#line 1262 "parser.cc" // lalr1.cc:859 break; - case 52: -#line 479 "parser.yy" // lalr1.cc:859 + case 53: +#line 485 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::SIADDR; } -#line 1261 "parser.cc" // lalr1.cc:859 +#line 1270 "parser.cc" // lalr1.cc:859 break; - case 53: -#line 483 "parser.yy" // lalr1.cc:859 + case 54: +#line 489 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE; } -#line 1269 "parser.cc" // lalr1.cc:859 +#line 1278 "parser.cc" // lalr1.cc:859 break; - case 54: -#line 487 "parser.yy" // lalr1.cc:859 + case 55: +#line 493 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::TRANSID; } -#line 1277 "parser.cc" // lalr1.cc:859 +#line 1286 "parser.cc" // lalr1.cc:859 break; - case 55: -#line 493 "parser.yy" // lalr1.cc:859 + case 56: +#line 499 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE; } -#line 1285 "parser.cc" // lalr1.cc:859 +#line 1294 "parser.cc" // lalr1.cc:859 break; - case 56: -#line 497 "parser.yy" // lalr1.cc:859 + case 57: +#line 503 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenPkt6::FieldType > () = TokenPkt6::TRANSID; } -#line 1293 "parser.cc" // lalr1.cc:859 +#line 1302 "parser.cc" // lalr1.cc:859 break; - case 57: -#line 503 "parser.yy" // lalr1.cc:859 + case 58: +#line 509 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR; } -#line 1301 "parser.cc" // lalr1.cc:859 +#line 1310 "parser.cc" // lalr1.cc:859 break; - case 58: -#line 507 "parser.yy" // lalr1.cc:859 + case 59: +#line 513 "parser.yy" // lalr1.cc:859 { yylhs.value.as< TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR; } -#line 1309 "parser.cc" // lalr1.cc:859 +#line 1318 "parser.cc" // lalr1.cc:859 break; - case 59: -#line 513 "parser.yy" // lalr1.cc:859 + case 60: +#line 519 "parser.yy" // lalr1.cc:859 { TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ())); ctx.expression.push_back(str); } -#line 1318 "parser.cc" // lalr1.cc:859 +#line 1327 "parser.cc" // lalr1.cc:859 break; - case 60: -#line 520 "parser.yy" // lalr1.cc:859 + case 61: +#line 526 "parser.yy" // lalr1.cc:859 { TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ())); ctx.expression.push_back(str); } -#line 1327 "parser.cc" // lalr1.cc:859 +#line 1336 "parser.cc" // lalr1.cc:859 break; - case 61: -#line 525 "parser.yy" // lalr1.cc:859 + case 62: +#line 531 "parser.yy" // lalr1.cc:859 { TokenPtr str(new TokenString("all")); ctx.expression.push_back(str); } -#line 1336 "parser.cc" // lalr1.cc:859 +#line 1345 "parser.cc" // lalr1.cc:859 break; -#line 1340 "parser.cc" // lalr1.cc:859 +#line 1349 "parser.cc" // lalr1.cc:859 default: break; } @@ -1591,150 +1600,151 @@ namespace isc { namespace eval { } - const signed char EvalParser::yypact_ninf_ = -106; + const signed char EvalParser::yypact_ninf_ = -110; const signed char EvalParser::yytable_ninf_ = -1; const short int EvalParser::yypact_[] = { - 24, 8, 51, 5, 8, 8, -2, 10, 20, -7, - 31, 47, 72, 42, 69, 90, -106, -106, -106, -106, - -106, 83, 78, -106, 25, 82, 108, 91, 104, -106, - -106, 36, -106, 71, 71, 53, 44, 85, 51, 51, - 87, -17, 86, -17, 88, 8, 8, 51, 71, 71, - 53, -17, -17, -106, -106, -106, 114, 116, -106, 118, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, 99, 100, -106, -106, -106, - -106, -106, 121, -106, 122, -106, -106, 132, -106, 124, - 125, 126, 127, 128, 129, 130, 131, 96, 51, 133, - 134, 135, 136, 137, 138, 139, 55, 60, -5, -106, - 113, 152, -16, 7, 110, 110, 23, 115, 148, -106, - -106, -106, -106, -106, -106, 145, -106, -106, -106, -28, - -106, -106, 146, 147, -106, 149, 150, 71, -106, -106, - 158, 117, 71, 71, 71, 151, -106, 153, 154, 155, - 156, 157, -106, 159, 160, 161, 63, 76, 110, 110, - -106, -106, -106, -106 + 32, 39, 87, 29, 39, 39, 40, 51, 76, 30, + 44, 92, 102, 111, 106, 90, 94, -110, -110, -110, + -110, -110, 67, 35, -110, 104, 116, 117, 97, 105, + -110, -110, 27, -110, -37, -37, 83, 47, -4, 87, + 87, 39, 46, -36, 88, -36, 93, 39, 39, 87, + -37, -37, 83, -36, -36, -110, -110, -110, 125, 126, + -110, 127, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, 108, 110, -3, + -110, -110, -110, -110, -110, 129, -110, 131, -110, -110, + 141, -110, 133, 134, 135, 136, 137, 138, 139, 140, + 112, 87, 87, 142, 143, 144, 146, 147, 148, 149, + 22, 65, 6, -110, 118, 153, 132, -14, 1, 109, + 109, 54, 122, 159, -110, -110, -110, -110, -110, -110, + 155, -110, -110, -110, -28, -110, 87, -110, 156, 157, + -110, 158, 160, -37, -110, -110, 169, 171, 128, -37, + -37, -37, 161, -110, -110, 163, 164, 165, 166, 167, + -110, 168, 170, 172, 75, 84, 109, 109, -110, -110, + -110, -110 }; const unsigned char EvalParser::yydefact_[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 34, 17, 18, - 2, 4, 0, 33, 0, 0, 0, 0, 0, 3, - 1, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 35, 17, + 18, 2, 4, 0, 34, 0, 0, 0, 0, 0, + 3, 1, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 35, 36, 0, 0, 39, 0, - 40, 41, 42, 43, 22, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 23, 0, 0, 55, 56, 24, - 45, 44, 0, 29, 0, 28, 7, 8, 9, 0, + 0, 0, 0, 0, 0, 5, 36, 37, 0, 0, + 40, 0, 41, 42, 43, 44, 22, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 23, 0, 0, 0, + 56, 57, 24, 46, 45, 0, 30, 0, 29, 7, + 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, - 38, 10, 19, 11, 20, 0, 57, 58, 25, 0, - 27, 13, 31, 0, 14, 0, 0, 0, 61, 60, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 12, 21, 15, 30 + 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 39, 10, 19, 11, 20, + 0, 58, 59, 25, 0, 27, 0, 13, 32, 0, + 14, 0, 0, 0, 62, 61, 0, 0, 0, 0, + 0, 0, 0, 26, 28, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, 12, 21, + 15, 31 }; const short int EvalParser::yypgoto_[] = { - -106, -106, -106, 18, -1, -106, -34, -105, 140, -106, - -22, -106, -106, -106, -106, -106 + -110, -110, -110, 4, -2, -110, -34, -109, 130, -110, + 8, -110, -110, -110, -110, -110 }; const short int EvalParser::yydefgoto_[] = { - -1, 3, 20, 21, 22, 23, 56, 122, 59, 64, - 82, 74, 79, 128, 110, 140 + -1, 3, 21, 22, 23, 24, 58, 127, 61, 66, + 85, 76, 82, 133, 114, 146 }; const unsigned char EvalParser::yytable_[] = { - 57, 29, 124, 131, 125, 30, 138, 126, 127, 36, - 124, 4, 33, 5, 89, 90, 133, 6, 7, 8, - 139, 84, 31, 32, 34, 80, 134, 132, 9, 92, - 93, 81, 135, 10, 35, 126, 127, 75, 76, 48, - 53, 11, 45, 46, 12, 13, 88, 37, 14, 15, - 38, 161, 163, 161, 163, 16, 17, 18, 40, 19, - 24, 25, 26, 86, 87, 60, 61, 62, 63, 1, - 2, 9, 119, 120, 121, 39, 10, 119, 120, 123, - 119, 120, 160, 41, 11, 42, 47, 12, 13, 45, - 46, 27, 28, 119, 120, 162, 49, 111, 16, 17, - 18, 58, 19, 145, 43, 51, 44, 42, 148, 149, - 150, 65, 66, 67, 68, 69, 70, 71, 52, 54, - 44, 55, 50, 72, 73, 77, 78, 119, 120, 94, - 83, 95, 85, 96, 97, 98, 99, 100, 45, 101, - 102, 103, 104, 105, 109, 106, 107, 108, 129, 112, - 113, 114, 115, 116, 117, 118, 130, 136, 132, 137, - 141, 142, 146, 143, 144, 147, 151, 0, 152, 153, - 154, 155, 0, 156, 0, 157, 158, 159, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 91 + 30, 59, 129, 47, 48, 137, 144, 83, 32, 33, + 139, 129, 56, 84, 57, 130, 92, 93, 131, 132, + 140, 145, 67, 68, 69, 70, 71, 72, 73, 31, + 138, 55, 102, 47, 48, 74, 75, 77, 78, 124, + 125, 126, 4, 49, 5, 79, 37, 91, 6, 7, + 8, 89, 90, 87, 34, 169, 171, 169, 171, 9, + 38, 95, 96, 141, 10, 35, 131, 132, 62, 63, + 64, 65, 11, 47, 48, 12, 13, 14, 1, 2, + 15, 16, 124, 125, 128, 80, 81, 17, 18, 19, + 36, 20, 124, 125, 168, 39, 25, 26, 27, 115, + 116, 124, 125, 170, 43, 40, 44, 9, 45, 152, + 46, 53, 10, 44, 41, 156, 157, 158, 50, 54, + 11, 46, 42, 12, 13, 14, 124, 125, 28, 29, + 51, 52, 60, 86, 147, 17, 18, 19, 88, 20, + 97, 98, 99, 100, 103, 101, 104, 47, 105, 106, + 107, 108, 109, 134, 110, 111, 112, 135, 117, 118, + 119, 113, 120, 121, 122, 123, 138, 136, 142, 143, + 148, 149, 150, 153, 151, 154, 159, 155, 160, 161, + 162, 163, 94, 164, 165, 0, 166, 0, 167 }; const short int EvalParser::yycheck_[] = { - 34, 2, 107, 19, 9, 0, 34, 12, 13, 16, - 115, 3, 14, 5, 48, 49, 9, 9, 10, 11, - 48, 43, 4, 5, 14, 42, 19, 43, 20, 51, - 52, 48, 9, 25, 14, 12, 13, 38, 39, 14, - 4, 33, 6, 7, 36, 37, 47, 16, 40, 41, - 3, 156, 157, 158, 159, 47, 48, 49, 16, 51, - 9, 10, 11, 45, 46, 21, 22, 23, 24, 45, - 46, 20, 17, 18, 19, 3, 25, 17, 18, 19, - 17, 18, 19, 14, 33, 16, 8, 36, 37, 6, - 7, 40, 41, 17, 18, 19, 14, 98, 47, 48, - 49, 48, 51, 137, 14, 14, 16, 16, 142, 143, - 144, 26, 27, 28, 29, 30, 31, 32, 14, 48, - 16, 50, 14, 38, 39, 38, 39, 17, 18, 15, - 44, 15, 44, 15, 35, 35, 15, 15, 6, 15, - 15, 15, 15, 15, 48, 16, 16, 16, 35, 16, - 16, 16, 16, 16, 16, 16, 4, 9, 43, 14, - 14, 14, 4, 14, 14, 48, 15, -1, 15, 15, - 15, 15, -1, 16, -1, 16, 16, 16, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 50 + 2, 35, 111, 6, 7, 19, 34, 43, 4, 5, + 9, 120, 49, 49, 51, 9, 50, 51, 12, 13, + 19, 49, 26, 27, 28, 29, 30, 31, 32, 0, + 44, 4, 35, 6, 7, 39, 40, 39, 40, 17, + 18, 19, 3, 8, 5, 41, 16, 49, 9, 10, + 11, 47, 48, 45, 14, 164, 165, 166, 167, 20, + 16, 53, 54, 9, 25, 14, 12, 13, 21, 22, + 23, 24, 33, 6, 7, 36, 37, 38, 46, 47, + 41, 42, 17, 18, 19, 39, 40, 48, 49, 50, + 14, 52, 17, 18, 19, 3, 9, 10, 11, 101, + 102, 17, 18, 19, 14, 3, 16, 20, 14, 143, + 16, 14, 25, 16, 3, 149, 150, 151, 14, 14, + 33, 16, 16, 36, 37, 38, 17, 18, 41, 42, + 14, 14, 49, 45, 136, 48, 49, 50, 45, 52, + 15, 15, 15, 35, 15, 35, 15, 6, 15, 15, + 15, 15, 15, 35, 16, 16, 16, 4, 16, 16, + 16, 49, 16, 16, 16, 16, 44, 35, 9, 14, + 14, 14, 14, 4, 14, 4, 15, 49, 15, 15, + 15, 15, 52, 16, 16, -1, 16, -1, 16 }; const unsigned char EvalParser::yystos_[] = { - 0, 45, 46, 53, 3, 5, 9, 10, 11, 20, - 25, 33, 36, 37, 40, 41, 47, 48, 49, 51, - 54, 55, 56, 57, 9, 10, 11, 40, 41, 56, - 0, 55, 55, 14, 14, 14, 16, 16, 3, 3, - 16, 14, 16, 14, 16, 6, 7, 8, 14, 14, - 14, 14, 14, 4, 48, 50, 58, 58, 48, 60, - 21, 22, 23, 24, 61, 26, 27, 28, 29, 30, - 31, 32, 38, 39, 63, 56, 56, 38, 39, 64, - 42, 48, 62, 44, 62, 44, 55, 55, 56, 58, - 58, 60, 62, 62, 15, 15, 15, 35, 35, 15, - 15, 15, 15, 15, 15, 15, 16, 16, 16, 48, - 66, 56, 16, 16, 16, 16, 16, 16, 16, 17, - 18, 19, 59, 19, 59, 9, 12, 13, 65, 35, - 4, 19, 43, 9, 19, 9, 9, 14, 34, 48, - 67, 14, 14, 14, 14, 58, 4, 48, 58, 58, - 58, 15, 15, 15, 15, 15, 16, 16, 16, 16, - 19, 59, 19, 59 + 0, 46, 47, 54, 3, 5, 9, 10, 11, 20, + 25, 33, 36, 37, 38, 41, 42, 48, 49, 50, + 52, 55, 56, 57, 58, 9, 10, 11, 41, 42, + 57, 0, 56, 56, 14, 14, 14, 16, 16, 3, + 3, 3, 16, 14, 16, 14, 16, 6, 7, 8, + 14, 14, 14, 14, 14, 4, 49, 51, 59, 59, + 49, 61, 21, 22, 23, 24, 62, 26, 27, 28, + 29, 30, 31, 32, 39, 40, 64, 57, 57, 56, + 39, 40, 65, 43, 49, 63, 45, 63, 45, 56, + 56, 57, 59, 59, 61, 63, 63, 15, 15, 15, + 35, 35, 35, 15, 15, 15, 15, 15, 15, 15, + 16, 16, 16, 49, 67, 57, 57, 16, 16, 16, + 16, 16, 16, 16, 17, 18, 19, 60, 19, 60, + 9, 12, 13, 66, 35, 4, 35, 19, 44, 9, + 19, 9, 9, 14, 34, 49, 68, 57, 14, 14, + 14, 14, 59, 4, 4, 49, 59, 59, 59, 15, + 15, 15, 15, 15, 16, 16, 16, 16, 19, 60, + 19, 60 }; const unsigned char EvalParser::yyr1_[] = { - 0, 52, 53, 53, 54, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 57, 58, 58, 59, 59, 60, - 61, 61, 61, 61, 62, 62, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 64, 64, 65, 65, 66, - 67, 67 + 0, 53, 54, 54, 55, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 58, 59, 59, 60, 60, + 61, 62, 62, 62, 62, 63, 63, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 65, 65, 66, 66, + 67, 68, 68 }; const unsigned char @@ -1742,11 +1752,11 @@ namespace isc { namespace eval { { 0, 2, 2, 2, 1, 3, 2, 3, 3, 3, 6, 6, 11, 6, 6, 11, 1, 1, 1, 6, - 6, 11, 3, 3, 3, 6, 8, 6, 3, 3, - 11, 6, 9, 1, 1, 1, 1, 1, 1, 1, + 6, 11, 3, 3, 3, 6, 8, 6, 8, 3, + 3, 11, 6, 9, 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 }; @@ -1762,27 +1772,27 @@ namespace isc { namespace eval { "\"hex\"", "\"exists\"", "\"pkt\"", "\"iface\"", "\"src\"", "\"dst\"", "\"len\"", "\"pkt4\"", "\"mac\"", "\"hlen\"", "\"htype\"", "\"ciaddr\"", "\"giaddr\"", "\"yiaddr\"", "\"siaddr\"", "\"substring\"", "\"all\"", - "\",\"", "\"concat\"", "\"pkt6\"", "\"msgtype\"", "\"transid\"", - "\"vendor-class\"", "\"vendor\"", "\"*\"", "\"data\"", "\"enterprise\"", - "\"top-level bool\"", "\"top-level string\"", "\"constant string\"", - "\"integer\"", "\"constant hexstring\"", "\"option name\"", - "\"ip address\"", "$accept", "start", "expression", "bool_expr", - "string_expr", "integer_expr", "option_code", "option_repr_type", - "nest_level", "pkt_metadata", "enterprise_id", "pkt4_field", - "pkt6_field", "relay6_field", "start_expr", "length_expr", YY_NULLPTR + "\",\"", "\"concat\"", "\"ifelse\"", "\"pkt6\"", "\"msgtype\"", + "\"transid\"", "\"vendor-class\"", "\"vendor\"", "\"*\"", "\"data\"", + "\"enterprise\"", "\"top-level bool\"", "\"top-level string\"", + "\"constant string\"", "\"integer\"", "\"constant hexstring\"", + "\"option name\"", "\"ip address\"", "$accept", "start", "expression", + "bool_expr", "string_expr", "integer_expr", "option_code", + "option_repr_type", "nest_level", "pkt_metadata", "enterprise_id", + "pkt4_field", "pkt6_field", "relay6_field", "start_expr", "length_expr", YY_NULLPTR }; #if EVALDEBUG const unsigned short int EvalParser::yyrline_[] = { - 0, 117, 117, 118, 123, 126, 127, 132, 137, 142, - 147, 152, 172, 186, 195, 204, 216, 221, 226, 231, - 236, 257, 272, 277, 291, 305, 320, 325, 330, 339, - 349, 358, 371, 384, 391, 397, 401, 407, 411, 417, - 426, 430, 434, 438, 444, 448, 454, 458, 462, 466, - 470, 474, 478, 482, 486, 492, 496, 502, 506, 512, - 519, 524 + 0, 118, 118, 119, 124, 127, 128, 133, 138, 143, + 148, 153, 173, 187, 196, 205, 217, 222, 227, 232, + 237, 258, 273, 278, 292, 306, 321, 326, 331, 336, + 345, 355, 364, 377, 390, 397, 403, 407, 413, 417, + 423, 432, 436, 440, 444, 450, 454, 460, 464, 468, + 472, 476, 480, 484, 488, 492, 498, 502, 508, 512, + 518, 525, 530 }; // Print the state stack on the debug stream. @@ -1817,8 +1827,8 @@ namespace isc { namespace eval { #line 14 "parser.yy" // lalr1.cc:1167 } } // isc::eval -#line 1821 "parser.cc" // lalr1.cc:1167 -#line 531 "parser.yy" // lalr1.cc:1168 +#line 1831 "parser.cc" // lalr1.cc:1167 +#line 537 "parser.yy" // lalr1.cc:1168 void isc::eval::EvalParser::error(const location_type& loc, diff --git a/src/lib/eval/parser.h b/src/lib/eval/parser.h index 53df1cb8f2..5f2042f2bf 100644 --- a/src/lib/eval/parser.h +++ b/src/lib/eval/parser.h @@ -218,7 +218,7 @@ namespace isc { namespace eval { /// Both variants must be built beforehand, because swapping the actual /// data requires reading it (with as()), and this is not possible on /// unconstructed variants: it would require some dynamic testing, which - /// should not be the variant's responsibility. + /// should not be the variant's responsability. /// Swapping between built and (possibly) non-built is done with /// variant::move (). template @@ -391,21 +391,22 @@ namespace isc { namespace eval { TOKEN_ALL = 289, TOKEN_COMA = 290, TOKEN_CONCAT = 291, - TOKEN_PKT6 = 292, - TOKEN_MSGTYPE = 293, - TOKEN_TRANSID = 294, - TOKEN_VENDOR_CLASS = 295, - TOKEN_VENDOR = 296, - TOKEN_ANY = 297, - TOKEN_DATA = 298, - TOKEN_ENTERPRISE = 299, - TOKEN_TOPLEVEL_BOOL = 300, - TOKEN_TOPLEVEL_STRING = 301, - TOKEN_STRING = 302, - TOKEN_INTEGER = 303, - TOKEN_HEXSTRING = 304, - TOKEN_OPTION_NAME = 305, - TOKEN_IP_ADDRESS = 306 + TOKEN_IFELSE = 292, + TOKEN_PKT6 = 293, + TOKEN_MSGTYPE = 294, + TOKEN_TRANSID = 295, + TOKEN_VENDOR_CLASS = 296, + TOKEN_VENDOR = 297, + TOKEN_ANY = 298, + TOKEN_DATA = 299, + TOKEN_ENTERPRISE = 300, + TOKEN_TOPLEVEL_BOOL = 301, + TOKEN_TOPLEVEL_STRING = 302, + TOKEN_STRING = 303, + TOKEN_INTEGER = 304, + TOKEN_HEXSTRING = 305, + TOKEN_OPTION_NAME = 306, + TOKEN_IP_ADDRESS = 307 }; }; @@ -668,6 +669,10 @@ namespace isc { namespace eval { symbol_type make_CONCAT (const location_type& l); + static inline + symbol_type + make_IFELSE (const location_type& l); + static inline symbol_type make_PKT6 (const location_type& l); @@ -933,12 +938,12 @@ namespace isc { namespace eval { enum { yyeof_ = 0, - yylast_ = 190, ///< Last index in yytable_. + yylast_ = 188, ///< Last index in yytable_. yynnts_ = 16, ///< Number of nonterminal symbols. - yyfinal_ = 30, ///< Termination state number. + yyfinal_ = 31, ///< Termination state number. yyterror_ = 1, yyerrcode_ = 256, - yyntokens_ = 52 ///< Number of tokens. + yyntokens_ = 53 ///< Number of tokens. }; @@ -985,9 +990,9 @@ namespace isc { namespace eval { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51 + 45, 46, 47, 48, 49, 50, 51, 52 }; - const unsigned int user_token_number_max_ = 306; + const unsigned int user_token_number_max_ = 307; const token_number_type undef_token_ = 2; if (static_cast(t) <= yyeof_) @@ -1020,44 +1025,44 @@ namespace isc { namespace eval { { switch (other.type_get ()) { - case 59: // option_repr_type + case 60: // option_repr_type value.copy< TokenOption::RepresentationType > (other.value); break; - case 63: // pkt4_field + case 64: // pkt4_field value.copy< TokenPkt4::FieldType > (other.value); break; - case 64: // pkt6_field + case 65: // pkt6_field value.copy< TokenPkt6::FieldType > (other.value); break; - case 61: // pkt_metadata + case 62: // pkt_metadata value.copy< TokenPkt::MetadataType > (other.value); break; - case 65: // relay6_field + case 66: // relay6_field value.copy< TokenRelay6Field::FieldType > (other.value); break; - case 60: // nest_level + case 61: // nest_level value.copy< int8_t > (other.value); break; - case 47: // "constant string" - case 48: // "integer" - case 49: // "constant hexstring" - case 50: // "option name" - case 51: // "ip address" + case 48: // "constant string" + case 49: // "integer" + case 50: // "constant hexstring" + case 51: // "option name" + case 52: // "ip address" value.copy< std::string > (other.value); break; - case 58: // option_code + case 59: // option_code value.copy< uint16_t > (other.value); break; - case 57: // integer_expr - case 62: // enterprise_id + case 58: // integer_expr + case 63: // enterprise_id value.copy< uint32_t > (other.value); break; @@ -1078,44 +1083,44 @@ namespace isc { namespace eval { (void) v; switch (this->type_get ()) { - case 59: // option_repr_type + case 60: // option_repr_type value.copy< TokenOption::RepresentationType > (v); break; - case 63: // pkt4_field + case 64: // pkt4_field value.copy< TokenPkt4::FieldType > (v); break; - case 64: // pkt6_field + case 65: // pkt6_field value.copy< TokenPkt6::FieldType > (v); break; - case 61: // pkt_metadata + case 62: // pkt_metadata value.copy< TokenPkt::MetadataType > (v); break; - case 65: // relay6_field + case 66: // relay6_field value.copy< TokenRelay6Field::FieldType > (v); break; - case 60: // nest_level + case 61: // nest_level value.copy< int8_t > (v); break; - case 47: // "constant string" - case 48: // "integer" - case 49: // "constant hexstring" - case 50: // "option name" - case 51: // "ip address" + case 48: // "constant string" + case 49: // "integer" + case 50: // "constant hexstring" + case 51: // "option name" + case 52: // "ip address" value.copy< std::string > (v); break; - case 58: // option_code + case 59: // option_code value.copy< uint16_t > (v); break; - case 57: // integer_expr - case 62: // enterprise_id + case 58: // integer_expr + case 63: // enterprise_id value.copy< uint32_t > (v); break; @@ -1223,44 +1228,44 @@ namespace isc { namespace eval { // Type destructor. switch (yytype) { - case 59: // option_repr_type + case 60: // option_repr_type value.template destroy< TokenOption::RepresentationType > (); break; - case 63: // pkt4_field + case 64: // pkt4_field value.template destroy< TokenPkt4::FieldType > (); break; - case 64: // pkt6_field + case 65: // pkt6_field value.template destroy< TokenPkt6::FieldType > (); break; - case 61: // pkt_metadata + case 62: // pkt_metadata value.template destroy< TokenPkt::MetadataType > (); break; - case 65: // relay6_field + case 66: // relay6_field value.template destroy< TokenRelay6Field::FieldType > (); break; - case 60: // nest_level + case 61: // nest_level value.template destroy< int8_t > (); break; - case 47: // "constant string" - case 48: // "integer" - case 49: // "constant hexstring" - case 50: // "option name" - case 51: // "ip address" + case 48: // "constant string" + case 49: // "integer" + case 50: // "constant hexstring" + case 51: // "option name" + case 52: // "ip address" value.template destroy< std::string > (); break; - case 58: // option_code + case 59: // option_code value.template destroy< uint16_t > (); break; - case 57: // integer_expr - case 62: // enterprise_id + case 58: // integer_expr + case 63: // enterprise_id value.template destroy< uint32_t > (); break; @@ -1287,44 +1292,44 @@ namespace isc { namespace eval { super_type::move(s); switch (this->type_get ()) { - case 59: // option_repr_type + case 60: // option_repr_type value.move< TokenOption::RepresentationType > (s.value); break; - case 63: // pkt4_field + case 64: // pkt4_field value.move< TokenPkt4::FieldType > (s.value); break; - case 64: // pkt6_field + case 65: // pkt6_field value.move< TokenPkt6::FieldType > (s.value); break; - case 61: // pkt_metadata + case 62: // pkt_metadata value.move< TokenPkt::MetadataType > (s.value); break; - case 65: // relay6_field + case 66: // relay6_field value.move< TokenRelay6Field::FieldType > (s.value); break; - case 60: // nest_level + case 61: // nest_level value.move< int8_t > (s.value); break; - case 47: // "constant string" - case 48: // "integer" - case 49: // "constant hexstring" - case 50: // "option name" - case 51: // "ip address" + case 48: // "constant string" + case 49: // "integer" + case 50: // "constant hexstring" + case 51: // "option name" + case 52: // "ip address" value.move< std::string > (s.value); break; - case 58: // option_code + case 59: // option_code value.move< uint16_t > (s.value); break; - case 57: // integer_expr - case 62: // enterprise_id + case 58: // integer_expr + case 63: // enterprise_id value.move< uint32_t > (s.value); break; @@ -1388,7 +1393,7 @@ namespace isc { namespace eval { 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306 + 305, 306, 307 }; return static_cast (yytoken_number_[type]); } @@ -1603,6 +1608,12 @@ namespace isc { namespace eval { return symbol_type (token::TOKEN_CONCAT, l); } + EvalParser::symbol_type + EvalParser::make_IFELSE (const location_type& l) + { + return symbol_type (token::TOKEN_IFELSE, l); + } + EvalParser::symbol_type EvalParser::make_PKT6 (const location_type& l) { @@ -1696,7 +1707,7 @@ namespace isc { namespace eval { #line 14 "parser.yy" // lalr1.cc:377 } } // isc::eval -#line 1700 "parser.h" // lalr1.cc:377 +#line 1711 "parser.h" // lalr1.cc:377 diff --git a/src/lib/eval/position.hh b/src/lib/eval/position.hh index 8b6fbea73c..664eaebad0 100644 --- a/src/lib/eval/position.hh +++ b/src/lib/eval/position.hh @@ -1,4 +1,4 @@ -// Generated 201707051218 +// Generated 201709281214 // A Bison parser, made by GNU Bison 3.0.4. // Positions for Bison parsers in C++ diff --git a/src/lib/eval/stack.hh b/src/lib/eval/stack.hh index 6ebdc5161a..3f3445509a 100644 --- a/src/lib/eval/stack.hh +++ b/src/lib/eval/stack.hh @@ -1,4 +1,4 @@ -// Generated 201707051218 +// Generated 201709281214 // A Bison parser, made by GNU Bison 3.0.4. // Stack handling for Bison parsers in C++