Diff for /parser3/src/main/compile.tab.C between versions 1.163 and 1.167

version 1.163, 2015/09/27 20:19:20 version 1.167, 2016/04/01 16:29:03
Line 67 Line 67
 /** @file  /** @file
         Parser: compiler(lexical parser and grammar).          Parser: compiler(lexical parser and grammar).
   
         Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)          Copyright (c) 2001-2015 Art. Lebedev Studio (http://www.artlebedev.com)
         Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)          Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
   
                   
Line 130  static const VString vempty; Line 130  static const VString vempty;
 #ifndef DOXYGEN  #ifndef DOXYGEN
   
 #define CLASS_ADD if(PC.class_add()){                                   \  #define CLASS_ADD if(PC.class_add()){                                   \
         strncpy(PC.error, PC.cclass->name().cstr(), MAX_STRING/2);      \          strncpy(PC.error, PC.cclass->type(), MAX_STRING/2);             \
         strcat(PC.error, " - class is already defined");                \          strcat(PC.error, " - class is already defined");                \
         YYERROR;                                                        \          YYERROR;                                                        \
 }  }
Line 519  static const yytype_uint8 yytranslate[] Line 519  static const yytype_uint8 yytranslate[]
 static const yytype_uint16 yyrline[] =  static const yytype_uint16 yyrline[] =
 {  {
        0,   142,   142,   149,   151,   151,   152,   154,   154,   156,         0,   142,   142,   149,   151,   151,   152,   154,   154,   156,
      266,   266,   267,   267,   268,   269,   269,   271,   271,   319,       268,   268,   269,   269,   270,   271,   271,   273,   273,   321,
      319,   320,   321,   321,   322,   322,   324,   324,   328,   328,       321,   322,   323,   323,   324,   324,   326,   326,   330,   330,
      330,   330,   331,   331,   332,   332,   332,   336,   384,   385,       332,   332,   333,   333,   334,   334,   334,   338,   386,   387,
      385,   386,   388,   389,   390,   443,   444,   444,   448,   461,       387,   388,   390,   391,   392,   445,   446,   446,   450,   463,
      462,   463,   464,   490,   495,   498,   499,   500,   502,   505,       464,   465,   466,   492,   497,   500,   501,   502,   504,   507,
      502,   513,   521,   528,   529,   530,   532,   538,   539,   539,       504,   515,   523,   530,   531,   532,   534,   540,   541,   541,
      543,   556,   559,   556,   604,   606,   606,   608,   609,   610,       545,   558,   561,   558,   610,   626,   626,   628,   629,   630,
      612,   615,   612,   618,   619,   621,   622,   625,   626,   629,       632,   635,   632,   638,   639,   641,   642,   645,   646,   649,
      630,   632,   635,   649,   654,   655,   656,   661,   661,   663,       650,   652,   655,   669,   674,   675,   676,   681,   681,   683,
      663,   664,   665,   677,   686,   689,   690,   691,   692,   694,       683,   684,   685,   697,   706,   709,   710,   711,   712,   714,
      698,   707,   710,   707,   723,   728,   728,   729,   735,   736,       718,   727,   730,   727,   743,   748,   748,   749,   755,   756,
      738,   751,   763,   765,   766,   767,   768,   769,   770,   771,       758,   771,   783,   785,   786,   787,   788,   789,   790,   791,
      772,   774,   775,   776,   777,   778,   779,   780,   781,   783,       792,   794,   795,   796,   797,   798,   799,   800,   801,   803,
      784,   785,   786,   787,   788,   789,   790,   791,   792,   793,       804,   805,   806,   807,   808,   809,   810,   811,   812,   813,
      794,   795,   796,   797,   798,   799,   800,   801,   802,   803,       814,   815,   816,   817,   818,   819,   820,   821,   822,   823,
      804,   805,   806,   807,   808,   809,   812,   817,   838,   843,       824,   825,   826,   827,   828,   829,   832,   837,   858,   863,
      844,   845,   847       864,   865,   867
 };  };
 #endif  #endif
   
Line 1598  yyreduce: Line 1598  yyreduce:
                         // creating the class                          // creating the class
                         VStateless_class* cclass=new VClass;                          VStateless_class* cclass=new VClass;
                         PC.cclass_new=cclass;                          PC.cclass_new=cclass;
                         PC.cclass_new->set_name(name);                          PC.cclass_new->set_type(name.cstr());
                         PC.append=false;                          PC.append=false;
                 } else {                  } else {
                         strcpy(PC.error, "@" CLASS_NAME " must contain only one line with class name (contains more then one)");                          strcpy(PC.error, "@" CLASS_NAME " must contain only one line with class name (contains more then one)");
Line 1606  yyreduce: Line 1606  yyreduce:
                 }                  }
         } else if(command==USE_CONTROL_METHOD_NAME) {          } else if(command==USE_CONTROL_METHOD_NAME) {
                 CLASS_ADD;                  CLASS_ADD;
                 for(size_t i=0; i<strings_code->count(); i+=OPERATIONS_PER_OPVALUE)                   for(size_t i=0; i<strings_code->count(); i+=OPERATIONS_PER_OPVALUE){
                         PC.request.use_file(PC.request.main_class, LA2S(*strings_code, i)->trim(String::TRIM_END), PC.request.get_used_filename(PC.file_no));                          PC.request.use_file(PC.request.main_class, LA2S(*strings_code, i)->trim(String::TRIM_END),
                                   PC.request.get_used_filename(PC.file_no), strings_code->get(i+1).origin);
                   }
         } else if(command==BASE_NAME) {          } else if(command==BASE_NAME) {
                 if(PC.append){                  if(PC.append){
                         strcpy(PC.error, "can't set base while appending methods to class '");                          strcpy(PC.error, "can't set base while appending methods to class '");
                         strncat(PC.error, PC.cclass->name().cstr(), MAX_STRING/2);                          strncat(PC.error, PC.cclass->type(), MAX_STRING/2);
                         strcat(PC.error, "'");                          strcat(PC.error, "'");
                         YYERROR;                          YYERROR;
                 }                  }
                 CLASS_ADD;                  CLASS_ADD;
                 if(PC.cclass->base_class()) { // already changed from default?                  if(PC.cclass->base_class()) { // already changed from default?
                         strcpy(PC.error, "class already have a base '");                          strcpy(PC.error, "class already have a base '");
                         strncat(PC.error, PC.cclass->base_class()->name().cstr(), MAX_STRING/2);                          strncat(PC.error, PC.cclass->base_class()->type(), MAX_STRING/2);
                         strcat(PC.error, "'");                          strcat(PC.error, "'");
                         YYERROR;                          YYERROR;
                 }                  }
Line 1656  yyreduce: Line 1658  yyreduce:
                                         if(VStateless_class* existed=PC.get_existed_class(PC.cclass_new)){                                          if(VStateless_class* existed=PC.get_existed_class(PC.cclass_new)){
                                                 if(!PC.reuse_existed_class(existed)){                                                  if(!PC.reuse_existed_class(existed)){
                                                         strcpy(PC.error, "can't append methods to '");                                                          strcpy(PC.error, "can't append methods to '");
                                                         strncat(PC.error, PC.cclass_new->name().cstr(), MAX_STRING/2);                                                          strncat(PC.error, PC.cclass_new->type(), MAX_STRING/2);
                                                         strcat(PC.error, "' - the class wasn't marked as partial");                                                          strcat(PC.error, "' - the class wasn't marked as partial");
                                                         YYERROR;                                                          YYERROR;
                                                 }                                                  }
Line 1690  yyreduce: Line 1692  yyreduce:
                 YYERROR;                  YYERROR;
         }          }
 }  }
 #line 1694 "compile.tab.C" /* yacc.c:1646  */  #line 1696 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 13:    case 13:
 #line 267 "compile.y" /* yacc.c:1646  */  #line 269 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 1700 "compile.tab.C" /* yacc.c:1646  */  #line 1702 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 17:    case 17:
 #line 271 "compile.y" /* yacc.c:1646  */  #line 273 "compile.y" /* yacc.c:1646  */
     {       { 
         CLASS_ADD;          CLASS_ADD;
         PC.explicit_result=false;          PC.explicit_result=false;
Line 1740  yyreduce: Line 1742  yyreduce:
   
         *reinterpret_cast<Method**>(&(yyval))=method;          *reinterpret_cast<Method**>(&(yyval))=method;
 }  }
 #line 1744 "compile.tab.C" /* yacc.c:1646  */  #line 1746 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 18:    case 18:
 #line 309 "compile.y" /* yacc.c:1646  */  #line 311 "compile.y" /* yacc.c:1646  */
     {      {
                 Method* method=reinterpret_cast<Method*>((yyvsp[-1]));                  Method* method=reinterpret_cast<Method*>((yyvsp[-1]));
                 // fill in the code                  // fill in the code
Line 1754  yyreduce: Line 1756  yyreduce:
                 const String& name=*LA2S(*(yyvsp[-6]));                  const String& name=*LA2S(*(yyvsp[-6]));
                 PC.cclass->set_method(PC.alias_method(name), method);                  PC.cclass->set_method(PC.alias_method(name), method);
 }  }
 #line 1758 "compile.tab.C" /* yacc.c:1646  */  #line 1760 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 21:    case 21:
 #line 320 "compile.y" /* yacc.c:1646  */  #line 322 "compile.y" /* yacc.c:1646  */
     {(yyval)=(yyvsp[-1]);}      {(yyval)=(yyvsp[-1]);}
 #line 1764 "compile.tab.C" /* yacc.c:1646  */  #line 1766 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 25:    case 25:
 #line 322 "compile.y" /* yacc.c:1646  */  #line 324 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-2]); P(*(yyval), *(yyvsp[0])); }
 #line 1770 "compile.tab.C" /* yacc.c:1646  */  #line 1772 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 31:    case 31:
 #line 330 "compile.y" /* yacc.c:1646  */  #line 332 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 1776 "compile.tab.C" /* yacc.c:1646  */  #line 1778 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 37:    case 37:
 #line 336 "compile.y" /* yacc.c:1646  */  #line 338 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();          (yyval)=N();
         YYSTYPE code=(yyvsp[0]);          YYSTYPE code=(yyvsp[0]);
