summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorFrancis Dupont <fdupont@isc.org>2024-08-07 19:54:55 +0200
committerFrancis Dupont <fdupont@isc.org>2024-08-21 15:12:38 +0200
commitae3c7aaf3a339d14e29f1f2bb41abfca0430bd81 (patch)
tree628a06245abf0b7b1a51beb53bdd7b11ae8b87ea /src/lib
parent[#3502] Checkpoint: changed strict- by s (diff)
downloadkea-ae3c7aaf3a339d14e29f1f2bb41abfca0430bd81.tar.xz
kea-ae3c7aaf3a339d14e29f1f2bb41abfca0430bd81.zip
[#3502] Regen flex/bison
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/eval/lexer.cc399
-rw-r--r--src/lib/eval/location.hh1
-rw-r--r--src/lib/eval/parser.cc876
-rw-r--r--src/lib/eval/parser.h343
4 files changed, 864 insertions, 755 deletions
diff --git a/src/lib/eval/lexer.cc b/src/lib/eval/lexer.cc
index bcf7cd2b71..9b674ee4c4 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 66
-#define YY_END_OF_BUFFER 67
+#define YY_NUM_RULES 69
+#define YY_END_OF_BUFFER 70
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -719,39 +719,41 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[290] =
+static const flex_int16_t yy_accept[300] =
{ 0,
- 0, 0, 67, 65, 1, 2, 65, 58, 59, 63,
- 64, 62, 65, 57, 5, 5, 65, 65, 65, 65,
- 60, 61, 65, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 0, 0, 70, 68, 1, 2, 68, 61, 62, 66,
+ 67, 65, 68, 60, 5, 5, 68, 68, 68, 68,
+ 63, 64, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
1, 2, 0, 3, 5, 0, 5, 0, 0, 0,
0, 7, 8, 0, 0, 0, 0, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4, 7, 0, 41,
-
- 53, 0, 0, 0, 20, 0, 0, 0, 15, 0,
- 0, 0, 0, 0, 0, 21, 0, 23, 0, 0,
- 0, 52, 0, 0, 17, 0, 0, 0, 19, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 35, 0, 0, 0, 0, 24, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 30, 0, 0, 0, 0, 14, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
- 18, 0, 0, 0, 0, 38, 0, 56, 0, 0,
- 0, 0, 0, 0, 40, 0, 0, 39, 0, 0,
-
- 0, 0, 0, 0, 0, 26, 42, 0, 16, 27,
- 0, 43, 0, 0, 0, 0, 55, 0, 9, 0,
- 10, 11, 29, 0, 0, 0, 0, 0, 33, 28,
- 7, 0, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 56, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 4, 7,
+
+ 0, 41, 54, 0, 0, 0, 20, 0, 0, 0,
+ 15, 0, 0, 0, 0, 0, 0, 21, 0, 23,
+ 0, 0, 0, 53, 0, 0, 17, 0, 0, 0,
+ 0, 57, 0, 19, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 35, 0, 0, 0, 0,
+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 22, 30, 0, 55, 0, 0,
+ 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 25, 18, 0, 0,
+ 0, 0, 38, 0, 59, 0, 0, 0, 0, 0,
+
+ 0, 0, 40, 0, 0, 39, 0, 0, 0, 0,
+ 0, 0, 0, 26, 42, 0, 16, 27, 0, 43,
+ 0, 0, 0, 0, 58, 0, 9, 0, 10, 11,
+ 29, 0, 0, 0, 0, 0, 0, 33, 28, 7,
+ 0, 0, 0, 0, 0, 0, 0, 31, 0, 44,
0, 32, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 13, 12, 0, 0, 0, 0, 0, 0,
- 0, 44, 0, 0, 0, 37, 0, 0, 0, 0,
- 45, 36, 0, 0, 46, 0, 0, 0, 0, 47,
- 48, 0, 0, 49, 0, 50, 51, 34, 0
+ 0, 45, 0, 0, 0, 37, 0, 0, 0, 0,
+ 46, 36, 0, 0, 47, 0, 0, 0, 0, 48,
+ 49, 0, 0, 50, 0, 51, 52, 34, 0
+
} ;
static const YY_CHAR yy_ec[256] =
@@ -795,134 +797,137 @@ static const YY_CHAR yy_meta[50] =
1, 1, 1, 1, 1, 1, 1, 1, 1
} ;
-static const flex_int16_t yy_base[299] =
+static const flex_int16_t yy_base[309] =
{ 0,
- 0, 0, 394, 395, 391, 389, 387, 395, 395, 395,
- 395, 395, 0, 395, 39, 36, 370, 368, 86, 124,
- 395, 395, 35, 38, 34, 37, 352, 48, 43, 115,
- 63, 346, 22, 60, 354, 122, 116, 130, 353, 348,
- 381, 379, 377, 395, 0, 0, 125, 360, 359, 0,
- 358, 0, 395, 159, 167, 0, 0, 395, 346, 338,
- 344, 346, 333, 327, 326, 325, 333, 340, 319, 334,
- 316, 62, 319, 335, 322, 321, 133, 321, 325, 313,
- 312, 0, 324, 310, 316, 325, 314, 321, 321, 301,
- 320, 319, 306, 305, 316, 332, 0, 0, 299, 0,
-
- 0, 310, 310, 311, 0, 306, 293, 305, 291, 294,
- 291, 302, 293, 161, 286, 0, 292, 0, 298, 298,
- 281, 0, 289, 281, 159, 295, 291, 285, 0, 276,
- 274, 278, 273, 271, 284, 283, 0, 268, 281, 283,
- 0, 267, 264, 277, 262, 0, 274, 273, 260, 285,
- 288, 256, 268, 271, 263, 265, 247, 254, 266, 0,
- 0, 244, 261, 246, 245, 0, 245, 256, 168, 246,
- 255, 274, 243, 240, 237, 239, 236, 236, 235, 0,
- 0, 245, 231, 230, 233, 0, 242, 0, 229, 229,
- 230, 238, 166, 225, 0, 224, 230, 0, 247, 250,
-
- 218, 219, 218, 0, 215, 0, 0, 216, 0, 0,
- 222, 0, 216, 215, 210, 223, 0, 221, 0, 221,
- 0, 0, 0, 215, 219, 204, 203, 206, 236, 0,
- 0, 213, 208, 203, 197, 196, 208, 196, 0, 195,
- 197, 0, 195, 194, 189, 169, 185, 188, 197, 198,
- 197, 180, 0, 0, 193, 181, 180, 192, 185, 177,
- 189, 0, 172, 171, 168, 0, 169, 166, 149, 168,
- 0, 0, 149, 147, 0, 143, 142, 144, 144, 0,
- 0, 141, 134, 0, 123, 0, 0, 0, 395, 199,
- 146, 202, 107, 205, 208, 212, 78, 77
-
+ 0, 0, 404, 405, 401, 399, 397, 405, 405, 405,
+ 405, 405, 0, 405, 39, 36, 380, 378, 86, 124,
+ 405, 405, 35, 38, 34, 37, 362, 48, 43, 115,
+ 63, 356, 22, 60, 364, 122, 116, 130, 363, 358,
+ 391, 389, 387, 405, 0, 0, 125, 370, 369, 0,
+ 368, 0, 405, 159, 167, 0, 0, 405, 356, 348,
+ 354, 356, 343, 337, 336, 335, 343, 350, 329, 344,
+ 326, 62, 329, 345, 332, 331, 137, 331, 335, 323,
+ 322, 0, 334, 320, 326, 323, 143, 319, 323, 330,
+ 330, 310, 329, 328, 315, 314, 325, 341, 0, 0,
+
+ 308, 0, 0, 319, 319, 320, 0, 315, 302, 314,
+ 300, 303, 300, 311, 302, 159, 295, 0, 301, 0,
+ 307, 307, 290, 0, 298, 290, 159, 304, 300, 299,
+ 297, 0, 292, 0, 283, 281, 285, 280, 278, 291,
+ 290, 0, 275, 288, 290, 0, 274, 271, 284, 269,
+ 0, 281, 280, 267, 292, 295, 263, 275, 278, 270,
+ 272, 254, 261, 273, 0, 0, 251, 0, 268, 260,
+ 252, 251, 0, 251, 262, 168, 252, 261, 280, 249,
+ 246, 243, 245, 242, 242, 241, 0, 0, 251, 237,
+ 236, 239, 0, 248, 0, 235, 235, 236, 244, 168,
+
+ 231, 229, 0, 229, 235, 0, 252, 255, 223, 224,
+ 223, 0, 220, 0, 0, 221, 0, 0, 227, 0,
+ 221, 220, 215, 228, 0, 226, 0, 226, 0, 0,
+ 0, 224, 219, 223, 208, 207, 210, 240, 0, 0,
+ 217, 212, 207, 201, 200, 212, 200, 0, 199, 0,
+ 201, 0, 199, 198, 193, 177, 189, 192, 201, 202,
+ 201, 184, 0, 0, 197, 185, 184, 196, 189, 176,
+ 177, 0, 158, 157, 159, 0, 170, 169, 152, 171,
+ 0, 0, 153, 152, 0, 148, 147, 149, 148, 0,
+ 0, 146, 145, 0, 145, 0, 0, 0, 405, 207,
+
+ 184, 210, 107, 213, 216, 220, 78, 77
} ;
-static const flex_int16_t yy_def[299] =
+static const flex_int16_t yy_def[309] =
{ 0,
- 289, 1, 289, 289, 289, 289, 290, 289, 289, 289,
- 289, 289, 291, 289, 289, 15, 292, 289, 289, 19,
- 289, 289, 19, 19, 19, 19, 20, 20, 20, 20,
+ 299, 1, 299, 299, 299, 299, 300, 299, 299, 299,
+ 299, 299, 301, 299, 299, 15, 302, 299, 299, 19,
+ 299, 299, 19, 19, 19, 19, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 289, 289, 290, 289, 291, 293, 15, 292, 294, 295,
- 292, 296, 289, 289, 20, 19, 20, 289, 19, 20,
+ 299, 299, 300, 299, 301, 303, 15, 302, 304, 305,
+ 302, 306, 299, 299, 20, 19, 20, 299, 19, 20,
20, 20, 20, 19, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 293, 295, 296, 19, 20,
+ 20, 20, 20, 20, 20, 20, 20, 303, 305, 306,
+ 19, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 297, 20, 20, 20,
+ 20, 307, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 297, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 307, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 298, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 308, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 308,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 298, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 0, 289,
- 289, 289, 289, 289, 289, 289, 289, 289
+ 20, 20, 20, 20, 20, 20, 20, 20, 0, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299
} ;
-static const flex_int16_t yy_nxt[445] =
+static const flex_int16_t yy_nxt[455] =
{ 0,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 16, 16, 16, 16, 16, 16, 17,
18, 19, 20, 20, 21, 22, 4, 23, 19, 24,
25, 26, 19, 27, 28, 29, 20, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 20, 40, 46,
- 47, 47, 47, 47, 47, 47, 47, 47, 48, 289,
+ 47, 47, 47, 47, 47, 47, 47, 47, 48, 299,
49, 64, 50, 81, 82, 59, 49, 49, 49, 49,
49, 49, 60, 62, 61, 72, 66, 65, 63, 69,
- 231, 172, 73, 289, 67, 70, 50, 54, 54, 112,
- 77, 83, 71, 113, 78, 55, 84, 56, 56, 56,
+ 240, 179, 73, 299, 67, 70, 50, 54, 54, 114,
+ 77, 83, 71, 115, 78, 55, 84, 56, 56, 56,
56, 56, 56, 56, 56, 48, 79, 56, 57, 57,
- 96, 58, 55, 56, 56, 56, 56, 56, 56, 57,
+ 98, 58, 55, 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, 57, 57,
- 57, 57, 57, 289, 74, 57, 75, 90, 289, 45,
- 76, 57, 57, 57, 57, 57, 57, 86, 91, 92,
- 54, 54, 118, 87, 88, 93, 288, 89, 289, 289,
- 289, 289, 289, 150, 160, 151, 161, 119, 287, 152,
- 199, 221, 200, 222, 58, 286, 201, 285, 284, 283,
- 282, 281, 289, 280, 289, 279, 278, 277, 259, 43,
-
- 276, 43, 43, 43, 43, 51, 51, 51, 49, 49,
- 49, 97, 275, 97, 98, 98, 98, 98, 274, 273,
- 272, 271, 270, 269, 268, 267, 266, 265, 264, 263,
- 262, 261, 260, 258, 257, 256, 255, 254, 253, 252,
- 251, 250, 249, 248, 247, 246, 245, 244, 243, 242,
- 241, 240, 239, 238, 237, 236, 235, 234, 233, 232,
- 230, 229, 228, 227, 226, 225, 224, 223, 220, 219,
- 218, 217, 216, 215, 214, 213, 212, 211, 210, 209,
- 208, 207, 206, 205, 204, 203, 202, 198, 197, 196,
- 195, 194, 193, 192, 191, 190, 189, 188, 187, 186,
-
- 185, 184, 183, 182, 181, 180, 179, 178, 177, 176,
- 175, 174, 173, 171, 170, 169, 168, 167, 166, 165,
- 164, 163, 162, 159, 158, 157, 156, 155, 154, 153,
- 149, 148, 147, 146, 145, 144, 143, 142, 141, 140,
- 139, 138, 137, 136, 135, 134, 133, 132, 131, 130,
- 129, 128, 127, 126, 125, 124, 123, 122, 121, 120,
- 117, 116, 115, 114, 111, 110, 109, 108, 107, 106,
- 105, 104, 103, 102, 101, 100, 99, 52, 48, 52,
- 44, 42, 41, 95, 94, 85, 80, 68, 53, 52,
- 44, 42, 41, 289, 3, 289, 289, 289, 289, 289,
-
- 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289
+ 57, 57, 57, 299, 74, 57, 75, 92, 299, 86,
+ 76, 57, 57, 57, 57, 57, 57, 87, 93, 94,
+ 54, 54, 88, 89, 90, 95, 120, 91, 299, 299,
+ 130, 155, 299, 156, 165, 131, 166, 157, 299, 299,
+ 207, 121, 208, 229, 58, 230, 209, 45, 298, 297,
+ 296, 295, 299, 294, 293, 292, 291, 290, 289, 288,
+
+ 287, 286, 299, 285, 284, 283, 269, 43, 282, 43,
+ 43, 43, 43, 51, 51, 51, 49, 49, 49, 99,
+ 281, 99, 100, 100, 100, 100, 280, 279, 278, 277,
+ 276, 275, 274, 273, 272, 271, 270, 268, 267, 266,
+ 265, 264, 263, 262, 261, 260, 259, 258, 257, 256,
+ 255, 254, 253, 252, 251, 250, 249, 248, 247, 246,
+ 245, 244, 243, 242, 241, 239, 238, 237, 236, 235,
+ 234, 233, 232, 231, 228, 227, 226, 225, 224, 223,
+ 222, 221, 220, 219, 218, 217, 216, 215, 214, 213,
+ 212, 211, 210, 206, 205, 204, 203, 202, 201, 200,
+
+ 199, 198, 197, 196, 195, 194, 193, 192, 191, 190,
+ 189, 188, 187, 186, 185, 184, 183, 182, 181, 180,
+ 178, 177, 176, 175, 174, 173, 172, 171, 170, 169,
+ 168, 167, 164, 163, 162, 161, 160, 159, 158, 154,
+ 153, 152, 151, 150, 149, 148, 147, 146, 145, 144,
+ 143, 142, 141, 140, 139, 138, 137, 136, 135, 134,
+ 133, 132, 129, 128, 127, 126, 125, 124, 123, 122,
+ 119, 118, 117, 116, 113, 112, 111, 110, 109, 108,
+ 107, 106, 105, 104, 103, 102, 101, 52, 48, 52,
+ 44, 42, 41, 97, 96, 85, 80, 68, 53, 52,
+
+ 44, 42, 41, 299, 3, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299
} ;
-static const flex_int16_t yy_chk[445] =
+static const flex_int16_t yy_chk[455] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -932,56 +937,57 @@ static const flex_int16_t yy_chk[445] =
15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
15, 25, 15, 33, 33, 23, 15, 15, 15, 15,
15, 15, 23, 24, 23, 29, 26, 25, 24, 28,
- 298, 297, 29, 16, 26, 28, 15, 19, 19, 72,
+ 308, 307, 29, 16, 26, 28, 15, 19, 19, 72,
31, 34, 28, 72, 31, 19, 34, 19, 19, 19,
19, 19, 19, 19, 19, 19, 31, 19, 19, 19,
- 293, 19, 19, 19, 19, 19, 19, 19, 19, 19,
+ 303, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 30, 20, 30, 37, 47, 291,
+ 20, 20, 20, 20, 30, 20, 30, 37, 47, 36,
30, 20, 20, 20, 20, 20, 20, 36, 37, 38,
- 54, 54, 77, 36, 36, 38, 285, 36, 55, 55,
- 246, 246, 47, 114, 125, 114, 125, 77, 283, 114,
- 169, 193, 169, 193, 54, 282, 169, 279, 278, 277,
- 276, 274, 55, 273, 246, 270, 269, 268, 246, 290,
-
- 267, 290, 290, 290, 290, 292, 292, 292, 294, 294,
- 294, 295, 265, 295, 296, 296, 296, 296, 264, 263,
- 261, 260, 259, 258, 257, 256, 255, 252, 251, 250,
- 249, 248, 247, 245, 244, 243, 241, 240, 238, 237,
- 236, 235, 234, 233, 232, 229, 228, 227, 226, 225,
- 224, 220, 218, 216, 215, 214, 213, 211, 208, 205,
- 203, 202, 201, 200, 199, 197, 196, 194, 192, 191,
- 190, 189, 187, 185, 184, 183, 182, 179, 178, 177,
- 176, 175, 174, 173, 172, 171, 170, 168, 167, 165,
- 164, 163, 162, 159, 158, 157, 156, 155, 154, 153,
-
- 152, 151, 150, 149, 148, 147, 145, 144, 143, 142,
- 140, 139, 138, 136, 135, 134, 133, 132, 131, 130,
- 128, 127, 126, 124, 123, 121, 120, 119, 117, 115,
- 113, 112, 111, 110, 109, 108, 107, 106, 104, 103,
- 102, 99, 96, 95, 94, 93, 92, 91, 90, 89,
- 88, 87, 86, 85, 84, 83, 81, 80, 79, 78,
+ 54, 54, 36, 36, 36, 38, 77, 36, 55, 55,
+ 87, 116, 47, 116, 127, 87, 127, 116, 256, 256,
+ 176, 77, 176, 200, 54, 200, 176, 301, 295, 293,
+ 292, 289, 55, 288, 287, 286, 284, 283, 280, 279,
+
+ 278, 277, 256, 275, 274, 273, 256, 300, 271, 300,
+ 300, 300, 300, 302, 302, 302, 304, 304, 304, 305,
+ 270, 305, 306, 306, 306, 306, 269, 268, 267, 266,
+ 265, 262, 261, 260, 259, 258, 257, 255, 254, 253,
+ 251, 249, 247, 246, 245, 244, 243, 242, 241, 238,
+ 237, 236, 235, 234, 233, 232, 228, 226, 224, 223,
+ 222, 221, 219, 216, 213, 211, 210, 209, 208, 207,
+ 205, 204, 202, 201, 199, 198, 197, 196, 194, 192,
+ 191, 190, 189, 186, 185, 184, 183, 182, 181, 180,
+ 179, 178, 177, 175, 174, 172, 171, 170, 169, 167,
+
+ 164, 163, 162, 161, 160, 159, 158, 157, 156, 155,
+ 154, 153, 152, 150, 149, 148, 147, 145, 144, 143,
+ 141, 140, 139, 138, 137, 136, 135, 133, 131, 130,
+ 129, 128, 126, 125, 123, 122, 121, 119, 117, 115,
+ 114, 113, 112, 111, 110, 109, 108, 106, 105, 104,
+ 101, 98, 97, 96, 95, 94, 93, 92, 91, 90,
+ 89, 88, 86, 85, 84, 83, 81, 80, 79, 78,
76, 75, 74, 73, 71, 70, 69, 68, 67, 66,
65, 64, 63, 62, 61, 60, 59, 51, 49, 48,
43, 42, 41, 40, 39, 35, 32, 27, 18, 17,
- 7, 6, 5, 3, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
- 289, 289, 289, 289
+ 7, 6, 5, 3, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 299, 299, 299
} ;
/* Table of booleans, true if rule could match eol. */
-static const flex_int32_t yy_rule_can_match_eol[67] =
+static const flex_int32_t yy_rule_can_match_eol[70] =
{ 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, 0, 0, };
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
@@ -989,7 +995,7 @@ static char *yy_last_accepting_cpos;
extern int yy_flex_debug;
int yy_flex_debug = 1;
-static const flex_int16_t yy_rule_linenum[66] =
+static const flex_int16_t yy_rule_linenum[69] =
{ 0,
107, 112, 118, 127, 133, 151, 175, 189, 190, 191,
192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
@@ -997,7 +1003,7 @@ static const flex_int16_t yy_rule_linenum[66] =
212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246
+ 242, 243, 244, 245, 246, 247, 248, 249
} ;
/* The intent behind this definition is that it'll catch
@@ -1049,7 +1055,7 @@ namespace {
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::eval::EvalContext::fatal(msg)
-#line 1052 "lexer.cc"
+#line 1058 "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
@@ -1074,8 +1080,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 1077 "lexer.cc"
-#line 1078 "lexer.cc"
+#line 1083 "lexer.cc"
+#line 1084 "lexer.cc"
#define INITIAL 0
@@ -1374,7 +1380,7 @@ YY_DECL
-#line 1377 "lexer.cc"
+#line 1383 "lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1403,13 +1409,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 >= 290 )
+ if ( yy_current_state >= 300 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 289 );
+ while ( yy_current_state != 299 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1438,13 +1444,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 < 66 )
+ else if ( yy_act < 69 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
(long)yy_rule_linenum[yy_act], yytext );
- else if ( yy_act == 66 )
+ else if ( yy_act == 69 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
yytext );
- else if ( yy_act == 67 )
+ else if ( yy_act == 70 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1752,123 +1758,138 @@ return isc::eval::EvalParser::make_IFELSE(loc);
case 44:
YY_RULE_SETUP
#line 225 "lexer.ll"
-return isc::eval::EvalParser::make_TOHEXSTRING(loc);
+return isc::eval::EvalParser::make_SIFELSE(loc);
YY_BREAK
case 45:
YY_RULE_SETUP
#line 226 "lexer.ll"
-return isc::eval::EvalParser::make_ADDRTOTEXT(loc);
+return isc::eval::EvalParser::make_TOHEXSTRING(loc);
YY_BREAK
case 46:
YY_RULE_SETUP
#line 227 "lexer.ll"
-return isc::eval::EvalParser::make_INT8TOTEXT(loc);
+return isc::eval::EvalParser::make_ADDRTOTEXT(loc);
YY_BREAK
case 47:
YY_RULE_SETUP
#line 228 "lexer.ll"
-return isc::eval::EvalParser::make_INT16TOTEXT(loc);
+return isc::eval::EvalParser::make_INT8TOTEXT(loc);
YY_BREAK
case 48:
YY_RULE_SETUP
#line 229 "lexer.ll"
-return isc::eval::EvalParser::make_INT32TOTEXT(loc);
+return isc::eval::EvalParser::make_INT16TOTEXT(loc);
YY_BREAK
case 49:
YY_RULE_SETUP
#line 230 "lexer.ll"
-return isc::eval::EvalParser::make_UINT8TOTEXT(loc);
+return isc::eval::EvalParser::make_INT32TOTEXT(loc);
YY_BREAK
case 50:
YY_RULE_SETUP
#line 231 "lexer.ll"
-return isc::eval::EvalParser::make_UINT16TOTEXT(loc);
+return isc::eval::EvalParser::make_UINT8TOTEXT(loc);
YY_BREAK
case 51:
YY_RULE_SETUP
#line 232 "lexer.ll"
-return isc::eval::EvalParser::make_UINT32TOTEXT(loc);
+return isc::eval::EvalParser::make_UINT16TOTEXT(loc);
YY_BREAK
case 52:
YY_RULE_SETUP
#line 233 "lexer.ll"
-return isc::eval::EvalParser::make_NOT(loc);
+return isc::eval::EvalParser::make_UINT32TOTEXT(loc);
YY_BREAK
case 53:
YY_RULE_SETUP
#line 234 "lexer.ll"
-return isc::eval::EvalParser::make_AND(loc);
+return isc::eval::EvalParser::make_NOT(loc);
YY_BREAK
case 54:
YY_RULE_SETUP
#line 235 "lexer.ll"
-return isc::eval::EvalParser::make_OR(loc);
+return isc::eval::EvalParser::make_AND(loc);
YY_BREAK
case 55:
YY_RULE_SETUP
#line 236 "lexer.ll"
-return isc::eval::EvalParser::make_MEMBER(loc);
+return isc::eval::EvalParser::make_SAND(loc);
YY_BREAK
case 56:
YY_RULE_SETUP
#line 237 "lexer.ll"
-return isc::eval::EvalParser::make_MATCH(loc);
+return isc::eval::EvalParser::make_OR(loc);
YY_BREAK
case 57:
YY_RULE_SETUP
#line 238 "lexer.ll"
-return isc::eval::EvalParser::make_DOT(loc);
+return isc::eval::EvalParser::make_SOR(loc);
YY_BREAK
case 58:
YY_RULE_SETUP
#line 239 "lexer.ll"
-return isc::eval::EvalParser::make_LPAREN(loc);
+return isc::eval::EvalParser::make_MEMBER(loc);
YY_BREAK
case 59:
YY_RULE_SETUP
#line 240 "lexer.ll"
-return isc::eval::EvalParser::make_RPAREN(loc);
+return isc::eval::EvalParser::make_MATCH(loc);
YY_BREAK
case 60:
YY_RULE_SETUP
#line 241 "lexer.ll"
-return isc::eval::EvalParser::make_LBRACKET(loc);
+return isc::eval::EvalParser::make_DOT(loc);
YY_BREAK
case 61:
YY_RULE_SETUP
#line 242 "lexer.ll"
-return isc::eval::EvalParser::make_RBRACKET(loc);
+return isc::eval::EvalParser::make_LPAREN(loc);
YY_BREAK
case 62:
YY_RULE_SETUP
#line 243 "lexer.ll"
-return isc::eval::EvalParser::make_COMA(loc);
+return isc::eval::EvalParser::make_RPAREN(loc);
YY_BREAK
case 63:
YY_RULE_SETUP
#line 244 "lexer.ll"
-return isc::eval::EvalParser::make_ANY(loc);
+return isc::eval::EvalParser::make_LBRACKET(loc);
YY_BREAK
case 64:
YY_RULE_SETUP
#line 245 "lexer.ll"
-return isc::eval::EvalParser::make_PLUS(loc);
+return isc::eval::EvalParser::make_RBRACKET(loc);
YY_BREAK
case 65:
YY_RULE_SETUP
#line 246 "lexer.ll"
+return isc::eval::EvalParser::make_COMA(loc);
+ YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 247 "lexer.ll"
+return isc::eval::EvalParser::make_ANY(loc);
+ YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 248 "lexer.ll"
+return isc::eval::EvalParser::make_PLUS(loc);
+ YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 249 "lexer.ll"
driver.error (loc, "Invalid character: " + std::string(evaltext));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 247 "lexer.ll"
+#line 250 "lexer.ll"
return isc::eval::EvalParser::make_END(loc);
YY_BREAK
-case 66:
+case 69:
YY_RULE_SETUP
-#line 248 "lexer.ll"
+#line 251 "lexer.ll"
ECHO;
YY_BREAK
-#line 1871 "lexer.cc"
+#line 1892 "lexer.cc"
case YY_END_OF_BUFFER:
{
@@ -2187,7 +2208,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 >= 290 )
+ if ( yy_current_state >= 300 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2220,11 +2241,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 >= 290 )
+ if ( yy_current_state >= 300 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 289);
+ yy_is_jam = (yy_current_state == 299);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2980,7 +3001,7 @@ void yyfree (void * ptr )
/* %ok-for-header */
-#line 248 "lexer.ll"
+#line 251 "lexer.ll"
using namespace isc::eval;
diff --git a/src/lib/eval/location.hh b/src/lib/eval/location.hh
index 5bde47985a..f9224dbcea 100644
--- a/src/lib/eval/location.hh
+++ b/src/lib/eval/location.hh
@@ -1,3 +1,4 @@
+// Generated 202408071754
// A Bison parser, made by GNU Bison 3.8.2.
// Locations for Bison parsers in C++
diff --git a/src/lib/eval/parser.cc b/src/lib/eval/parser.cc
index e5db764129..3ddfc8e8d4 100644
--- a/src/lib/eval/parser.cc
+++ b/src/lib/eval/parser.cc
@@ -463,91 +463,91 @@ namespace isc { namespace eval {
switch (yykind)
{
case symbol_kind::S_STRING: // "constant string"
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 469 "parser.cc"
break;
case symbol_kind::S_INTEGER: // "integer"
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 475 "parser.cc"
break;
case symbol_kind::S_HEXSTRING: // "constant hexstring"
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 481 "parser.cc"
break;
case symbol_kind::S_OPTION_NAME: // "option name"
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 487 "parser.cc"
break;
case symbol_kind::S_IP_ADDRESS: // "ip address"
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 493 "parser.cc"
break;
case symbol_kind::S_integer_expr: // integer_expr
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < uint32_t > (); }
#line 499 "parser.cc"
break;
case symbol_kind::S_option_code: // option_code
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < uint16_t > (); }
#line 505 "parser.cc"
break;
case symbol_kind::S_sub_option_code: // sub_option_code
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < uint16_t > (); }
#line 511 "parser.cc"
break;
case symbol_kind::S_option_repr_type: // option_repr_type
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < TokenOption::RepresentationType > (); }
#line 517 "parser.cc"
break;
case symbol_kind::S_nest_level: // nest_level
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < int8_t > (); }
#line 523 "parser.cc"
break;
case symbol_kind::S_pkt_metadata: // pkt_metadata
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt::MetadataType > (); }
#line 529 "parser.cc"
break;
case symbol_kind::S_enterprise_id: // enterprise_id
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < uint32_t > (); }
#line 535 "parser.cc"
break;
case symbol_kind::S_pkt4_field: // pkt4_field
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt4::FieldType > (); }
#line 541 "parser.cc"
break;
case symbol_kind::S_pkt6_field: // pkt6_field
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt6::FieldType > (); }
#line 547 "parser.cc"
break;
case symbol_kind::S_relay6_field: // relay6_field
-#line 130 "parser.yy"
+#line 135 "parser.yy"
{ yyoutput << yysym.value.template as < TokenRelay6Field::FieldType > (); }
#line 553 "parser.cc"
break;
@@ -842,7 +842,7 @@ namespace isc { namespace eval {
switch (yyn)
{
case 6: // bool_expr: "not" bool_expr
-#line 150 "parser.yy"
+#line 155 "parser.yy"
{
TokenPtr neg(new TokenNot());
ctx.expression.push_back(neg);
@@ -851,7 +851,7 @@ namespace isc { namespace eval {
break;
case 7: // bool_expr: bool_expr "and" bool_expr
-#line 155 "parser.yy"
+#line 160 "parser.yy"
{
TokenPtr neg(new TokenAnd());
ctx.expression.push_back(neg);
@@ -859,44 +859,62 @@ namespace isc { namespace eval {
#line 860 "parser.cc"
break;
- case 8: // bool_expr: bool_expr "or" bool_expr
-#line 160 "parser.yy"
+ case 8: // bool_expr: bool_expr "sand" bool_expr
+#line 165 "parser.yy"
{
- TokenPtr neg(new TokenOr());
+ TokenPtr neg(new TokenAnd());
ctx.expression.push_back(neg);
}
#line 869 "parser.cc"
break;
- case 9: // bool_expr: string_expr "==" string_expr
-#line 165 "parser.yy"
+ case 9: // bool_expr: bool_expr "or" bool_expr
+#line 170 "parser.yy"
+ {
+ TokenPtr neg(new TokenOr());
+ ctx.expression.push_back(neg);
+ }
+#line 878 "parser.cc"
+ break;
+
+ case 10: // bool_expr: bool_expr "sor" bool_expr
+#line 175 "parser.yy"
+ {
+ TokenPtr neg(new TokenOr());
+ ctx.expression.push_back(neg);
+ }
+#line 887 "parser.cc"
+ break;
+
+ case 11: // bool_expr: string_expr "==" string_expr
+#line 180 "parser.yy"
{
TokenPtr eq(new TokenEqual());
ctx.expression.push_back(eq);
}
-#line 878 "parser.cc"
+#line 896 "parser.cc"
break;
- case 10: // bool_expr: "option" "[" option_code "]" "." "exists"
-#line 170 "parser.yy"
+ case 12: // bool_expr: "option" "[" option_code "]" "." "exists"
+#line 185 "parser.yy"
{
TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
ctx.expression.push_back(opt);
}
-#line 887 "parser.cc"
+#line 905 "parser.cc"
break;
- case 11: // bool_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." "exists"
-#line 175 "parser.yy"
+ case 13: // bool_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." "exists"
+#line 190 "parser.yy"
{
TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
ctx.expression.push_back(opt);
}
-#line 896 "parser.cc"
+#line 914 "parser.cc"
break;
- case 12: // bool_expr: "relay4" "[" sub_option_code "]" "." "exists"
-#line 180 "parser.yy"
+ case 14: // bool_expr: "relay4" "[" sub_option_code "]" "." "exists"
+#line 195 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V4:
@@ -916,11 +934,11 @@ namespace isc { namespace eval {
error(yystack_[5].location, "relay4 can only be used in DHCPv4.");
}
}
-#line 920 "parser.cc"
+#line 938 "parser.cc"
break;
- case 13: // bool_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." "exists"
-#line 200 "parser.yy"
+ case 15: // bool_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." "exists"
+#line 215 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V6:
@@ -934,11 +952,11 @@ namespace isc { namespace eval {
error(yystack_[10].location, "relay6 can only be used in DHCPv6.");
}
}
-#line 938 "parser.cc"
+#line 956 "parser.cc"
break;
- case 14: // bool_expr: "vendor-class" "[" enterprise_id "]" "." "exists"
-#line 214 "parser.yy"
+ case 16: // bool_expr: "vendor-class" "[" enterprise_id "]" "." "exists"
+#line 229 "parser.yy"
{
// Expression: vendor-class[1234].exists
//
@@ -947,11 +965,11 @@ namespace isc { namespace eval {
TokenPtr exist(new TokenVendorClass(ctx.getUniverse(), yystack_[3].value.as < uint32_t > (), TokenOption::EXISTS));
ctx.expression.push_back(exist);
}
-#line 951 "parser.cc"
+#line 969 "parser.cc"
break;
- case 15: // bool_expr: "vendor" "[" enterprise_id "]" "." "exists"
-#line 223 "parser.yy"
+ case 17: // bool_expr: "vendor" "[" enterprise_id "]" "." "exists"
+#line 238 "parser.yy"
{
// Expression: vendor[1234].exists
//
@@ -960,11 +978,11 @@ namespace isc { namespace eval {
TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[3].value.as < uint32_t > (), TokenOption::EXISTS));
ctx.expression.push_back(exist);
}
-#line 964 "parser.cc"
+#line 982 "parser.cc"
break;
- case 16: // bool_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." "exists"
-#line 232 "parser.yy"
+ case 18: // bool_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." "exists"
+#line 247 "parser.yy"
{
// Expression vendor[1234].option[123].exists
//
@@ -974,11 +992,11 @@ namespace isc { namespace eval {
TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as < uint32_t > (), TokenOption::EXISTS, yystack_[3].value.as < uint16_t > ()));
ctx.expression.push_back(exist);
}
-#line 978 "parser.cc"
+#line 996 "parser.cc"
break;
- case 17: // bool_expr: "member" "(" "constant string" ")"
-#line 242 "parser.yy"
+ case 19: // bool_expr: "member" "(" "constant string" ")"
+#line 257 "parser.yy"
{
// Expression member('foo')
//
@@ -993,11 +1011,11 @@ namespace isc { namespace eval {
TokenPtr member(new TokenMember(cc));
ctx.expression.push_back(member);
}
-#line 997 "parser.cc"
+#line 1015 "parser.cc"
break;
- case 18: // bool_expr: "match" "(" "constant string" "," string_expr ")"
-#line 257 "parser.yy"
+ case 20: // bool_expr: "match" "(" "constant string" "," string_expr ")"
+#line 272 "parser.yy"
{
// Expression match('<regex>', <string_expr>)
//
@@ -1006,56 +1024,56 @@ namespace isc { namespace eval {
TokenPtr match(new TokenMatch(yystack_[3].value.as < std::string > ()));
ctx.expression.push_back(match);
}
-#line 1010 "parser.cc"
+#line 1028 "parser.cc"
break;
- case 19: // string_expr: "constant string"
-#line 268 "parser.yy"
+ case 21: // string_expr: "constant string"
+#line 283 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(str);
}
-#line 1019 "parser.cc"
+#line 1037 "parser.cc"
break;
- case 20: // string_expr: "constant hexstring"
-#line 273 "parser.yy"
+ case 22: // string_expr: "constant hexstring"
+#line 288 "parser.yy"
{
TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(hex);
}
-#line 1028 "parser.cc"
+#line 1046 "parser.cc"
break;
- case 21: // string_expr: "ip address"
-#line 278 "parser.yy"
+ case 23: // string_expr: "ip address"
+#line 293 "parser.yy"
{
TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(ip);
}
-#line 1037 "parser.cc"
+#line 1055 "parser.cc"
break;
- case 22: // string_expr: "option" "[" option_code "]" "." option_repr_type
-#line 283 "parser.yy"
+ case 24: // string_expr: "option" "[" option_code "]" "." option_repr_type
+#line 298 "parser.yy"
{
TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
ctx.expression.push_back(opt);
}
-#line 1046 "parser.cc"
+#line 1064 "parser.cc"
break;
- case 23: // string_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." option_repr_type
-#line 288 "parser.yy"
+ case 25: // string_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." option_repr_type
+#line 303 "parser.yy"
{
TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
ctx.expression.push_back(opt);
}
-#line 1055 "parser.cc"
+#line 1073 "parser.cc"
break;
- case 24: // string_expr: "relay4" "[" sub_option_code "]" "." option_repr_type
-#line 293 "parser.yy"
+ case 26: // string_expr: "relay4" "[" sub_option_code "]" "." option_repr_type
+#line 308 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V4:
@@ -1075,11 +1093,11 @@ namespace isc { namespace eval {
error(yystack_[5].location, "relay4 can only be used in DHCPv4.");
}
}
-#line 1079 "parser.cc"
+#line 1097 "parser.cc"
break;
- case 25: // string_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." option_repr_type
-#line 314 "parser.yy"
+ case 27: // string_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." option_repr_type
+#line 329 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V6:
@@ -1093,20 +1111,20 @@ namespace isc { namespace eval {
error(yystack_[10].location, "relay6 can only be used in DHCPv6.");
}
}
-#line 1097 "parser.cc"
+#line 1115 "parser.cc"
break;
- case 26: // string_expr: "pkt" "." pkt_metadata
-#line 329 "parser.yy"
+ case 28: // string_expr: "pkt" "." pkt_metadata
+#line 344 "parser.yy"
{
TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as < TokenPkt::MetadataType > ()));
ctx.expression.push_back(pkt_metadata);
}
-#line 1106 "parser.cc"
+#line 1124 "parser.cc"
break;
- case 27: // string_expr: "pkt4" "." pkt4_field
-#line 334 "parser.yy"
+ case 29: // string_expr: "pkt4" "." pkt4_field
+#line 349 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V4:
@@ -1120,11 +1138,11 @@ namespace isc { namespace eval {
error(yystack_[2].location, "pkt4 can only be used in DHCPv4.");
}
}
-#line 1124 "parser.cc"
+#line 1142 "parser.cc"
break;
- case 28: // string_expr: "pkt6" "." pkt6_field
-#line 348 "parser.yy"
+ case 30: // string_expr: "pkt6" "." pkt6_field
+#line 363 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V6:
@@ -1138,11 +1156,11 @@ namespace isc { namespace eval {
error(yystack_[2].location, "pkt6 can only be used in DHCPv6.");
}
}
-#line 1142 "parser.cc"
+#line 1160 "parser.cc"
break;
- case 29: // string_expr: "relay6" "[" nest_level "]" "." relay6_field
-#line 362 "parser.yy"
+ case 31: // string_expr: "relay6" "[" nest_level "]" "." relay6_field
+#line 377 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V6:
@@ -1156,146 +1174,155 @@ namespace isc { namespace eval {
error(yystack_[5].location, "relay6 can only be used in DHCPv6.");
}
}
-#line 1160 "parser.cc"
+#line 1178 "parser.cc"
break;
- case 30: // string_expr: "substring" "(" string_expr "," start_expr "," length_expr ")"
-#line 377 "parser.yy"
+ case 32: // string_expr: "substring" "(" string_expr "," start_expr "," length_expr ")"
+#line 392 "parser.yy"
{
TokenPtr sub(new TokenSubstring());
ctx.expression.push_back(sub);
}
-#line 1169 "parser.cc"
+#line 1187 "parser.cc"
break;
- case 31: // string_expr: "split" "(" string_expr "," string_expr "," int_expr ")"
-#line 382 "parser.yy"
+ case 33: // string_expr: "split" "(" string_expr "," string_expr "," int_expr ")"
+#line 397 "parser.yy"
{
TokenPtr split(new TokenSplit());
ctx.expression.push_back(split);
}
-#line 1178 "parser.cc"
+#line 1196 "parser.cc"
break;
- case 32: // string_expr: "concat" "(" string_expr "," string_expr ")"
-#line 387 "parser.yy"
+ case 34: // string_expr: "concat" "(" string_expr "," string_expr ")"
+#line 402 "parser.yy"
{
TokenPtr conc(new TokenConcat());
ctx.expression.push_back(conc);
}
-#line 1187 "parser.cc"
+#line 1205 "parser.cc"
break;
- case 33: // string_expr: string_expr "+" string_expr
-#line 392 "parser.yy"
+ case 35: // string_expr: string_expr "+" string_expr
+#line 407 "parser.yy"
{
TokenPtr conc(new TokenConcat());
ctx.expression.push_back(conc);
}
-#line 1196 "parser.cc"
+#line 1214 "parser.cc"
break;
- case 34: // string_expr: "lcase" "(" string_expr ")"
-#line 397 "parser.yy"
+ case 36: // string_expr: "lcase" "(" string_expr ")"
+#line 412 "parser.yy"
{
TokenPtr lcase(new TokenLowerCase());
ctx.expression.push_back(lcase);
}
-#line 1205 "parser.cc"
+#line 1223 "parser.cc"
break;
- case 35: // string_expr: "ucase" "(" string_expr ")"
-#line 402 "parser.yy"
+ case 37: // string_expr: "ucase" "(" string_expr ")"
+#line 417 "parser.yy"
{
TokenPtr ucase(new TokenUpperCase());
ctx.expression.push_back(ucase);
}
-#line 1214 "parser.cc"
+#line 1232 "parser.cc"
break;
- case 36: // string_expr: "ifelse" "(" bool_expr "," string_expr "," string_expr ")"
-#line 407 "parser.yy"
+ case 38: // string_expr: "ifelse" "(" bool_expr "," string_expr "," string_expr ")"
+#line 422 "parser.yy"
{
TokenPtr cond(new TokenIfElse());
ctx.expression.push_back(cond);
}
-#line 1223 "parser.cc"
+#line 1241 "parser.cc"
break;
- case 37: // string_expr: "hexstring" "(" string_expr "," string_expr ")"
-#line 412 "parser.yy"
+ case 39: // string_expr: "sifelse" "(" bool_expr "," string_expr "," string_expr ")"
+#line 427 "parser.yy"
+ {
+ TokenPtr cond(new TokenIfElse());
+ ctx.expression.push_back(cond);
+ }
+#line 1250 "parser.cc"
+ break;
+
+ case 40: // string_expr: "hexstring" "(" string_expr "," string_expr ")"
+#line 432 "parser.yy"
{
TokenPtr tohex(new TokenToHexString());
ctx.expression.push_back(tohex);
}
-#line 1232 "parser.cc"
+#line 1259 "parser.cc"
break;
- case 38: // string_expr: "addrtotext" "(" string_expr ")"
-#line 417 "parser.yy"
+ case 41: // string_expr: "addrtotext" "(" string_expr ")"
+#line 437 "parser.yy"
{
TokenPtr addrtotext(new TokenIpAddressToText());
ctx.expression.push_back(addrtotext);
}
-#line 1241 "parser.cc"
+#line 1268 "parser.cc"
break;
- case 39: // string_expr: "int8totext" "(" string_expr ")"
-#line 422 "parser.yy"
+ case 42: // string_expr: "int8totext" "(" string_expr ")"
+#line 442 "parser.yy"
{
TokenPtr int8totext(new TokenInt8ToText());
ctx.expression.push_back(int8totext);
}
-#line 1250 "parser.cc"
+#line 1277 "parser.cc"
break;
- case 40: // string_expr: "int16totext" "(" string_expr ")"
-#line 427 "parser.yy"
+ case 43: // string_expr: "int16totext" "(" string_expr ")"
+#line 447 "parser.yy"
{
TokenPtr int16totext(new TokenInt16ToText());
ctx.expression.push_back(int16totext);
}
-#line 1259 "parser.cc"
+#line 1286 "parser.cc"
break;
- case 41: // string_expr: "int32totext" "(" string_expr ")"
-#line 432 "parser.yy"
+ case 44: // string_expr: "int32totext" "(" string_expr ")"
+#line 452 "parser.yy"
{
TokenPtr int32totext(new TokenInt32ToText());
ctx.expression.push_back(int32totext);
}
-#line 1268 "parser.cc"
+#line 1295 "parser.cc"
break;
- case 42: // string_expr: "uint8totext" "(" string_expr ")"
-#line 437 "parser.yy"
+ case 45: // string_expr: "uint8totext" "(" string_expr ")"
+#line 457 "parser.yy"
{
TokenPtr uint8totext(new TokenUInt8ToText());
ctx.expression.push_back(uint8totext);
}
-#line 1277 "parser.cc"
+#line 1304 "parser.cc"
break;
- case 43: // string_expr: "uint16totext" "(" string_expr ")"
-#line 442 "parser.yy"
+ case 46: // string_expr: "uint16totext" "(" string_expr ")"
+#line 462 "parser.yy"
{
TokenPtr uint16totext(new TokenUInt16ToText());
ctx.expression.push_back(uint16totext);
}
-#line 1286 "parser.cc"
+#line 1313 "parser.cc"
break;
- case 44: // string_expr: "uint32totext" "(" string_expr ")"
-#line 447 "parser.yy"
+ case 47: // string_expr: "uint32totext" "(" string_expr ")"
+#line 467 "parser.yy"
{
TokenPtr uint32totext(new TokenUInt32ToText());
ctx.expression.push_back(uint32totext);
}
-#line 1295 "parser.cc"
+#line 1322 "parser.cc"
break;
- case 45: // string_expr: "vendor" "." "enterprise"
-#line 452 "parser.yy"
+ case 48: // string_expr: "vendor" "." "enterprise"
+#line 472 "parser.yy"
{
// expression: vendor.enterprise
//
@@ -1304,11 +1331,11 @@ namespace isc { namespace eval {
TokenPtr vendor(new TokenVendor(ctx.getUniverse(), 0, TokenVendor::ENTERPRISE_ID));
ctx.expression.push_back(vendor);
}
-#line 1308 "parser.cc"
+#line 1335 "parser.cc"
break;
- case 46: // string_expr: "vendor-class" "." "enterprise"
-#line 461 "parser.yy"
+ case 49: // string_expr: "vendor-class" "." "enterprise"
+#line 481 "parser.yy"
{
// expression: vendor-class.enterprise
//
@@ -1318,11 +1345,11 @@ namespace isc { namespace eval {
TokenVendor::ENTERPRISE_ID));
ctx.expression.push_back(vendor);
}
-#line 1322 "parser.cc"
+#line 1349 "parser.cc"
break;
- case 47: // string_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." option_repr_type
-#line 471 "parser.yy"
+ case 50: // string_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." option_repr_type
+#line 491 "parser.yy"
{
// This token will search for vendor option with
// specified enterprise-id. If found, will search
@@ -1331,11 +1358,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 1335 "parser.cc"
+#line 1362 "parser.cc"
break;
- case 48: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data"
-#line 480 "parser.yy"
+ case 51: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data"
+#line 500 "parser.yy"
{
// expression: vendor-class[1234].data
//
@@ -1348,11 +1375,11 @@ namespace isc { namespace eval {
TokenVendor::DATA, 0));
ctx.expression.push_back(vendor_class);
}
-#line 1352 "parser.cc"
+#line 1379 "parser.cc"
break;
- case 49: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" "[" "integer" "]"
-#line 493 "parser.yy"
+ case 52: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" "[" "integer" "]"
+#line 513 "parser.yy"
{
// expression: vendor-class[1234].data[5]
//
@@ -1365,264 +1392,264 @@ namespace isc { namespace eval {
TokenVendor::DATA, index));
ctx.expression.push_back(vendor_class);
}
-#line 1369 "parser.cc"
+#line 1396 "parser.cc"
break;
- case 50: // string_expr: integer_expr
-#line 506 "parser.yy"
+ case 53: // string_expr: integer_expr
+#line 526 "parser.yy"
{
TokenPtr integer(new TokenInteger(yystack_[0].value.as < uint32_t > ()));
ctx.expression.push_back(integer);
}
-#line 1378 "parser.cc"
+#line 1405 "parser.cc"
break;
- case 52: // integer_expr: "integer"
-#line 514 "parser.yy"
+ case 55: // integer_expr: "integer"
+#line 534 "parser.yy"
{
yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1386 "parser.cc"
+#line 1413 "parser.cc"
break;
- case 53: // option_code: "integer"
-#line 520 "parser.yy"
+ case 56: // option_code: "integer"
+#line 540 "parser.yy"
{
yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1394 "parser.cc"
+#line 1421 "parser.cc"
break;
- case 54: // option_code: "option name"
-#line 524 "parser.yy"
+ case 57: // option_code: "option name"
+#line 544 "parser.yy"
{
yylhs.value.as < uint16_t > () = ctx.convertOptionName(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1402 "parser.cc"
+#line 1429 "parser.cc"
break;
- case 55: // sub_option_code: "integer"
-#line 530 "parser.yy"
+ case 58: // sub_option_code: "integer"
+#line 550 "parser.yy"
{
yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1410 "parser.cc"
+#line 1437 "parser.cc"
break;
- case 56: // option_repr_type: "text"
-#line 536 "parser.yy"
+ case 59: // option_repr_type: "text"
+#line 556 "parser.yy"
{
yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::TEXTUAL;
}
-#line 1418 "parser.cc"
+#line 1445 "parser.cc"
break;
- case 57: // option_repr_type: "hex"
-#line 540 "parser.yy"
+ case 60: // option_repr_type: "hex"
+#line 560 "parser.yy"
{
yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL;
}
-#line 1426 "parser.cc"
+#line 1453 "parser.cc"
break;
- case 58: // nest_level: "integer"
-#line 546 "parser.yy"
+ case 61: // nest_level: "integer"
+#line 566 "parser.yy"
{
yylhs.value.as < int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1434 "parser.cc"
+#line 1461 "parser.cc"
break;
- case 59: // pkt_metadata: "iface"
-#line 555 "parser.yy"
+ case 62: // pkt_metadata: "iface"
+#line 575 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::IFACE;
}
-#line 1442 "parser.cc"
+#line 1469 "parser.cc"
break;
- case 60: // pkt_metadata: "src"
-#line 559 "parser.yy"
+ case 63: // pkt_metadata: "src"
+#line 579 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::SRC;
}
-#line 1450 "parser.cc"
+#line 1477 "parser.cc"
break;
- case 61: // pkt_metadata: "dst"
-#line 563 "parser.yy"
+ case 64: // pkt_metadata: "dst"
+#line 583 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::DST;
}
-#line 1458 "parser.cc"
+#line 1485 "parser.cc"
break;
- case 62: // pkt_metadata: "len"
-#line 567 "parser.yy"
+ case 65: // pkt_metadata: "len"
+#line 587 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::LEN;
}
-#line 1466 "parser.cc"
+#line 1493 "parser.cc"
break;
- case 63: // enterprise_id: "integer"
-#line 573 "parser.yy"
+ case 66: // enterprise_id: "integer"
+#line 593 "parser.yy"
{
yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1474 "parser.cc"
+#line 1501 "parser.cc"
break;
- case 64: // enterprise_id: "*"
-#line 577 "parser.yy"
+ case 67: // enterprise_id: "*"
+#line 597 "parser.yy"
{
yylhs.value.as < uint32_t > () = 0;
}
-#line 1482 "parser.cc"
+#line 1509 "parser.cc"
break;
- case 65: // pkt4_field: "mac"
-#line 583 "parser.yy"
+ case 68: // pkt4_field: "mac"
+#line 603 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
}
-#line 1490 "parser.cc"
+#line 1517 "parser.cc"
break;
- case 66: // pkt4_field: "hlen"
-#line 587 "parser.yy"
+ case 69: // pkt4_field: "hlen"
+#line 607 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HLEN;
}
-#line 1498 "parser.cc"
+#line 1525 "parser.cc"
break;
- case 67: // pkt4_field: "htype"
-#line 591 "parser.yy"
+ case 70: // pkt4_field: "htype"
+#line 611 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
}
-#line 1506 "parser.cc"
+#line 1533 "parser.cc"
break;
- case 68: // pkt4_field: "ciaddr"
-#line 595 "parser.yy"
+ case 71: // pkt4_field: "ciaddr"
+#line 615 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
}
-#line 1514 "parser.cc"
+#line 1541 "parser.cc"
break;
- case 69: // pkt4_field: "giaddr"
-#line 599 "parser.yy"
+ case 72: // pkt4_field: "giaddr"
+#line 619 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
}
-#line 1522 "parser.cc"
+#line 1549 "parser.cc"
break;
- case 70: // pkt4_field: "yiaddr"
-#line 603 "parser.yy"
+ case 73: // pkt4_field: "yiaddr"
+#line 623 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
}
-#line 1530 "parser.cc"
+#line 1557 "parser.cc"
break;
- case 71: // pkt4_field: "siaddr"
-#line 607 "parser.yy"
+ case 74: // pkt4_field: "siaddr"
+#line 627 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
}
-#line 1538 "parser.cc"
+#line 1565 "parser.cc"
break;
- case 72: // pkt4_field: "msgtype"
-#line 611 "parser.yy"
+ case 75: // pkt4_field: "msgtype"
+#line 631 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE;
}
-#line 1546 "parser.cc"
+#line 1573 "parser.cc"
break;
- case 73: // pkt4_field: "transid"
-#line 615 "parser.yy"
+ case 76: // pkt4_field: "transid"
+#line 635 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::TRANSID;
}
-#line 1554 "parser.cc"
+#line 1581 "parser.cc"
break;
- case 74: // pkt6_field: "msgtype"
-#line 621 "parser.yy"
+ case 77: // pkt6_field: "msgtype"
+#line 641 "parser.yy"
{
yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE;
}
-#line 1562 "parser.cc"
+#line 1589 "parser.cc"
break;
- case 75: // pkt6_field: "transid"
-#line 625 "parser.yy"
+ case 78: // pkt6_field: "transid"
+#line 645 "parser.yy"
{
yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::TRANSID;
}
-#line 1570 "parser.cc"
+#line 1597 "parser.cc"
break;
- case 76: // relay6_field: "peeraddr"
-#line 631 "parser.yy"
+ case 79: // relay6_field: "peeraddr"
+#line 651 "parser.yy"
{
yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR;
}
-#line 1578 "parser.cc"
+#line 1605 "parser.cc"
break;
- case 77: // relay6_field: "linkaddr"
-#line 635 "parser.yy"
+ case 80: // relay6_field: "linkaddr"
+#line 655 "parser.yy"
{
yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR;
}
-#line 1586 "parser.cc"
+#line 1613 "parser.cc"
break;
- case 78: // start_expr: "integer"
-#line 641 "parser.yy"
+ case 81: // start_expr: "integer"
+#line 661 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(str);
}
-#line 1595 "parser.cc"
+#line 1622 "parser.cc"
break;
- case 79: // length_expr: "integer"
-#line 648 "parser.yy"
+ case 82: // length_expr: "integer"
+#line 668 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(str);
}
-#line 1604 "parser.cc"
+#line 1631 "parser.cc"
break;
- case 80: // length_expr: "all"
-#line 653 "parser.yy"
+ case 83: // length_expr: "all"
+#line 673 "parser.yy"
{
TokenPtr str(new TokenString("all"));
ctx.expression.push_back(str);
}
-#line 1613 "parser.cc"
+#line 1640 "parser.cc"
break;
- case 81: // int_expr: "integer"
-#line 659 "parser.yy"
+ case 84: // int_expr: "integer"
+#line 679 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(str);
}
-#line 1622 "parser.cc"
+#line 1649 "parser.cc"
break;
-#line 1626 "parser.cc"
+#line 1653 "parser.cc"
default:
break;
@@ -1974,39 +2001,40 @@ namespace isc { namespace eval {
}
- const short EvalParser::yypact_ninf_ = -164;
+ const short EvalParser::yypact_ninf_ = -172;
const signed char EvalParser::yytable_ninf_ = -1;
const short
EvalParser::yypact_[] =
{
- 55, 124, 182, 22, 124, 124, 56, 59, 68, 27,
- 108, 115, 45, 100, 154, 157, 160, 178, 181, 186,
- 210, 211, 212, 215, 216, 218, 217, 83, 111, 232,
- -164, -164, -164, -164, -164, 131, 10, -164, 182, 223,
- 224, 225, 165, 179, 202, -164, 19, 0, -164, 132,
- 180, 184, 187, 96, 61, 182, 182, 182, 124, 182,
- 182, 182, 182, 182, 182, 182, 182, 182, 182, 91,
- -36, 192, -36, 193, 190, 124, 124, 182, 182, 2,
- 132, 180, 184, -36, -36, -164, -164, -164, -164, 226,
- -164, 237, -164, 238, 251, -164, -164, -164, -164, -164,
- -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
- 162, 163, 167, 80, 168, 5, 6, 7, 8, 11,
- 12, 13, 17, 29, -164, -164, -164, -164, -164, 240,
- -164, 241, -164, 221, -164, 253, 202, -164, 244, 245,
- 246, 247, 248, 249, 250, 252, -164, 205, 182, 182,
- 182, 182, -164, -164, -164, -164, -164, -164, -164, -164,
- -164, 254, 255, 182, 256, 257, 258, 259, 260, 86,
- 92, 15, -164, 228, 172, 30, 173, 31, -17, 87,
- 33, 90, 158, 88, 213, 269, 264, -164, -164, -164,
- -164, -164, -164, 265, -164, -164, -164, -31, 219, -164,
- 182, -164, -164, 266, 268, -164, -164, 270, 271, 272,
- 180, 180, -164, -164, 280, -164, 284, 34, 227, 180,
- 180, 180, 180, 273, 275, -164, -164, -164, 276, 277,
- 278, 279, 281, 282, 283, -164, 285, 286, 287, 288,
- 104, 133, 136, 158, 158, 158, -164, -164, -164, -164,
- -164, -164
+ -45, 147, 207, 44, 147, 147, 57, 61, 98, 116,
+ 105, 126, 148, 171, 203, 208, 230, 235, 236, 237,
+ 238, 239, 242, 243, 245, 259, 260, 166, 74, 108,
+ 263, -172, -172, -172, -172, -172, 132, 7, -172, 207,
+ 250, 251, 252, 162, 163, 94, -172, 114, 1, -172,
+ 120, 204, 205, 210, 138, -4, 207, 207, 207, 147,
+ 147, 207, 207, 207, 207, 207, 207, 207, 207, 207,
+ 207, -32, 45, 217, 45, 218, 212, 147, 147, 147,
+ 147, 207, 207, 2, 120, 204, 205, 45, 45, -172,
+ -172, -172, -172, 262, -172, 264, -172, 265, 277, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, 176, 182, 183, 89, 93, 186,
+ 4, 5, 6, 8, 9, 12, 17, 30, 31, -172,
+ -172, -172, -172, -172, 266, -172, 267, -172, 247, -172,
+ 281, 196, 102, 94, -172, 270, 271, 272, 273, 274,
+ 275, 276, 278, -172, 227, 207, 207, 207, 207, 207,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, 279,
+ 280, 207, 282, 283, 284, 285, 286, 92, 122, 115,
+ -172, 257, 187, 32, 190, 193, 34, -19, 11, 35,
+ 96, 216, 118, 240, 295, 290, -172, -172, -172, -172,
+ -172, -172, 291, -172, -172, -172, -34, 244, -172, 207,
+ 207, -172, -172, 292, 294, -172, -172, 296, 297, 298,
+ 204, 204, -172, -172, 308, -172, 312, 36, 53, 253,
+ 204, 204, 204, 204, 299, 300, -172, -172, -172, -172,
+ 302, 303, 304, 305, 306, 307, 309, -172, 310, 311,
+ 313, 314, 146, 151, 156, 216, 216, 216, -172, -172,
+ -172, -172, -172, -172
};
const signed char
@@ -2015,174 +2043,182 @@ namespace isc { namespace eval {
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,
- 19, 52, 20, 21, 2, 4, 0, 50, 0, 0,
- 0, 0, 0, 0, 3, 1, 0, 0, 6, 0,
+ 0, 21, 55, 22, 23, 2, 4, 0, 53, 0,
+ 0, 0, 0, 0, 0, 3, 1, 0, 0, 6,
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, 5, 51, 53, 54, 0,
- 55, 0, 58, 0, 0, 59, 60, 61, 62, 26,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 27,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 54, 56, 57, 0, 58, 0, 61, 0, 0, 62,
+ 63, 64, 65, 28, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 29, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,
+ 78, 30, 67, 66, 0, 49, 0, 48, 0, 7,
+ 8, 9, 10, 11, 35, 0, 0, 0, 0, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
+ 41, 42, 43, 44, 45, 46, 47, 36, 37, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 74, 75, 28, 64, 63, 0,
- 46, 0, 45, 0, 7, 8, 9, 33, 0, 0,
- 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
- 0, 0, 38, 39, 40, 41, 42, 43, 44, 34,
- 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 78, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 56, 57, 10,
- 22, 12, 24, 0, 76, 77, 29, 0, 0, 32,
- 0, 37, 14, 48, 0, 15, 18, 0, 0, 0,
- 0, 0, 80, 79, 0, 81, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 30, 31, 36, 0, 0,
- 0, 0, 0, 0, 0, 49, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 11, 23, 13, 25,
- 16, 47
+ 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 59, 60, 12, 24,
+ 14, 26, 0, 79, 80, 31, 0, 0, 34, 0,
+ 0, 40, 16, 51, 0, 17, 20, 0, 0, 0,
+ 0, 0, 83, 82, 0, 84, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 33, 38, 39,
+ 0, 0, 0, 0, 0, 0, 0, 52, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 25,
+ 15, 27, 18, 50
};
const short
EvalParser::yypgoto_[] =
{
- -164, -164, -164, 9, -2, -164, 229, -80, -163, 214,
- -164, -41, -164, -164, -164, -164, -164, -164
+ -172, -172, -172, 10, -2, -172, 241, -84, -171, 248,
+ -172, 18, -172, -172, -172, -172, -172, -172
};
const unsigned char
EvalParser::yydefgoto_[] =
{
- 0, 3, 34, 35, 36, 37, 89, 91, 190, 93,
- 99, 129, 109, 126, 196, 173, 214, 216
+ 0, 3, 35, 36, 37, 38, 93, 95, 199, 97,
+ 103, 134, 113, 131, 205, 181, 224, 226
};
- const unsigned char
+ const short
EvalParser::yytable_[] =
{
- 44, 139, 47, 202, 86, 212, 86, 192, 77, 152,
- 153, 154, 155, 46, 48, 156, 157, 158, 77, 192,
- 127, 159, 45, 85, 193, 75, 76, 128, 194, 195,
- 52, 131, 213, 160, 199, 201, 79, 206, 227, 78,
- 203, 78, 141, 142, 78, 78, 78, 78, 55, 78,
- 78, 78, 78, 110, 111, 112, 78, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 113, 78, 78,
- 78, 49, 78, 78, 50, 136, 137, 247, 249, 251,
- 247, 249, 251, 51, 134, 135, 75, 76, 100, 101,
- 102, 103, 104, 105, 106, 186, 204, 208, 70, 207,
- 71, 194, 195, 56, 187, 188, 189, 205, 187, 188,
- 187, 188, 191, 107, 108, 1, 2, 150, 95, 96,
- 97, 98, 187, 188, 246, 53, 72, 4, 73, 5,
- 223, 224, 54, 6, 7, 8, 9, 75, 76, 229,
- 230, 231, 232, 124, 125, 10, 174, 175, 176, 177,
- 11, 187, 188, 248, 187, 188, 250, 57, 12, 13,
- 58, 180, 14, 59, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 187, 188, 27, 28,
- 83, 60, 71, 29, 61, 38, 30, 31, 32, 62,
- 33, 39, 40, 41, 84, 87, 73, 88, 217, 147,
- 148, 78, 78, 10, 149, 151, 78, 78, 11, 198,
- 200, 78, 78, 63, 64, 65, 12, 13, 66, 67,
- 14, 68, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 69, 74, 42, 43, 80, 81,
- 82, 78, 143, 90, 30, 31, 32, 92, 33, 94,
- 130, 132, 133, 144, 145, 146, 161, 162, 163, 75,
- 164, 165, 166, 167, 168, 197, 169, 170, 172, 171,
- 203, 178, 179, 181, 182, 183, 184, 185, 209, 210,
- 211, 218, 215, 219, 225, 220, 221, 222, 226, 233,
- 228, 234, 235, 236, 237, 238, 140, 239, 0, 240,
- 241, 0, 242, 243, 244, 245, 0, 0, 0, 138
+ 45, 146, 48, 212, 222, 90, 90, 201, 160, 161,
+ 162, 81, 163, 164, 47, 49, 165, 81, 1, 2,
+ 201, 166, 214, 129, 130, 104, 105, 106, 107, 108,
+ 109, 110, 223, 215, 167, 168, 208, 83, 211, 216,
+ 238, 213, 82, 82, 46, 82, 82, 82, 82, 82,
+ 82, 111, 112, 82, 114, 115, 116, 239, 82, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 117,
+ 118, 82, 82, 82, 50, 82, 82, 82, 51, 143,
+ 144, 259, 261, 263, 259, 261, 263, 139, 140, 141,
+ 142, 72, 136, 73, 82, 77, 78, 79, 80, 77,
+ 78, 79, 80, 195, 132, 148, 149, 217, 77, 78,
+ 79, 133, 196, 197, 198, 52, 196, 197, 89, 53,
+ 77, 78, 79, 80, 54, 74, 202, 75, 157, 218,
+ 203, 204, 158, 203, 204, 82, 234, 235, 77, 78,
+ 79, 80, 196, 197, 200, 55, 241, 242, 243, 244,
+ 4, 56, 5, 182, 183, 184, 185, 186, 6, 7,
+ 8, 9, 99, 100, 101, 102, 196, 197, 258, 189,
+ 10, 196, 197, 260, 57, 11, 196, 197, 262, 87,
+ 88, 73, 75, 12, 13, 71, 91, 14, 92, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 77, 78, 28, 29, 58, 227, 228, 30,
+ 39, 59, 31, 32, 33, 154, 34, 82, 40, 41,
+ 42, 155, 156, 82, 82, 159, 207, 82, 82, 209,
+ 10, 82, 210, 60, 82, 11, 196, 197, 61, 62,
+ 63, 64, 65, 12, 13, 66, 67, 14, 68, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 69, 70, 43, 44, 76, 84, 85, 86,
+ 94, 96, 31, 32, 33, 98, 34, 138, 135, 137,
+ 150, 153, 151, 152, 169, 170, 171, 77, 172, 173,
+ 174, 175, 176, 180, 177, 178, 206, 179, 187, 188,
+ 213, 190, 191, 192, 193, 194, 219, 220, 221, 229,
+ 225, 230, 236, 231, 232, 233, 237, 245, 246, 240,
+ 247, 248, 249, 250, 251, 145, 252, 0, 253, 254,
+ 255, 0, 256, 257, 147
};
const short
EvalParser::yycheck_[] =
{
- 2, 81, 4, 20, 4, 36, 4, 170, 8, 4,
- 4, 4, 4, 4, 5, 4, 4, 4, 8, 182,
- 56, 4, 0, 4, 9, 6, 7, 63, 13, 14,
- 3, 72, 63, 4, 4, 4, 38, 4, 4, 39,
- 57, 39, 83, 84, 39, 39, 39, 39, 3, 39,
- 39, 39, 39, 55, 56, 57, 39, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 58, 39, 39,
- 39, 15, 39, 39, 15, 77, 78, 240, 241, 242,
- 243, 244, 245, 15, 75, 76, 6, 7, 27, 28,
- 29, 30, 31, 32, 33, 9, 9, 9, 15, 9,
- 17, 13, 14, 3, 18, 19, 20, 20, 18, 19,
- 18, 19, 20, 52, 53, 60, 61, 37, 22, 23,
- 24, 25, 18, 19, 20, 17, 15, 3, 17, 5,
- 210, 211, 17, 9, 10, 11, 12, 6, 7, 219,
- 220, 221, 222, 52, 53, 21, 148, 149, 150, 151,
- 26, 18, 19, 20, 18, 19, 20, 3, 34, 35,
- 3, 163, 38, 3, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 18, 19, 54, 55,
- 15, 3, 17, 59, 3, 3, 62, 63, 64, 3,
- 66, 9, 10, 11, 15, 63, 17, 65, 200, 37,
- 37, 39, 39, 21, 37, 37, 39, 39, 26, 37,
- 37, 39, 39, 3, 3, 3, 34, 35, 3, 3,
- 38, 3, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 17, 3, 54, 55, 15, 15,
- 15, 39, 16, 63, 62, 63, 64, 63, 66, 62,
- 58, 58, 62, 16, 16, 4, 16, 16, 37, 6,
- 16, 16, 16, 16, 16, 37, 17, 17, 63, 17,
- 57, 17, 17, 17, 17, 17, 17, 17, 9, 15,
- 15, 15, 63, 15, 4, 15, 15, 15, 4, 16,
- 63, 16, 16, 16, 16, 16, 82, 16, -1, 17,
- 17, -1, 17, 17, 17, 17, -1, -1, -1, 80
+ 2, 85, 4, 22, 38, 4, 4, 178, 4, 4,
+ 4, 10, 4, 4, 4, 5, 4, 10, 63, 64,
+ 191, 4, 11, 55, 56, 29, 30, 31, 32, 33,
+ 34, 35, 66, 22, 4, 4, 4, 39, 4, 4,
+ 4, 60, 41, 41, 0, 41, 41, 41, 41, 41,
+ 41, 55, 56, 41, 56, 57, 58, 4, 41, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 59,
+ 60, 41, 41, 41, 17, 41, 41, 41, 17, 81,
+ 82, 252, 253, 254, 255, 256, 257, 77, 78, 79,
+ 80, 17, 74, 19, 41, 6, 7, 8, 9, 6,
+ 7, 8, 9, 11, 59, 87, 88, 11, 6, 7,
+ 8, 66, 20, 21, 22, 17, 20, 21, 4, 3,
+ 6, 7, 8, 9, 19, 17, 11, 19, 39, 11,
+ 15, 16, 39, 15, 16, 41, 220, 221, 6, 7,
+ 8, 9, 20, 21, 22, 19, 230, 231, 232, 233,
+ 3, 3, 5, 155, 156, 157, 158, 159, 11, 12,
+ 13, 14, 24, 25, 26, 27, 20, 21, 22, 171,
+ 23, 20, 21, 22, 3, 28, 20, 21, 22, 17,
+ 17, 19, 19, 36, 37, 19, 66, 40, 68, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 6, 7, 57, 58, 3, 209, 210, 62,
+ 3, 3, 65, 66, 67, 39, 69, 41, 11, 12,
+ 13, 39, 39, 41, 41, 39, 39, 41, 41, 39,
+ 23, 41, 39, 3, 41, 28, 20, 21, 3, 3,
+ 3, 3, 3, 36, 37, 3, 3, 40, 3, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 3, 3, 57, 58, 3, 17, 17, 17,
+ 66, 66, 65, 66, 67, 65, 69, 65, 61, 61,
+ 18, 4, 18, 18, 18, 18, 39, 6, 18, 18,
+ 18, 18, 18, 66, 19, 19, 39, 19, 19, 19,
+ 60, 19, 19, 19, 19, 19, 11, 17, 17, 17,
+ 66, 17, 4, 17, 17, 17, 4, 18, 18, 66,
+ 18, 18, 18, 18, 18, 84, 19, -1, 19, 19,
+ 19, -1, 19, 19, 86
};
const signed char
EvalParser::yystos_[] =
{
- 0, 60, 61, 68, 3, 5, 9, 10, 11, 12,
- 21, 26, 34, 35, 38, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 54, 55, 59,
- 62, 63, 64, 66, 69, 70, 71, 72, 3, 9,
- 10, 11, 54, 55, 71, 0, 70, 71, 70, 15,
- 15, 15, 3, 17, 17, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 17,
- 15, 17, 15, 17, 3, 6, 7, 8, 39, 71,
- 15, 15, 15, 15, 15, 4, 4, 63, 65, 73,
- 63, 74, 63, 76, 62, 22, 23, 24, 25, 77,
- 27, 28, 29, 30, 31, 32, 33, 52, 53, 79,
- 71, 71, 71, 70, 71, 71, 71, 71, 71, 71,
- 71, 71, 71, 71, 52, 53, 80, 56, 63, 78,
- 58, 78, 58, 62, 70, 70, 71, 71, 73, 74,
- 76, 78, 78, 16, 16, 16, 4, 37, 37, 37,
- 37, 37, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 16, 16, 37, 16, 16, 16, 16, 16, 17,
- 17, 17, 63, 82, 71, 71, 71, 71, 17, 17,
- 71, 17, 17, 17, 17, 17, 9, 18, 19, 20,
- 75, 20, 75, 9, 13, 14, 81, 37, 37, 4,
- 37, 4, 20, 57, 9, 20, 4, 9, 9, 9,
- 15, 15, 36, 63, 83, 63, 84, 71, 15, 15,
- 15, 15, 15, 74, 74, 4, 4, 4, 63, 74,
- 74, 74, 74, 16, 16, 16, 16, 16, 16, 16,
- 17, 17, 17, 17, 17, 17, 20, 75, 20, 75,
- 20, 75
+ 0, 63, 64, 71, 3, 5, 11, 12, 13, 14,
+ 23, 28, 36, 37, 40, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 57, 58,
+ 62, 65, 66, 67, 69, 72, 73, 74, 75, 3,
+ 11, 12, 13, 57, 58, 74, 0, 73, 74, 73,
+ 17, 17, 17, 3, 19, 19, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 19, 17, 19, 17, 19, 3, 6, 7, 8,
+ 9, 10, 41, 74, 17, 17, 17, 17, 17, 4,
+ 4, 66, 68, 76, 66, 77, 66, 79, 65, 24,
+ 25, 26, 27, 80, 29, 30, 31, 32, 33, 34,
+ 35, 55, 56, 82, 74, 74, 74, 73, 73, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 55,
+ 56, 83, 59, 66, 81, 61, 81, 61, 65, 73,
+ 73, 73, 73, 74, 74, 76, 77, 79, 81, 81,
+ 18, 18, 18, 4, 39, 39, 39, 39, 39, 39,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 18,
+ 18, 39, 18, 18, 18, 18, 18, 19, 19, 19,
+ 66, 85, 74, 74, 74, 74, 74, 19, 19, 74,
+ 19, 19, 19, 19, 19, 11, 20, 21, 22, 78,
+ 22, 78, 11, 15, 16, 84, 39, 39, 4, 39,
+ 39, 4, 22, 60, 11, 22, 4, 11, 11, 11,
+ 17, 17, 38, 66, 86, 66, 87, 74, 74, 17,
+ 17, 17, 17, 17, 77, 77, 4, 4, 4, 4,
+ 66, 77, 77, 77, 77, 18, 18, 18, 18, 18,
+ 18, 18, 19, 19, 19, 19, 19, 19, 22, 78,
+ 22, 78, 22, 78
};
const signed char
EvalParser::yyr1_[] =
{
- 0, 67, 68, 68, 69, 70, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70, 70, 71,
- 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
- 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
- 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
- 71, 71, 72, 73, 73, 74, 75, 75, 76, 77,
- 77, 77, 77, 78, 78, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 80, 80, 81, 81, 82, 83,
- 83, 84
+ 0, 70, 71, 71, 72, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 75, 76, 76, 77, 78,
+ 78, 79, 80, 80, 80, 80, 81, 81, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 83, 83, 84,
+ 84, 85, 86, 86, 87
};
const signed char
EvalParser::yyr2_[] =
{
0, 2, 2, 2, 1, 3, 2, 3, 3, 3,
- 6, 11, 6, 11, 6, 6, 11, 4, 6, 1,
- 1, 1, 6, 11, 6, 11, 3, 3, 3, 6,
- 8, 8, 6, 3, 4, 4, 8, 6, 4, 4,
- 4, 4, 4, 4, 4, 3, 3, 11, 6, 9,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 3, 6, 11, 6, 11, 6, 6, 11, 4,
+ 6, 1, 1, 1, 6, 11, 6, 11, 3, 3,
+ 3, 6, 8, 8, 6, 3, 4, 4, 8, 8,
+ 6, 4, 4, 4, 4, 4, 4, 4, 3, 3,
+ 11, 6, 9, 1, 3, 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
};
@@ -2193,24 +2229,24 @@ namespace isc { namespace eval {
const EvalParser::yytname_[] =
{
"\"end of file\"", "error", "\"invalid token\"", "\"(\"", "\")\"",
- "\"not\"", "\"and\"", "\"or\"", "\"==\"", "\"option\"", "\"relay4\"",
- "\"relay6\"", "\"member\"", "\"peeraddr\"", "\"linkaddr\"", "\"[\"",
- "\"]\"", "\".\"", "\"text\"", "\"hex\"", "\"exists\"", "\"pkt\"",
- "\"iface\"", "\"src\"", "\"dst\"", "\"len\"", "\"pkt4\"", "\"mac\"",
- "\"hlen\"", "\"htype\"", "\"ciaddr\"", "\"giaddr\"", "\"yiaddr\"",
- "\"siaddr\"", "\"substring\"", "\"split\"", "\"all\"", "\",\"",
- "\"concat\"", "\"+\"", "\"ifelse\"", "\"hexstring\"", "\"addrtotext\"",
- "\"int8totext\"", "\"int16totext\"", "\"int32totext\"",
- "\"uint8totext\"", "\"uint16totext\"", "\"uint32totext\"", "\"lcase\"",
- "\"ucase\"", "\"pkt6\"", "\"msgtype\"", "\"transid\"",
- "\"vendor-class\"", "\"vendor\"", "\"*\"", "\"data\"", "\"enterprise\"",
- "\"match\"", "\"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",
- "sub_option_code", "option_repr_type", "nest_level", "pkt_metadata",
- "enterprise_id", "pkt4_field", "pkt6_field", "relay6_field",
- "start_expr", "length_expr", "int_expr", YY_NULLPTR
+ "\"not\"", "\"and\"", "\"sand\"", "\"or\"", "\"sor\"", "\"==\"",
+ "\"option\"", "\"relay4\"", "\"relay6\"", "\"member\"", "\"peeraddr\"",
+ "\"linkaddr\"", "\"[\"", "\"]\"", "\".\"", "\"text\"", "\"hex\"",
+ "\"exists\"", "\"pkt\"", "\"iface\"", "\"src\"", "\"dst\"", "\"len\"",
+ "\"pkt4\"", "\"mac\"", "\"hlen\"", "\"htype\"", "\"ciaddr\"",
+ "\"giaddr\"", "\"yiaddr\"", "\"siaddr\"", "\"substring\"", "\"split\"",
+ "\"all\"", "\",\"", "\"concat\"", "\"+\"", "\"ifelse\"", "\"sifelse\"",
+ "\"hexstring\"", "\"addrtotext\"", "\"int8totext\"", "\"int16totext\"",
+ "\"int32totext\"", "\"uint8totext\"", "\"uint16totext\"",
+ "\"uint32totext\"", "\"lcase\"", "\"ucase\"", "\"pkt6\"", "\"msgtype\"",
+ "\"transid\"", "\"vendor-class\"", "\"vendor\"", "\"*\"", "\"data\"",
+ "\"enterprise\"", "\"match\"", "\"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", "sub_option_code", "option_repr_type", "nest_level",
+ "pkt_metadata", "enterprise_id", "pkt4_field", "pkt6_field",
+ "relay6_field", "start_expr", "length_expr", "int_expr", YY_NULLPTR
};
#endif
@@ -2219,15 +2255,15 @@ namespace isc { namespace eval {
const short
EvalParser::yyrline_[] =
{
- 0, 139, 139, 140, 145, 148, 149, 154, 159, 164,
- 169, 174, 179, 199, 213, 222, 231, 241, 256, 267,
- 272, 277, 282, 287, 292, 313, 328, 333, 347, 361,
- 376, 381, 386, 391, 396, 401, 406, 411, 416, 421,
- 426, 431, 436, 441, 446, 451, 460, 470, 479, 492,
- 505, 510, 513, 519, 523, 529, 535, 539, 545, 554,
- 558, 562, 566, 572, 576, 582, 586, 590, 594, 598,
- 602, 606, 610, 614, 620, 624, 630, 634, 640, 647,
- 652, 658
+ 0, 144, 144, 145, 150, 153, 154, 159, 164, 169,
+ 174, 179, 184, 189, 194, 214, 228, 237, 246, 256,
+ 271, 282, 287, 292, 297, 302, 307, 328, 343, 348,
+ 362, 376, 391, 396, 401, 406, 411, 416, 421, 426,
+ 431, 436, 441, 446, 451, 456, 461, 466, 471, 480,
+ 490, 499, 512, 525, 530, 533, 539, 543, 549, 555,
+ 559, 565, 574, 578, 582, 586, 592, 596, 602, 606,
+ 610, 614, 618, 622, 626, 630, 634, 640, 644, 650,
+ 654, 660, 667, 672, 678
};
void
@@ -2260,9 +2296,9 @@ namespace isc { namespace eval {
#line 14 "parser.yy"
} } // isc::eval
-#line 2264 "parser.cc"
+#line 2300 "parser.cc"
-#line 665 "parser.yy"
+#line 685 "parser.yy"
void
isc::eval::EvalParser::error(const location_type& loc,
diff --git a/src/lib/eval/parser.h b/src/lib/eval/parser.h
index 96e2143ca0..b4fedeccc0 100644
--- a/src/lib/eval/parser.h
+++ b/src/lib/eval/parser.h
@@ -512,66 +512,69 @@ namespace isc { namespace eval {
TOKEN_RPAREN = 259, // ")"
TOKEN_NOT = 260, // "not"
TOKEN_AND = 261, // "and"
- TOKEN_OR = 262, // "or"
- TOKEN_EQUAL = 263, // "=="
- TOKEN_OPTION = 264, // "option"
- TOKEN_RELAY4 = 265, // "relay4"
- TOKEN_RELAY6 = 266, // "relay6"
- TOKEN_MEMBER = 267, // "member"
- TOKEN_PEERADDR = 268, // "peeraddr"
- TOKEN_LINKADDR = 269, // "linkaddr"
- TOKEN_LBRACKET = 270, // "["
- TOKEN_RBRACKET = 271, // "]"
- TOKEN_DOT = 272, // "."
- TOKEN_TEXT = 273, // "text"
- TOKEN_HEX = 274, // "hex"
- TOKEN_EXISTS = 275, // "exists"
- TOKEN_PKT = 276, // "pkt"
- TOKEN_IFACE = 277, // "iface"
- TOKEN_SRC = 278, // "src"
- TOKEN_DST = 279, // "dst"
- TOKEN_LEN = 280, // "len"
- TOKEN_PKT4 = 281, // "pkt4"
- TOKEN_CHADDR = 282, // "mac"
- TOKEN_HLEN = 283, // "hlen"
- TOKEN_HTYPE = 284, // "htype"
- TOKEN_CIADDR = 285, // "ciaddr"
- TOKEN_GIADDR = 286, // "giaddr"
- TOKEN_YIADDR = 287, // "yiaddr"
- TOKEN_SIADDR = 288, // "siaddr"
- TOKEN_SUBSTRING = 289, // "substring"
- TOKEN_SPLIT = 290, // "split"
- TOKEN_ALL = 291, // "all"
- TOKEN_COMA = 292, // ","
- TOKEN_CONCAT = 293, // "concat"
- TOKEN_PLUS = 294, // "+"
- TOKEN_IFELSE = 295, // "ifelse"
- TOKEN_TOHEXSTRING = 296, // "hexstring"
- TOKEN_ADDRTOTEXT = 297, // "addrtotext"
- TOKEN_INT8TOTEXT = 298, // "int8totext"
- TOKEN_INT16TOTEXT = 299, // "int16totext"
- TOKEN_INT32TOTEXT = 300, // "int32totext"
- TOKEN_UINT8TOTEXT = 301, // "uint8totext"
- TOKEN_UINT16TOTEXT = 302, // "uint16totext"
- TOKEN_UINT32TOTEXT = 303, // "uint32totext"
- TOKEN_LCASE = 304, // "lcase"
- TOKEN_UCASE = 305, // "ucase"
- TOKEN_PKT6 = 306, // "pkt6"
- TOKEN_MSGTYPE = 307, // "msgtype"
- TOKEN_TRANSID = 308, // "transid"
- TOKEN_VENDOR_CLASS = 309, // "vendor-class"
- TOKEN_VENDOR = 310, // "vendor"
- TOKEN_ANY = 311, // "*"
- TOKEN_DATA = 312, // "data"
- TOKEN_ENTERPRISE = 313, // "enterprise"
- TOKEN_MATCH = 314, // "match"
- TOKEN_TOPLEVEL_BOOL = 315, // "top-level bool"
- TOKEN_TOPLEVEL_STRING = 316, // "top-level string"
- TOKEN_STRING = 317, // "constant string"
- TOKEN_INTEGER = 318, // "integer"
- TOKEN_HEXSTRING = 319, // "constant hexstring"
- TOKEN_OPTION_NAME = 320, // "option name"
- TOKEN_IP_ADDRESS = 321 // "ip address"
+ TOKEN_SAND = 262, // "sand"
+ TOKEN_OR = 263, // "or"
+ TOKEN_SOR = 264, // "sor"
+ TOKEN_EQUAL = 265, // "=="
+ TOKEN_OPTION = 266, // "option"
+ TOKEN_RELAY4 = 267, // "relay4"
+ TOKEN_RELAY6 = 268, // "relay6"
+ TOKEN_MEMBER = 269, // "member"
+ TOKEN_PEERADDR = 270, // "peeraddr"
+ TOKEN_LINKADDR = 271, // "linkaddr"
+ TOKEN_LBRACKET = 272, // "["
+ TOKEN_RBRACKET = 273, // "]"
+ TOKEN_DOT = 274, // "."
+ TOKEN_TEXT = 275, // "text"
+ TOKEN_HEX = 276, // "hex"
+ TOKEN_EXISTS = 277, // "exists"
+ TOKEN_PKT = 278, // "pkt"
+ TOKEN_IFACE = 279, // "iface"
+ TOKEN_SRC = 280, // "src"
+ TOKEN_DST = 281, // "dst"
+ TOKEN_LEN = 282, // "len"
+ TOKEN_PKT4 = 283, // "pkt4"
+ TOKEN_CHADDR = 284, // "mac"
+ TOKEN_HLEN = 285, // "hlen"
+ TOKEN_HTYPE = 286, // "htype"
+ TOKEN_CIADDR = 287, // "ciaddr"
+ TOKEN_GIADDR = 288, // "giaddr"
+ TOKEN_YIADDR = 289, // "yiaddr"
+ TOKEN_SIADDR = 290, // "siaddr"
+ TOKEN_SUBSTRING = 291, // "substring"
+ TOKEN_SPLIT = 292, // "split"
+ TOKEN_ALL = 293, // "all"
+ TOKEN_COMA = 294, // ","
+ TOKEN_CONCAT = 295, // "concat"
+ TOKEN_PLUS = 296, // "+"
+ TOKEN_IFELSE = 297, // "ifelse"
+ TOKEN_SIFELSE = 298, // "sifelse"
+ TOKEN_TOHEXSTRING = 299, // "hexstring"
+ TOKEN_ADDRTOTEXT = 300, // "addrtotext"
+ TOKEN_INT8TOTEXT = 301, // "int8totext"
+ TOKEN_INT16TOTEXT = 302, // "int16totext"
+ TOKEN_INT32TOTEXT = 303, // "int32totext"
+ TOKEN_UINT8TOTEXT = 304, // "uint8totext"
+ TOKEN_UINT16TOTEXT = 305, // "uint16totext"
+ TOKEN_UINT32TOTEXT = 306, // "uint32totext"
+ TOKEN_LCASE = 307, // "lcase"
+ TOKEN_UCASE = 308, // "ucase"
+ TOKEN_PKT6 = 309, // "pkt6"
+ TOKEN_MSGTYPE = 310, // "msgtype"
+ TOKEN_TRANSID = 311, // "transid"
+ TOKEN_VENDOR_CLASS = 312, // "vendor-class"
+ TOKEN_VENDOR = 313, // "vendor"
+ TOKEN_ANY = 314, // "*"
+ TOKEN_DATA = 315, // "data"
+ TOKEN_ENTERPRISE = 316, // "enterprise"
+ TOKEN_MATCH = 317, // "match"
+ TOKEN_TOPLEVEL_BOOL = 318, // "top-level bool"
+ TOKEN_TOPLEVEL_STRING = 319, // "top-level string"
+ TOKEN_STRING = 320, // "constant string"
+ TOKEN_INTEGER = 321, // "integer"
+ TOKEN_HEXSTRING = 322, // "constant hexstring"
+ TOKEN_OPTION_NAME = 323, // "option name"
+ TOKEN_IP_ADDRESS = 324 // "ip address"
};
/// Backward compatibility alias (Bison 3.6).
typedef token_kind_type yytokentype;
@@ -588,7 +591,7 @@ namespace isc { namespace eval {
{
enum symbol_kind_type
{
- YYNTOKENS = 67, ///< Number of tokens.
+ YYNTOKENS = 70, ///< Number of tokens.
S_YYEMPTY = -2,
S_YYEOF = 0, // "end of file"
S_YYerror = 1, // error
@@ -597,84 +600,87 @@ namespace isc { namespace eval {
S_RPAREN = 4, // ")"
S_NOT = 5, // "not"
S_AND = 6, // "and"
- S_OR = 7, // "or"
- S_EQUAL = 8, // "=="
- S_OPTION = 9, // "option"
- S_RELAY4 = 10, // "relay4"
- S_RELAY6 = 11, // "relay6"
- S_MEMBER = 12, // "member"
- S_PEERADDR = 13, // "peeraddr"
- S_LINKADDR = 14, // "linkaddr"
- S_LBRACKET = 15, // "["
- S_RBRACKET = 16, // "]"
- S_DOT = 17, // "."
- S_TEXT = 18, // "text"
- S_HEX = 19, // "hex"
- S_EXISTS = 20, // "exists"
- S_PKT = 21, // "pkt"
- S_IFACE = 22, // "iface"
- S_SRC = 23, // "src"
- S_DST = 24, // "dst"
- S_LEN = 25, // "len"
- S_PKT4 = 26, // "pkt4"
- S_CHADDR = 27, // "mac"
- S_HLEN = 28, // "hlen"
- S_HTYPE = 29, // "htype"
- S_CIADDR = 30, // "ciaddr"
- S_GIADDR = 31, // "giaddr"
- S_YIADDR = 32, // "yiaddr"
- S_SIADDR = 33, // "siaddr"
- S_SUBSTRING = 34, // "substring"
- S_SPLIT = 35, // "split"
- S_ALL = 36, // "all"
- S_COMA = 37, // ","
- S_CONCAT = 38, // "concat"
- S_PLUS = 39, // "+"
- S_IFELSE = 40, // "ifelse"
- S_TOHEXSTRING = 41, // "hexstring"
- S_ADDRTOTEXT = 42, // "addrtotext"
- S_INT8TOTEXT = 43, // "int8totext"
- S_INT16TOTEXT = 44, // "int16totext"
- S_INT32TOTEXT = 45, // "int32totext"
- S_UINT8TOTEXT = 46, // "uint8totext"
- S_UINT16TOTEXT = 47, // "uint16totext"
- S_UINT32TOTEXT = 48, // "uint32totext"
- S_LCASE = 49, // "lcase"
- S_UCASE = 50, // "ucase"
- S_PKT6 = 51, // "pkt6"
- S_MSGTYPE = 52, // "msgtype"
- S_TRANSID = 53, // "transid"
- S_VENDOR_CLASS = 54, // "vendor-class"
- S_VENDOR = 55, // "vendor"
- S_ANY = 56, // "*"
- S_DATA = 57, // "data"
- S_ENTERPRISE = 58, // "enterprise"
- S_MATCH = 59, // "match"
- S_TOPLEVEL_BOOL = 60, // "top-level bool"
- S_TOPLEVEL_STRING = 61, // "top-level string"
- S_STRING = 62, // "constant string"
- S_INTEGER = 63, // "integer"
- S_HEXSTRING = 64, // "constant hexstring"
- S_OPTION_NAME = 65, // "option name"
- S_IP_ADDRESS = 66, // "ip address"
- S_YYACCEPT = 67, // $accept
- S_start = 68, // start
- S_expression = 69, // expression
- S_bool_expr = 70, // bool_expr
- S_string_expr = 71, // string_expr
- S_integer_expr = 72, // integer_expr
- S_option_code = 73, // option_code
- S_sub_option_code = 74, // sub_option_code
- S_option_repr_type = 75, // option_repr_type
- S_nest_level = 76, // nest_level
- S_pkt_metadata = 77, // pkt_metadata
- S_enterprise_id = 78, // enterprise_id
- S_pkt4_field = 79, // pkt4_field
- S_pkt6_field = 80, // pkt6_field
- S_relay6_field = 81, // relay6_field
- S_start_expr = 82, // start_expr
- S_length_expr = 83, // length_expr
- S_int_expr = 84 // int_expr
+ S_SAND = 7, // "sand"
+ S_OR = 8, // "or"
+ S_SOR = 9, // "sor"
+ S_EQUAL = 10, // "=="
+ S_OPTION = 11, // "option"
+ S_RELAY4 = 12, // "relay4"
+ S_RELAY6 = 13, // "relay6"
+ S_MEMBER = 14, // "member"
+ S_PEERADDR = 15, // "peeraddr"
+ S_LINKADDR = 16, // "linkaddr"
+ S_LBRACKET = 17, // "["
+ S_RBRACKET = 18, // "]"
+ S_DOT = 19, // "."
+ S_TEXT = 20, // "text"
+ S_HEX = 21, // "hex"
+ S_EXISTS = 22, // "exists"
+ S_PKT = 23, // "pkt"
+ S_IFACE = 24, // "iface"
+ S_SRC = 25, // "src"
+ S_DST = 26, // "dst"
+ S_LEN = 27, // "len"
+ S_PKT4 = 28, // "pkt4"
+ S_CHADDR = 29, // "mac"
+ S_HLEN = 30, // "hlen"
+ S_HTYPE = 31, // "htype"
+ S_CIADDR = 32, // "ciaddr"
+ S_GIADDR = 33, // "giaddr"
+ S_YIADDR = 34, // "yiaddr"
+ S_SIADDR = 35, // "siaddr"
+ S_SUBSTRING = 36, // "substring"
+ S_SPLIT = 37, // "split"
+ S_ALL = 38, // "all"
+ S_COMA = 39, // ","
+ S_CONCAT = 40, // "concat"
+ S_PLUS = 41, // "+"
+ S_IFELSE = 42, // "ifelse"
+ S_SIFELSE = 43, // "sifelse"
+ S_TOHEXSTRING = 44, // "hexstring"
+ S_ADDRTOTEXT = 45, // "addrtotext"
+ S_INT8TOTEXT = 46, // "int8totext"
+ S_INT16TOTEXT = 47, // "int16totext"
+ S_INT32TOTEXT = 48, // "int32totext"
+ S_UINT8TOTEXT = 49, // "uint8totext"
+ S_UINT16TOTEXT = 50, // "uint16totext"
+ S_UINT32TOTEXT = 51, // "uint32totext"
+ S_LCASE = 52, // "lcase"
+ S_UCASE = 53, // "ucase"
+ S_PKT6 = 54, // "pkt6"
+ S_MSGTYPE = 55, // "msgtype"
+ S_TRANSID = 56, // "transid"
+ S_VENDOR_CLASS = 57, // "vendor-class"
+ S_VENDOR = 58, // "vendor"
+ S_ANY = 59, // "*"
+ S_DATA = 60, // "data"
+ S_ENTERPRISE = 61, // "enterprise"
+ S_MATCH = 62, // "match"
+ S_TOPLEVEL_BOOL = 63, // "top-level bool"
+ S_TOPLEVEL_STRING = 64, // "top-level string"
+ S_STRING = 65, // "constant string"
+ S_INTEGER = 66, // "integer"
+ S_HEXSTRING = 67, // "constant hexstring"
+ S_OPTION_NAME = 68, // "option name"
+ S_IP_ADDRESS = 69, // "ip address"
+ S_YYACCEPT = 70, // $accept
+ S_start = 71, // start
+ S_expression = 72, // expression
+ S_bool_expr = 73, // bool_expr
+ S_string_expr = 74, // string_expr
+ S_integer_expr = 75, // integer_expr
+ S_option_code = 76, // option_code
+ S_sub_option_code = 77, // sub_option_code
+ S_option_repr_type = 78, // option_repr_type
+ S_nest_level = 79, // nest_level
+ S_pkt_metadata = 80, // pkt_metadata
+ S_enterprise_id = 81, // enterprise_id
+ S_pkt4_field = 82, // pkt4_field
+ S_pkt6_field = 83, // pkt6_field
+ S_relay6_field = 84, // relay6_field
+ S_start_expr = 85, // start_expr
+ S_length_expr = 86, // length_expr
+ S_int_expr = 87 // int_expr
};
};
@@ -1237,6 +1243,21 @@ switch (yykind)
#if 201103L <= YY_CPLUSPLUS
static
symbol_type
+ make_SAND (location_type l)
+ {
+ return symbol_type (token::TOKEN_SAND, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SAND (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SAND, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
make_OR (location_type l)
{
return symbol_type (token::TOKEN_OR, std::move (l));
@@ -1252,6 +1273,21 @@ switch (yykind)
#if 201103L <= YY_CPLUSPLUS
static
symbol_type
+ make_SOR (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOR, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOR (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOR, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
make_EQUAL (location_type l)
{
return symbol_type (token::TOKEN_EQUAL, std::move (l));
@@ -1747,6 +1783,21 @@ switch (yykind)
#if 201103L <= YY_CPLUSPLUS
static
symbol_type
+ make_SIFELSE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SIFELSE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SIFELSE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SIFELSE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
make_TOHEXSTRING (location_type l)
{
return symbol_type (token::TOKEN_TOHEXSTRING, std::move (l));
@@ -2164,7 +2215,7 @@ switch (yykind)
/// Stored state numbers (used for stacks).
- typedef unsigned char state_type;
+ typedef short state_type;
/// The arguments of the error message.
int yy_syntax_error_arguments_ (const context& yyctx,
@@ -2220,7 +2271,7 @@ switch (yykind)
// YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
// positive, shift that token. If negative, reduce the rule whose
// number is the opposite. If YYTABLE_NINF, syntax error.
- static const unsigned char yytable_[];
+ static const short yytable_[];
static const short yycheck_[];
@@ -2464,9 +2515,9 @@ switch (yykind)
/// Constants.
enum
{
- yylast_ = 309, ///< Last index in yytable_.
+ yylast_ = 334, ///< Last index in yytable_.
yynnts_ = 18, ///< Number of nonterminal symbols.
- yyfinal_ = 45 ///< Termination state number.
+ yyfinal_ = 46 ///< Termination state number.
};
@@ -2517,10 +2568,10 @@ switch (yykind)
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66
+ 65, 66, 67, 68, 69
};
// Last valid token kind.
- const int code_max = 321;
+ const int code_max = 324;
if (t <= 0)
return symbol_kind::S_YYEOF;
@@ -2721,7 +2772,7 @@ switch (yykind)
#line 14 "parser.yy"
} } // isc::eval
-#line 2725 "parser.h"
+#line 2776 "parser.h"