Browse Source

[4272a] Regenerate parser from docs.isc.org

Francis Dupont 9 years ago
parent
commit
b611d35a07
6 changed files with 294 additions and 286 deletions
  1. 52 52
      src/lib/eval/lexer.cc
  2. 1 1
      src/lib/eval/location.hh
  3. 161 153
      src/lib/eval/parser.cc
  4. 78 78
      src/lib/eval/parser.h
  5. 1 1
      src/lib/eval/position.hh
  6. 1 1
      src/lib/eval/stack.hh

+ 52 - 52
src/lib/eval/lexer.cc

@@ -495,10 +495,10 @@ struct yy_trans_info
 static yyconst flex_int16_t yy_acclist[227] =
     {   0,
        42,   40,   41,    1,   40,   41,    2,   41,   40,   41,
-       32,   40,   41,   33,   40,   41,   36,   40,   41,   40,
-       41,   31,   40,   41,    5,   40,   41,    5,   40,   41,
+       35,   40,   41,   36,   40,   41,   39,   40,   41,   40,
+       41,   34,   40,   41,    5,   40,   41,    5,   40,   41,
        40,   41,   40,   41,   40,   41,16390,   40,   41,16390,
-       34,   40,   41,   35,   40,   41,   40,   41,16390,   40,
+       37,   40,   41,   38,   40,   41,   40,   41,16390,   40,
        41,16390,   40,   41,16390,   40,   41,16390,   40,   41,
     16390,   40,   41,16390,   40,   41,16390,   40,   41,16390,
        40,   41,16390,   40,   41,16390,   40,   41,16390,   40,
@@ -506,19 +506,19 @@ static yyconst flex_int16_t yy_acclist[227] =
         3,    5,    5,    7,    8,16390,16390, 8198,16390,16390,
 
     16390,16390,16390,16390,16390,16390,16390,16390,16390,16390,
-    16390,16390,   30,16390,16390,16390,16390,16390,16390,16390,
-    16390,16390,    4,    7,   26,16390,   29,16390,16390,16390,
-    16390,16390,   15,16390,16390,16390,16390,   18,16390,16390,
-       28,16390,16390,16390,16390,16390,16390,16390,16390,16390,
-    16390,16390,16390,16390,16390,   19,16390,16390,16390,16390,
-    16390,16390,   17,16390,   37,16390,16390,16390,16390,   14,
-    16390,16390,16390,16390,16390,16390,16390,   20,16390,16390,
-    16390,16390,16390,16390,16390,16390,16390,16390,   21,16390,
-       27,16390,   16,16390,   22,16390,16390,16390,    9,16390,
-
-    16390,   10,16390,   11,16390,   24,16390,16390,16390,   23,
-    16390,    7,16390,   38,16390,16390,16390,   39,16390,   13,
-    16390,   12,16390,16390,   25,16390
+    16390,16390,   33,16390,16390,16390,16390,16390,16390,16390,
+    16390,16390,    4,    7,   29,16390,   32,16390,16390,16390,
+    16390,16390,   13,16390,16390,16390,16390,   16,16390,16390,
+       31,16390,16390,16390,16390,16390,16390,16390,16390,16390,
+    16390,16390,16390,16390,16390,   17,16390,16390,16390,16390,
+    16390,16390,   15,16390,   23,16390,16390,16390,16390,   12,
+    16390,16390,16390,16390,16390,16390,16390,   18,16390,16390,
+    16390,16390,16390,16390,16390,16390,16390,16390,   19,16390,
+       30,16390,   14,16390,   20,16390,16390,16390,    9,16390,
+
+    16390,   10,16390,   11,16390,   22,16390,16390,16390,   21,
+    16390,    7,16390,   24,16390,16390,16390,   25,16390,   27,
+    16390,   26,16390,16390,   28,16390
     } ;
 
 static yyconst flex_int16_t yy_accept[162] =
@@ -719,7 +719,7 @@ static yyconst flex_int16_t yy_rule_linenum[41] =
        82,   86,   92,  102,  108,  122,  129,  143,  144,  145,
       146,  147,  148,  149,  150,  151,  152,  153,  154,  155,
       156,  157,  158,  159,  160,  161,  162,  163,  164,  165,
-      166,  167,  168,  169,  170,  171,  173,  174,  175,  177
+      166,  167,  168,  169,  170,  171,  172,  173,  174,  176
     } ;
 
 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
@@ -1316,155 +1316,155 @@ return isc::eval::EvalParser::make_RELAY6(loc);
 case 12:
 YY_RULE_SETUP
 #line 147 "lexer.ll"
-return isc::eval::EvalParser::make_PEERADDR(loc);
+return isc::eval::EvalParser::make_TEXT(loc);
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
 #line 148 "lexer.ll"
-return isc::eval::EvalParser::make_LINKADDR(loc);
+return isc::eval::EvalParser::make_HEX(loc);
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
 #line 149 "lexer.ll"
-return isc::eval::EvalParser::make_TEXT(loc);
+return isc::eval::EvalParser::make_EXISTS(loc);
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
 #line 150 "lexer.ll"
-return isc::eval::EvalParser::make_HEX(loc);
+return isc::eval::EvalParser::make_PKT4(loc);
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
 #line 151 "lexer.ll"
-return isc::eval::EvalParser::make_EXISTS(loc);
+return isc::eval::EvalParser::make_CHADDR(loc);
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
 #line 152 "lexer.ll"
-return isc::eval::EvalParser::make_PKT4(loc);
+return isc::eval::EvalParser::make_HLEN(loc);
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
 #line 153 "lexer.ll"