Line 1825  yyreduce: Line 1827  yyreduce:
   
         P(*(yyval), *code);          P(*(yyval), *code);
 }  }
 #line 1829 "compile.tab.C" /* yacc.c:1646  */  #line 1831 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 38:    case 38:
 #line 384 "compile.y" /* yacc.c:1646  */  #line 386 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]); }      { (yyval)=(yyvsp[0]); }
 #line 1835 "compile.tab.C" /* yacc.c:1646  */  #line 1837 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 41:    case 41:
 #line 386 "compile.y" /* yacc.c:1646  */  #line 388 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); }      { (yyval)=(yyvsp[-1]); }
 #line 1841 "compile.tab.C" /* yacc.c:1646  */  #line 1843 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 44:    case 44:
 #line 390 "compile.y" /* yacc.c:1646  */  #line 392 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();           (yyval)=N(); 
         YYSTYPE diving_code=(yyvsp[0]);          YYSTYPE diving_code=(yyvsp[0]);
Line 1895  yyreduce: Line 1897  yyreduce:
 #endif  #endif
         /* diving code; stack: current context */          /* diving code; stack: current context */
 }  }
 #line 1899 "compile.tab.C" /* yacc.c:1646  */  #line 1901 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 45:    case 45:
 #line 443 "compile.y" /* yacc.c:1646  */  #line 445 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 1905 "compile.tab.C" /* yacc.c:1646  */  #line 1907 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 47:    case 47:
 #line 444 "compile.y" /* yacc.c:1646  */  #line 446 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 1911 "compile.tab.C" /* yacc.c:1646  */  #line 1913 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 48:    case 48:
 #line 448 "compile.y" /* yacc.c:1646  */  #line 450 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();          (yyval)=N();
 #ifdef OPTIMIZE_BYTECODE_CONSTRUCT  #ifdef OPTIMIZE_BYTECODE_CONSTRUCT
