]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1798] Regen flex and bison eval
authorFrancis Dupont <fdupont@isc.org>
Wed, 12 May 2021 09:01:05 +0000 (09:01 +0000)
committerFrancis Dupont <fdupont@isc.org>
Wed, 12 May 2021 09:01:05 +0000 (09:01 +0000)
src/lib/eval/lexer.cc
src/lib/eval/location.hh
src/lib/eval/parser.cc
src/lib/eval/parser.h
src/lib/eval/position.hh
src/lib/eval/stack.hh

index 1dbeed694be8276ef423543605a6bb40b27c2410..82c5b416b01935f26ca80d7278a9e39ec2d2d66b 100644 (file)
@@ -1,6 +1,6 @@
-#line 2 "lexer.cc"
+#line 1 "lexer.cc"
 
-#line 4 "lexer.cc"
+#line 3 "lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
@@ -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 61
-#define YY_END_OF_BUFFER 62
+#define YY_NUM_RULES 62
+#define YY_END_OF_BUFFER 63
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -719,38 +719,38 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[274] =
+static const flex_int16_t yy_accept[275] =
     {   0,
-        0,    0,   62,   60,    1,    2,   60,   54,   55,   59,
-       58,   60,   53,    5,    5,   60,   60,   60,   60,   56,
-       57,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,    1,
-        2,    0,    3,    5,    0,    5,    0,    0,    0,    0,
-        7,    8,    0,    0,    0,    0,    6,    0,    0,    0,
+        0,    0,   63,   61,    1,    2,   61,   54,   55,   59,
+       60,   58,   61,   53,    5,    5,   61,   61,   61,   61,
+       56,   57,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+        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,   51,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    4,    7,    0,   38,   50,    0,    0,    0,
-
-       20,    0,    0,    0,   15,    0,    0,    0,    0,    0,
-       21,    0,   23,    0,    0,   49,    0,    0,   17,    0,
-        0,   19,    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,   22,
-       30,    0,    0,    0,   14,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   25,   18,    0,
+       51,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    4,    7,    0,   38,   50,    0,    0,
+
+        0,   20,    0,    0,    0,   15,    0,    0,    0,    0,
+        0,   21,    0,   23,    0,    0,   49,    0,    0,   17,
+        0,    0,   19,    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,
+       22,   30,    0,    0,    0,   14,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   25,   18,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   26,
-       39,    0,   16,   27,    0,   40,    0,    0,    0,    0,
-
-       52,    0,    9,    0,   10,   11,   29,    0,    0,    0,
-        0,    0,   33,   28,    7,    0,    0,    0,    0,    0,
-        0,    0,   31,    0,    0,   32,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   13,   12,    0,    0,
-        0,    0,    0,    0,    0,   41,    0,    0,    0,   37,
-        0,    0,    0,    0,   42,   36,    0,    0,   43,    0,
-        0,    0,    0,   44,   45,    0,    0,   46,    0,   47,
-       48,   34,    0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       26,   39,    0,   16,   27,    0,   40,    0,    0,    0,
+
+        0,   52,    0,    9,    0,   10,   11,   29,    0,    0,
+        0,    0,    0,   33,   28,    7,    0,    0,    0,    0,
+        0,    0,    0,   31,    0,    0,   32,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   13,   12,    0,
+        0,    0,    0,    0,    0,    0,   41,    0,    0,    0,
+       37,    0,    0,    0,    0,   42,   36,    0,    0,   43,
+        0,    0,    0,    0,   44,   45,    0,    0,   46,    0,
+       47,   48,   34,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -759,16 +759,16 @@ static const YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    2,    1,    1,    1,    1,    1,    1,    4,    5,
-        6,    7,    1,    8,    9,   10,    1,   11,   12,   13,
-       14,   15,   16,   17,   16,   18,   16,   19,    1,    1,
-       20,    1,    1,    1,   21,   21,   21,   21,   21,   21,
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,   22,   22,   22,   23,   22,   22,
-       24,    1,   25,    1,   26,    1,   27,   28,   29,   30,
-
-       31,   32,   33,   34,   35,   22,   36,   37,   38,   39,
-       40,   41,   22,   42,   43,   44,   45,   46,   22,   47,
-       48,   22,    1,    1,    1,    1,    1,    1,    1,    1,
+        6,    7,    8,    9,   10,   11,    1,   12,   13,   14,
+       15,   16,   17,   18,   17,   19,   17,   20,    1,    1,
+       21,    1,    1,    1,   22,   22,   22,   22,   22,   22,
+       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
+       23,   23,   23,   23,   23,   23,   23,   24,   23,   23,
+       25,    1,   26,    1,   27,    1,   28,   29,   30,   31,
+
+       32,   33,   34,   35,   36,   23,   37,   38,   39,   40,
+       41,   42,   23,   43,   44,   45,   46,   47,   23,   48,
+       49,   23,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -785,194 +785,194 @@ static const YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static const YY_CHAR yy_meta[49] =
+static const YY_CHAR yy_meta[50] =
     {   0,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    3,
-        4,    4,    4,    4,    4,    4,    4,    4,    5,    1,
-        6,    1,    1,    1,    1,    1,    6,    6,    6,    6,
-        6,    6,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        3,    4,    4,    4,    4,    4,    4,    4,    4,    5,
+        1,    6,    1,    1,    1,    1,    1,    6,    6,    6,
+        6,    6,    6,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[283] =
+static const flex_int16_t yy_base[284] =
     {   0,
-        0,    0,  378,  379,  375,  373,  371,  379,  379,  379,
-      379,    0,  379,   39,   36,  355,  353,   85,  123,  379,
-      379,   35,   38,   34,   37,  337,   48,   43,   58,  116,
-      331,   22,   59,  339,  121,   49,  334,  337,  332,  364,
-      362,  360,  379,    0,    0,   58,  344,  343,    0,  342,
-        0,  379,  143,  146,    0,    0,  379,  330,  322,  328,
-      330,  317,  311,  310,  309,  317,  324,  303,  318,  300,
-      130,  303,  307,  306,  315,  305,  309,  297,  296,    0,
-      308,  294,  300,  309,  306,  306,  286,  305,  292,  291,
-      302,  318,    0,    0,  285,    0,    0,  296,  296,  297,
-
-        0,  292,  279,  291,  277,  280,  277,  288,  279,  146,
-        0,  279,    0,  286,  269,    0,  277,  269,  150,  283,
-      279,    0,  265,  263,  267,  261,  274,  273,    0,  258,
-      271,  273,    0,  257,  254,  267,  252,    0,  264,  263,
-      250,  275,  278,  246,  262,  257,  239,  246,  258,    0,
-        0,  236,  253,  238,    0,  238,  158,  240,  249,  268,
-      237,  234,  231,  233,  230,  230,  229,    0,    0,  239,
-      225,  224,  227,  236,  223,  223,  224,  232,  158,  219,
-      218,  224,  241,  244,  212,  213,  212,    0,  209,    0,
-        0,  210,    0,    0,  216,    0,  210,  209,  204,  217,
-
-        0,  215,    0,  215,    0,    0,    0,  209,  213,  198,
-      197,  200,  230,    0,    0,  207,  202,  197,  191,  190,
-      202,  190,    0,  189,  191,    0,  189,  188,  183,  175,
-      179,  182,  191,  187,  175,  156,    0,    0,  169,  157,
-      155,  167,  160,  152,  164,    0,  147,  146,  148,    0,
-      160,  159,  142,  161,    0,    0,  143,  142,    0,  138,
-      137,  139,  139,    0,    0,  137,  136,    0,  136,    0,
-        0,    0,  379,  204,  170,  207,  165,  210,  213,  217,
-      158,  105
+        0,    0,  379,  380,  376,  374,  372,  380,  380,  380,
+      380,  380,    0,  380,   39,   36,  355,  353,   86,  124,
+      380,  380,   35,   38,   34,   37,  337,   48,   43,   58,
+       63,  331,   22,   60,  339,  115,  116,  334,  337,  332,
+      365,  363,  361,  380,    0,    0,  121,  344,  343,    0,
+      342,    0,  380,  147,  160,    0,    0,  380,  330,  322,
+      328,  330,  317,  311,  310,  309,  317,  324,  303,  318,
+      300,  132,  303,  307,  306,  315,  305,  309,  297,  296,
+        0,  308,  294,  300,  309,  306,  306,  286,  305,  292,
+      291,  302,  318,    0,    0,  285,    0,    0,  296,  296,
+
+      297,    0,  292,  279,  291,  277,  280,  277,  288,  279,
+      152,    0,  279,    0,  286,  269,    0,  277,  269,  150,
+      283,  279,    0,  265,  263,  267,  261,  274,  273,    0,
+      258,  271,  273,    0,  257,  254,  267,  252,    0,  264,
+      263,  250,  275,  278,  246,  262,  257,  239,  246,  258,
+        0,    0,  236,  253,  238,    0,  238,  157,  240,  249,
+      268,  237,  234,  231,  233,  230,  230,  229,    0,    0,
+      239,  225,  224,  227,  236,  223,  223,  224,  232,  159,
+      219,  218,  224,  241,  244,  212,  213,  212,    0,  209,
+        0,    0,  210,    0,    0,  216,    0,  210,  209,  204,
+
+      217,    0,  215,    0,  215,    0,    0,    0,  209,  213,
+      198,  197,  200,  230,    0,    0,  207,  202,  197,  191,
+      190,  202,  190,    0,  189,  191,    0,  189,  188,  183,
+      176,  179,  182,  186,  176,  173,  156,    0,    0,  169,
+      156,  155,  167,  160,  152,  164,    0,  147,  146,  148,
+        0,  160,  159,  142,  161,    0,    0,  143,  142,    0,
+      137,  136,  138,  138,    0,    0,  136,  135,    0,  130,
+        0,    0,    0,  380,  206,  143,  209,  107,  212,  215,
+      219,   78,   77
     } ;
 
-static const flex_int16_t yy_def[283] =
+static const flex_int16_t yy_def[284] =
     {   0,
-      273,    1,  273,  273,  273,  273,  274,  273,  273,  273,
-      273,  275,  273,  273,   14,  276,  273,  273,   18,  273,
-      273,   18,   18,   18,   18,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,  273,
-      273,  274,  273,  275,  277,   14,  276,  278,  279,  276,
-      280,  273,  273,   19,   18,   19,  273,   18,   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,   19,   19,
-       19,  277,  279,  280,   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,
-       19,   19,   19,   19,   19,   19,   19,   19,  281,   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,   19,  281,
-       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,  282,   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,  282,   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,   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,    0,  273,  273,  273,  273,  273,  273,  273,
-      273,  273
+      274,    1,  274,  274,  274,  274,  275,  274,  274,  274,
+      274,  274,  276,  274,  274,   15,  277,  274,  274,   19,
+      274,  274,   19,   19,   19,   19,   20,   20,   20,   20,
+       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
+      274,  274,  275,  274,  276,  278,   15,  277,  279,  280,
+      277,  281,  274,  274,   20,   19,   20,  274,   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,  278,  280,  281,   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,  282,
+       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,
+      282,   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,  283,   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,  283,   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,  274,  274,  274,  274,  274,  274,
+      274,  274,  274
     } ;
 
-static const flex_int16_t yy_nxt[428] =
+static const flex_int16_t yy_nxt[430] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
-       14,   15,   15,   15,   15,   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,   37,   38,   19,   39,   45,   46,
-       46,   46,   46,   46,   46,   46,   46,   47,  273,   48,
-       63,   49,   79,   80,   58,   48,   48,   48,   48,   48,
-       48,   59,   61,   60,   71,   65,   64,   62,   68,   87,
-      273,   72,  273,   66,   69,   49,   53,   53,   73,   81,
-       88,   70,   74,   54,   82,   55,   55,   55,   55,   55,
-
-       55,   55,   55,   47,  273,   55,   56,   56,  215,   57,
-       54,   55,   55,   55,   55,   55,   55,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,  273,   75,   56,   53,   53,   76,  273,  273,   56,
-       56,   56,   56,   56,   56,   84,  108,  142,   77,  143,
-      109,  160,   85,  144,  150,   86,  151,   57,   92,  183,
-      273,  184,  205,   44,  206,  185,  273,  273,  272,  271,
-      270,  269,  268,  267,  266,  265,  264,  263,  262,  261,
-      260,  259,  258,  257,  256,  255,  254,  253,  252,  273,
-
-      251,  250,  249,  243,   42,  248,   42,   42,   42,   42,
-       50,   50,   50,   48,   48,   48,   93,  247,   93,   94,
-       94,   94,   94,  246,  245,  244,  242,  241,  240,  239,
-      238,  237,  236,  235,  234,  233,  232,  231,  230,  229,
-      228,  227,  226,  225,  224,  223,  222,  221,  220,  219,
-      218,  217,  216,  214,  213,  212,  211,  210,  209,  208,
-      207,  204,  203,  202,  201,  200,  199,  198,  197,  196,
-      195,  194,  193,  192,  191,  190,  189,  188,  187,  186,
-      182,  181,  180,  179,  178,  177,  176,  175,  174,  173,
-      172,  171,  170,  169,  168,  167,  166,  165,  164,  163,
-
-      162,  161,  159,  158,  157,  156,  155,  154,  153,  152,
-      149,  148,  147,  146,  145,  141,  140,  139,  138,  137,
-      136,  135,  134,  133,  132,  131,  130,  129,  128,  127,
-      126,  125,  124,  123,  122,  121,  120,  119,  118,  117,
-      116,  115,  114,  113,  112,  111,  110,  107,  106,  105,
-      104,  103,  102,  101,  100,   99,   98,   97,   96,   95,
-       51,   47,   51,   43,   41,   40,   91,   90,   89,   83,
-       78,   67,   52,   51,   43,   41,   40,  273,    3,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273
+       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,  274,
+       49,   64,   50,   80,   81,   59,   49,   49,   49,   49,
+       49,   49,   60,   62,   61,   72,   66,   65,   63,   69,
+      216,  161,   73,  274,   67,   70,   50,   54,   54,   74,
+       76,   82,   71,   75,   77,   55,   83,   56,   56,   56,
+
+       56,   56,   56,   56,   56,   48,   78,   56,   57,   57,
+       93,   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,  274,  274,   57,   45,   88,   54,   54,
+       85,   57,   57,   57,   57,   57,   57,   86,   89,  109,
+       87,  274,  274,  110,  143,  151,  144,  152,  274,  184,
+      145,  185,   58,  273,  206,  186,  207,  274,  274,  272,
+      271,  270,  269,  268,  267,  274,  266,  265,  264,  263,
+      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
+
+      252,  274,  251,  250,  249,  244,   43,  248,   43,   43,
+       43,   43,   51,   51,   51,   49,   49,   49,   94,  247,
+       94,   95,   95,   95,   95,  246,  245,  243,  242,  241,
+      240,  239,  238,  237,  236,  235,  234,  233,  232,  231,
+      230,  229,  228,  227,  226,  225,  224,  223,  222,  221,
+      220,  219,  218,  217,  215,  214,  213,  212,  211,  210,
+      209,  208,  205,  204,  203,  202,  201,  200,  199,  198,
+      197,  196,  195,  194,  193,  192,  191,  190,  189,  188,
+      187,  183,  182,  181,  180,  179,  178,  177,  176,  175,
+      174,  173,  172,  171,  170,  169,  168,  167,  166,  165,
+
+      164,  163,  162,  160,  159,  158,  157,  156,  155,  154,
+      153,  150,  149,  148,  147,  146,  142,  141,  140,  139,
+      138,  137,  136,  135,  134,  133,  132,  131,  130,  129,
+      128,  127,  126,  125,  124,  123,  122,  121,  120,  119,
+      118,  117,  116,  115,  114,  113,  112,  111,  108,  107,
+      106,  105,  104,  103,  102,  101,  100,   99,   98,   97,
+       96,   52,   48,   52,   44,   42,   41,   92,   91,   90,
+       84,   79,   68,   53,   52,   44,   42,   41,  274,    3,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274
     } ;
 
-static const flex_int16_t yy_chk[428] =
+static const flex_int16_t yy_chk[430] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   14,   14,
-       14,   14,   14,   14,   14,   14,   14,   14,   15,   14,
-       24,   14,   32,   32,   22,   14,   14,   14,   14,   14,
-       14,   22,   23,   22,   28,   25,   24,   23,   27,   36,
-       46,   28,   15,   25,   27,   14,   18,   18,   29,   33,
-       36,   27,   29,   18,   33,   18,   18,   18,   18,   18,
-
-       18,   18,   18,   18,   46,   18,   18,   18,  282,   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,   19,   19,
-       19,   19,   30,   19,   53,   53,   30,   54,   54,   19,
-       19,   19,   19,   19,   19,   35,   71,  110,   30,  110,
-       71,  281,   35,  110,  119,   35,  119,   53,  277,  157,
-       54,  157,  179,  275,  179,  157,  230,  230,  269,  267,
-      266,  263,  262,  261,  260,  258,  257,  254,  253,  252,
-      251,  249,  248,  247,  245,  244,  243,  242,  241,  230,
-
-      240,  239,  236,  230,  274,  235,  274,  274,  274,  274,
-      276,  276,  276,  278,  278,  278,  279,  234,  279,  280,
-      280,  280,  280,  233,  232,  231,  229,  228,  227,  225,
-      224,  222,  221,  220,  219,  218,  217,  216,  213,  212,
-      211,  210,  209,  208,  204,  202,  200,  199,  198,  197,
-      195,  192,  189,  187,  186,  185,  184,  183,  182,  181,
-      180,  178,  177,  176,  175,  174,  173,  172,  171,  170,
-      167,  166,  165,  164,  163,  162,  161,  160,  159,  158,
-      156,  154,  153,  152,  149,  148,  147,  146,  145,  144,
-      143,  142,  141,  140,  139,  137,  136,  135,  134,  132,
-
-      131,  130,  128,  127,  126,  125,  124,  123,  121,  120,
-      118,  117,  115,  114,  112,  109,  108,  107,  106,  105,
-      104,  103,  102,  100,   99,   98,   95,   92,   91,   90,
-       89,   88,   87,   86,   85,   84,   83,   82,   81,   79,
-       78,   77,   76,   75,   74,   73,   72,   70,   69,   68,
-       67,   66,   65,   64,   63,   62,   61,   60,   59,   58,
-       50,   48,   47,   42,   41,   40,   39,   38,   37,   34,
-       31,   26,   17,   16,    7,    6,    5,    3,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273
+        1,    1,    1,    1,    1,    1,    1,    1,    1,   15,
+       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,
+      283,  282,   29,   16,   26,   28,   15,   19,   19,   30,
+       31,   34,   28,   30,   31,   19,   34,   19,   19,   19,
+
+       19,   19,   19,   19,   19,   19,   31,   19,   19,   19,
+      278,   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,   47,   20,  276,   37,   54,   54,
+       36,   20,   20,   20,   20,   20,   20,   36,   37,   72,
+       36,   55,   55,   72,  111,  120,  111,  120,   47,  158,
+      111,  158,   54,  270,  180,  158,  180,  231,  231,  268,
+      267,  264,  263,  262,  261,   55,  259,  258,  255,  254,
+      253,  252,  250,  249,  248,  246,  245,  244,  243,  242,
+
+      241,  231,  240,  237,  236,  231,  275,  235,  275,  275,
+      275,  275,  277,  277,  277,  279,  279,  279,  280,  234,
+      280,  281,  281,  281,  281,  233,  232,  230,  229,  228,
+      226,  225,  223,  222,  221,  220,  219,  218,  217,  214,
+      213,  212,  211,  210,  209,  205,  203,  201,  200,  199,
+      198,  196,  193,  190,  188,  187,  186,  185,  184,  183,
+      182,  181,  179,  178,  177,  176,  175,  174,  173,  172,
+      171,  168,  167,  166,  165,  164,  163,  162,  161,  160,
+      159,  157,  155,  154,  153,  150,  149,  148,  147,  146,
+      145,  144,  143,  142,  141,  140,  138,  137,  136,  135,
+
+      133,  132,  131,  129,  128,  127,  126,  125,  124,  122,
+      121,  119,  118,  116,  115,  113,  110,  109,  108,  107,
+      106,  105,  104,  103,  101,  100,   99,   96,   93,   92,
+       91,   90,   89,   88,   87,   86,   85,   84,   83,   82,
+       80,   79,   78,   77,   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,   38,
+       35,   32,   27,   18,   17,    7,    6,    5,    3,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static const flex_int32_t yy_rule_can_match_eol[62] =
+static const flex_int32_t yy_rule_can_match_eol[63] =
     {   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,     };
 
 static yy_state_type yy_last_accepting_state;
 static char *yy_last_accepting_cpos;
@@ -980,14 +980,15 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[61] =
+static const flex_int16_t yy_rule_linenum[62] =
     {   0,
       106,  111,  117,  127,  133,  151,  175,  189,  190,  191,
       192,  193,  194,  195,  196,  197,  198,  199,  200,  201,
       202,  203,  204,  205,  206,  207,  208,  209,  210,  211,
       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
+      232,  233,  234,  235,  236,  237,  238,  239,  240,  241,
+      242
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -999,7 +1000,7 @@ static const flex_int16_t yy_rule_linenum[61] =
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "lexer.ll"
-/* Copyright (C) 2015-2019 Internet Systems Consortium, Inc. ("ISC")
+/* Copyright (C) 2015-2021 Internet Systems Consortium, Inc. ("ISC")
 
    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -1392,13 +1393,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 >= 274 )
+                               if ( yy_current_state >= 275 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 273 );
+               while ( yy_current_state != 274 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1427,13 +1428,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 < 61 )
+                       else if ( yy_act < 62 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 61 )
+                       else if ( yy_act == 62 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 62 )
+                       else if ( yy_act == 63 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1822,18 +1823,23 @@ return isc::eval::EvalParser::make_ANY(loc);
 case 60:
 YY_RULE_SETUP
 #line 241 "lexer.ll"
+return isc::eval::EvalParser::make_PLUS(loc);
+       YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 242 "lexer.ll"
 driver.error (loc, "Invalid character: " + std::string(evaltext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 242 "lexer.ll"
+#line 243 "lexer.ll"
 return isc::eval::EvalParser::make_END(loc);
        YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 243 "lexer.ll"
+#line 244 "lexer.ll"
 ECHO;
        YY_BREAK
-#line 1837 "lexer.cc"
+#line 1842 "lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -2152,7 +2158,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 >= 274 )
+                       if ( yy_current_state >= 275 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2185,11 +2191,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 >= 274 )
+               if ( yy_current_state >= 275 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 273);
+       yy_is_jam = (yy_current_state == 274);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2945,7 +2951,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 243 "lexer.ll"
+#line 244 "lexer.ll"
 
 
 using namespace isc::eval;
index 42a35b988d0c2fdb0fb3f993d47f6a75d86987f3..57f608dd7ad0f66d35b8e9eb02e1ac47c3689817 100644 (file)
@@ -1,4 +1,5 @@
-// A Bison parser, made by GNU Bison 3.7.5.
+// Generated 202105120856
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Locations for Bison parsers in C++
 
@@ -15,7 +16,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
index a46c710a5fdd661c47a082a19800915335e1b7e1..898f2040a6da896dd1bbb29a6474b47207d9235a 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.5.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -458,91 +458,91 @@ namespace isc { namespace eval {
         switch (yykind)
     {
       case symbol_kind::S_STRING: // "constant string"
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 464 "parser.cc"
         break;
 
       case symbol_kind::S_INTEGER: // "integer"
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 470 "parser.cc"
         break;
 
       case symbol_kind::S_HEXSTRING: // "constant hexstring"
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 476 "parser.cc"
         break;
 
       case symbol_kind::S_OPTION_NAME: // "option name"
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 482 "parser.cc"
         break;
 
       case symbol_kind::S_IP_ADDRESS: // "ip address"
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 488 "parser.cc"
         break;
 
       case symbol_kind::S_integer_expr: // integer_expr
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < uint32_t > (); }
 #line 494 "parser.cc"
         break;
 
       case symbol_kind::S_option_code: // option_code
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < uint16_t > (); }
 #line 500 "parser.cc"
         break;
 
       case symbol_kind::S_sub_option_code: // sub_option_code
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < uint16_t > (); }
 #line 506 "parser.cc"
         break;
 
       case symbol_kind::S_option_repr_type: // option_repr_type
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenOption::RepresentationType > (); }
 #line 512 "parser.cc"
         break;
 
       case symbol_kind::S_nest_level: // nest_level
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < int8_t > (); }
 #line 518 "parser.cc"
         break;
 
       case symbol_kind::S_pkt_metadata: // pkt_metadata
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt::MetadataType > (); }
 #line 524 "parser.cc"
         break;
 
       case symbol_kind::S_enterprise_id: // enterprise_id
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < uint32_t > (); }
 #line 530 "parser.cc"
         break;
 
       case symbol_kind::S_pkt4_field: // pkt4_field
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt4::FieldType > (); }
 #line 536 "parser.cc"
         break;
 
       case symbol_kind::S_pkt6_field: // pkt6_field
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt6::FieldType > (); }
 #line 542 "parser.cc"
         break;
 
       case symbol_kind::S_relay6_field: // relay6_field
-#line 119 "parser.yy"
+#line 121 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenRelay6Field::FieldType > (); }
 #line 548 "parser.cc"
         break;
@@ -837,7 +837,7 @@ namespace isc { namespace eval {
           switch (yyn)
             {
   case 6: // bool_expr: "not" bool_expr
-#line 139 "parser.yy"
+#line 141 "parser.yy"
                 {
                     TokenPtr neg(new TokenNot());
                     ctx.expression.push_back(neg);
@@ -846,7 +846,7 @@ namespace isc { namespace eval {
     break;
 
   case 7: // bool_expr: bool_expr "and" bool_expr
-#line 144 "parser.yy"
+#line 146 "parser.yy"
                 {
                     TokenPtr neg(new TokenAnd());
                     ctx.expression.push_back(neg);
@@ -855,7 +855,7 @@ namespace isc { namespace eval {
     break;
 
   case 8: // bool_expr: bool_expr "or" bool_expr
-#line 149 "parser.yy"
+#line 151 "parser.yy"
                 {
                     TokenPtr neg(new TokenOr());
                     ctx.expression.push_back(neg);
@@ -864,7 +864,7 @@ namespace isc { namespace eval {
     break;
 
   case 9: // bool_expr: string_expr "==" string_expr
-#line 154 "parser.yy"
+#line 156 "parser.yy"
                 {
                     TokenPtr eq(new TokenEqual());
                     ctx.expression.push_back(eq);
@@ -873,7 +873,7 @@ namespace isc { namespace eval {
     break;
 
   case 10: // bool_expr: "option" "[" option_code "]" "." "exists"
-#line 159 "parser.yy"
+#line 161 "parser.yy"
                 {
                     TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
                     ctx.expression.push_back(opt);
@@ -882,7 +882,7 @@ namespace isc { namespace eval {
     break;
 
   case 11: // bool_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." "exists"
-#line 164 "parser.yy"
+#line 166 "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);
@@ -891,7 +891,7 @@ namespace isc { namespace eval {
     break;
 
   case 12: // bool_expr: "relay4" "[" sub_option_code "]" "." "exists"
-#line 169 "parser.yy"
+#line 171 "parser.yy"
                 {
                    switch (ctx.getUniverse()) {
                    case Option::V4:
@@ -915,7 +915,7 @@ namespace isc { namespace eval {
     break;
 
   case 13: // bool_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." "exists"
-#line 189 "parser.yy"
+#line 191 "parser.yy"
                 {
                     switch (ctx.getUniverse()) {
                     case Option::V6:
@@ -933,7 +933,7 @@ namespace isc { namespace eval {
     break;
 
   case 14: // bool_expr: "vendor-class" "[" enterprise_id "]" "." "exists"
-#line 203 "parser.yy"
+#line 205 "parser.yy"
               {
                   // Expression: vendor-class[1234].exists
                   //
@@ -946,7 +946,7 @@ namespace isc { namespace eval {
     break;
 
   case 15: // bool_expr: "vendor" "[" enterprise_id "]" "." "exists"
-#line 212 "parser.yy"
+#line 214 "parser.yy"
               {
                   // Expression: vendor[1234].exists
                   //
@@ -959,7 +959,7 @@ namespace isc { namespace eval {
     break;
 
   case 16: // bool_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." "exists"
-#line 221 "parser.yy"
+#line 223 "parser.yy"
               {
                   // Expression vendor[1234].option[123].exists
                   //
@@ -973,7 +973,7 @@ namespace isc { namespace eval {
     break;
 
   case 17: // bool_expr: "member" "(" "constant string" ")"
-#line 231 "parser.yy"
+#line 233 "parser.yy"
               {
                   // Expression member('foo')
                   //
@@ -992,7 +992,7 @@ namespace isc { namespace eval {
     break;
 
   case 18: // string_expr: "constant string"
-#line 248 "parser.yy"
+#line 250 "parser.yy"
                   {
                       TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
                       ctx.expression.push_back(str);
@@ -1001,7 +1001,7 @@ namespace isc { namespace eval {
     break;
 
   case 19: // string_expr: "constant hexstring"
-#line 253 "parser.yy"
+#line 255 "parser.yy"
                   {
                       TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ()));
                       ctx.expression.push_back(hex);
@@ -1010,7 +1010,7 @@ namespace isc { namespace eval {
     break;
 
   case 20: // string_expr: "ip address"
-#line 258 "parser.yy"
+#line 260 "parser.yy"
                   {
                       TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ()));
                       ctx.expression.push_back(ip);
@@ -1019,7 +1019,7 @@ namespace isc { namespace eval {
     break;
 
   case 21: // string_expr: "option" "[" option_code "]" "." option_repr_type
-#line 263 "parser.yy"
+#line 265 "parser.yy"
                   {
                       TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
                       ctx.expression.push_back(opt);
@@ -1028,7 +1028,7 @@ namespace isc { namespace eval {
     break;
 
   case 22: // string_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." option_repr_type
-#line 268 "parser.yy"
+#line 270 "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);
@@ -1037,7 +1037,7 @@ namespace isc { namespace eval {
     break;
 
   case 23: // string_expr: "relay4" "[" sub_option_code "]" "." option_repr_type
-#line 273 "parser.yy"
+#line 275 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
                      case Option::V4:
@@ -1061,7 +1061,7 @@ namespace isc { namespace eval {
     break;
 
   case 24: // string_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." option_repr_type
-#line 294 "parser.yy"
+#line 296 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
                      case Option::V6:
@@ -1079,7 +1079,7 @@ namespace isc { namespace eval {
     break;
 
   case 25: // string_expr: "pkt" "." pkt_metadata
-#line 309 "parser.yy"
+#line 311 "parser.yy"
                   {
                       TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as < TokenPkt::MetadataType > ()));
                       ctx.expression.push_back(pkt_metadata);
@@ -1088,7 +1088,7 @@ namespace isc { namespace eval {
     break;
 
   case 26: // string_expr: "pkt4" "." pkt4_field
-#line 314 "parser.yy"
+#line 316 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
                      case Option::V4:
@@ -1106,7 +1106,7 @@ namespace isc { namespace eval {
     break;
 
   case 27: // string_expr: "pkt6" "." pkt6_field
-#line 328 "parser.yy"
+#line 330 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
                      case Option::V6:
@@ -1124,7 +1124,7 @@ namespace isc { namespace eval {
     break;
 
   case 28: // string_expr: "relay6" "[" nest_level "]" "." relay6_field
-#line 342 "parser.yy"
+#line 344 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
                      case Option::V6:
@@ -1142,7 +1142,7 @@ namespace isc { namespace eval {
     break;
 
   case 29: // string_expr: "substring" "(" string_expr "," start_expr "," length_expr ")"
-#line 357 "parser.yy"
+#line 359 "parser.yy"
                   {
                       TokenPtr sub(new TokenSubstring());
                       ctx.expression.push_back(sub);
@@ -1151,7 +1151,7 @@ namespace isc { namespace eval {
     break;
 
   case 30: // string_expr: "concat" "(" string_expr "," string_expr ")"
-#line 362 "parser.yy"
+#line 364 "parser.yy"
                   {
                       TokenPtr conc(new TokenConcat());
                       ctx.expression.push_back(conc);
@@ -1159,89 +1159,98 @@ namespace isc { namespace eval {
 #line 1160 "parser.cc"
     break;
 
-  case 31: // string_expr: "ifelse" "(" bool_expr "," string_expr "," string_expr ")"
-#line 367 "parser.yy"
+  case 31: // string_expr: string_expr "+" string_expr
+#line 369 "parser.yy"
+                  {
+                      TokenPtr conc(new TokenConcat());
+                      ctx.expression.push_back(conc);
+                  }
+#line 1169 "parser.cc"
+    break;
+
+  case 32: // string_expr: "ifelse" "(" bool_expr "," string_expr "," string_expr ")"
+#line 374 "parser.yy"
                   {
                       TokenPtr cond(new TokenIfElse());
                       ctx.expression.push_back(cond);
                   }
-#line 1169 "parser.cc"
+#line 1178 "parser.cc"
     break;
 
-  case 32: // string_expr: "hexstring" "(" string_expr "," string_expr ")"
-#line 372 "parser.yy"
+  case 33: // string_expr: "hexstring" "(" string_expr "," string_expr ")"
+#line 379 "parser.yy"
                   {
                       TokenPtr tohex(new TokenToHexString());
                       ctx.expression.push_back(tohex);
                   }
-#line 1178 "parser.cc"
+#line 1187 "parser.cc"
     break;
 
-  case 33: // string_expr: "addrtotext" "(" string_expr ")"
-#line 377 "parser.yy"
+  case 34: // string_expr: "addrtotext" "(" string_expr ")"
+#line 384 "parser.yy"
                   {
                       TokenPtr addrtotext(new TokenIpAddressToText());
                       ctx.expression.push_back(addrtotext);
                   }
-#line 1187 "parser.cc"
+#line 1196 "parser.cc"
     break;
 
-  case 34: // string_expr: "int8totext" "(" string_expr ")"
-#line 382 "parser.yy"
+  case 35: // string_expr: "int8totext" "(" string_expr ")"
+#line 389 "parser.yy"
                   {
                       TokenPtr int8totext(new TokenInt8ToText());
                       ctx.expression.push_back(int8totext);
                   }
-#line 1196 "parser.cc"
+#line 1205 "parser.cc"
     break;
 
-  case 35: // string_expr: "int16totext" "(" string_expr ")"
-#line 387 "parser.yy"
+  case 36: // string_expr: "int16totext" "(" string_expr ")"
+#line 394 "parser.yy"
                   {
                       TokenPtr int16totext(new TokenInt16ToText());
                       ctx.expression.push_back(int16totext);
                   }
-#line 1205 "parser.cc"
+#line 1214 "parser.cc"
     break;
 
-  case 36: // string_expr: "int32totext" "(" string_expr ")"
-#line 392 "parser.yy"
+  case 37: // string_expr: "int32totext" "(" string_expr ")"
+#line 399 "parser.yy"
                   {
                       TokenPtr int32totext(new TokenInt32ToText());
                       ctx.expression.push_back(int32totext);
                   }
-#line 1214 "parser.cc"
+#line 1223 "parser.cc"
     break;
 
-  case 37: // string_expr: "uint8totext" "(" string_expr ")"
-#line 397 "parser.yy"
+  case 38: // string_expr: "uint8totext" "(" string_expr ")"
+#line 404 "parser.yy"
                   {
                       TokenPtr uint8totext(new TokenUInt8ToText());
                       ctx.expression.push_back(uint8totext);
                   }
-#line 1223 "parser.cc"
+#line 1232 "parser.cc"
     break;
 
-  case 38: // string_expr: "uint16totext" "(" string_expr ")"
-#line 402 "parser.yy"
+  case 39: // string_expr: "uint16totext" "(" string_expr ")"
+#line 409 "parser.yy"
                   {
                       TokenPtr uint16totext(new TokenUInt16ToText());
                       ctx.expression.push_back(uint16totext);
                   }
-#line 1232 "parser.cc"
+#line 1241 "parser.cc"
     break;
 
-  case 39: // string_expr: "uint32totext" "(" string_expr ")"
-#line 407 "parser.yy"
+  case 40: // string_expr: "uint32totext" "(" string_expr ")"
+#line 414 "parser.yy"
                   {
                       TokenPtr uint32totext(new TokenUInt32ToText());
                       ctx.expression.push_back(uint32totext);
                   }
-#line 1241 "parser.cc"
+#line 1250 "parser.cc"
     break;
 
-  case 40: // string_expr: "vendor" "." "enterprise"
-#line 412 "parser.yy"
+  case 41: // string_expr: "vendor" "." "enterprise"
+#line 419 "parser.yy"
                 {
                     // expression: vendor.enterprise
                     //
@@ -1250,11 +1259,11 @@ namespace isc { namespace eval {
                     TokenPtr vendor(new TokenVendor(ctx.getUniverse(), 0, TokenVendor::ENTERPRISE_ID));
                     ctx.expression.push_back(vendor);
                 }
-#line 1254 "parser.cc"
+#line 1263 "parser.cc"
     break;
 
-  case 41: // string_expr: "vendor-class" "." "enterprise"
-#line 421 "parser.yy"
+  case 42: // string_expr: "vendor-class" "." "enterprise"
+#line 428 "parser.yy"
                 {
                     // expression: vendor-class.enterprise
                     //
@@ -1264,11 +1273,11 @@ namespace isc { namespace eval {
                                                          TokenVendor::ENTERPRISE_ID));
                     ctx.expression.push_back(vendor);
                 }
-#line 1268 "parser.cc"
+#line 1277 "parser.cc"
     break;
 
-  case 42: // string_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." option_repr_type
-#line 431 "parser.yy"
+  case 43: // string_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." option_repr_type
+#line 438 "parser.yy"
                 {
                     // This token will search for vendor option with
                     // specified enterprise-id.  If found, will search
@@ -1277,11 +1286,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 1281 "parser.cc"
+#line 1290 "parser.cc"
     break;
 
-  case 43: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data"
-#line 440 "parser.yy"
+  case 44: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data"
+#line 447 "parser.yy"
                 {
                     // expression: vendor-class[1234].data
                     //
@@ -1294,11 +1303,11 @@ namespace isc { namespace eval {
                                                                TokenVendor::DATA, 0));
                     ctx.expression.push_back(vendor_class);
                 }
-#line 1298 "parser.cc"
+#line 1307 "parser.cc"
     break;
 
-  case 44: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" "[" "integer" "]"
-#line 453 "parser.yy"
+  case 45: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" "[" "integer" "]"
+#line 460 "parser.yy"
                 {
                     // expression: vendor-class[1234].data[5]
                     //
@@ -1311,255 +1320,255 @@ namespace isc { namespace eval {
                                                                TokenVendor::DATA, index));
                     ctx.expression.push_back(vendor_class);
                 }
-#line 1315 "parser.cc"
+#line 1324 "parser.cc"
     break;
 
-  case 45: // string_expr: integer_expr
-#line 466 "parser.yy"
+  case 46: // string_expr: integer_expr
+#line 473 "parser.yy"
                 {
                     TokenPtr integer(new TokenInteger(yystack_[0].value.as < uint32_t > ()));
                     ctx.expression.push_back(integer);
                 }
-#line 1324 "parser.cc"
+#line 1333 "parser.cc"
     break;
 
-  case 46: // integer_expr: "integer"
-#line 473 "parser.yy"
+  case 48: // integer_expr: "integer"
+#line 481 "parser.yy"
                  {
                      yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
                  }
-#line 1332 "parser.cc"
+#line 1341 "parser.cc"
     break;
 
-  case 47: // option_code: "integer"
-#line 479 "parser.yy"
+  case 49: // option_code: "integer"
+#line 487 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
                  }
-#line 1340 "parser.cc"
+#line 1349 "parser.cc"
     break;
 
-  case 48: // option_code: "option name"
-#line 483 "parser.yy"
+  case 50: // option_code: "option name"
+#line 491 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionName(yystack_[0].value.as < std::string > (), yystack_[0].location);
                  }
-#line 1348 "parser.cc"
+#line 1357 "parser.cc"
     break;
 
-  case 49: // sub_option_code: "integer"
-#line 489 "parser.yy"
+  case 51: // sub_option_code: "integer"
+#line 497 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
                  }
-#line 1356 "parser.cc"
+#line 1365 "parser.cc"
     break;
 
-  case 50: // option_repr_type: "text"
-#line 495 "parser.yy"
+  case 52: // option_repr_type: "text"
+#line 503 "parser.yy"
                       {
                           yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::TEXTUAL;
                       }
-#line 1364 "parser.cc"
+#line 1373 "parser.cc"
     break;
 
-  case 51: // option_repr_type: "hex"
-#line 499 "parser.yy"
+  case 53: // option_repr_type: "hex"
+#line 507 "parser.yy"
                       {
                           yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL;
                       }
-#line 1372 "parser.cc"
+#line 1381 "parser.cc"
     break;
 
-  case 52: // nest_level: "integer"
-#line 505 "parser.yy"
+  case 54: // nest_level: "integer"
+#line 513 "parser.yy"
                  {
                      yylhs.value.as < int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as < std::string > (), yystack_[0].location);
                  }
-#line 1380 "parser.cc"
+#line 1389 "parser.cc"
     break;
 
-  case 53: // pkt_metadata: "iface"
-#line 514 "parser.yy"
+  case 55: // pkt_metadata: "iface"
+#line 522 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::IFACE;
                   }
-#line 1388 "parser.cc"
+#line 1397 "parser.cc"
     break;
 
-  case 54: // pkt_metadata: "src"
-#line 518 "parser.yy"
+  case 56: // pkt_metadata: "src"
+#line 526 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::SRC;
                   }
-#line 1396 "parser.cc"
+#line 1405 "parser.cc"
     break;
 
-  case 55: // pkt_metadata: "dst"
-#line 522 "parser.yy"
+  case 57: // pkt_metadata: "dst"
+#line 530 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::DST;
                   }
-#line 1404 "parser.cc"
+#line 1413 "parser.cc"
     break;
 
-  case 56: // pkt_metadata: "len"
-#line 526 "parser.yy"
+  case 58: // pkt_metadata: "len"
+#line 534 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::LEN;
                   }
-#line 1412 "parser.cc"
+#line 1421 "parser.cc"
     break;
 
-  case 57: // enterprise_id: "integer"
-#line 532 "parser.yy"
+  case 59: // enterprise_id: "integer"
+#line 540 "parser.yy"
                    {
                        yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
                    }
-#line 1420 "parser.cc"
+#line 1429 "parser.cc"
     break;
 
-  case 58: // enterprise_id: "*"
-#line 536 "parser.yy"
+  case 60: // enterprise_id: "*"
+#line 544 "parser.yy"
                    {
                        yylhs.value.as < uint32_t > () = 0;
                    }
-#line 1428 "parser.cc"
+#line 1437 "parser.cc"
     break;
 
-  case 59: // pkt4_field: "mac"
-#line 542 "parser.yy"
+  case 61: // pkt4_field: "mac"
+#line 550 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
                 }
-#line 1436 "parser.cc"
+#line 1445 "parser.cc"
     break;
 
-  case 60: // pkt4_field: "hlen"
-#line 546 "parser.yy"
+  case 62: // pkt4_field: "hlen"
+#line 554 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HLEN;
                 }
-#line 1444 "parser.cc"
+#line 1453 "parser.cc"
     break;
 
-  case 61: // pkt4_field: "htype"
-#line 550 "parser.yy"
+  case 63: // pkt4_field: "htype"
+#line 558 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
                 }
-#line 1452 "parser.cc"
+#line 1461 "parser.cc"
     break;
 
-  case 62: // pkt4_field: "ciaddr"
-#line 554 "parser.yy"
+  case 64: // pkt4_field: "ciaddr"
+#line 562 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
                 }
-#line 1460 "parser.cc"
+#line 1469 "parser.cc"
     break;
 
-  case 63: // pkt4_field: "giaddr"
-#line 558 "parser.yy"
+  case 65: // pkt4_field: "giaddr"
+#line 566 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
                 }
-#line 1468 "parser.cc"
+#line 1477 "parser.cc"
     break;
 
-  case 64: // pkt4_field: "yiaddr"
-#line 562 "parser.yy"
+  case 66: // pkt4_field: "yiaddr"
+#line 570 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
                 }
-#line 1476 "parser.cc"
+#line 1485 "parser.cc"
     break;
 
-  case 65: // pkt4_field: "siaddr"
-#line 566 "parser.yy"
+  case 67: // pkt4_field: "siaddr"
+#line 574 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
                 }
-#line 1484 "parser.cc"
+#line 1493 "parser.cc"
     break;
 
-  case 66: // pkt4_field: "msgtype"
-#line 570 "parser.yy"
+  case 68: // pkt4_field: "msgtype"
+#line 578 "parser.yy"
                  {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE;
                  }
-#line 1492 "parser.cc"
+#line 1501 "parser.cc"
     break;
 
-  case 67: // pkt4_field: "transid"
-#line 574 "parser.yy"
+  case 69: // pkt4_field: "transid"
+#line 582 "parser.yy"
                  {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::TRANSID;
                  }
-#line 1500 "parser.cc"
+#line 1509 "parser.cc"
     break;
 
-  case 68: // pkt6_field: "msgtype"
-#line 580 "parser.yy"
+  case 70: // pkt6_field: "msgtype"
+#line 588 "parser.yy"
                  {
                      yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE;
                  }
-#line 1508 "parser.cc"
+#line 1517 "parser.cc"
     break;
 
-  case 69: // pkt6_field: "transid"
-#line 584 "parser.yy"
+  case 71: // pkt6_field: "transid"
+#line 592 "parser.yy"
                  {
                      yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::TRANSID;
                  }
-#line 1516 "parser.cc"
+#line 1525 "parser.cc"
     break;
 
-  case 70: // relay6_field: "peeraddr"
-#line 590 "parser.yy"
+  case 72: // relay6_field: "peeraddr"
+#line 598 "parser.yy"
                    {
                        yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR;
                    }
-#line 1524 "parser.cc"
+#line 1533 "parser.cc"
     break;
 
-  case 71: // relay6_field: "linkaddr"
-#line 594 "parser.yy"
+  case 73: // relay6_field: "linkaddr"
+#line 602 "parser.yy"
                    {
                        yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR;
                    }
-#line 1532 "parser.cc"
+#line 1541 "parser.cc"
     break;
 
-  case 72: // start_expr: "integer"
-#line 600 "parser.yy"
+  case 74: // start_expr: "integer"
+#line 608 "parser.yy"
                 {
                     TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
                     ctx.expression.push_back(str);
                 }
-#line 1541 "parser.cc"
+#line 1550 "parser.cc"
     break;
 
-  case 73: // length_expr: "integer"
-#line 607 "parser.yy"
+  case 75: // length_expr: "integer"
+#line 615 "parser.yy"
                  {
                      TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
                      ctx.expression.push_back(str);
                  }
-#line 1550 "parser.cc"
+#line 1559 "parser.cc"
     break;
 
-  case 74: // length_expr: "all"
-#line 612 "parser.yy"
+  case 76: // length_expr: "all"
+#line 620 "parser.yy"
                  {
                      TokenPtr str(new TokenString("all"));
                      ctx.expression.push_back(str);
                  }
-#line 1559 "parser.cc"
+#line 1568 "parser.cc"
     break;
 
 
-#line 1563 "parser.cc"
+#line 1572 "parser.cc"
 
             default:
               break;
@@ -1908,36 +1917,36 @@ namespace isc { namespace eval {
   }
 
 
-  const short EvalParser::yypact_ninf_ = -146;
+  const short EvalParser::yypact_ninf_ = -149;
 
   const signed char EvalParser::yytable_ninf_ = -1;
 
   const short
   EvalParser::yypact_[] =
   {
-      40,   101,   144,     8,   101,   101,    28,    78,    88,    46,
-      90,    92,   102,   105,   111,   112,   115,   116,   117,   118,
-     128,   129,   130,   119,    69,    70,  -146,  -146,  -146,  -146,
-    -146,    91,   126,  -146,   122,   134,   135,    73,    74,  -146,
-    -146,    25,  -146,    34,    98,    99,   104,    52,   -11,   144,
-     144,   101,   144,   144,   144,   144,   144,   144,   144,   144,
-      51,   -24,   109,   -24,   110,   101,   101,   144,    34,    98,
-      99,   -24,   -24,  -146,  -146,  -146,   150,  -146,   151,  -146,
-     152,   165,  -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,
-    -146,  -146,  -146,  -146,  -146,  -146,  -146,   136,   138,     0,
-     139,   167,   172,   173,   175,   176,   188,   189,  -146,  -146,
-    -146,  -146,  -146,   180,  -146,   181,  -146,  -146,   192,  -146,
-     183,   184,   190,   191,   193,   187,   194,   195,  -146,   155,
-     144,   144,   144,  -146,  -146,  -146,  -146,  -146,  -146,  -146,
-     197,   198,   199,   200,   201,   202,   203,     5,    26,    -4,
-    -146,   174,   204,   185,   218,   -18,     6,    21,    83,    50,
-     170,   215,   210,  -146,  -146,  -146,  -146,  -146,  -146,   211,
-    -146,  -146,  -146,   -31,  -146,   144,  -146,  -146,   212,   213,
-    -146,   214,   216,   217,    98,    98,  -146,  -146,   226,   229,
-     177,    98,    98,    98,    98,   220,   221,  -146,  -146,   222,
-     223,   224,   225,   227,   228,   230,  -146,   231,   232,   233,
-     234,    42,    60,    63,    83,    83,    83,  -146,  -146,  -146,
-    -146,  -146,  -146
+     -16,   103,   149,    66,   103,   103,    87,   101,   102,    21,
+     114,   121,   150,   161,   171,   178,   181,   195,   196,   203,
+     210,   211,   212,   152,    72,   124,  -149,  -149,  -149,  -149,
+    -149,    12,    39,  -149,   149,   201,   202,   204,   165,   170,
+     180,  -149,   126,    -1,  -149,   -34,   162,   163,   168,    98,
+      51,   149,   149,   103,   149,   149,   149,   149,   149,   149,
+     149,   149,    43,   -38,   169,   -38,   172,   103,   103,   149,
+     149,     0,   -34,   162,   163,   -38,   -38,  -149,  -149,  -149,
+    -149,   207,  -149,   209,  -149,   213,   216,  -149,  -149,  -149,
+    -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
+    -149,  -149,    69,   166,    29,   167,     1,     4,     5,     6,
+       7,    10,    13,  -149,  -149,  -149,  -149,  -149,   214,  -149,
+     215,  -149,  -149,   222,   180,  -149,   217,   218,   219,   220,
+     221,   223,   224,   225,  -149,   173,   149,   149,   149,  -149,
+    -149,  -149,  -149,  -149,  -149,  -149,   226,   227,   228,   229,
+     230,   231,   232,    76,    91,    77,  -149,   233,    22,   174,
+      24,     9,    11,    79,   138,    90,   184,   241,   236,  -149,
+    -149,  -149,  -149,  -149,  -149,   237,  -149,  -149,  -149,   -13,
+    -149,   149,  -149,  -149,   238,   239,  -149,   240,   242,   243,
+     162,   162,  -149,  -149,   235,    26,   197,   162,   162,   162,
+     162,   244,   245,  -149,  -149,   246,   247,   248,   249,   250,
+     251,   253,  -149,   254,   255,   256,   257,   148,   153,   158,
+     138,   138,   138,  -149,  -149,  -149,  -149,  -149,  -149
   };
 
   const signed char
@@ -1945,144 +1954,148 @@ 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,    18,    46,    19,    20,
-       2,     4,     0,    45,     0,     0,     0,     0,     0,     3,
-       1,     0,     6,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    18,    48,    19,    20,
+       2,     4,     0,    46,     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,     5,    47,    48,     0,    49,     0,    52,
-       0,     0,    53,    54,    55,    56,    25,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    26,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    68,    69,
-      27,    58,    57,     0,    41,     0,    40,     7,     8,     9,
-       0,     0,     0,     0,     0,     0,     0,     0,    17,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,    38,    39,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      72,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    50,    51,    10,    21,    12,    23,     0,
-      70,    71,    28,     0,    30,     0,    32,    14,    43,     0,
-      15,     0,     0,     0,     0,     0,    74,    73,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    29,    31,     0,
-       0,     0,     0,     0,     0,     0,    44,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    11,    22,    13,
-      24,    16,    42
+       0,     0,     0,     0,     0,     0,     0,     5,    47,    49,
+      50,     0,    51,     0,    54,     0,     0,    55,    56,    57,
+      58,    25,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    26,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    70,    71,    27,    60,    59,     0,    42,
+       0,    41,     7,     8,     9,    31,     0,     0,     0,     0,
+       0,     0,     0,     0,    17,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,    39,    40,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    74,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    52,
+      53,    10,    21,    12,    23,     0,    72,    73,    28,     0,
+      30,     0,    33,    14,    44,     0,    15,     0,     0,     0,
+       0,     0,    76,    75,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    29,    32,     0,     0,     0,     0,     0,
+       0,     0,    45,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    11,    22,    13,    24,    16,    43
   };
 
   const short
   EvalParser::yypgoto_[] =
   {
-    -146,  -146,  -146,     7,    -2,  -146,   166,   -68,  -145,   182,
-    -146,   -30,  -146,  -146,  -146,  -146,  -146
+    -149,  -149,  -149,     8,    -2,  -149,   187,   -72,  -148,   193,
+    -149,   -42,  -149,  -149,  -149,  -149,  -149
   };
 
   const unsigned char
   EvalParser::yydefgoto_[] =
   {
-       0,     3,    30,    31,    32,    33,    76,    78,   166,    80,
-      86,   113,    96,   110,   172,   151,   188
+       0,     3,    30,    31,    32,    33,    81,    83,   172,    85,
+      91,   118,   101,   115,   178,   157,   194
   };
 
   const unsigned char
   EvalParser::yytable_[] =
   {
-      39,   121,   177,   168,   186,   169,    65,    66,    40,   170,
-     171,    41,    42,   168,   162,   179,    87,    88,    89,    90,
-      91,    92,    93,   163,   164,   165,   180,   187,   111,    73,
-     181,    65,    66,   115,   112,   178,   131,    94,    95,   163,
-     164,   123,   124,    43,   163,   164,   167,    97,    98,    46,
-     100,   101,   102,   103,   104,   105,   106,   107,    99,   182,
-     163,   164,   217,   170,   171,   119,   218,   220,   222,   218,
-     220,   222,   117,   118,    82,    83,    84,    85,   163,   164,
-     219,   163,   164,   221,    61,    63,    62,    64,    71,    72,
-      62,    64,    74,    44,    75,     1,     2,    65,    66,   108,
-     109,   163,   164,    45,     4,    49,     5,    47,    50,    48,
-       6,     7,     8,     9,    51,    52,   195,   196,    53,    54,
-      55,    56,    10,   200,   201,   202,   203,    11,   152,   153,
-     154,    57,    58,    59,    67,    12,    60,    68,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    69,
-      70,    24,    25,    34,    35,    36,    77,    79,    26,    27,
-      28,    81,    29,   114,   116,    10,   125,   126,   127,   128,
-      11,   133,   129,   189,   130,   132,   134,   135,    12,   136,
-     137,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,   138,   139,    37,    38,   140,   141,    65,   142,
-     143,    26,    27,    28,   147,    29,   144,   145,   174,   146,
-     173,   148,   149,   150,   155,   156,   157,   158,   159,   160,
-     161,   175,   176,   178,   183,   184,   185,   190,   191,   192,
-     197,   193,   194,   198,   120,   199,   204,   205,   206,   207,
-     208,   209,     0,   210,     0,   211,     0,   212,   213,   214,
-     215,   216,   122
+      40,   127,    43,    78,    78,   139,   174,    69,   140,   141,
+     142,   143,    42,    44,   144,   116,   174,   145,    67,    68,
+     185,   117,   192,   120,    48,    79,   180,    80,   182,   183,
+     204,   186,    71,   129,   130,    67,    68,    70,    70,    70,
+       1,     2,    70,    70,    70,    70,   193,    69,    70,   102,
+     103,    70,   105,   106,   107,   108,   109,   110,   111,   112,
+      70,   104,    70,   184,    70,   137,    41,   124,   125,   224,
+     226,   228,   224,   226,   228,   122,   123,    70,    92,    93,
+      94,    95,    96,    97,    98,   168,   175,    63,   187,    64,
+     176,   177,   113,   114,   169,   170,   171,   169,   170,   188,
+      99,   100,    45,   176,   177,   135,     4,    70,     5,   169,
+     170,   173,     6,     7,     8,     9,    46,    47,   201,   202,
+      87,    88,    89,    90,    10,   206,   207,   208,   209,    11,
+      77,    49,    67,    68,   158,   159,   160,    12,    50,    65,
+      13,    66,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    34,    51,    24,    25,   169,   170,    35,    36,
+      37,    26,    27,    28,    52,    29,   169,   170,   223,    62,
+      10,   169,   170,   225,    53,    11,   169,   170,   227,   195,
+      75,    54,    64,    12,    55,    76,    13,    66,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    56,    57,
+      38,    39,   136,   138,    70,    70,    58,    26,    27,    28,
+     181,    29,    70,    59,    60,    61,    72,    73,    70,    74,
+     134,    82,    84,   131,   119,   132,    86,   121,    67,   133,
+     146,   147,   156,   148,   149,   150,   151,   152,   184,   203,
+     153,   154,   155,   161,   162,   163,   164,   165,   166,   167,
+     189,   190,   191,   196,   197,   198,   205,   199,   200,   126,
+     210,   211,   212,   213,   214,   215,   216,   128,   217,   179,
+     218,   219,   220,   221,   222
   };
 
-  const short
+  const unsigned char
   EvalParser::yycheck_[] =
   {
-       2,    69,    20,   148,    35,     9,     6,     7,     0,    13,
-      14,     4,     5,   158,     9,     9,    27,    28,    29,    30,
-      31,    32,    33,    18,    19,    20,    20,    58,    52,     4,
-       9,     6,     7,    63,    58,    53,    36,    48,    49,    18,
-      19,    71,    72,    15,    18,    19,    20,    49,    50,     3,
-      52,    53,    54,    55,    56,    57,    58,    59,    51,     9,
-      18,    19,    20,    13,    14,    67,   211,   212,   213,   214,
-     215,   216,    65,    66,    22,    23,    24,    25,    18,    19,
-      20,    18,    19,    20,    15,    15,    17,    17,    15,    15,
-      17,    17,    58,    15,    60,    55,    56,     6,     7,    48,
-      49,    18,    19,    15,     3,     3,     5,    17,     3,    17,
-       9,    10,    11,    12,     3,     3,   184,   185,     3,     3,
-       3,     3,    21,   191,   192,   193,   194,    26,   130,   131,
-     132,     3,     3,     3,     8,    34,    17,    15,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    15,
-      15,    50,    51,     9,    10,    11,    58,    58,    57,    58,
-      59,    57,    61,    54,    54,    21,    16,    16,    16,     4,
-      26,     4,    36,   175,    36,    36,     4,     4,    34,     4,
-       4,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,     4,     4,    50,    51,    16,    16,     6,    16,
-      16,    57,    58,    59,    17,    61,    16,    16,     4,    16,
-      36,    17,    17,    58,    17,    17,    17,    17,    17,    17,
-      17,    36,     4,    53,     9,    15,    15,    15,    15,    15,
-       4,    15,    15,     4,    68,    58,    16,    16,    16,    16,
-      16,    16,    -1,    16,    -1,    17,    -1,    17,    17,    17,
-      17,    17,    70
+       2,    73,     4,     4,     4,     4,   154,     8,     4,     4,
+       4,     4,     4,     5,     4,    53,   164,     4,     6,     7,
+       9,    59,    35,    65,     3,    59,     4,    61,     4,    20,
+       4,    20,    34,    75,    76,     6,     7,    38,    38,    38,
+      56,    57,    38,    38,    38,    38,    59,     8,    38,    51,
+      52,    38,    54,    55,    56,    57,    58,    59,    60,    61,
+      38,    53,    38,    54,    38,    36,     0,    69,    70,   217,
+     218,   219,   220,   221,   222,    67,    68,    38,    27,    28,
+      29,    30,    31,    32,    33,     9,     9,    15,     9,    17,
+      13,    14,    49,    50,    18,    19,    20,    18,    19,     9,
+      49,    50,    15,    13,    14,    36,     3,    38,     5,    18,
+      19,    20,     9,    10,    11,    12,    15,    15,   190,   191,
+      22,    23,    24,    25,    21,   197,   198,   199,   200,    26,
+       4,    17,     6,     7,   136,   137,   138,    34,    17,    15,
+      37,    17,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,     3,     3,    51,    52,    18,    19,     9,    10,
+      11,    58,    59,    60,     3,    62,    18,    19,    20,    17,
+      21,    18,    19,    20,     3,    26,    18,    19,    20,   181,
+      15,     3,    17,    34,     3,    15,    37,    17,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,     3,     3,
+      51,    52,    36,    36,    38,    38,     3,    58,    59,    60,
+      36,    62,    38,     3,     3,     3,    15,    15,    38,    15,
+       4,    59,    59,    16,    55,    16,    58,    55,     6,    16,
+      16,    16,    59,    16,    16,    16,    16,    16,    54,     4,
+      17,    17,    17,    17,    17,    17,    17,    17,    17,    17,
+       9,    15,    15,    15,    15,    15,    59,    15,    15,    72,
+      16,    16,    16,    16,    16,    16,    16,    74,    17,    36,
+      17,    17,    17,    17,    17
   };
 
   const signed char
   EvalParser::yystos_[] =
   {
-       0,    55,    56,    63,     3,     5,     9,    10,    11,    12,
-      21,    26,    34,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    50,    51,    57,    58,    59,    61,
-      64,    65,    66,    67,     9,    10,    11,    50,    51,    66,
-       0,    65,    65,    15,    15,    15,     3,    17,    17,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-      17,    15,    17,    15,    17,     6,     7,     8,    15,    15,
-      15,    15,    15,     4,    58,    60,    68,    58,    69,    58,
-      71,    57,    22,    23,    24,    25,    72,    27,    28,    29,
-      30,    31,    32,    33,    48,    49,    74,    66,    66,    65,
-      66,    66,    66,    66,    66,    66,    66,    66,    48,    49,
-      75,    52,    58,    73,    54,    73,    54,    65,    65,    66,
-      68,    69,    71,    73,    73,    16,    16,    16,     4,    36,
-      36,    36,    36,     4,     4,     4,     4,     4,     4,     4,
+       0,    56,    57,    64,     3,     5,     9,    10,    11,    12,
+      21,    26,    34,    37,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    51,    52,    58,    59,    60,    62,
+      65,    66,    67,    68,     3,     9,    10,    11,    51,    52,
+      67,     0,    66,    67,    66,    15,    15,    15,     3,    17,
+      17,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,    17,    15,    17,    15,    17,     6,     7,     8,
+      38,    67,    15,    15,    15,    15,    15,     4,     4,    59,
+      61,    69,    59,    70,    59,    72,    58,    22,    23,    24,
+      25,    73,    27,    28,    29,    30,    31,    32,    33,    49,
+      50,    75,    67,    67,    66,    67,    67,    67,    67,    67,
+      67,    67,    67,    49,    50,    76,    53,    59,    74,    55,
+      74,    55,    66,    66,    67,    67,    69,    70,    72,    74,
+      74,    16,    16,    16,     4,    36,    36,    36,    36,     4,
+       4,     4,     4,     4,     4,     4,    16,    16,    16,    16,
+      16,    16,    16,    17,    17,    17,    59,    78,    67,    67,
+      67,    17,    17,    17,    17,    17,    17,    17,     9,    18,
+      19,    20,    71,    20,    71,     9,    13,    14,    77,    36,
+       4,    36,     4,    20,    54,     9,    20,     9,     9,     9,
+      15,    15,    35,    59,    79,    67,    15,    15,    15,    15,
+      15,    70,    70,     4,     4,    59,    70,    70,    70,    70,
       16,    16,    16,    16,    16,    16,    16,    17,    17,    17,
-      58,    77,    66,    66,    66,    17,    17,    17,    17,    17,
-      17,    17,     9,    18,    19,    20,    70,    20,    70,     9,
-      13,    14,    76,    36,     4,    36,     4,    20,    53,     9,
-      20,     9,     9,     9,    15,    15,    35,    58,    78,    66,
-      15,    15,    15,    15,    15,    69,    69,     4,     4,    58,
-      69,    69,    69,    69,    16,    16,    16,    16,    16,    16,
-      16,    17,    17,    17,    17,    17,    17,    20,    70,    20,
-      70,    20,    70
+      17,    17,    17,    20,    71,    20,    71,    20,    71
   };
 
   const signed char
   EvalParser::yyr1_[] =
   {
-       0,    62,    63,    63,    64,    65,    65,    65,    65,    65,
-      65,    65,    65,    65,    65,    65,    65,    65,    66,    66,
-      66,    66,    66,    66,    66,    66,    66,    66,    66,    66,
-      66,    66,    66,    66,    66,    66,    66,    66,    66,    66,
-      66,    66,    66,    66,    66,    66,    67,    68,    68,    69,
-      70,    70,    71,    72,    72,    72,    72,    73,    73,    74,
-      74,    74,    74,    74,    74,    74,    74,    74,    75,    75,
-      76,    76,    77,    78,    78
+       0,    63,    64,    64,    65,    66,    66,    66,    66,    66,
+      66,    66,    66,    66,    66,    66,    66,    66,    67,    67,
+      67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
+      67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
+      67,    67,    67,    67,    67,    67,    67,    67,    68,    69,
+      69,    70,    71,    71,    72,    73,    73,    73,    73,    74,
+      74,    75,    75,    75,    75,    75,    75,    75,    75,    75,
+      76,    76,    77,    77,    78,    79,    79
   };
 
   const signed char
@@ -2091,11 +2104,11 @@ namespace isc { namespace eval {
        0,     2,     2,     2,     1,     3,     2,     3,     3,     3,
        6,    11,     6,    11,     6,     6,    11,     4,     1,     1,
        1,     6,    11,     6,    11,     3,     3,     3,     6,     8,
-       6,     8,     6,     4,     4,     4,     4,     4,     4,     4,
-       3,     3,    11,     6,     9,     1,     1,     1,     1,     1,
+       6,     3,     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,     1,     1
   };
 
 
@@ -2111,7 +2124,7 @@ namespace isc { namespace eval {
   "\"]\"", "\".\"", "\"text\"", "\"hex\"", "\"exists\"", "\"pkt\"",
   "\"iface\"", "\"src\"", "\"dst\"", "\"len\"", "\"pkt4\"", "\"mac\"",
   "\"hlen\"", "\"htype\"", "\"ciaddr\"", "\"giaddr\"", "\"yiaddr\"",
-  "\"siaddr\"", "\"substring\"", "\"all\"", "\",\"", "\"concat\"",
+  "\"siaddr\"", "\"substring\"", "\"all\"", "\",\"", "\"concat\"", "\"+\"",
   "\"ifelse\"", "\"hexstring\"", "\"addrtotext\"", "\"int8totext\"",
   "\"int16totext\"", "\"int32totext\"", "\"uint8totext\"",
   "\"uint16totext\"", "\"uint32totext\"", "\"pkt6\"", "\"msgtype\"",
@@ -2131,14 +2144,14 @@ namespace isc { namespace eval {
   const short
   EvalParser::yyrline_[] =
   {
-       0,   128,   128,   129,   134,   137,   138,   143,   148,   153,
-     158,   163,   168,   188,   202,   211,   220,   230,   247,   252,
-     257,   262,   267,   272,   293,   308,   313,   327,   341,   356,
-     361,   366,   371,   376,   381,   386,   391,   396,   401,   406,
-     411,   420,   430,   439,   452,   465,   472,   478,   482,   488,
-     494,   498,   504,   513,   517,   521,   525,   531,   535,   541,
-     545,   549,   553,   557,   561,   565,   569,   573,   579,   583,
-     589,   593,   599,   606,   611
+       0,   130,   130,   131,   136,   139,   140,   145,   150,   155,
+     160,   165,   170,   190,   204,   213,   222,   232,   249,   254,
+     259,   264,   269,   274,   295,   310,   315,   329,   343,   358,
+     363,   368,   373,   378,   383,   388,   393,   398,   403,   408,
+     413,   418,   427,   437,   446,   459,   472,   477,   480,   486,
+     490,   496,   502,   506,   512,   521,   525,   529,   533,   539,
+     543,   549,   553,   557,   561,   565,   569,   573,   577,   581,
+     587,   591,   597,   601,   607,   614,   619
   };
 
   void
@@ -2171,9 +2184,9 @@ namespace isc { namespace eval {
 
 #line 14 "parser.yy"
 } } // isc::eval
-#line 2175 "parser.cc"
+#line 2188 "parser.cc"
 
-#line 618 "parser.yy"
+#line 626 "parser.yy"
 
 void
 isc::eval::EvalParser::error(const location_type& loc,
index 92af0746b700818f2ea97f5f3ab0b834388418f7..d6c67a8559f65ed7c9c9637e2cf66f97ff9338aa 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.5.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -531,30 +531,31 @@ namespace isc { namespace eval {
     TOKEN_ALL = 290,               // "all"
     TOKEN_COMA = 291,              // ","
     TOKEN_CONCAT = 292,            // "concat"
-    TOKEN_IFELSE = 293,            // "ifelse"
-    TOKEN_TOHEXSTRING = 294,       // "hexstring"
-    TOKEN_ADDRTOTEXT = 295,        // "addrtotext"
-    TOKEN_INT8TOTEXT = 296,        // "int8totext"
-    TOKEN_INT16TOTEXT = 297,       // "int16totext"
-    TOKEN_INT32TOTEXT = 298,       // "int32totext"
-    TOKEN_UINT8TOTEXT = 299,       // "uint8totext"
-    TOKEN_UINT16TOTEXT = 300,      // "uint16totext"
-    TOKEN_UINT32TOTEXT = 301,      // "uint32totext"
-    TOKEN_PKT6 = 302,              // "pkt6"
-    TOKEN_MSGTYPE = 303,           // "msgtype"
-    TOKEN_TRANSID = 304,           // "transid"
-    TOKEN_VENDOR_CLASS = 305,      // "vendor-class"
-    TOKEN_VENDOR = 306,            // "vendor"
-    TOKEN_ANY = 307,               // "*"
-    TOKEN_DATA = 308,              // "data"
-    TOKEN_ENTERPRISE = 309,        // "enterprise"
-    TOKEN_TOPLEVEL_BOOL = 310,     // "top-level bool"
-    TOKEN_TOPLEVEL_STRING = 311,   // "top-level string"
-    TOKEN_STRING = 312,            // "constant string"
-    TOKEN_INTEGER = 313,           // "integer"
-    TOKEN_HEXSTRING = 314,         // "constant hexstring"
-    TOKEN_OPTION_NAME = 315,       // "option name"
-    TOKEN_IP_ADDRESS = 316         // "ip address"
+    TOKEN_PLUS = 293,              // "+"
+    TOKEN_IFELSE = 294,            // "ifelse"
+    TOKEN_TOHEXSTRING = 295,       // "hexstring"
+    TOKEN_ADDRTOTEXT = 296,        // "addrtotext"
+    TOKEN_INT8TOTEXT = 297,        // "int8totext"
+    TOKEN_INT16TOTEXT = 298,       // "int16totext"
+    TOKEN_INT32TOTEXT = 299,       // "int32totext"
+    TOKEN_UINT8TOTEXT = 300,       // "uint8totext"
+    TOKEN_UINT16TOTEXT = 301,      // "uint16totext"
+    TOKEN_UINT32TOTEXT = 302,      // "uint32totext"
+    TOKEN_PKT6 = 303,              // "pkt6"
+    TOKEN_MSGTYPE = 304,           // "msgtype"
+    TOKEN_TRANSID = 305,           // "transid"
+    TOKEN_VENDOR_CLASS = 306,      // "vendor-class"
+    TOKEN_VENDOR = 307,            // "vendor"
+    TOKEN_ANY = 308,               // "*"
+    TOKEN_DATA = 309,              // "data"
+    TOKEN_ENTERPRISE = 310,        // "enterprise"
+    TOKEN_TOPLEVEL_BOOL = 311,     // "top-level bool"
+    TOKEN_TOPLEVEL_STRING = 312,   // "top-level string"
+    TOKEN_STRING = 313,            // "constant string"
+    TOKEN_INTEGER = 314,           // "integer"
+    TOKEN_HEXSTRING = 315,         // "constant hexstring"
+    TOKEN_OPTION_NAME = 316,       // "option name"
+    TOKEN_IP_ADDRESS = 317         // "ip address"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -571,7 +572,7 @@ namespace isc { namespace eval {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 62, ///< Number of tokens.
+        YYNTOKENS = 63, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -611,47 +612,48 @@ namespace isc { namespace eval {
         S_ALL = 35,                              // "all"
         S_COMA = 36,                             // ","
         S_CONCAT = 37,                           // "concat"
-        S_IFELSE = 38,                           // "ifelse"
-        S_TOHEXSTRING = 39,                      // "hexstring"
-        S_ADDRTOTEXT = 40,                       // "addrtotext"
-        S_INT8TOTEXT = 41,                       // "int8totext"
-        S_INT16TOTEXT = 42,                      // "int16totext"
-        S_INT32TOTEXT = 43,                      // "int32totext"
-        S_UINT8TOTEXT = 44,                      // "uint8totext"
-        S_UINT16TOTEXT = 45,                     // "uint16totext"
-        S_UINT32TOTEXT = 46,                     // "uint32totext"
-        S_PKT6 = 47,                             // "pkt6"
-        S_MSGTYPE = 48,                          // "msgtype"
-        S_TRANSID = 49,                          // "transid"
-        S_VENDOR_CLASS = 50,                     // "vendor-class"
-        S_VENDOR = 51,                           // "vendor"
-        S_ANY = 52,                              // "*"
-        S_DATA = 53,                             // "data"
-        S_ENTERPRISE = 54,                       // "enterprise"
-        S_TOPLEVEL_BOOL = 55,                    // "top-level bool"
-        S_TOPLEVEL_STRING = 56,                  // "top-level string"
-        S_STRING = 57,                           // "constant string"
-        S_INTEGER = 58,                          // "integer"
-        S_HEXSTRING = 59,                        // "constant hexstring"
-        S_OPTION_NAME = 60,                      // "option name"
-        S_IP_ADDRESS = 61,                       // "ip address"
-        S_YYACCEPT = 62,                         // $accept
-        S_start = 63,                            // start
-        S_expression = 64,                       // expression
-        S_bool_expr = 65,                        // bool_expr
-        S_string_expr = 66,                      // string_expr
-        S_integer_expr = 67,                     // integer_expr
-        S_option_code = 68,                      // option_code
-        S_sub_option_code = 69,                  // sub_option_code
-        S_option_repr_type = 70,                 // option_repr_type
-        S_nest_level = 71,                       // nest_level
-        S_pkt_metadata = 72,                     // pkt_metadata
-        S_enterprise_id = 73,                    // enterprise_id
-        S_pkt4_field = 74,                       // pkt4_field
-        S_pkt6_field = 75,                       // pkt6_field
-        S_relay6_field = 76,                     // relay6_field
-        S_start_expr = 77,                       // start_expr
-        S_length_expr = 78                       // length_expr
+        S_PLUS = 38,                             // "+"
+        S_IFELSE = 39,                           // "ifelse"
+        S_TOHEXSTRING = 40,                      // "hexstring"
+        S_ADDRTOTEXT = 41,                       // "addrtotext"
+        S_INT8TOTEXT = 42,                       // "int8totext"
+        S_INT16TOTEXT = 43,                      // "int16totext"
+        S_INT32TOTEXT = 44,                      // "int32totext"
+        S_UINT8TOTEXT = 45,                      // "uint8totext"
+        S_UINT16TOTEXT = 46,                     // "uint16totext"
+        S_UINT32TOTEXT = 47,                     // "uint32totext"
+        S_PKT6 = 48,                             // "pkt6"
+        S_MSGTYPE = 49,                          // "msgtype"
+        S_TRANSID = 50,                          // "transid"
+        S_VENDOR_CLASS = 51,                     // "vendor-class"
+        S_VENDOR = 52,                           // "vendor"
+        S_ANY = 53,                              // "*"
+        S_DATA = 54,                             // "data"
+        S_ENTERPRISE = 55,                       // "enterprise"
+        S_TOPLEVEL_BOOL = 56,                    // "top-level bool"
+        S_TOPLEVEL_STRING = 57,                  // "top-level string"
+        S_STRING = 58,                           // "constant string"
+        S_INTEGER = 59,                          // "integer"
+        S_HEXSTRING = 60,                        // "constant hexstring"
+        S_OPTION_NAME = 61,                      // "option name"
+        S_IP_ADDRESS = 62,                       // "ip address"
+        S_YYACCEPT = 63,                         // $accept
+        S_start = 64,                            // start
+        S_expression = 65,                       // expression
+        S_bool_expr = 66,                        // bool_expr
+        S_string_expr = 67,                      // string_expr
+        S_integer_expr = 68,                     // integer_expr
+        S_option_code = 69,                      // option_code
+        S_sub_option_code = 70,                  // sub_option_code
+        S_option_repr_type = 71,                 // option_repr_type
+        S_nest_level = 72,                       // nest_level
+        S_pkt_metadata = 73,                     // pkt_metadata
+        S_enterprise_id = 74,                    // enterprise_id
+        S_pkt4_field = 75,                       // pkt4_field
+        S_pkt6_field = 76,                       // pkt6_field
+        S_relay6_field = 77,                     // relay6_field
+        S_start_expr = 78,                       // start_expr
+        S_length_expr = 79                       // length_expr
       };
     };
 
@@ -1668,6 +1670,21 @@ switch (yykind)
         return symbol_type (token::TOKEN_CONCAT, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_PLUS (location_type l)
+      {
+        return symbol_type (token::TOKEN_PLUS, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_PLUS (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_PLUS, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -2116,7 +2133,7 @@ switch (yykind)
     // number is the opposite.  If YYTABLE_NINF, syntax error.
     static const unsigned char yytable_[];
 
-    static const short yycheck_[];
+    static const unsigned char yycheck_[];
 
     // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     // symbol of state STATE-NUM.
@@ -2358,9 +2375,9 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 252,     ///< Last index in yytable_.
+      yylast_ = 274,     ///< Last index in yytable_.
       yynnts_ = 17,  ///< Number of nonterminal symbols.
-      yyfinal_ = 40 ///< Termination state number.
+      yyfinal_ = 41 ///< Termination state number.
     };
 
 
@@ -2410,10 +2427,10 @@ switch (yykind)
       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,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61
+      55,    56,    57,    58,    59,    60,    61,    62
     };
     // Last valid token kind.
-    const int code_max = 316;
+    const int code_max = 317;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -2608,7 +2625,7 @@ switch (yykind)
 
 #line 14 "parser.yy"
 } } // isc::eval
-#line 2612 "parser.h"
+#line 2629 "parser.h"
 
 
 
index 2d3317f224c004167e6f0879b37c2dac31d081d6..e3dfc2ed4c19fbd6cb9f90fa2620aebd042ad814 100644 (file)
@@ -1,4 +1,5 @@
-// A Bison parser, made by GNU Bison 3.7.5.
+// Generated 202105120856
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index fe7f93f75b37d0a396f0aa7ba7a81e72e61b5d9d..d3fca5f65dfc8f8ee75aa97138fdba508bee3c6f 100644 (file)
@@ -1,4 +1,5 @@
-// A Bison parser, made by GNU Bison 3.7.5.
+// Generated 202105120856
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.