-return isc::eval::EvalParser::make_CHADDR(loc);
+return isc::eval::EvalParser::make_HTYPE(loc);
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
 #line 154 "lexer.ll"
-return isc::eval::EvalParser::make_HLEN(loc);
+return isc::eval::EvalParser::make_CIADDR(loc);
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 155 "lexer.ll"
-return isc::eval::EvalParser::make_HTYPE(loc);
+return isc::eval::EvalParser::make_GIADDR(loc);
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 156 "lexer.ll"
-return isc::eval::EvalParser::make_CIADDR(loc);
+return isc::eval::EvalParser::make_YIADDR(loc);
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 157 "lexer.ll"
-return isc::eval::EvalParser::make_GIADDR(loc);
+return isc::eval::EvalParser::make_SIADDR(loc);
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
 #line 158 "lexer.ll"
-return isc::eval::EvalParser::make_YIADDR(loc);
+return isc::eval::EvalParser::make_PKT6(loc);
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 159 "lexer.ll"
-return isc::eval::EvalParser::make_SIADDR(loc);
+return isc::eval::EvalParser::make_MSGTYPE(loc);
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 160 "lexer.ll"
-return isc::eval::EvalParser::make_SUBSTRING(loc);
+return isc::eval::EvalParser::make_TRANSID(loc);
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 161 "lexer.ll"
-return isc::eval::EvalParser::make_ALL(loc);
+return isc::eval::EvalParser::make_PEERADDR(loc);
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 162 "lexer.ll"
-return isc::eval::EvalParser::make_CONCAT(loc);
+return isc::eval::EvalParser::make_LINKADDR(loc);
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 163 "lexer.ll"
-return isc::eval::EvalParser::make_NOT(loc);
+return isc::eval::EvalParser::make_SUBSTRING(loc);
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 164 "lexer.ll"
-return isc::eval::EvalParser::make_AND(loc);
+return isc::eval::EvalParser::make_ALL(loc);
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 165 "lexer.ll"
-return isc::eval::EvalParser::make_OR(loc);
+return isc::eval::EvalParser::make_CONCAT(loc);
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 166 "lexer.ll"
-return isc::eval::EvalParser::make_DOT(loc);
+return isc::eval::EvalParser::make_NOT(loc);
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 167 "lexer.ll"
-return isc::eval::EvalParser::make_LPAREN(loc);
+return isc::eval::EvalParser::make_AND(loc);
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 168 "lexer.ll"
-return isc::eval::EvalParser::make_RPAREN(loc);
+return isc::eval::EvalParser::make_OR(loc);
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 169 "lexer.ll"
-return isc::eval::EvalParser::make_LBRACKET(loc);
+return isc::eval::EvalParser::make_DOT(loc);
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 170 "lexer.ll"
-return isc::eval::EvalParser::make_RBRACKET(loc);
+return isc::eval::EvalParser::make_LPAREN(loc);
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 171 "lexer.ll"
-return isc::eval::EvalParser::make_COMA(loc);
+return isc::eval::EvalParser::make_RPAREN(loc);
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 173 "lexer.ll"
-return isc::eval::EvalParser::make_PKT6(loc);
+#line 172 "lexer.ll"
+return isc::eval::EvalParser::make_LBRACKET(loc);
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 174 "lexer.ll"
-return isc::eval::EvalParser::make_MSGTYPE(loc);
+#line 173 "lexer.ll"
+return isc::eval::EvalParser::make_RBRACKET(loc);
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 175 "lexer.ll"
-return isc::eval::EvalParser::make_TRANSID(loc);
+#line 174 "lexer.ll"
+return isc::eval::EvalParser::make_COMA(loc);
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 177 "lexer.ll"
+#line 176 "lexer.ll"
 driver.error (loc, "Invalid character: " + std::string(yytext));
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 178 "lexer.ll"
+#line 177 "lexer.ll"
 return isc::eval::EvalParser::make_END(loc);
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 179 "lexer.ll"
+#line 178 "lexer.ll"
 ECHO;
 	YY_BREAK
 #line 1471 "lexer.cc"
@@ -2550,7 +2550,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 179 "lexer.ll"
+#line 178 "lexer.ll"
 
 
 

+ 1 - 1
src/lib/eval/location.hh

@@ -1,4 +1,4 @@
-// Generated 201604271143
+// Generated 201606101509
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++

+ 161 - 153
src/lib/eval/parser.cc

@@ -255,11 +255,11 @@ namespace isc { namespace eval {
         value.move< TokenOption::RepresentationType > (that.value);
         break;
 
-      case 46: // pkt4_field
+      case 47: // pkt4_field
         value.move< TokenPkt4::FieldType > (that.value);
         break;
 
-      case 51: // pkt6_field
+      case 48: // pkt6_field
         value.move< TokenPkt6::FieldType > (that.value);
         break;
 
@@ -279,7 +279,7 @@ namespace isc { namespace eval {
         value.move< uint16_t > (that.value);
         break;
 
-      case 50: // nest_level
+      case 46: // nest_level
         value.move< uint8_t > (that.value);
         break;
 
@@ -302,11 +302,11 @@ namespace isc { namespace eval {
         value.copy< TokenOption::RepresentationType > (that.value);
         break;
 
-      case 46: // pkt4_field
+      case 47: // pkt4_field
         value.copy< TokenPkt4::FieldType > (that.value);
         break;
 
-      case 51: // pkt6_field
+      case 48: // pkt6_field
         value.copy< TokenPkt6::FieldType > (that.value);
         break;
 
@@ -326,7 +326,7 @@ namespace isc { namespace eval {
         value.copy< uint16_t > (that.value);
         break;
 
-      case 50: // nest_level
+      case 46: // nest_level
         value.copy< uint8_t > (that.value);
         break;
 
@@ -415,31 +415,31 @@ namespace isc { namespace eval {
 #line 416 "parser.cc" // lalr1.cc:636
         break;
 
-      case 46: // pkt4_field
+      case 46: // nest_level
 
 #line 91 "parser.yy" // lalr1.cc:636
-        { yyoutput << yysym.value.template as< TokenPkt4::FieldType > (); }
+        { yyoutput << yysym.value.template as< uint8_t > (); }
 #line 423 "parser.cc" // lalr1.cc:636
         break;
 
-      case 49: // relay6_field
+      case 47: // pkt4_field
 
 #line 91 "parser.yy" // lalr1.cc:636
-        { yyoutput << yysym.value.template as< TokenRelay6Field::FieldType > (); }
+        { yyoutput << yysym.value.template as< TokenPkt4::FieldType > (); }
 #line 430 "parser.cc" // lalr1.cc:636
         break;
 
-      case 50: // nest_level
+      case 48: // pkt6_field
 
 #line 91 "parser.yy" // lalr1.cc:636
-        { yyoutput << yysym.value.template as< uint8_t > (); }
+        { yyoutput << yysym.value.template as< TokenPkt6::FieldType > (); }
 #line 437 "parser.cc" // lalr1.cc:636
         break;
 
-      case 51: // pkt6_field
+      case 49: // relay6_field
 
 #line 91 "parser.yy" // lalr1.cc:636
-        { yyoutput << yysym.value.template as< TokenPkt6::FieldType > (); }
+        { yyoutput << yysym.value.template as< TokenRelay6Field::FieldType > (); }
 #line 444 "parser.cc" // lalr1.cc:636
         break;
 
@@ -644,11 +644,11 @@ namespace isc { namespace eval {
         yylhs.value.build< TokenOption::RepresentationType > ();
         break;
 
-      case 46: // pkt4_field
+      case 47: // pkt4_field
         yylhs.value.build< TokenPkt4::FieldType > ();
         break;
 
-      case 51: // pkt6_field
+      case 48: // pkt6_field
         yylhs.value.build< TokenPkt6::FieldType > ();
         break;
 
@@ -668,7 +668,7 @@ namespace isc { namespace eval {
         yylhs.value.build< uint16_t > ();
         break;
 
-      case 50: // nest_level
+      case 46: // nest_level
         yylhs.value.build< uint8_t > ();
         break;
 
@@ -857,6 +857,24 @@ namespace isc { namespace eval {
   case 17:
 #line 222 "parser.yy" // lalr1.cc:859
     {
+                      TokenPtr pkt4_field(new TokenPkt4(yystack_[0].value.as< TokenPkt4::FieldType > ()));
+                      ctx.expression.push_back(pkt4_field);
+                  }
+#line 864 "parser.cc" // lalr1.cc:859
+    break;
+
+  case 18:
+#line 227 "parser.yy" // lalr1.cc:859
+    {
+                      TokenPtr pkt6_field(new TokenPkt6(yystack_[0].value.as< TokenPkt6::FieldType > ()));
+                      ctx.expression.push_back(pkt6_field);
+                  }
+#line 873 "parser.cc" // lalr1.cc:859
+    break;
+
+  case 19:
+#line 232 "parser.yy" // lalr1.cc:859
+    {
                      switch (ctx.getUniverse()) {
                      case Option::V6:
                      {
@@ -869,24 +887,6 @@ namespace isc { namespace eval {
                          error(yystack_[5].location, "relay6 can only be used in DHCPv6.");
                      }
                   }
-#line 873 "parser.cc" // lalr1.cc:859
-    break;
-
-  case 18:
-#line 237 "parser.yy" // lalr1.cc:859
-    {
-                      TokenPtr pkt4_field(new TokenPkt4(yystack_[0].value.as< TokenPkt4::FieldType > ()));
-                      ctx.expression.push_back(pkt4_field);
-                  }
-#line 882 "parser.cc" // lalr1.cc:859
-    break;
-
-  case 19:
-#line 242 "parser.yy" // lalr1.cc:859
-    {
-                      TokenPtr pkt6_field(new TokenPkt6(yystack_[0].value.as< TokenPkt6::FieldType > ()));
-                      ctx.expression.push_back(pkt6_field);
-                  }
 #line 891 "parser.cc" // lalr1.cc:859
     break;
 
@@ -943,120 +943,128 @@ namespace isc { namespace eval {
   case 26:
 #line 279 "parser.yy" // lalr1.cc:859
     {
-                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
-                }
+                     yylhs.value.as< uint8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as< std::string > (), yystack_[0].location);
+                 }
 #line 949 "parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 283 "parser.yy" // lalr1.cc:859
+#line 288 "parser.yy" // lalr1.cc:859
     {
-                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::HLEN;
+                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
                 }
 #line 957 "parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 287 "parser.yy" // lalr1.cc:859
+#line 292 "parser.yy" // lalr1.cc:859
     {
-                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
+                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::HLEN;
                 }
 #line 965 "parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 291 "parser.yy" // lalr1.cc:859
+#line 296 "parser.yy" // lalr1.cc:859
     {
-                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
+                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
                 }
 #line 973 "parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 295 "parser.yy" // lalr1.cc:859
+#line 300 "parser.yy" // lalr1.cc:859
     {
-                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
+                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
                 }
 #line 981 "parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 299 "parser.yy" // lalr1.cc:859
+#line 304 "parser.yy" // lalr1.cc:859
     {
-                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
+                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
                 }
 #line 989 "parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 303 "parser.yy" // lalr1.cc:859
+#line 308 "parser.yy" // lalr1.cc:859
     {
-                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
+                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
                 }
 #line 997 "parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 309 "parser.yy" // lalr1.cc:859
+#line 312 "parser.yy" // lalr1.cc:859
     {
-                     TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ()));
-                     ctx.expression.push_back(str);
-                 }
-#line 1006 "parser.cc" // lalr1.cc:859
+                    yylhs.value.as< TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
+                }
+#line 1005 "parser.cc" // lalr1.cc:859
     break;
 
   case 34:
-#line 316 "parser.yy" // lalr1.cc:859
+#line 318 "parser.yy" // lalr1.cc:859
     {
-                      TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ()));
-                      ctx.expression.push_back(str);
-                  }
-#line 1015 "parser.cc" // lalr1.cc:859
+                     yylhs.value.as< TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE;
+                 }
+#line 1013 "parser.cc" // lalr1.cc:859
     break;
 
   case 35:
-#line 321 "parser.yy" // lalr1.cc:859
+#line 322 "parser.yy" // lalr1.cc:859
     {
-                     TokenPtr str(new TokenString("all"));
-                     ctx.expression.push_back(str);
+                     yylhs.value.as< TokenPkt6::FieldType > () = TokenPkt6::TRANSID;
                  }
-#line 1024 "parser.cc" // lalr1.cc:859
+#line 1021 "parser.cc" // lalr1.cc:859
     break;
 
   case 36:
-#line 327 "parser.yy" // lalr1.cc:859
-    { yylhs.value.as< TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR; }
-#line 1030 "parser.cc" // lalr1.cc:859
+#line 328 "parser.yy" // lalr1.cc:859
+    {
+                       yylhs.value.as< TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR;
+                   }
+#line 1029 "parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 328 "parser.yy" // lalr1.cc:859
-    { yylhs.value.as< TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR; }
-#line 1036 "parser.cc" // lalr1.cc:859
+#line 332 "parser.yy" // lalr1.cc:859
+    {
+                       yylhs.value.as< TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR;
+                   }
+#line 1037 "parser.cc" // lalr1.cc:859
     break;
 
   case 38:
-#line 332 "parser.yy" // lalr1.cc:859
+#line 338 "parser.yy" // lalr1.cc:859
     {
-		 yylhs.value.as< uint8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as< std::string > (), yystack_[0].location);
+                     TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ()));
+                     ctx.expression.push_back(str);
                  }
-#line 1044 "parser.cc" // lalr1.cc:859
+#line 1046 "parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 340 "parser.yy" // lalr1.cc:859
-    { yylhs.value.as< TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE; }
-#line 1050 "parser.cc" // lalr1.cc:859
+#line 345 "parser.yy" // lalr1.cc:859
+    {
+                      TokenPtr str(new TokenString(yystack_[0].value.as< std::string > ()));
+                      ctx.expression.push_back(str);
+                  }
+#line 1055 "parser.cc" // lalr1.cc:859
     break;
 
   case 40:
-#line 341 "parser.yy" // lalr1.cc:859
-    { yylhs.value.as< TokenPkt6::FieldType > () = TokenPkt6::TRANSID; }
-#line 1056 "parser.cc" // lalr1.cc:859
+#line 350 "parser.yy" // lalr1.cc:859
+    {
+                     TokenPtr str(new TokenString("all"));
+                     ctx.expression.push_back(str);
+                 }
+#line 1064 "parser.cc" // lalr1.cc:859
     break;
 
 
-#line 1060 "parser.cc" // lalr1.cc:859
+#line 1068 "parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -1311,24 +1319,24 @@ namespace isc { namespace eval {
   }
 
 
-  const signed char EvalParser::yypact_ninf_ = -62;
+  const signed char EvalParser::yypact_ninf_ = -64;
 
   const signed char EvalParser::yytable_ninf_ = -1;
 
   const signed char
   EvalParser::yypact_[] =
   {
-      14,    14,    14,     6,    17,    18,    21,    41,    44,    48,
-     -62,   -62,   -62,    72,    20,    66,    29,   -62,    12,    12,
-      16,    36,    45,    45,   -24,   -62,    14,    14,    45,   -62,
-     -62,   -62,    60,    63,   -62,    73,   -62,   -62,   -62,   -62,
-     -62,   -62,   -62,   -62,    67,    69,    75,    61,    62,   -62,
-     -62,   -62,   -62,    84,   -62,    77,    78,    79,    12,    12,
-      16,    64,    45,    -3,    52,    -1,    81,    82,    83,   -62,
-      71,    95,   -62,   -62,   -62,   -62,   -62,   -62,    88,   -62,
-     -62,   -62,    87,    89,    90,   -23,   -62,    12,    49,    49,
-       9,   -62,   -62,   100,    92,    94,   -62,    93,    12,    68,
-      96,   -62,   -62,    97,    49
+      12,    12,    12,   -10,    17,    23,    34,    36,    57,    63,
+     -64,   -64,   -64,    37,    52,    59,    21,   -64,   -22,   -22,
+      39,    64,    35,    43,    43,   -64,    12,    12,    43,   -64,
+     -64,   -64,    58,    60,   -64,    68,   -64,   -64,   -64,   -64,
+     -64,   -64,   -64,   -64,   -64,   -64,   -64,    78,    79,    80,
+      61,    62,   -64,    66,   -64,    56,    82,    83,   -22,   -22,
+      39,    65,    43,    -5,     3,     4,    85,    86,    87,   -64,
+      69,    72,   -64,   -64,   -64,   -64,   -64,   -64,    81,   -64,
+     -64,   -64,    89,    90,    91,   -27,   -64,   -22,    49,    49,
+      15,   -64,   -64,   102,    94,    96,   -64,    95,   -22,    40,
+      97,   -64,   -64,    98,    49
   };
 
   const unsigned char
@@ -1337,78 +1345,78 @@ namespace isc { namespace eval {
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       11,    12,    13,     0,     2,     0,     0,     4,     0,     0,
        0,     0,     0,     0,     0,     1,     0,     0,     0,     3,
-      22,    23,     0,     0,    38,     0,    26,    27,    28,    29,
-      30,    31,    32,    18,     0,     0,     0,     0,     0,    39,
-      40,    19,     5,     6,     7,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+      22,    23,     0,     0,    26,     0,    27,    28,    29,    30,
+      31,    32,    33,    17,    34,    35,    18,     0,     0,     0,
+       0,     0,     5,     6,     7,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
        0,     0,    24,    25,     8,    14,     9,    15,     0,    36,
-      37,    17,     0,     0,     0,     0,    21,     0,     0,     0,
-       0,    35,    34,     0,     0,     0,    20,     0,     0,     0,
+      37,    19,     0,     0,     0,     0,    21,     0,     0,     0,
+       0,    40,    39,     0,     0,     0,    20,     0,     0,     0,
        0,    10,    16,     0,     0
   };
 
   const signed char
   EvalParser::yypgoto_[] =
   {
-     -62,   -62,     3,   -21,   -19,   -61,   -62,   -62,   -62,   -62,
-      50,   -62
+     -64,   -64,     5,   -20,   -19,   -63,    51,   -64,   -64,   -64,
+     -64,   -64
   };
 
   const signed char
   EvalParser::yydefgoto_[] =
   {
-      -1,    13,    14,    15,    32,    75,    43,    70,    93,    81,
-      35,    51
+      -1,    13,    14,    15,    32,    75,    35,    43,    46,    81,
+      70,    93
   };
 
   const unsigned char
   EvalParser::yytable_[] =
   {
-      33,    47,    48,    77,    16,    17,    91,    54,    78,    49,
-      50,    79,    80,    92,    72,    73,    74,     1,    95,     2,
-      18,    79,    80,     3,     4,     5,    26,    27,    77,    52,
-      53,    19,    20,    29,     6,    26,    27,    21,   102,    66,
-      67,    71,     7,   102,    22,     8,     9,    23,    30,    10,
-      31,    11,    34,    12,    44,    45,    46,    36,    37,    38,
-      39,    40,    41,    42,    24,     6,    72,    73,    94,    72,
-      73,    76,    25,     7,    28,    55,     8,     9,    56,   100,
-      10,    58,    11,    59,    12,    72,    73,   101,    57,    60,
-      26,    61,    62,    63,    64,    65,    82,    83,    84,    86,
-      69,    85,    87,    88,    96,    89,    90,    97,    98,    99,
-      68,   103,     0,   104
+      33,    77,    18,    50,    51,    91,    16,    17,    54,    92,
+      72,    73,    74,    78,    30,     1,    31,     2,    72,    73,
+      76,     3,     4,     5,    95,    29,    77,    26,    27,    19,
+       6,    52,    53,    79,    80,    20,   102,    25,     7,    66,
+      67,   102,    71,     8,    79,    80,     9,    10,    21,    11,
+      22,    12,    47,    48,    49,    72,    73,   101,    26,    27,
+      23,     6,    44,    45,    72,    73,    24,    28,    94,     7,
+      63,    55,    26,    56,     8,    34,    86,     9,    10,   100,
+      11,    57,    12,    36,    37,    38,    39,    40,    41,    42,
+      58,    59,    60,    87,    61,    62,    64,    65,    82,    83,
+      84,    69,    85,    88,    89,    90,    96,    97,    98,    99,
+     103,    68,   104
   };
 
-  const signed char
+  const unsigned char
   EvalParser::yycheck_[] =
   {
-      19,    22,    23,    64,     1,     2,    29,    28,     9,    33,
-      34,    12,    13,    36,    17,    18,    19,     3,     9,     5,
-      14,    12,    13,     9,    10,    11,     6,     7,    89,    26,
-      27,    14,    14,     4,    20,     6,     7,    16,    99,    58,
-      59,    62,    28,   104,     3,    31,    32,     3,    36,    35,
-      38,    37,    36,    39,     9,    10,    11,    21,    22,    23,
-      24,    25,    26,    27,    16,    20,    17,    18,    87,    17,
-      18,    19,     0,    28,     8,    15,    31,    32,    15,    98,
-      35,    14,    37,    14,    39,    17,    18,    19,    15,    14,
-       6,    30,    30,    16,    16,    16,    15,    15,    15,     4,
-      36,    30,    14,    16,     4,    16,    16,    15,    14,    16,
-      60,    15,    -1,    16
+      19,    64,    12,    23,    24,    32,     1,     2,    28,    36,
+      15,    16,    17,     9,    36,     3,    38,     5,    15,    16,
+      17,     9,    10,    11,     9,     4,    89,     6,     7,    12,
+      18,    26,    27,    29,    30,    12,    99,     0,    26,    58,
+      59,   104,    62,    31,    29,    30,    34,    35,    14,    37,
+      14,    39,     9,    10,    11,    15,    16,    17,     6,     7,
+       3,    18,    27,    28,    15,    16,     3,     8,    87,    26,
+      14,    13,     6,    13,    31,    36,     4,    34,    35,    98,
+      37,    13,    39,    19,    20,    21,    22,    23,    24,    25,
+      12,    12,    12,    12,    33,    33,    14,    14,    13,    13,
+      13,    36,    33,    14,    14,    14,     4,    13,    12,    14,
+      13,    60,    14
   };
 
   const unsigned char
   EvalParser::yystos_[] =
   {
-       0,     3,     5,     9,    10,    11,    20,    28,    31,    32,
-      35,    37,    39,    41,    42,    43,    42,    42,    14,    14,
-      14,    16,     3,     3,    16,     0,     6,     7,     8,     4,
-      36,    38,    44,    44,    36,    50,    21,    22,    23,    24,
-      25,    26,    27,    46,     9,    10,    11,    43,    43,    33,
-      34,    51,    42,    42,    43,    15,    15,    15,    14,    14,
-      14,    30,    30,    16,    16,    16,    44,    44,    50,    36,
-      47,    43,    17,    18,    19,    45,    19,    45,     9,    12,
-      13,    49,    15,    15,    15,    30,     4,    14,    16,    16,
-      16,    29,    36,    48,    44,     9,     4,    15,    14,    16,
-      44,    19,    45,    15,    16
+       0,     3,     5,     9,    10,    11,    18,    26,    31,    34,
+      35,    37,    39,    41,    42,    43,    42,    42,    12,    12,
+      12,    14,    14,     3,     3,     0,     6,     7,     8,     4,
+      36,    38,    44,    44,    36,    46,    19,    20,    21,    22,
+      23,    24,    25,    47,    27,    28,    48,     9,    10,    11,
+      43,    43,    42,    42,    43,    13,    13,    13,    12,    12,
+      12,    33,    33,    14,    14,    14,    44,    44,    46,    36,
+      50,    43,    15,    16,    17,    45,    17,    45,     9,    29,
+      30,    49,    13,    13,    13,    33,     4,    12,    14,    14,
+      14,    32,    36,    51,    44,     9,     4,    13,    12,    14,
+      44,    17,    45,    13,    14
   };
 
   const unsigned char
@@ -1416,8 +1424,8 @@ namespace isc { namespace eval {
   {
        0,    40,    41,    42,    42,    42,    42,    42,    42,    42,
       42,    43,    43,    43,    43,    43,    43,    43,    43,    43,
-      43,    43,    44,    44,    45,    45,    46,    46,    46,    46,
-      46,    46,    46,    47,    48,    48,    49,    49,    50,    51,
+      43,    43,    44,    44,    45,    45,    46,    47,    47,    47,
+      47,    47,    47,    47,    48,    48,    49,    49,    50,    51,
       51
   };
 
@@ -1425,7 +1433,7 @@ namespace isc { namespace eval {
   EvalParser::yyr2_[] =
   {
        0,     2,     1,     3,     2,     3,     3,     3,     6,     6,
-      11,     1,     1,     1,     6,     6,    11,     6,     3,     3,
+      11,     1,     1,     1,     6,     6,    11,     3,     3,     6,
        8,     6,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1
@@ -1440,15 +1448,15 @@ namespace isc { namespace eval {
   {
   "\"end of file\"", "error", "$undefined", "\"(\"", "\")\"", "\"not\"",
   "\"and\"", "\"or\"", "\"==\"", "\"option\"", "\"relay4\"", "\"relay6\"",
-  "\"peeraddr\"", "\"linkaddr\"", "\"[\"", "\"]\"", "\".\"", "\"text\"",
-  "\"hex\"", "\"exists\"", "\"pkt4\"", "\"mac\"", "\"hlen\"", "\"htype\"",
-  "\"ciaddr\"", "\"giaddr\"", "\"yiaddr\"", "\"siaddr\"", "\"substring\"",
-  "\"all\"", "\",\"", "\"concat\"", "\"pkt6\"", "\"msgtype\"",
-  "\"transid\"", "\"constant string\"", "\"integer\"",
+  "\"[\"", "\"]\"", "\".\"", "\"text\"", "\"hex\"", "\"exists\"",
+  "\"pkt4\"", "\"mac\"", "\"hlen\"", "\"htype\"", "\"ciaddr\"",
+  "\"giaddr\"", "\"yiaddr\"", "\"siaddr\"", "\"pkt6\"", "\"msgtype\"",
+  "\"transid\"", "\"peeraddr\"", "\"linkaddr\"", "\"substring\"",
+  "\"all\"", "\",\"", "\"concat\"", "\"constant string\"", "\"integer\"",
   "\"constant hexstring\"", "\"option name\"", "\"ip address\"", "$accept",
   "expression", "bool_expr", "string_expr", "option_code",
-  "option_repr_type", "pkt4_field", "start_expr", "length_expr",
-  "relay6_field", "nest_level", "pkt6_field", YY_NULLPTR
+  "option_repr_type", "nest_level", "pkt4_field", "pkt6_field",
+  "relay6_field", "start_expr", "length_expr", YY_NULLPTR
   };
 
 #if YYDEBUG
@@ -1456,10 +1464,10 @@ namespace isc { namespace eval {
   EvalParser::yyrline_[] =
   {
        0,   100,   100,   103,   104,   109,   114,   119,   124,   129,
-     149,   165,   170,   175,   180,   185,   206,   221,   236,   241,
-     246,   251,   258,   262,   268,   272,   278,   282,   286,   290,
-     294,   298,   302,   308,   315,   320,   327,   328,   331,   340,
-     341
+     149,   165,   170,   175,   180,   185,   206,   221,   226,   231,
+     246,   251,   258,   262,   268,   272,   278,   287,   291,   295,
+     299,   303,   307,   311,   317,   321,   327,   331,   337,   344,
+     349
   };
 
   // Print the state stack on the debug stream.
@@ -1494,8 +1502,8 @@ namespace isc { namespace eval {
 
 #line 13 "parser.yy" // lalr1.cc:1167
 } } // isc::eval
-#line 1498 "parser.cc" // lalr1.cc:1167
-#line 344 "parser.yy" // lalr1.cc:1168
+#line 1506 "parser.cc" // lalr1.cc:1167
+#line 356 "parser.yy" // lalr1.cc:1168
 
 void
 isc::eval::EvalParser::error(const location_type& loc,

+ 78 - 78
src/lib/eval/parser.h

@@ -351,29 +351,29 @@ namespace isc { namespace eval {
         TOKEN_OPTION = 264,
         TOKEN_RELAY4 = 265,
         TOKEN_RELAY6 = 266,
-        TOKEN_PEERADDR = 267,
-        TOKEN_LINKADDR = 268,
-        TOKEN_LBRACKET = 269,
-        TOKEN_RBRACKET = 270,
-        TOKEN_DOT = 271,
-        TOKEN_TEXT = 272,
-        TOKEN_HEX = 273,
-        TOKEN_EXISTS = 274,
-        TOKEN_PKT4 = 275,
-        TOKEN_CHADDR = 276,
-        TOKEN_HLEN = 277,
-        TOKEN_HTYPE = 278,
-        TOKEN_CIADDR = 279,
-        TOKEN_GIADDR = 280,
-        TOKEN_YIADDR = 281,
-        TOKEN_SIADDR = 282,
-        TOKEN_SUBSTRING = 283,
-        TOKEN_ALL = 284,
-        TOKEN_COMA = 285,
-        TOKEN_CONCAT = 286,
-        TOKEN_PKT6 = 287,
-        TOKEN_MSGTYPE = 288,
-        TOKEN_TRANSID = 289,
+        TOKEN_LBRACKET = 267,
+        TOKEN_RBRACKET = 268,
+        TOKEN_DOT = 269,
+        TOKEN_TEXT = 270,
+        TOKEN_HEX = 271,
+        TOKEN_EXISTS = 272,
+        TOKEN_PKT4 = 273,
+        TOKEN_CHADDR = 274,
+        TOKEN_HLEN = 275,
+        TOKEN_HTYPE = 276,
+        TOKEN_CIADDR = 277,
+        TOKEN_GIADDR = 278,
+        TOKEN_YIADDR = 279,
+        TOKEN_SIADDR = 280,
+        TOKEN_PKT6 = 281,
+        TOKEN_MSGTYPE = 282,
+        TOKEN_TRANSID = 283,
+        TOKEN_PEERADDR = 284,
+        TOKEN_LINKADDR = 285,
+        TOKEN_SUBSTRING = 286,
+        TOKEN_ALL = 287,
+        TOKEN_COMA = 288,
+        TOKEN_CONCAT = 289,
         TOKEN_STRING = 290,
         TOKEN_INTEGER = 291,
         TOKEN_HEXSTRING = 292,
@@ -539,14 +539,6 @@ namespace isc { namespace eval {
 
     static inline
     symbol_type
-    make_PEERADDR (const location_type& l);
-
-    static inline
-    symbol_type
-    make_LINKADDR (const location_type& l);
-
-    static inline
-    symbol_type
     make_LBRACKET (const location_type& l);
 
     static inline
@@ -603,31 +595,39 @@ namespace isc { namespace eval {
 
     static inline
     symbol_type
-    make_SUBSTRING (const location_type& l);
+    make_PKT6 (const location_type& l);
 
     static inline
     symbol_type
-    make_ALL (const location_type& l);
+    make_MSGTYPE (const location_type& l);
 
     static inline
     symbol_type
-    make_COMA (const location_type& l);
+    make_TRANSID (const location_type& l);
 
     static inline
     symbol_type
-    make_CONCAT (const location_type& l);
+    make_PEERADDR (const location_type& l);
 
     static inline
     symbol_type
-    make_PKT6 (const location_type& l);
+    make_LINKADDR (const location_type& l);
 
     static inline
     symbol_type
-    make_MSGTYPE (const location_type& l);
+    make_SUBSTRING (const location_type& l);
 
     static inline
     symbol_type
-    make_TRANSID (const location_type& l);
+    make_ALL (const location_type& l);
+
+    static inline
+    symbol_type
+    make_COMA (const location_type& l);
+
+    static inline
+    symbol_type
+    make_CONCAT (const location_type& l);
 
     static inline
     symbol_type
@@ -734,7 +734,7 @@ namespace isc { namespace eval {
   // number is the opposite.  If YYTABLE_NINF, syntax error.
   static const unsigned char yytable_[];
 
-  static const signed char yycheck_[];
+  static const unsigned char yycheck_[];
 
   // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
   // symbol of state STATE-NUM.
@@ -854,7 +854,7 @@ namespace isc { namespace eval {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 113,     ///< Last index in yytable_.
+      yylast_ = 112,     ///< Last index in yytable_.
       yynnts_ = 12,  ///< Number of nonterminal symbols.
       yyfinal_ = 25, ///< Termination state number.
       yyterror_ = 1,
@@ -944,11 +944,11 @@ namespace isc { namespace eval {
         value.copy< TokenOption::RepresentationType > (other.value);
         break;
 
-      case 46: // pkt4_field
+      case 47: // pkt4_field
         value.copy< TokenPkt4::FieldType > (other.value);
         break;
 
-      case 51: // pkt6_field
+      case 48: // pkt6_field
         value.copy< TokenPkt6::FieldType > (other.value);
         break;
 
@@ -968,7 +968,7 @@ namespace isc { namespace eval {
         value.copy< uint16_t > (other.value);
         break;
 
-      case 50: // nest_level
+      case 46: // nest_level
         value.copy< uint8_t > (other.value);
         break;
 
@@ -993,11 +993,11 @@ namespace isc { namespace eval {
         value.copy< TokenOption::RepresentationType > (v);
         break;
 
-      case 46: // pkt4_field
+      case 47: // pkt4_field
         value.copy< TokenPkt4::FieldType > (v);
         break;
 
-      case 51: // pkt6_field
+      case 48: // pkt6_field
         value.copy< TokenPkt6::FieldType > (v);
         break;
 
@@ -1017,7 +1017,7 @@ namespace isc { namespace eval {
         value.copy< uint16_t > (v);
         break;
 
-      case 50: // nest_level
+      case 46: // nest_level
         value.copy< uint8_t > (v);
         break;
 
@@ -1115,11 +1115,11 @@ namespace isc { namespace eval {
         value.template destroy< TokenOption::RepresentationType > ();
         break;
 
-      case 46: // pkt4_field
+      case 47: // pkt4_field
         value.template destroy< TokenPkt4::FieldType > ();
         break;
 
-      case 51: // pkt6_field
+      case 48: // pkt6_field
         value.template destroy< TokenPkt6::FieldType > ();
         break;
 
@@ -1139,7 +1139,7 @@ namespace isc { namespace eval {
         value.template destroy< uint16_t > ();
         break;
 
-      case 50: // nest_level
+      case 46: // nest_level
         value.template destroy< uint8_t > ();
         break;
 
@@ -1170,11 +1170,11 @@ namespace isc { namespace eval {
         value.move< TokenOption::RepresentationType > (s.value);
         break;
 
-      case 46: // pkt4_field
+      case 47: // pkt4_field
         value.move< TokenPkt4::FieldType > (s.value);
         break;
 
-      case 51: // pkt6_field
+      case 48: // pkt6_field
         value.move< TokenPkt6::FieldType > (s.value);
         break;
 
@@ -1194,7 +1194,7 @@ namespace isc { namespace eval {
         value.move< uint16_t > (s.value);
         break;
 
-      case 50: // nest_level
+      case 46: // nest_level
         value.move< uint8_t > (s.value);
         break;
 
@@ -1322,18 +1322,6 @@ namespace isc { namespace eval {
   }
 
   EvalParser::symbol_type
-  EvalParser::make_PEERADDR (const location_type& l)
-  {
-    return symbol_type (token::TOKEN_PEERADDR, l);
-  }
-
-  EvalParser::symbol_type
-  EvalParser::make_LINKADDR (const location_type& l)
-  {
-    return symbol_type (token::TOKEN_LINKADDR, l);
-  }
-
-  EvalParser::symbol_type
   EvalParser::make_LBRACKET (const location_type& l)
   {
     return symbol_type (token::TOKEN_LBRACKET, l);
@@ -1418,45 +1406,57 @@ namespace isc { namespace eval {
   }
 
   EvalParser::symbol_type
-  EvalParser::make_SUBSTRING (const location_type& l)
+  EvalParser::make_PKT6 (const location_type& l)
   {
-    return symbol_type (token::TOKEN_SUBSTRING, l);
+    return symbol_type (token::TOKEN_PKT6, l);
   }
 
   EvalParser::symbol_type
-  EvalParser::make_ALL (const location_type& l)
+  EvalParser::make_MSGTYPE (const location_type& l)
   {
-    return symbol_type (token::TOKEN_ALL, l);
+    return symbol_type (token::TOKEN_MSGTYPE, l);
   }
 
   EvalParser::symbol_type
-  EvalParser::make_COMA (const location_type& l)
+  EvalParser::make_TRANSID (const location_type& l)
   {
-    return symbol_type (token::TOKEN_COMA, l);
+    return symbol_type (token::TOKEN_TRANSID, l);
   }
 
   EvalParser::symbol_type
-  EvalParser::make_CONCAT (const location_type& l)
+  EvalParser::make_PEERADDR (const location_type& l)
   {
-    return symbol_type (token::TOKEN_CONCAT, l);
+    return symbol_type (token::TOKEN_PEERADDR, l);
   }
 
   EvalParser::symbol_type
-  EvalParser::make_PKT6 (const location_type& l)
+  EvalParser::make_LINKADDR (const location_type& l)
   {
-    return symbol_type (token::TOKEN_PKT6, l);
+    return symbol_type (token::TOKEN_LINKADDR, l);
   }
 
   EvalParser::symbol_type
-  EvalParser::make_MSGTYPE (const location_type& l)
+  EvalParser::make_SUBSTRING (const location_type& l)
   {
-    return symbol_type (token::TOKEN_MSGTYPE, l);
+    return symbol_type (token::TOKEN_SUBSTRING, l);
   }
 
   EvalParser::symbol_type
-  EvalParser::make_TRANSID (const location_type& l)
+  EvalParser::make_ALL (const location_type& l)
   {
-    return symbol_type (token::TOKEN_TRANSID, l);
+    return symbol_type (token::TOKEN_ALL, l);
+  }
+
+  EvalParser::symbol_type
+  EvalParser::make_COMA (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_COMA, l);
+  }
+
+  EvalParser::symbol_type
+  EvalParser::make_CONCAT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONCAT, l);
   }
 
   EvalParser::symbol_type

+ 1 - 1
src/lib/eval/position.hh

@@ -1,4 +1,4 @@
-// Generated 201604271143
+// Generated 201606101509
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++

+ 1 - 1
src/lib/eval/stack.hh

@@ -1,4 +1,4 @@
-// Generated 201604271143
+// Generated 201606101509
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++