Line 1924  yyreduce: Line 1926  yyreduce:
                 P(*(yyval), *(yyvsp[0])); /* stack: context,name,constructor_value */                  P(*(yyval), *(yyvsp[0])); /* stack: context,name,constructor_value */
         }          }
 }  }
 #line 1928 "compile.tab.C" /* yacc.c:1646  */  #line 1930 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 52:    case 52:
 #line 464 "compile.y" /* yacc.c:1646  */  #line 466 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();          (yyval)=N();
         YYSTYPE diving_code=(yyvsp[0]);          YYSTYPE diving_code=(yyvsp[0]);
Line 1955  yyreduce: Line 1957  yyreduce:
         }          }
         /* diving code; stack: current context */          /* diving code; stack: current context */
 }  }
 #line 1959 "compile.tab.C" /* yacc.c:1646  */  #line 1961 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 53:    case 53:
 #line 490 "compile.y" /* yacc.c:1646  */  #line 492 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();           (yyval)=N(); 
         O(*(yyval), OP::OP_WITH_WRITE); /* stack: starting context */          O(*(yyval), OP::OP_WITH_WRITE); /* stack: starting context */
         P(*(yyval), *(yyvsp[0])); /* diving code; stack: context,name */          P(*(yyval), *(yyvsp[0])); /* diving code; stack: context,name */
 }  }
 #line 1969 "compile.tab.C" /* yacc.c:1646  */  #line 1971 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 54:    case 54:
 #line 495 "compile.y" /* yacc.c:1646  */  #line 497 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 1975 "compile.tab.C" /* yacc.c:1646  */  #line 1977 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 58:    case 58:
 #line 502 "compile.y" /* yacc.c:1646  */  #line 504 "compile.y" /* yacc.c:1646  */
     {      {
         // allow $result_or_other_variable[ letters here any time ]          // allow $result_or_other_variable[ letters here any time ]
         *reinterpret_cast<bool*>(&(yyval))=PC.explicit_result; PC.explicit_result=false;          *reinterpret_cast<bool*>(&(yyval))=PC.explicit_result; PC.explicit_result=false;
 }  }
 #line 1984 "compile.tab.C" /* yacc.c:1646  */  #line 1986 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 59:    case 59:
 #line 505 "compile.y" /* yacc.c:1646  */  #line 507 "compile.y" /* yacc.c:1646  */
     {      {
         PC.explicit_result=*reinterpret_cast<bool*>(&(yyvsp[-1]));          PC.explicit_result=*reinterpret_cast<bool*>(&(yyvsp[-1]));
 }  }
 #line 1992 "compile.tab.C" /* yacc.c:1646  */  #line 1994 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 60:    case 60:
 #line 507 "compile.y" /* yacc.c:1646  */  #line 509 "compile.y" /* yacc.c:1646  */
     {      {
         // stack: context, name          // stack: context, name
         (yyval)=(yyvsp[-2]); // stack: context, name, value          (yyval)=(yyvsp[-2]); // stack: context, name, value
         O(*(yyval), OP::OP_CONSTRUCT_VALUE); /* value=pop; name=pop; context=pop; construct(context,name,value) */          O(*(yyval), OP::OP_CONSTRUCT_VALUE); /* value=pop; name=pop; context=pop; construct(context,name,value) */
 }  }
 #line 2002 "compile.tab.C" /* yacc.c:1646  */  #line 2004 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 61:    case 61:
 #line 513 "compile.y" /* yacc.c:1646  */  #line 515 "compile.y" /* yacc.c:1646  */
     {       { 
         (yyval)=N();           (yyval)=N(); 
         O(*(yyval), OP::OP_PREPARE_TO_EXPRESSION);          O(*(yyval), OP::OP_PREPARE_TO_EXPRESSION);
Line 2010  yyreduce: Line 2012  yyreduce:
         P(*(yyval), *(yyvsp[-1])); // stack: context, name, value          P(*(yyval), *(yyvsp[-1])); // stack: context, name, value
         O(*(yyval), OP::OP_CONSTRUCT_EXPR); /* value=pop->as_expr_result; name=pop; context=pop; construct(context,name,value) */          O(*(yyval), OP::OP_CONSTRUCT_EXPR); /* value=pop->as_expr_result; name=pop; context=pop; construct(context,name,value) */
 }  }
 #line 2014 "compile.tab.C" /* yacc.c:1646  */  #line 2016 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 62:    case 62:
 #line 521 "compile.y" /* yacc.c:1646  */  #line 523 "compile.y" /* yacc.c:1646  */
     {      {
         // stack: context, name          // stack: context, name
         (yyval)=N();           (yyval)=N(); 
         OA(*(yyval), OP::OP_CURLY_CODE__CONSTRUCT, (yyvsp[-1])); /* code=pop; name=pop; context=pop; construct(context,name,junction(code)) */          OA(*(yyval), OP::OP_CURLY_CODE__CONSTRUCT, (yyvsp[-1])); /* code=pop; name=pop; context=pop; construct(context,name,junction(code)) */
 }  }
 #line 2024 "compile.tab.C" /* yacc.c:1646  */  #line 2026 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 66:    case 66:
 #line 532 "compile.y" /* yacc.c:1646  */  #line 534 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();           (yyval)=N(); 
         OA(*(yyval), OP::OP_OBJECT_POOL, (yyvsp[0])); /* stack: empty write context */          OA(*(yyval), OP::OP_OBJECT_POOL, (yyvsp[0])); /* stack: empty write context */
         /* some code that writes to that context */          /* some code that writes to that context */
         /* context=pop; stack: context.value() */          /* context=pop; stack: context.value() */
 }  }
 #line 2035 "compile.tab.C" /* yacc.c:1646  */  #line 2037 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 69:    case 69:
 #line 539 "compile.y" /* yacc.c:1646  */  #line 541 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 2041 "compile.tab.C" /* yacc.c:1646  */  #line 2043 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 70:    case 70:
 #line 543 "compile.y" /* yacc.c:1646  */  #line 545 "compile.y" /* yacc.c:1646  */
     {      {
         size_t count=(yyvsp[0])->count();          size_t count=(yyvsp[0])->count();
 #ifdef OPTIMIZE_BYTECODE_CUT_REM_OPERATOR  #ifdef OPTIMIZE_BYTECODE_CUT_REM_OPERATOR
Line 2055  yyreduce: Line 2057  yyreduce:
                                 /*or */OP::OP_WRITE_VALUE); /* value=pop; wcontext.write(value) */                                  /*or */OP::OP_WRITE_VALUE); /* value=pop; wcontext.write(value) */
         }          }
 }  }
 #line 2059 "compile.tab.C" /* yacc.c:1646  */  #line 2061 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 71:    case 71:
 #line 556 "compile.y" /* yacc.c:1646  */  #line 558 "compile.y" /* yacc.c:1646  */
     {       { 
                                         PC.in_call_value=true;                                           PC.in_call_value=true; 
                         }                          }
 #line 2067 "compile.tab.C" /* yacc.c:1646  */  #line 2069 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 72:    case 72:
 #line 559 "compile.y" /* yacc.c:1646  */  #line 561 "compile.y" /* yacc.c:1646  */
     {      {
                                 PC.in_call_value=false;                                  PC.in_call_value=false;
                         }                          }
 #line 2075 "compile.tab.C" /* yacc.c:1646  */  #line 2077 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 73:    case 73:
 #line 562 "compile.y" /* yacc.c:1646  */  #line 564 "compile.y" /* yacc.c:1646  */
     { /* ^field.$method{vasya} */      { /* ^field.$method{vasya} */
 #ifdef OPTIMIZE_BYTECODE_CUT_REM_OPERATOR  #ifdef OPTIMIZE_BYTECODE_CUT_REM_OPERATOR
 #ifdef OPTIMIZE_BYTECODE_GET_ELEMENT  #ifdef OPTIMIZE_BYTECODE_GET_ELEMENT
Line 2103  yyreduce: Line 2105  yyreduce:
                                 && (*var_code)[0].code==OP::OP_VALUE__GET_CLASS                                  && (*var_code)[0].code==OP::OP_VALUE__GET_CLASS
                                 && (*var_code)[3].code==OP::OP_PREPARE_TO_CONSTRUCT_OBJECT                                  && (*var_code)[3].code==OP::OP_PREPARE_TO_CONSTRUCT_OBJECT
                                 && (*var_code)[4].code==OP::OP_VALUE                                  && (*var_code)[4].code==OP::OP_VALUE
   #ifdef FEATURE_GET_ELEMENT4CALL
                                   && (*var_code)[7].code==OP::OP_GET_ELEMENT4CALL
   #else
                                 && (*var_code)[7].code==OP::OP_GET_ELEMENT                                  && (*var_code)[7].code==OP::OP_GET_ELEMENT
   #endif
                         ){                          ){
                                 (yyval)=N();                                  (yyval)=N();
                                 O(*(yyval), OP::OP_CONSTRUCT_OBJECT);                                  O(*(yyval), OP::OP_CONSTRUCT_OBJECT);
Line 2117  yyreduce: Line 2123  yyreduce:
                                 }                                  }
                 }                  }
 }  }
 #line 2121 "compile.tab.C" /* yacc.c:1646  */  #line 2127 "compile.tab.C" /* yacc.c:1646  */
       break;
   
     case 74:
   #line 610 "compile.y" /* yacc.c:1646  */
       {
   #ifdef FEATURE_GET_ELEMENT4CALL
           size_t count=(yyvsp[0])->count();
           if(count){
                   (yyval)=(yyvsp[0]);
   #ifdef OPTIMIZE_BYTECODE_GET_OBJECT_ELEMENT
                   !(count==5 && change_first(*(yyval), OP::OP_GET_OBJECT_ELEMENT, OP::OP_GET_OBJECT_ELEMENT4CALL)) &&
   #endif
   #ifdef OPTIMIZE_BYTECODE_GET_OBJECT_VAR_ELEMENT
                   !(count==5 && change_first(*(yyval), OP::OP_GET_OBJECT_VAR_ELEMENT, OP::OP_GET_OBJECT_VAR_ELEMENT4CALL)) &&
   #endif
                   !change(*(yyval), count-1, OP::OP_GET_ELEMENT, OP::OP_GET_ELEMENT4CALL);
           }
   #endif
   }
   #line 2147 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 76:    case 76:
 #line 606 "compile.y" /* yacc.c:1646  */  #line 626 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 2127 "compile.tab.C" /* yacc.c:1646  */  #line 2153 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 80:    case 80:
 #line 612 "compile.y" /* yacc.c:1646  */  #line 632 "compile.y" /* yacc.c:1646  */
     {      {
         // allow ^call[ letters here any time ]          // allow ^call[ letters here any time ]
         *reinterpret_cast<bool*>(&(yyval))=PC.explicit_result; PC.explicit_result=false;          *reinterpret_cast<bool*>(&(yyval))=PC.explicit_result; PC.explicit_result=false;
 }  }
 #line 2136 "compile.tab.C" /* yacc.c:1646  */  #line 2162 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 81:    case 81:
 #line 615 "compile.y" /* yacc.c:1646  */  #line 635 "compile.y" /* yacc.c:1646  */
     {      {
         PC.explicit_result=*reinterpret_cast<bool*>(&(yyvsp[-1]));          PC.explicit_result=*reinterpret_cast<bool*>(&(yyvsp[-1]));
 }  }
 #line 2144 "compile.tab.C" /* yacc.c:1646  */  #line 2170 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 82:    case 82:
 #line 617 "compile.y" /* yacc.c:1646  */  #line 637 "compile.y" /* yacc.c:1646  */
     {(yyval)=(yyvsp[-2]);}      {(yyval)=(yyvsp[-2]);}
 #line 2150 "compile.tab.C" /* yacc.c:1646  */  #line 2176 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 83:    case 83:
 #line 618 "compile.y" /* yacc.c:1646  */  #line 638 "compile.y" /* yacc.c:1646  */
     {(yyval)=(yyvsp[-1]);}      {(yyval)=(yyvsp[-1]);}
 #line 2156 "compile.tab.C" /* yacc.c:1646  */  #line 2182 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 84:    case 84:
 #line 619 "compile.y" /* yacc.c:1646  */  #line 639 "compile.y" /* yacc.c:1646  */
     {(yyval)=(yyvsp[-1]);}      {(yyval)=(yyvsp[-1]);}
 #line 2162 "compile.tab.C" /* yacc.c:1646  */  #line 2188 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 86:    case 86:
 #line 622 "compile.y" /* yacc.c:1646  */  #line 642 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-2]); P(*(yyval), *(yyvsp[0])); }
 #line 2168 "compile.tab.C" /* yacc.c:1646  */  #line 2194 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 88:    case 88:
 #line 626 "compile.y" /* yacc.c:1646  */  #line 646 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-2]); P(*(yyval), *(yyvsp[0])); }
 #line 2174 "compile.tab.C" /* yacc.c:1646  */  #line 2200 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 90:    case 90:
 #line 630 "compile.y" /* yacc.c:1646  */  #line 650 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-2]); P(*(yyval), *(yyvsp[0])); }
 #line 2180 "compile.tab.C" /* yacc.c:1646  */  #line 2206 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 91:    case 91:
 #line 632 "compile.y" /* yacc.c:1646  */  #line 652 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=(yyvsp[0]);          (yyval)=(yyvsp[0]);
 }  }
 #line 2188 "compile.tab.C" /* yacc.c:1646  */  #line 2214 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 92:    case 92:
 #line 635 "compile.y" /* yacc.c:1646  */  #line 655 "compile.y" /* yacc.c:1646  */
     {      {
         YYSTYPE expr_code=(yyvsp[0]);          YYSTYPE expr_code=(yyvsp[0]);
         if(expr_code->count()==3          if(expr_code->count()==3
Line 2203  yyreduce: Line 2229  yyreduce:
                 OA(*(yyval), OP::OP_EXPR_CODE__STORE_PARAM, code);                  OA(*(yyval), OP::OP_EXPR_CODE__STORE_PARAM, code);
         }          }
 }  }
 #line 2207 "compile.tab.C" /* yacc.c:1646  */  #line 2233 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 93:    case 93:
 #line 649 "compile.y" /* yacc.c:1646  */  #line 669 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();           (yyval)=N(); 
         OA(*(yyval), OP::OP_CURLY_CODE__STORE_PARAM, (yyvsp[0]));          OA(*(yyval), OP::OP_CURLY_CODE__STORE_PARAM, (yyvsp[0]));
 }  }
 #line 2216 "compile.tab.C" /* yacc.c:1646  */  #line 2242 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 98:    case 98:
 #line 661 "compile.y" /* yacc.c:1646  */  #line 681 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 2222 "compile.tab.C" /* yacc.c:1646  */  #line 2248 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 100:    case 100:
 #line 663 "compile.y" /* yacc.c:1646  */  #line 683 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 2228 "compile.tab.C" /* yacc.c:1646  */  #line 2254 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 102:    case 102:
 #line 665 "compile.y" /* yacc.c:1646  */  #line 685 "compile.y" /* yacc.c:1646  */
     {      {
         // we know that name_advance1 not called from ^xxx context          // we know that name_advance1 not called from ^xxx context
         // so we'll not check for operator call possibility as we do in name_advance2          // so we'll not check for operator call possibility as we do in name_advance2
Line 2241  yyreduce: Line 2267  yyreduce:
         O(*(yyval), OP::OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */          O(*(yyval), OP::OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */
 #endif  #endif
 }  }
 #line 2245 "compile.tab.C" /* yacc.c:1646  */  #line 2271 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 103:    case 103:
 #line 677 "compile.y" /* yacc.c:1646  */  #line 697 "compile.y" /* yacc.c:1646  */
     {      {
         /* stack: context */          /* stack: context */
         (yyval)=(yyvsp[0]); /* stack: context,name */          (yyval)=(yyvsp[0]); /* stack: context,name */
Line 2255  yyreduce: Line 2281  yyreduce:
         O(*(yyval), OP::OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */          O(*(yyval), OP::OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */
 #endif  #endif
 }  }
 #line 2259 "compile.tab.C" /* yacc.c:1646  */  #line 2285 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 109:    case 109:
 #line 694 "compile.y" /* yacc.c:1646  */  #line 714 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=(yyvsp[0]);          (yyval)=(yyvsp[0]);
         O(*(yyval), OP::OP_GET_ELEMENT);          O(*(yyval), OP::OP_GET_ELEMENT);
 }  }
 #line 2268 "compile.tab.C" /* yacc.c:1646  */  #line 2294 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 110:    case 110:
 #line 698 "compile.y" /* yacc.c:1646  */  #line 718 "compile.y" /* yacc.c:1646  */
     {      {
         YYSTYPE code;          YYSTYPE code;
         {          {
Line 2278  yyreduce: Line 2304  yyreduce:
         (yyval)=N();           (yyval)=N(); 
         OA(*(yyval), OP::OP_STRING_POOL, code);          OA(*(yyval), OP::OP_STRING_POOL, code);
 }  }
 #line 2282 "compile.tab.C" /* yacc.c:1646  */  #line 2308 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 111:    case 111:
 #line 707 "compile.y" /* yacc.c:1646  */  #line 727 "compile.y" /* yacc.c:1646  */
     {      {
         // allow $result_or_other_variable[ letters here any time ]          // allow $result_or_other_variable[ letters here any time ]
         *reinterpret_cast<bool*>(&(yyval))=PC.explicit_result; PC.explicit_result=false;          *reinterpret_cast<bool*>(&(yyval))=PC.explicit_result; PC.explicit_result=false;
 }  }
 #line 2291 "compile.tab.C" /* yacc.c:1646  */  #line 2317 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 112:    case 112:
 #line 710 "compile.y" /* yacc.c:1646  */  #line 730 "compile.y" /* yacc.c:1646  */
     {      {
         PC.explicit_result=*reinterpret_cast<bool*>(&(yyvsp[-1]));          PC.explicit_result=*reinterpret_cast<bool*>(&(yyvsp[-1]));
 }  }
 #line 2299 "compile.tab.C" /* yacc.c:1646  */  #line 2325 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 113:    case 113:
 #line 712 "compile.y" /* yacc.c:1646  */  #line 732 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();           (yyval)=N(); 
 #ifdef OPTIMIZE_BYTECODE_GET_ELEMENT__SPECIAL  #ifdef OPTIMIZE_BYTECODE_GET_ELEMENT__SPECIAL
Line 2311  yyreduce: Line 2337  yyreduce:
         /* context=pop; stack: context.value() */          /* context=pop; stack: context.value() */
         }          }
 }  }
 #line 2315 "compile.tab.C" /* yacc.c:1646  */  #line 2341 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 114:    case 114:
 #line 723 "compile.y" /* yacc.c:1646  */  #line 743 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=N();           (yyval)=N(); 
         O(*(yyval), OP::OP_WITH_READ);          O(*(yyval), OP::OP_WITH_READ);
         P(*(yyval), *(yyvsp[0]));          P(*(yyval), *(yyvsp[0]));
 }  }
 #line 2325 "compile.tab.C" /* yacc.c:1646  */  #line 2351 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 116:    case 116:
 #line 728 "compile.y" /* yacc.c:1646  */  #line 748 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }      { (yyval)=(yyvsp[-1]); P(*(yyval), *(yyvsp[0])); }
 #line 2331 "compile.tab.C" /* yacc.c:1646  */  #line 2357 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 117:    case 117:
 #line 729 "compile.y" /* yacc.c:1646  */  #line 749 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=(yyvsp[0]);          (yyval)=(yyvsp[0]);
         O(*(yyval), OP::OP_GET_ELEMENT__WRITE);          O(*(yyval), OP::OP_GET_ELEMENT__WRITE);
 }  }
 #line 2340 "compile.tab.C" /* yacc.c:1646  */  #line 2366 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 120:    case 120:
 #line 738 "compile.y" /* yacc.c:1646  */  #line 758 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=(yyvsp[-1]); // stack: class name string          (yyval)=(yyvsp[-1]); // stack: class name string
         if(*LA2S(*(yyval)) == BASE_NAME) { // pseudo BASE class          if(*LA2S(*(yyval)) == BASE_NAME) { // pseudo BASE class
                 if(VStateless_class* base=PC.cclass->base_class()) {                  if(VStateless_class* base=PC.cclass->base_class()) {
                         change_string_literal_value(*(yyval), base->name());                          change_string_literal_value(*(yyval), *new String(base->type()));
                 } else {                  } else {
                         strcpy(PC.error, "no base class declared");                          strcpy(PC.error, "no base class declared");
                         YYERROR;                          YYERROR;
Line 2354  yyreduce: Line 2380  yyreduce:
         // optimized OP_VALUE+origin+string+OP_GET_CLASS => OP_VALUE__GET_CLASS+origin+string          // optimized OP_VALUE+origin+string+OP_GET_CLASS => OP_VALUE__GET_CLASS+origin+string
         change_first(*(yyval), OP::OP_VALUE, OP::OP_VALUE__GET_CLASS);          change_first(*(yyval), OP::OP_VALUE, OP::OP_VALUE__GET_CLASS);
 }  }
 #line 2358 "compile.tab.C" /* yacc.c:1646  */  #line 2384 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 121:    case 121:
 #line 751 "compile.y" /* yacc.c:1646  */  #line 771 "compile.y" /* yacc.c:1646  */
     {      {
         (yyval)=(yyvsp[-1]);          (yyval)=(yyvsp[-1]);
         if(!PC.in_call_value) {          if(!PC.in_call_value) {
Line 2367  yyreduce: Line 2393  yyreduce:
         }          }
         O(*(yyval), OP::OP_PREPARE_TO_CONSTRUCT_OBJECT);          O(*(yyval), OP::OP_PREPARE_TO_CONSTRUCT_OBJECT);
 }  }
 #line 2371 "compile.tab.C" /* yacc.c:1646  */  #line 2397 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 128:    case 128:
 #line 770 "compile.y" /* yacc.c:1646  */  #line 790 "compile.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }      { (yyval) = (yyvsp[-1]); }
 #line 2377 "compile.tab.C" /* yacc.c:1646  */  #line 2403 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 129:    case 129:
 #line 771 "compile.y" /* yacc.c:1646  */  #line 791 "compile.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }      { (yyval) = (yyvsp[-1]); }
 #line 2383 "compile.tab.C" /* yacc.c:1646  */  #line 2409 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 130:    case 130:
 #line 772 "compile.y" /* yacc.c:1646  */  #line 792 "compile.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }      { (yyval) = (yyvsp[-1]); }
 #line 2389 "compile.tab.C" /* yacc.c:1646  */  #line 2415 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 131:    case 131:
 #line 774 "compile.y" /* yacc.c:1646  */  #line 794 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_NEG); }      { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_NEG); }
 #line 2395 "compile.tab.C" /* yacc.c:1646  */  #line 2421 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 132:    case 132:
 #line 775 "compile.y" /* yacc.c:1646  */  #line 795 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]); }      { (yyval)=(yyvsp[0]); }
 #line 2401 "compile.tab.C" /* yacc.c:1646  */  #line 2427 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 133:    case 133:
 #line 776 "compile.y" /* yacc.c:1646  */  #line 796 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]);        O(*(yyval), OP::OP_INV); }      { (yyval)=(yyvsp[0]);        O(*(yyval), OP::OP_INV); }
 #line 2407 "compile.tab.C" /* yacc.c:1646  */  #line 2433 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 134:    case 134:
 #line 777 "compile.y" /* yacc.c:1646  */  #line 797 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_NOT); }      { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_NOT); }
 #line 2413 "compile.tab.C" /* yacc.c:1646  */  #line 2439 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 135:    case 135:
 #line 778 "compile.y" /* yacc.c:1646  */  #line 798 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_DEF); }      { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_DEF); }
 #line 2419 "compile.tab.C" /* yacc.c:1646  */  #line 2445 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 136:    case 136:
 #line 779 "compile.y" /* yacc.c:1646  */  #line 799 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_IN); }      { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_IN); }
 #line 2425 "compile.tab.C" /* yacc.c:1646  */  #line 2451 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 137:    case 137:
 #line 780 "compile.y" /* yacc.c:1646  */  #line 800 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_FEXISTS); }      { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_FEXISTS); }
 #line 2431 "compile.tab.C" /* yacc.c:1646  */  #line 2457 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 138:    case 138:
 #line 781 "compile.y" /* yacc.c:1646  */  #line 801 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_DEXISTS); }      { (yyval)=(yyvsp[0]);  O(*(yyval), OP::OP_DEXISTS); }
 #line 2437 "compile.tab.C" /* yacc.c:1646  */  #line 2463 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 139:    case 139:
 #line 783 "compile.y" /* yacc.c:1646  */  #line 803 "compile.y" /* yacc.c:1646  */
     {   (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_SUB); }      {   (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_SUB); }
 #line 2443 "compile.tab.C" /* yacc.c:1646  */  #line 2469 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 140:    case 140:
 #line 784 "compile.y" /* yacc.c:1646  */  #line 804 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_ADD); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_ADD); }
 #line 2449 "compile.tab.C" /* yacc.c:1646  */  #line 2475 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 141:    case 141:
 #line 785 "compile.y" /* yacc.c:1646  */  #line 805 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_MUL); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_MUL); }
 #line 2455 "compile.tab.C" /* yacc.c:1646  */  #line 2481 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 142:    case 142:
 #line 786 "compile.y" /* yacc.c:1646  */  #line 806 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_DIV); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_DIV); }
 #line 2461 "compile.tab.C" /* yacc.c:1646  */  #line 2487 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 143:    case 143:
 #line 787 "compile.y" /* yacc.c:1646  */  #line 807 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_MOD); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_MOD); }
 #line 2467 "compile.tab.C" /* yacc.c:1646  */  #line 2493 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 144:    case 144:
 #line 788 "compile.y" /* yacc.c:1646  */  #line 808 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_INTDIV); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_INTDIV); }
 #line 2473 "compile.tab.C" /* yacc.c:1646  */  #line 2499 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 145:    case 145:
 #line 789 "compile.y" /* yacc.c:1646  */  #line 809 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_SL); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_SL); }
 #line 2479 "compile.tab.C" /* yacc.c:1646  */  #line 2505 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 146:    case 146:
 #line 790 "compile.y" /* yacc.c:1646  */  #line 810 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_SR); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_SR); }
 #line 2485 "compile.tab.C" /* yacc.c:1646  */  #line 2511 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 147:    case 147:
 #line 791 "compile.y" /* yacc.c:1646  */  #line 811 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);      P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_AND); }      { (yyval)=(yyvsp[-2]);      P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_AND); }
 #line 2491 "compile.tab.C" /* yacc.c:1646  */  #line 2517 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 148:    case 148:
 #line 792 "compile.y" /* yacc.c:1646  */  #line 812 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_OR); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_OR); }
 #line 2497 "compile.tab.C" /* yacc.c:1646  */  #line 2523 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 149:    case 149:
 #line 793 "compile.y" /* yacc.c:1646  */  #line 813 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_XOR); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_BIN_XOR); }
 #line 2503 "compile.tab.C" /* yacc.c:1646  */  #line 2529 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 150:    case 150:
 #line 794 "compile.y" /* yacc.c:1646  */  #line 814 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  OA(*(yyval), OP::OP_NESTED_CODE, (yyvsp[0]));  O(*(yyval), OP::OP_LOG_AND); }      { (yyval)=(yyvsp[-2]);  OA(*(yyval), OP::OP_NESTED_CODE, (yyvsp[0]));  O(*(yyval), OP::OP_LOG_AND); }
 #line 2509 "compile.tab.C" /* yacc.c:1646  */  #line 2535 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 151:    case 151:
 #line 795 "compile.y" /* yacc.c:1646  */  #line 815 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  OA(*(yyval), OP::OP_NESTED_CODE, (yyvsp[0]));  O(*(yyval), OP::OP_LOG_OR); }      { (yyval)=(yyvsp[-2]);  OA(*(yyval), OP::OP_NESTED_CODE, (yyvsp[0]));  O(*(yyval), OP::OP_LOG_OR); }
 #line 2515 "compile.tab.C" /* yacc.c:1646  */  #line 2541 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 152:    case 152:
 #line 796 "compile.y" /* yacc.c:1646  */  #line 816 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_LOG_XOR); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_LOG_XOR); }
 #line 2521 "compile.tab.C" /* yacc.c:1646  */  #line 2547 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 153:    case 153:
 #line 797 "compile.y" /* yacc.c:1646  */  #line 817 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_LT); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_LT); }
 #line 2527 "compile.tab.C" /* yacc.c:1646  */  #line 2553 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 154:    case 154:
 #line 798 "compile.y" /* yacc.c:1646  */  #line 818 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_GT); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_GT); }
 #line 2533 "compile.tab.C" /* yacc.c:1646  */  #line 2559 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 155:    case 155:
 #line 799 "compile.y" /* yacc.c:1646  */  #line 819 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_LE); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_LE); }
 #line 2539 "compile.tab.C" /* yacc.c:1646  */  #line 2565 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 156:    case 156:
 #line 800 "compile.y" /* yacc.c:1646  */  #line 820 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_GE); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_GE); }
 #line 2545 "compile.tab.C" /* yacc.c:1646  */  #line 2571 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 157:    case 157:
 #line 801 "compile.y" /* yacc.c:1646  */  #line 821 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_EQ); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_EQ); }
 #line 2551 "compile.tab.C" /* yacc.c:1646  */  #line 2577 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 158:    case 158:
 #line 802 "compile.y" /* yacc.c:1646  */  #line 822 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_NE); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_NUM_NE); }
 #line 2557 "compile.tab.C" /* yacc.c:1646  */  #line 2583 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 159:    case 159:
 #line 803 "compile.y" /* yacc.c:1646  */  #line 823 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_LT); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_LT); }
 #line 2563 "compile.tab.C" /* yacc.c:1646  */  #line 2589 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 160:    case 160:
 #line 804 "compile.y" /* yacc.c:1646  */  #line 824 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_GT); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_GT); }
 #line 2569 "compile.tab.C" /* yacc.c:1646  */  #line 2595 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 161:    case 161:
 #line 805 "compile.y" /* yacc.c:1646  */  #line 825 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_LE); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_LE); }
 #line 2575 "compile.tab.C" /* yacc.c:1646  */  #line 2601 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 162:    case 162:
 #line 806 "compile.y" /* yacc.c:1646  */  #line 826 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_GE); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_GE); }
 #line 2581 "compile.tab.C" /* yacc.c:1646  */  #line 2607 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 163:    case 163:
 #line 807 "compile.y" /* yacc.c:1646  */  #line 827 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_EQ); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_EQ); }
 #line 2587 "compile.tab.C" /* yacc.c:1646  */  #line 2613 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 164:    case 164:
 #line 808 "compile.y" /* yacc.c:1646  */  #line 828 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_NE); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_STR_NE); }
 #line 2593 "compile.tab.C" /* yacc.c:1646  */  #line 2619 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 165:    case 165:
 #line 809 "compile.y" /* yacc.c:1646  */  #line 829 "compile.y" /* yacc.c:1646  */
     { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_IS); }      { (yyval)=(yyvsp[-2]);  P(*(yyval), *(yyvsp[0]));  O(*(yyval), OP::OP_IS); }
 #line 2599 "compile.tab.C" /* yacc.c:1646  */  #line 2625 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 166:    case 166:
 #line 812 "compile.y" /* yacc.c:1646  */  #line 832 "compile.y" /* yacc.c:1646  */
     {      {
         // optimized OP_STRING => OP_VALUE for doubles          // optimized OP_STRING => OP_VALUE for doubles
         maybe_change_string_literal_to_double_literal(*((yyval)=(yyvsp[0])));          maybe_change_string_literal_to_double_literal(*((yyval)=(yyvsp[0])));
 }  }
 #line 2608 "compile.tab.C" /* yacc.c:1646  */  #line 2634 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 167:    case 167:
 #line 817 "compile.y" /* yacc.c:1646  */  #line 837 "compile.y" /* yacc.c:1646  */
     {      {
 #ifdef OPTIMIZE_BYTECODE_STRING_POOL  #ifdef OPTIMIZE_BYTECODE_STRING_POOL
         // it brakes ^if(" 09 "){...}          // it brakes ^if(" 09 "){...}
Line 2627  yyreduce: Line 2653  yyreduce:
         /* some code that writes to that context */          /* some code that writes to that context */
         /* context=pop; stack: context.get_string() */          /* context=pop; stack: context.get_string() */
 }  }
 #line 2631 "compile.tab.C" /* yacc.c:1646  */  #line 2657 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 168:    case 168:
 #line 838 "compile.y" /* yacc.c:1646  */  #line 858 "compile.y" /* yacc.c:1646  */
     {      {
         // optimized OP_STRING+OP_WRITE_VALUE => OP_STRING__WRITE          // optimized OP_STRING+OP_WRITE_VALUE => OP_STRING__WRITE
         change_string_literal_to_write_string_literal(*((yyval)=(yyvsp[0])));          change_string_literal_to_write_string_literal(*((yyval)=(yyvsp[0])));
 }  }
 #line 2640 "compile.tab.C" /* yacc.c:1646  */  #line 2666 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 169:    case 169:
 #line 843 "compile.y" /* yacc.c:1646  */  #line 863 "compile.y" /* yacc.c:1646  */
     { (yyval)=VL(/*we know that we will not change it*/const_cast<VString*>(&vempty), 0, 0, 0); }      { (yyval)=VL(/*we know that we will not change it*/const_cast<VString*>(&vempty), 0, 0, 0); }
 #line 2646 "compile.tab.C" /* yacc.c:1646  */  #line 2672 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 170:    case 170:
 #line 844 "compile.y" /* yacc.c:1646  */  #line 864 "compile.y" /* yacc.c:1646  */
     { (yyval) = VL(/*we know that we will not change it*/const_cast<VBool*>(&vtrue), 0, 0, 0); }      { (yyval) = VL(/*we know that we will not change it*/const_cast<VBool*>(&vtrue), 0, 0, 0); }
 #line 2652 "compile.tab.C" /* yacc.c:1646  */  #line 2678 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 171:    case 171:
 #line 845 "compile.y" /* yacc.c:1646  */  #line 865 "compile.y" /* yacc.c:1646  */
     { (yyval) = VL(/*we know that we will not change it*/const_cast<VBool*>(&vfalse), 0, 0, 0); }      { (yyval) = VL(/*we know that we will not change it*/const_cast<VBool*>(&vfalse), 0, 0, 0); }
 #line 2658 "compile.tab.C" /* yacc.c:1646  */  #line 2684 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   case 172:    case 172:
 #line 847 "compile.y" /* yacc.c:1646  */  #line 867 "compile.y" /* yacc.c:1646  */
     { (yyval)=N(); }      { (yyval)=N(); }
 #line 2664 "compile.tab.C" /* yacc.c:1646  */  #line 2690 "compile.tab.C" /* yacc.c:1646  */
     break;      break;
   
   
 #line 2668 "compile.tab.C" /* yacc.c:1646  */  #line 2694 "compile.tab.C" /* yacc.c:1646  */
       default: break;        default: break;
     }      }
   /* User semantic actions sometimes alter yychar, and that requires    /* User semantic actions sometimes alter yychar, and that requires
Line 2892  yyreturn: Line 2918  yyreturn:
 #endif  #endif
   return yyresult;    return yyresult;
 }  }
 #line 849 "compile.y" /* yacc.c:1906  */  #line 869 "compile.y" /* yacc.c:1906  */
   
 #endif  #endif
   

Removed from v.1.163  
changed lines
  Added in v.1.167


E-mail: