Diff for /parser3/src/main/compile.tab.C between versions 1.81.2.13.2.26 and 1.103.8.1

version 1.81.2.13.2.26, 2003/04/03 12:26:11 version 1.103.8.1, 2005/08/05 13:01:16
Line 11 Line 11
 #define BAD_HEX_LITERAL 261  #define BAD_HEX_LITERAL 261
 #define BAD_METHOD_DECL_START   262  #define BAD_METHOD_DECL_START   262
 #define BAD_METHOD_PARAMETER_NAME_CHARACTER     263  #define BAD_METHOD_PARAMETER_NAME_CHARACTER     263
 #define BAD_MATH_OPERATOR_CHARACTER     264  #define BAD_NONWHITESPACE_CHARACTER_IN_EXPLICIT_RESULT_MODE     264
 #define LAND    265  #define LAND    265
 #define LOR     266  #define LOR     266
 #define LXOR    267  #define LXOR    267
Line 79 Line 79
 // defines  // defines
   
 #define USE_CONTROL_METHOD_NAME "USE"  #define USE_CONTROL_METHOD_NAME "USE"
 #define TAB_SIZE 8  
   
 // forwards  // forwards
   
Line 87  static int real_yyerror(Parse_control* p Line 86  static int real_yyerror(Parse_control* p
 static void yyprint(FILE* file, int type, YYSTYPE value);  static void yyprint(FILE* file, int type, YYSTYPE value);
 static int yylex(YYSTYPE* lvalp, void* pc);  static int yylex(YYSTYPE* lvalp, void* pc);
   
   
 // local convinient inplace typecast & var  // local convinient inplace typecast & var
 #undef PC  #undef PC
 #define PC  (*(Parse_control *)pc)  #define PC  (*(Parse_control *)pc)
Line 107  static int yylex(YYSTYPE* lvalp, void* p Line 105  static int yylex(YYSTYPE* lvalp, void* p
   
   
   
 #define YYFINAL         252  #define YYFINAL         260
 #define YYFLAG          -32768  #define YYFLAG          -32768
 #define YYNTBASE        60  #define YYNTBASE        60
   
 #define YYTRANSLATE(x) ((unsigned)(x) <= 286 ? yytranslate[x] : 139)  #define YYTRANSLATE(x) ((unsigned)(x) <= 286 ? yytranslate[x] : 147)
   
 static const char yytranslate[] = {     0,  static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,    46,       2,     2,     2,     2,     2,     2,     2,     2,     2,    46,
Line 148  static const char yytranslate[] = { Line 146  static const char yytranslate[] = {
 #if YYDEBUG != 0  #if YYDEBUG != 0
 static const short yyprhs[] = {     0,  static const short yyprhs[] = {     0,
      0,     2,     4,     6,     9,    11,    13,    15,    20,    22,       0,     2,     4,     6,     9,    11,    13,    15,    20,    22,
     24,    26,    29,    32,    34,    36,    44,    46,    48,    52,      24,    26,    29,    32,    34,    36,    37,    46,    48,    50,
     54,    56,    58,    62,    64,    66,    68,    70,    72,    75,      54,    56,    58,    60,    64,    66,    68,    70,    72,    74,
     77,    79,    81,    83,    85,    87,    90,    93,    95,    99,      77,    79,    81,    83,    85,    87,    89,    92,    95,    97,
    101,   103,   105,   108,   110,   113,   117,   119,   121,   123,     101,   103,   105,   107,   110,   112,   115,   119,   121,   123,
    125,   128,   131,   133,   135,   137,   141,   145,   149,   151,     125,   127,   130,   133,   135,   137,   139,   140,   141,   147,
    153,   155,   157,   159,   161,   164,   166,   167,   168,   175,     151,   155,   157,   159,   161,   163,   165,   167,   170,   172,
    177,   179,   182,   184,   186,   188,   192,   196,   200,   202,     173,   174,   181,   183,   185,   188,   190,   192,   194,   195,
    206,   208,   212,   214,   218,   220,   222,   224,   226,   228,     196,   202,   206,   210,   212,   216,   218,   222,   224,   228,
    230,   232,   234,   237,   239,   242,   245,   247,   249,   252,     230,   232,   234,   236,   238,   240,   242,   244,   247,   249,
    254,   256,   258,   260,   263,   266,   270,   272,   274,   277,     252,   255,   257,   259,   262,   264,   266,   268,   270,   273,
    280,   282,   284,   287,   290,   292,   294,   296,   298,   302,     276,   277,   278,   284,   286,   288,   291,   294,   296,   298,
    306,   310,   313,   316,   319,   322,   325,   328,   331,   334,     301,   304,   306,   308,   310,   312,   316,   320,   324,   327,
    338,   342,   346,   350,   354,   358,   362,   366,   370,   374,     330,   333,   336,   339,   342,   345,   348,   352,   356,   360,
    378,   382,   386,   390,   394,   398,   402,   406,   410,   414,     364,   368,   372,   376,   380,   384,   388,   392,   396,   400,
    418,   422,   426,   430,   434,   438,   442,   444,   446,   447     404,   408,   412,   416,   420,   424,   428,   432,   436,   440,
      444,   448,   452,   456,   458,   460,   462,   463
 };  };
   
 static const short yyrhs[] = {    62,  static const short yyrhs[] = {    62,
      0,    61,     0,    63,     0,    61,    63,     0,    75,     0,       0,    61,     0,    63,     0,    61,    63,     0,    76,     0,
     64,     0,    69,     0,    45,     4,    46,    65,     0,   138,      64,     0,    69,     0,    45,     4,    46,    65,     0,   146,
      0,    66,     0,    67,     0,    66,    67,     0,    68,    46,       0,    66,     0,    67,     0,    66,    67,     0,    68,    46,
      0,   138,     0,     4,     0,    45,     4,    71,    70,    74,       0,   146,     0,     4,     0,     0,    45,     4,    72,    71,
     46,    75,     0,   138,     0,    71,     0,    47,    72,    48,      75,    46,    70,    76,     0,   146,     0,    72,     0,    47,
      0,   138,     0,    73,     0,     4,     0,    73,    49,     4,      73,    48,     0,   146,     0,    74,     0,     4,     0,    74,
      0,   138,     0,     4,     0,   138,     0,    76,     0,    77,      49,     4,     0,   146,     0,     4,     0,   146,     0,    77,
      0,    76,    77,     0,   136,     0,    78,     0,    79,     0,       0,    78,     0,    77,    78,     0,   144,     0,    79,     0,
     87,     0,   100,     0,    80,     0,    50,    81,     0,    83,      80,     0,    88,     0,   103,     0,    81,     0,    50,    82,
      3,     0,    82,     0,    51,    83,    52,     0,    84,     0,       0,    84,     3,     0,    83,     0,    51,    84,    52,     0,
     85,     0,    86,     0,   130,    86,     0,   122,     0,   119,      85,     0,    86,     0,    87,     0,   137,    87,     0,   127,
    122,     0,    50,    88,    92,     0,    89,     0,    90,     0,       0,   124,   127,     0,    50,    89,    93,     0,    90,     0,
     91,     0,   118,     0,    53,   118,     0,   130,   118,     0,      91,     0,    92,     0,   123,     0,    53,   123,     0,   137,
     93,     0,    94,     0,    95,     0,    47,    96,    48,     0,     123,     0,    94,     0,    97,     0,    98,     0,     0,     0,
     54,   133,    55,     0,    51,    75,    52,     0,   137,     0,      47,    95,    99,    96,    48,     0,    54,   140,    55,     0,
      4,     0,    97,     0,    98,     0,    99,     0,    78,     0,      51,    76,    52,     0,   145,     0,     4,     0,   100,     0,
     77,    76,     0,   101,     0,     0,     0,    56,   102,   104,     101,     0,   102,     0,    79,     0,    78,    77,     0,   104,
    103,   105,     3,     0,    83,     0,   106,     0,   105,   106,       0,     0,     0,    56,   105,   107,   106,   108,     3,     0,
      0,   107,     0,   108,     0,   109,     0,    47,   110,    48,      84,     0,   109,     0,   108,   109,     0,   110,     0,   113,
      0,    54,   111,    55,     0,    51,   112,    52,     0,   113,       0,   114,     0,     0,     0,    47,   111,   115,   112,    48,
      0,   110,    49,   113,     0,   114,     0,   111,    49,   114,       0,    54,   116,    55,     0,    51,   117,    52,     0,   118,
      0,   115,     0,   112,    49,   115,     0,   116,     0,   117,       0,   115,    49,   118,     0,   119,     0,   116,    49,   119,
      0,    75,     0,   137,     0,     4,     0,    97,     0,   133,       0,   120,     0,   117,    49,   120,     0,   121,     0,   122,
      0,   123,     0,   119,   123,     0,   120,     0,   119,   120,       0,    76,     0,   145,     0,     4,     0,   100,     0,   140,
      0,   121,    53,     0,   123,     0,   123,     0,     4,     5,       0,   128,     0,   124,   128,     0,   125,     0,   124,   125,
      0,     4,     0,   124,     0,   125,     0,   126,     0,    50,       0,   126,    53,     0,   128,     0,   128,     0,     4,     5,
    127,     0,     4,   128,     0,    47,    76,    48,     0,     4,       0,     4,     0,   129,     0,   130,     0,   131,     0,    50,
      0,   129,     0,   128,   129,     0,    50,   127,     0,   131,     134,     0,     4,   135,     0,     0,     0,    47,   132,    77,
      0,   132,     0,     4,    57,     0,   131,    57,     0,   134,     133,    48,     0,     4,     0,   136,     0,   135,   136,     0,
      0,     4,     0,    80,     0,   101,     0,    58,   135,    58,      50,   134,     0,   138,     0,   139,     0,     4,    57,     0,
      0,    59,   135,    59,     0,    54,   134,    55,     0,    37,     138,    57,     0,   141,     0,   142,     0,    81,     0,   104,
    134,     0,    36,   134,     0,    43,   134,     0,    44,   134,       0,    58,   143,    58,     0,    59,   143,    59,     0,    54,
      0,    27,   134,     0,    28,   134,     0,    29,   134,     0,     141,    55,     0,    37,   141,     0,    36,   141,     0,    43,
     30,   134,     0,   134,    37,   134,     0,   134,    36,   134,     141,     0,    44,   141,     0,    27,   141,     0,    28,   141,
      0,   134,    38,   134,     0,   134,    39,   134,     0,   134,       0,    29,   141,     0,    30,   141,     0,   141,    37,   141,
     41,   134,     0,   134,    40,   134,     0,   134,    19,   134,       0,   141,    36,   141,     0,   141,    38,   141,     0,   141,
      0,   134,    20,   134,     0,   134,    35,   134,     0,   134,      39,   141,     0,   141,    41,   141,     0,   141,    40,   141,
     34,   134,     0,   134,    14,   134,     0,   134,    11,   134,       0,   141,    19,   141,     0,   141,    20,   141,     0,   141,
      0,   134,    12,   134,     0,   134,    13,   134,     0,   134,      35,   141,     0,   141,    34,   141,     0,   141,    14,   141,
     32,   134,     0,   134,    33,   134,     0,   134,    15,   134,       0,   141,    11,   141,     0,   141,    12,   141,     0,   141,
      0,   134,    16,   134,     0,   134,    17,   134,     0,   134,      13,   141,     0,   141,    32,   141,     0,   141,    33,   141,
     18,   134,     0,   134,    21,   134,     0,   134,    22,   134,       0,   141,    15,   141,     0,   141,    16,   141,     0,   141,
      0,   134,    23,   134,     0,   134,    24,   134,     0,   134,      17,   141,     0,   141,    18,   141,     0,   141,    21,   141,
     25,   134,     0,   134,    26,   134,     0,   134,    31,   134,       0,   141,    22,   141,     0,   141,    23,   141,     0,   141,
      0,    75,     0,     4,     0,     0,     0      24,   141,     0,   141,    25,   141,     0,   141,    26,   141,
        0,   141,    31,   141,     0,     4,     0,    76,     0,     4,
        0,     0,     0
 };  };
   
 #endif  #endif
   
 #if YYDEBUG != 0  #if YYDEBUG != 0
 static const short yyrline[] = { 0,  static const short yyrline[] = { 0,
    122,   130,   132,   132,   133,   135,   135,   137,   209,   209,     120,   128,   130,   130,   131,   133,   133,   135,   207,   207,
    210,   210,   211,   212,   212,   214,   243,   243,   244,   245,     208,   208,   209,   210,   210,   212,   247,   252,   252,   253,
    245,   246,   246,   248,   248,   252,   252,   254,   254,   255,     254,   254,   255,   255,   257,   257,   261,   261,   263,   263,
    255,   256,   256,   256,   260,   267,   268,   268,   269,   270,     264,   264,   265,   265,   265,   269,   276,   277,   277,   278,
    272,   273,   295,   296,   296,   300,   304,   306,   307,   308,     279,   281,   282,   304,   305,   305,   309,   313,   315,   316,
    325,   330,   332,   334,   335,   337,   343,   351,   357,   359,     317,   334,   339,   341,   343,   344,   346,   349,   351,   357,
    360,   362,   368,   369,   369,   373,   379,   382,   385,   398,     365,   371,   373,   374,   376,   382,   383,   383,   387,   393,
    400,   400,   401,   403,   404,   406,   407,   408,   409,   411,     396,   399,   412,   414,   414,   415,   417,   418,   420,   423,
    413,   415,   417,   419,   421,   425,   429,   433,   435,   436,     425,   426,   427,   428,   430,   432,   434,   436,   438,   440,
    438,   447,   447,   449,   449,   450,   451,   459,   464,   466,     444,   448,   452,   454,   455,   457,   466,   466,   468,   468,
    468,   469,   470,   472,   476,   485,   491,   496,   496,   497,     469,   470,   478,   483,   485,   487,   488,   489,   491,   495,
    502,   504,   506,   518,   530,   535,   537,   538,   539,   540,     504,   507,   509,   515,   520,   520,   521,   526,   528,   530,
    541,   543,   544,   545,   546,   547,   548,   549,   550,   552,     542,   554,   555,   557,   558,   559,   560,   561,   563,   564,
    553,   554,   555,   556,   557,   558,   559,   560,   561,   562,     565,   566,   567,   568,   569,   570,   572,   573,   574,   575,
    563,   564,   565,   566,   567,   568,   569,   570,   571,   572,     576,   577,   578,   579,   580,   581,   582,   583,   584,   585,
    573,   574,   575,   576,   577,   578,   581,   590,   595,   596     586,   587,   588,   589,   590,   591,   592,   593,   594,   595,
      596,   597,   598,   601,   606,   615,   620,   621
 };  };
 #endif  #endif
   
Line 241  static const short yyrline[] = { 0, Line 243  static const short yyrline[] = { 0,
   
 static const char * const yytname[] = {   "$","error","$undefined.","EON","STRING",  static const char * const yytname[] = {   "$","error","$undefined.","EON","STRING",
 "BOGUS","BAD_STRING_COMPARISON_OPERATOR","BAD_HEX_LITERAL","BAD_METHOD_DECL_START",  "BOGUS","BAD_STRING_COMPARISON_OPERATOR","BAD_HEX_LITERAL","BAD_METHOD_DECL_START",
 "BAD_METHOD_PARAMETER_NAME_CHARACTER","BAD_MATH_OPERATOR_CHARACTER","\"&&\"",  "BAD_METHOD_PARAMETER_NAME_CHARACTER","BAD_NONWHITESPACE_CHARACTER_IN_EXPLICIT_RESULT_MODE",
 "\"||\"","\"!||\"","\"!|\"","\"<=\"","\">=\"","\"==\"","\"!=\"","\"<<\"","\">>\"",  "\"&&\"","\"||\"","\"!||\"","\"!|\"","\"<=\"","\">=\"","\"==\"","\"!=\"","\"<<\"",
 "\"lt\"","\"gt\"","\"le\"","\"ge\"","\"eq\"","\"ne\"","\"def\"","\"in\"","\"-f\"",  "\">>\"","\"lt\"","\"gt\"","\"le\"","\"ge\"","\"eq\"","\"ne\"","\"def\"","\"in\"",
 "\"-d\"","\"is\"","'<'","'>'","'|'","'&'","'+'","'-'","'*'","'/'","'\\\\'","'%'",  "\"-f\"","\"-d\"","\"is\"","'<'","'>'","'|'","'&'","'+'","'-'","'*'","'/'","'\\\\'",
 "NUNARY","'~'","'!'","'@'","'\\n'","'['","']'","';'","'$'","'{'","'}'","'.'",  "'%'","NUNARY","'~'","'!'","'@'","'\\n'","'['","']'","';'","'$'","'{'","'}'",
 "'('","')'","'^'","':'","'\\\"'","'\\''","all","methods","one_big_piece","method",  "'.'","'('","')'","'^'","':'","'\\\"'","'\\''","all","methods","one_big_piece",
 "control_method","maybe_control_strings","control_strings","control_string",  "method","control_method","maybe_control_strings","control_strings","control_string",
 "maybe_string","code_method","maybe_bracketed_strings","bracketed_maybe_strings",  "maybe_string","code_method","@1","maybe_bracketed_strings","bracketed_maybe_strings",
 "maybe_strings","strings","maybe_comment","maybe_codes","codes","code","action",  "maybe_strings","strings","maybe_comment","maybe_codes","codes","code","action",
 "get","get_value","get_name_value","name_in_curly_rdive","name_without_curly_rdive",  "get","get_value","get_name_value","name_in_curly_rdive","name_without_curly_rdive",
 "name_without_curly_rdive_read","name_without_curly_rdive_class","name_without_curly_rdive_code",  "name_without_curly_rdive_read","name_without_curly_rdive_class","name_without_curly_rdive_code",
 "put","name_expr_wdive","name_expr_wdive_root","name_expr_wdive_write","name_expr_wdive_class",  "put","name_expr_wdive","name_expr_wdive_root","name_expr_wdive_write","name_expr_wdive_class",
 "construct","construct_square","construct_round","construct_curly","any_constructor_code_value",  "construct","construct_square","@2","@3","construct_round","construct_curly",
 "constructor_code_value","constructor_code","codes__excluding_sole_str_literal",  "any_constructor_code_value","constructor_code_value","constructor_code","codes__excluding_sole_str_literal",
 "call","call_value","@1","@2","call_name","store_params","store_param","store_square_param",  "call","call_value","@4","@5","call_name","store_params","store_param","store_square_param",
 "store_round_param","store_curly_param","store_code_param_parts","store_expr_param_parts",  "@6","@7","store_round_param","store_curly_param","store_code_param_parts","store_expr_param_parts",
 "store_curly_param_parts","store_code_param_part","store_expr_param_part","store_curly_param_part",  "store_curly_param_parts","store_code_param_part","store_expr_param_part","store_curly_param_part",
 "code_param_value","write_expr_value","name_expr_dive_code","name_path","name_step",  "code_param_value","write_expr_value","name_expr_dive_code","name_path","name_step",
 "name_advance1","name_advance2","name_expr_value","name_expr_subvar_value","name_expr_with_subvar_value",  "name_advance1","name_advance2","name_expr_value","name_expr_subvar_value","name_expr_with_subvar_value",
 "name_square_code_value","subvar_ref_name_rdive","subvar_get_writes","subvar__get_write",  "name_square_code_value","@8","@9","subvar_ref_name_rdive","subvar_get_writes",
 "class_prefix","class_static_prefix","class_constructor_prefix","expr_value",  "subvar__get_write","class_prefix","class_static_prefix","class_constructor_prefix",
 "expr","string_inside_quotes_value","write_string","void_value","empty", NULL  "expr_value","expr","double_or_STRING","string_inside_quotes_value","write_string",
   "void_value","empty", NULL
 };  };
 #endif  #endif
   
 static const short yyr1[] = {     0,  static const short yyr1[] = {     0,
     60,    60,    61,    61,    62,    63,    63,    64,    65,    65,      60,    60,    61,    61,    62,    63,    63,    64,    65,    65,
     66,    66,    67,    68,    68,    69,    70,    70,    71,    72,      66,    66,    67,    68,    68,    70,    69,    71,    71,    72,
     72,    73,    73,    74,    74,    75,    75,    76,    76,    77,      73,    73,    74,    74,    75,    75,    76,    76,    77,    77,
     77,    78,    78,    78,    79,    80,    81,    81,    82,    83,      78,    78,    79,    79,    79,    80,    81,    82,    82,    83,
     83,    84,    85,    86,    86,    87,    88,    88,    88,    89,      84,    84,    85,    86,    87,    87,    88,    89,    89,    89,
     90,    91,    92,    92,    92,    93,    94,    95,    96,    96,      90,    91,    92,    93,    93,    93,    95,    96,    94,    97,
     96,    97,    98,    99,    99,   100,   102,   103,   101,   104,      98,    99,    99,    99,   100,   101,   102,   102,   103,   105,
    105,   105,   106,   106,   106,   107,   108,   109,   110,   110,     106,   104,   107,   108,   108,   109,   109,   109,   111,   112,
    111,   111,   112,   112,   113,   114,   115,   116,   116,   116,     110,   113,   114,   115,   115,   116,   116,   117,   117,   118,
    117,   118,   118,   119,   119,   120,   121,   122,   122,   123,     119,   120,   121,   121,   121,   122,   123,   123,   124,   124,
    123,   123,   123,   124,   125,   126,   127,   128,   128,   129,     125,   126,   127,   127,   128,   128,   128,   128,   129,   130,
    130,   130,   131,   132,   133,   134,   134,   134,   134,   134,     132,   133,   131,   134,   135,   135,   136,   137,   137,   138,
    134,   134,   134,   134,   134,   134,   134,   134,   134,   134,     139,   140,   141,   141,   141,   141,   141,   141,   141,   141,
    134,   134,   134,   134,   134,   134,   134,   134,   134,   134,     141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
    134,   134,   134,   134,   134,   134,   134,   134,   134,   134,     141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
    134,   134,   134,   134,   134,   134,   135,   136,   137,   138     141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
      141,   141,   141,   142,   143,   144,   145,   146
 };  };
   
 static const short yyr2[] = {     0,  static const short yyr2[] = {     0,
      1,     1,     1,     2,     1,     1,     1,     4,     1,     1,       1,     1,     1,     2,     1,     1,     1,     4,     1,     1,
      1,     2,     2,     1,     1,     7,     1,     1,     3,     1,       1,     2,     2,     1,     1,     0,     8,     1,     1,     3,
      1,     1,     3,     1,     1,     1,     1,     1,     2,     1,       1,     1,     1,     3,     1,     1,     1,     1,     1,     2,
      1,     1,     1,     1,     1,     2,     2,     1,     3,     1,       1,     1,     1,     1,     1,     1,     2,     2,     1,     3,
      1,     1,     2,     1,     2,     3,     1,     1,     1,     1,       1,     1,     1,     2,     1,     2,     3,     1,     1,     1,
      2,     2,     1,     1,     1,     3,     3,     3,     1,     1,       1,     2,     2,     1,     1,     1,     0,     0,     5,     3,
      1,     1,     1,     1,     2,     1,     0,     0,     6,     1,       3,     1,     1,     1,     1,     1,     1,     2,     1,     0,
      1,     2,     1,     1,     1,     3,     3,     3,     1,     3,       0,     6,     1,     1,     2,     1,     1,     1,     0,     0,
      1,     3,     1,     3,     1,     1,     1,     1,     1,     1,       5,     3,     3,     1,     3,     1,     3,     1,     3,     1,
      1,     1,     2,     1,     2,     2,     1,     1,     2,     1,       1,     1,     1,     1,     1,     1,     1,     2,     1,     2,
      1,     1,     1,     2,     2,     3,     1,     1,     2,     2,       2,     1,     1,     2,     1,     1,     1,     1,     2,     2,
      1,     1,     2,     2,     1,     1,     1,     1,     3,     3,       0,     0,     5,     1,     1,     2,     2,     1,     1,     2,
      3,     2,     2,     2,     2,     2,     2,     2,     2,     3,       2,     1,     1,     1,     1,     3,     3,     3,     2,     2,
        2,     2,     2,     2,     2,     2,     3,     3,     3,     3,
      3,     3,     3,     3,     3,     3,     3,     3,     3,     3,       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
      3,     3,     3,     3,     3,     3,     3,     3,     3,     3,       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
      3,     3,     3,     3,     3,     3,     1,     1,     0,     0       3,     3,     3,     1,     1,     1,     0,     0
 };  };
   
 static const short yydefact[] = {   160,  static const short yydefact[] = {   168,
    158,     0,     0,    67,     2,     1,     3,     6,     7,     5,     166,     0,     0,    70,     2,     1,     3,     6,     7,     5,
     27,    28,    31,    32,    35,    33,    34,    66,    30,    26,      28,    29,    32,    33,    36,    34,    35,    69,    31,    27,
      0,   100,     0,     0,     0,     0,    36,    38,     0,    40,       0,   105,   111,     0,     0,     0,    37,    39,     0,    41,
     41,    42,     0,    47,    48,    49,    50,     0,    94,     0,      42,    43,     0,    48,    49,    50,    51,     0,    99,     0,
     44,    92,   101,   102,   103,     0,   111,   112,     0,     4,      45,    97,   106,   107,   108,     0,   118,   119,     0,     4,
     29,   160,   160,   160,    99,     0,   113,   105,   108,     0,      30,   168,   168,   168,   104,     0,   120,   110,   115,     0,
    107,   104,     0,     0,    98,     0,   100,    51,     0,    92,     114,   109,     0,     0,   103,     0,   105,    52,     0,    97,
     37,   159,   160,     0,    46,    53,    54,    55,   100,    95,      38,    57,   168,     0,    47,    54,    55,    56,   105,   100,
     45,    93,    96,    43,    52,   114,    70,    68,    15,     8,      46,    98,   101,    44,    53,   121,    73,    71,    15,     8,
     10,    11,     0,     9,    22,     0,    21,    20,   160,    18,      10,    11,     0,     9,    23,     0,    22,    21,   168,    19,
     17,   110,   109,   106,    39,    93,   158,     0,    31,     0,      18,   117,   116,   112,    40,    98,   167,     0,   164,     0,
     61,    62,    63,    59,     0,   116,     0,     0,     0,     0,       0,     0,     0,     0,     0,     0,     0,     0,     0,   168,
      0,     0,     0,     0,     0,     0,   160,   160,   117,   118,     168,   124,   125,     0,   122,   123,     0,    12,    14,    13,
      0,   115,     0,    12,    14,    13,    19,     0,    25,     0,      20,     0,    26,     0,    25,     0,   166,     0,    32,    58,
     24,    65,    56,    58,   126,   127,   128,   129,   123,   122,      64,    65,    66,    62,    61,   133,   134,   135,   136,   130,
    124,   125,     0,   157,     0,     0,    57,     0,     0,     0,     129,   131,   132,     0,   165,     0,     0,    60,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,   159,   160,     0,     0,    71,    73,       0,     0,     0,     0,     0,    79,   168,     0,     0,    74,
     74,    75,    23,   160,   121,   119,   120,   141,   142,   143,      76,    77,    78,    24,    16,   113,    68,     0,   128,   126,
    140,   146,   147,   148,   149,   136,   137,   150,   151,   152,     127,   148,   149,   150,   147,   153,   154,   155,   156,   143,
    153,   154,   155,   156,   144,   145,   139,   138,   131,   130,     144,   157,   158,   159,   160,   161,   162,   163,   151,   152,
    132,   133,   135,   134,   158,    90,     0,    79,    85,    88,     146,   145,   138,   137,   139,   140,   142,   141,   167,    92,
     87,     0,    83,     0,    81,    86,    91,    69,    72,    16,       0,    88,     0,    86,    91,    96,    72,    75,   168,    59,
     76,   159,   160,    78,     0,    77,    80,    84,    82,     0,     166,    95,    80,    84,    90,    93,   168,    83,     0,    82,
      0,     0      17,   167,     0,    89,    87,    85,    81,     0,     0,     0
 };  };
   
 static const short yydefgoto[] = {   250,  static const short yydefgoto[] = {   258,
      5,     6,     7,     8,    90,    91,    92,    93,     9,    99,       5,     6,     7,     8,    90,    91,    92,    93,     9,   239,
     54,    96,    97,   140,   154,    11,    12,    13,    14,   129,      99,    54,    96,    97,   134,   155,    11,    12,    13,    14,
     27,    28,    29,    30,    31,    32,    16,    33,    34,    35,     122,    27,    28,    29,    30,    31,    32,    16,    33,    34,
     36,    75,    76,    77,    78,   110,   226,   112,   113,    17,      35,    36,    75,    76,   107,   198,    77,    78,   140,   242,
    130,    49,   133,    88,   188,   189,   190,   191,   192,   227,     142,   143,    17,   123,    49,   127,    88,   189,   190,   191,
    234,   232,   228,   235,   233,   229,   236,    37,    64,    39,     229,   253,   192,   193,   243,   233,   231,   244,   234,   232,
     40,    41,    65,    43,    44,    45,    62,    58,    59,    66,     245,   235,    37,    64,    39,    40,    41,    65,    43,    44,
     47,    48,   237,   132,   155,    19,   230,    20      45,    60,   136,    62,    58,    59,    66,    47,    48,   236,
      125,   126,   156,    19,   246,    20
 };  };
   
 static const short yypact[] = {    13,  static const short yypact[] = {     5,
 -32768,    24,    98,-32768,    36,-32768,-32768,-32768,-32768,-32768,  -32768,    22,    35,-32768,   -13,-32768,-32768,-32768,-32768,-32768,
     14,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,       8,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
    -26,    39,    14,    44,    45,   100,-32768,-32768,    47,-32768,      -9,     9,-32768,    36,    20,    44,-32768,-32768,    40,-32768,
 -32768,-32768,    52,-32768,-32768,-32768,-32768,   118,-32768,    59,  -32768,-32768,   -29,-32768,-32768,-32768,-32768,    52,-32768,    -8,
 -32768,     4,-32768,-32768,-32768,   118,    -3,-32768,    45,-32768,  -32768,     4,-32768,-32768,-32768,    52,    -3,-32768,    20,-32768,
 -32768,   101,   113,    71,-32768,    44,-32768,    70,-32768,    32,  -32768,    72,   120,    90,-32768,    36,-32768,    89,-32768,     8,
 -32768,-32768,    73,   118,    83,   118,    70,-32768,   100,    83,  -32768,-32768,    92,    52,    88,    52,    89,-32768,    44,    88,
 -32768,    27,    14,    57,-32768,-32768,-32768,-32768,     1,-32768,  -32768,-32768,     8,    99,-32768,-32768,-32768,-32768,    18,-32768,
 -32768,     4,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -32768,     4,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
     20,-32768,    78,    91,-32768,    90,    94,-32768,   135,-32768,      32,-32768,   100,   101,-32768,    97,   102,-32768,   146,-32768,
 -32768,-32768,-32768,-32768,-32768,    83,    92,    14,   -22,   106,  -32768,-32768,-32768,     8,-32768,    88,    13,   121,-32768,    99,
 -32768,-32768,-32768,-32768,   115,-32768,    57,    57,    57,    57,      99,    99,    99,    99,    99,    99,    99,    42,    99,     8,
     57,    57,    57,    57,   105,    57,    14,    14,-32768,-32768,       8,-32768,-32768,   117,   316,-32768,    54,-32768,-32768,-32768,
    114,   281,    72,-32768,-32768,-32768,-32768,   142,-32768,   107,  -32768,   148,-32768,   108,-32768,   150,   166,     8,    31,-32768,
 -32768,    14,-32768,-32768,   440,   440,   440,   440,-32768,-32768,  -32768,-32768,-32768,-32768,-32768,   444,   444,   444,   444,-32768,
 -32768,-32768,   236,-32768,   112,   120,-32768,    57,    57,    57,  -32768,-32768,-32768,   271,-32768,   158,   159,-32768,    99,    99,
     57,    57,    57,    57,    57,    57,    57,    57,    57,    57,      99,    99,    99,    99,    99,    99,    99,    99,    99,    99,
     57,    57,    57,    57,    57,    57,    57,    57,    57,    57,      99,    99,    99,    99,    99,    99,    99,    99,    99,    99,
     57,    57,    57,    57,    41,    14,    57,     5,-32768,-32768,      99,    99,    99,    99,    99,-32768,     8,    99,    30,-32768,
 -32768,-32768,-32768,    14,-32768,-32768,-32768,   371,   343,   312,  -32768,-32768,-32768,-32768,-32768,-32768,     8,   169,-32768,-32768,
    244,   399,   399,   412,   412,   136,   136,   399,   399,   399,  -32768,   375,   145,   347,   279,   403,   403,   416,   416,   164,
    399,   412,   412,   440,   399,   399,   447,   453,    93,    93,     164,   403,   403,   403,   403,   416,   416,   444,   403,   403,
 -32768,-32768,-32768,-32768,   -11,-32768,    19,-32768,-32768,-32768,      76,   155,    93,    93,-32768,-32768,-32768,-32768,    15,-32768,
 -32768,   -10,-32768,   -33,-32768,-32768,-32768,-32768,-32768,-32768,     -21,-32768,   -28,-32768,-32768,-32768,-32768,-32768,     8,-32768,
 -32768,    41,    14,-32768,    57,-32768,-32768,-32768,-32768,   180,      70,-32768,   170,-32768,-32768,-32768,     8,-32768,    99,-32768,
    181,-32768  -32768,    15,   172,-32768,-32768,-32768,-32768,   221,   223,-32768
 };  };
   
 static const short yypgoto[] = {-32768,  static const short yypgoto[] = {-32768,
 -32768,-32768,   177,-32768,-32768,-32768,    99,-32768,-32768,-32768,  -32768,-32768,   219,-32768,-32768,-32768,   134,-32768,-32768,-32768,
    129,-32768,-32768,-32768,     3,   -18,    -7,   -71,-32768,     0,  -32768,   173,-32768,-32768,-32768,     1,   -55,    -7,  -104,-32768,
 -32768,-32768,    -6,-32768,-32768,   -37,-32768,-32768,-32768,-32768,       0,-32768,-32768,    -5,-32768,-32768,   -36,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,   119,-32768,-32768,-32768,  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   119,
      2,-32768,-32768,-32768,-32768,    -4,-32768,-32768,-32768,-32768,  -32768,-32768,-32768,     2,-32768,-32768,-32768,-32768,    39,-32768,
 -32768,-32768,   -50,   -52,   -48,-32768,-32768,   -16,    95,   -23,  -32768,-32768,-32768,-32768,-32768,-32768,-32768,   -20,   -19,   -14,
 -32768,   -24,     9,-32768,-32768,-32768,   169,-32768,   168,   224,  -32768,-32768,   -11,    84,   -22,-32768,   -30,     3,-32768,-32768,
 -32768,-32768,   154,    40,   102,-32768,   157,   -20  -32768,-32768,-32768,   178,-32768,   177,   233,-32768,-32768,   163,
       96,-32768,   122,-32768,   131,    -1
 };  };
   
   
 #define YYLAST          494  #define YYLAST          485
   
   
 static const short yytable[] = {    15,  static const short yytable[] = {    15,
    109,    18,    10,    51,    60,    55,   -98,   238,    84,    68,      10,    18,   139,    51,   104,    42,  -103,    81,     1,    84,
     15,    42,    18,    81,    80,   245,     1,     1,    63,    52,      15,     1,    18,    55,    68,    80,   137,    72,   241,    63,
     53,   246,    15,    89,    18,   -64,   -64,    21,    84,    85,     249,    73,    55,    22,    74,    21,   250,   247,    70,    84,
    107,    94,    98,   101,    70,     1,   -89,   -89,   243,    81,     248,     2,   237,    81,    85,    89,    52,    53,    22,    61,
     80,   244,    87,    55,   225,    80,    82,    61,    22,    71,      82,    80,    71,    87,    83,    22,    80,    67,    42,     2,
     56,   185,    51,    86,    42,   186,   -97,     2,   187,    15,      94,    98,   101,    86,     3,    79,  -102,     3,    56,    15,
    116,    18,     3,     3,   108,  -160,   241,   242,     4,     4,       4,    18,     3,     4,     3,    57,    23,    56,     4,    24,
    135,    15,    15,    18,    18,   115,     3,   106,   141,   104,       4,   106,    15,   108,    18,    89,   186,  -168,   -67,   -67,
      2,     3,     4,   117,   118,   119,   120,     4,    56,   142,     187,    23,   197,   188,    24,    25,    38,    26,    23,   129,
      3,    23,   121,   122,    24,    57,     4,    38,    72,   123,      23,    24,    25,    24,   167,   168,    51,   135,    23,   138,
    124,    22,    73,    67,    89,    74,   125,    15,    22,    18,     186,    24,   109,    15,   187,    18,    15,   188,    18,    69,
    126,    83,     4,   109,   127,   128,    95,    53,   185,    56,     179,   180,   181,   182,   183,   184,   185,   -94,   -94,    15,
     69,    79,   186,   136,   105,   187,    15,    15,    18,    18,      15,    18,    18,    95,   139,   110,   111,   112,   113,    38,
    181,   182,   183,   184,    51,   -97,   -14,   137,   139,   -60,     182,   183,   184,   185,   114,   115,    53,    15,    56,    18,
     38,    15,   138,    18,    23,   193,    23,    24,    25,    24,    -102,   116,   117,   105,   131,   130,   -14,   139,   118,   133,
     26,    23,   194,   143,    24,    25,   145,   146,   147,   148,     132,   194,   119,   195,     4,   159,   120,   121,   162,   163,
    149,   150,   151,   152,    23,   153,   144,    24,   157,   196,     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
    109,   179,   180,   181,   182,   183,   184,   108,   197,   251,     174,   158,   145,   167,   168,   175,   176,   177,   178,   179,
    252,    50,   100,   239,    15,    15,    18,    18,   231,   134,     180,   181,   182,   183,   184,   185,    15,   230,    18,    51,
    111,   247,   249,    15,   248,    18,   240,   198,   199,   200,     180,   181,   182,   183,   184,   185,    15,   196,    18,   180,
    201,   202,   203,   204,   205,   206,   207,   208,   209,   210,     181,   182,   183,   184,   185,   146,   147,   148,   149,   150,
    211,   212,   213,   214,   215,   216,   217,   218,   219,   220,     151,   152,   153,   -63,   154,   200,   240,   201,   252,   257,
    221,   222,   223,   224,   102,   103,    46,   131,   114,   156,     259,   138,   260,    50,   128,   141,   100,   238,    15,   255,
      0,     0,     0,     0,   108,     0,     0,     0,     0,     0,      18,   256,   254,   102,   103,    46,   124,   144,    15,   251,
      0,    15,    15,    18,    18,   231,   158,   159,   160,   161,      18,     0,   157,     0,   138,     0,    15,   230,    18,     0,
        0,    15,     0,    18,   202,   203,   204,   205,   206,   207,
      208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
      218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
      228,   159,   160,   161,   162,   163,   164,   165,   166,   167,
      168,   169,   170,   171,   172,   173,   174,   167,   168,     0,
        0,   175,   176,   177,   178,   179,   180,   181,   182,   183,
      184,   185,   178,   179,   180,   181,   182,   183,   184,   185,
        0,     0,     0,     0,     0,   199,   159,   160,   161,   162,
      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
      173,   174,     0,     0,     0,     0,   175,   176,   177,   178,
      179,   180,   181,   182,   183,   184,   185,   159,   160,     0,
    162,   163,   164,   165,   166,   167,   168,   169,   170,   171,     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
    172,   173,   166,   167,     0,     0,   174,   175,   176,   177,     172,   173,   174,     0,     0,     0,     0,   175,   176,   177,
    178,   179,   180,   181,   182,   183,   184,   177,   178,   179,     178,   179,   180,   181,   182,   183,   184,   185,   162,   163,
    180,   181,   182,   183,   184,     0,     0,     0,     0,     0,     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
    195,   158,   159,   160,   161,   162,   163,   164,   165,   166,     174,     0,     0,     0,     0,   175,   176,   177,   178,   179,
    167,   168,   169,   170,   171,   172,   173,     0,     0,     0,     180,   181,   182,   183,   184,   185,   162,     0,     0,   165,
      0,   174,   175,   176,   177,   178,   179,   180,   181,   182,     166,   167,   168,     0,     0,     0,     0,   173,   174,   162,
    183,   184,   158,   159,     0,   161,   162,   163,   164,   165,       0,     0,     0,   175,   167,   168,   178,   179,   180,   181,
    166,   167,   168,   169,   170,   171,   172,   173,     0,     0,     182,   183,   184,   185,     0,     0,   175,     0,     0,   178,
      0,     0,   174,   175,   176,   177,   178,   179,   180,   181,     179,   180,   181,   182,   183,   184,   185,   162,     0,     0,
    182,   183,   184,   158,     0,     0,   161,   162,   163,   164,       0,     0,   167,   168,     0,     0,     0,     0,     0,     0,
    165,   166,   167,   168,   169,   170,   171,   172,   173,     0,       0,     0,     0,     0,     0,     0,     0,   178,   179,   180,
      0,     0,     0,   174,   175,   176,   177,   178,   179,   180,     181,   182,   183,   184,   185
    181,   182,   183,   184,   161,   162,   163,   164,   165,   166,  
    167,   168,   169,   170,   171,   172,   173,     0,     0,     0,  
      0,   174,   175,   176,   177,   178,   179,   180,   181,   182,  
    183,   184,   161,     0,     0,   164,   165,   166,   167,     0,  
      0,     0,     0,   172,   173,   161,     0,     0,     0,   174,  
    166,   167,   177,   178,   179,   180,   181,   182,   183,   184,  
      0,     0,   174,     0,     0,   177,   178,   179,   180,   181,  
    182,   183,   184,   161,     0,     0,     0,     0,   166,   167,  
      0,     0,     0,     0,     0,   166,   167,     0,     0,     0,  
      0,   166,   167,   177,   178,   179,   180,   181,   182,   183,  
    184,   178,   179,   180,   181,   182,   183,   184,   179,   180,  
    181,   182,   183,   184  
 };  };
   
 static const short yycheck[] = {     0,  static const short yycheck[] = {     0,
     72,     0,     0,    11,    23,     5,     3,     3,    46,    26,       0,     0,   107,    11,    60,     3,     3,    38,     4,    46,
     11,     3,    11,    38,    38,    49,     4,     4,    25,    46,      11,     4,    11,     5,    26,    38,     4,    47,     4,    25,
     47,    55,    23,     4,    23,    48,    49,     4,    66,    46,      49,    51,     5,     4,    54,     4,    55,    49,    26,    66,
      4,    52,    53,    54,    26,     4,    48,    49,    49,    64,      52,    45,     3,    64,    46,     4,    46,    47,     4,     4,
     64,    52,    49,     5,     4,    69,    38,     4,     4,     3,      38,    64,     3,    49,    53,     4,    69,     4,    46,    45,
     50,    47,    60,    57,    46,    51,    53,    45,    54,    60,      52,    53,    54,    57,    50,     4,    53,    50,    50,    60,
      4,    60,    50,    50,    72,    46,    48,    49,    56,    56,      56,    60,    50,    56,    50,    57,    47,    50,    56,    50,
     91,    72,    73,    72,    73,    73,    50,    69,    99,    48,      56,    69,    73,    73,    73,     4,    47,    46,    48,    49,
     45,    50,    56,    27,    28,    29,    30,    56,    50,   108,      51,    47,   138,    54,    50,    51,     3,    53,    47,    91,
     50,    47,    36,    37,    50,    57,    56,     3,    47,    43,      47,    50,    51,    50,    19,    20,   104,    99,    47,   107,
     44,     4,    51,     4,     4,    54,    50,   108,     4,   108,      47,    50,     4,   104,    51,   104,   107,    54,   107,    26,
     54,    53,    56,   185,    58,    59,     4,    47,    47,    50,      35,    36,    37,    38,    39,    40,    41,    48,    49,   120,
     26,     4,    51,    46,    52,    54,   127,   128,   127,   128,     121,   120,   121,     4,   229,    27,    28,    29,    30,    46,
     38,    39,    40,    41,   142,    53,    46,    48,     4,    48,      38,    39,    40,    41,    36,    37,    47,   138,    50,   138,
     46,   142,    49,   142,    47,     4,    47,    50,    51,    50,      53,    43,    44,    52,    48,    46,    46,   252,    50,     4,
     53,    47,    46,    48,    50,    51,   117,   118,   119,   120,      49,     4,    54,    46,    56,    11,    58,    59,    14,    15,
    121,   122,   123,   124,    47,   126,    52,    50,    55,    58,      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    242,    36,    37,    38,    39,    40,    41,   185,    59,     0,      26,    55,    52,    19,    20,    31,    32,    33,    34,    35,
      0,     5,    54,   188,   185,   186,   185,   186,   186,    91,      36,    37,    38,    39,    40,    41,   187,   187,   187,   197,
     72,   242,   245,   194,   243,   194,   194,   158,   159,   160,      36,    37,    38,    39,    40,    41,   197,    48,   197,    36,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,      37,    38,    39,    40,    41,   110,   111,   112,   113,   114,
    171,   172,   173,   174,   175,   176,   177,   178,   179,   180,     115,   116,   117,    48,   119,    58,    48,    59,    49,    48,
    181,   182,   183,   184,    56,    58,     3,    74,    72,   128,       0,   229,     0,     5,    91,   107,    54,   189,   229,   249,
     -1,    -1,    -1,    -1,   242,    -1,    -1,    -1,    -1,    -1,     229,   252,   247,    56,    58,     3,    74,   107,   239,   239,
     -1,   242,   243,   242,   243,   243,    11,    12,    13,    14,     239,    -1,   121,    -1,   252,    -1,   247,   247,   247,    -1,
     15,    16,    17,    18,    19,    20,    21,    22,    23,    24,      -1,   252,    -1,   252,   159,   160,   161,   162,   163,   164,
     25,    26,    19,    20,    -1,    -1,    31,    32,    33,    34,     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
     35,    36,    37,    38,    39,    40,    41,    34,    35,    36,     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
     37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,     185,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     55,    11,    12,    13,    14,    15,    16,    17,    18,    19,      20,    21,    22,    23,    24,    25,    26,    19,    20,    -1,
     20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,  
     -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
     40,    41,    11,    12,    -1,    14,    15,    16,    17,    18,      40,    41,    34,    35,    36,    37,    38,    39,    40,    41,
     19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,      -1,    -1,    -1,    -1,    -1,    55,    11,    12,    13,    14,
     -1,    -1,    31,    32,    33,    34,    35,    36,    37,    38,      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     39,    40,    41,    11,    -1,    -1,    14,    15,    16,    17,      25,    26,    -1,    -1,    -1,    -1,    31,    32,    33,    34,
     18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,      35,    36,    37,    38,    39,    40,    41,    11,    12,    -1,
     -1,    -1,    -1,    31,    32,    33,    34,    35,    36,    37,      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     38,    39,    40,    41,    14,    15,    16,    17,    18,    19,      24,    25,    26,    -1,    -1,    -1,    -1,    31,    32,    33,
     20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,      34,    35,    36,    37,    38,    39,    40,    41,    14,    15,
     -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     40,    41,    14,    -1,    -1,    17,    18,    19,    20,    -1,      26,    -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,
     -1,    -1,    -1,    25,    26,    14,    -1,    -1,    -1,    31,      36,    37,    38,    39,    40,    41,    14,    -1,    -1,    17,
     19,    20,    34,    35,    36,    37,    38,    39,    40,    41,      18,    19,    20,    -1,    -1,    -1,    -1,    25,    26,    14,
     -1,    -1,    31,    -1,    -1,    34,    35,    36,    37,    38,      -1,    -1,    -1,    31,    19,    20,    34,    35,    36,    37,
     39,    40,    41,    14,    -1,    -1,    -1,    -1,    19,    20,      38,    39,    40,    41,    -1,    -1,    31,    -1,    -1,    34,
     -1,    -1,    -1,    -1,    -1,    19,    20,    -1,    -1,    -1,      35,    36,    37,    38,    39,    40,    41,    14,    -1,    -1,
     -1,    19,    20,    34,    35,    36,    37,    38,    39,    40,      -1,    -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    -1,
     41,    35,    36,    37,    38,    39,    40,    41,    36,    37,      -1,    -1,    -1,    -1,    -1,    -1,    -1,    34,    35,    36,
     38,    39,    40,    41      37,    38,    39,    40,    41
 };  };
 #define YYPURE 1  #define YYPURE 1
   
Line 772  yyparse(YYPARSE_PARAM_ARG) Line 777  yyparse(YYPARSE_PARAM_ARG)
   
 #ifdef YYPURE  #ifdef YYPURE
   int yychar;    int yychar;
   YYSTYPE yylval;    YYSTYPE yylval=0; /*paf:calm down, vc7 warning level 4*/
   int yynerrs;    int yynerrs;
 #ifdef YYLSP_NEEDED  #ifdef YYLSP_NEEDED
   YYLTYPE yylloc;    YYLTYPE yylloc;
 #endif  #endif
 #endif  #endif
   
   YYSTYPE yyval;                /*  the variable used to return         */    YYSTYPE yyval=0; /*paf:calm down, vc7 warning level 4*/               /*  the variable used to return         */
                                 /*  semantic values from the action     */                                  /*  semantic values from the action     */
                                 /*  routines                            */                                  /*  routines                            */
   
Line 1039  yyreduce: Line 1044  yyreduce:
   switch (yyn) {    switch (yyn) {
   
 case 1:  case 1:
 #line 123 "compile.y"  #line 121 "compile.y"
 {  {
         Method& method=*new Method(Method::CT_ANY,          Method& method=*new Method(Method::CT_ANY,
                 0, 0, /*min, max numbered_params_count*/                  0, 0, /*min, max numbered_params_count*/
Line 1049  case 1: Line 1054  case 1:
 ;  ;
     break;}      break;}
 case 8:  case 8:
 #line 138 "compile.y"  #line 136 "compile.y"
 {  {
         const String& command=*LA2S(*yyvsp[-2]);          const String& command=*LA2S(*yyvsp[-2]);
         YYSTYPE strings_code=yyvsp[0];          YYSTYPE strings_code=yyvsp[0];
         if(strings_code->count()<1*2) {          if(strings_code->count()<1*OPERATIONS_PER_OPVALUE) {
                 strcpy(PC.error, "@");                  strcpy(PC.error, "@");
                 strcat(PC.error, command.cstr());                  strcat(PC.error, command.cstr());
                 strcat(PC.error, " is empty");                  strcat(PC.error, " is empty");
Line 1066  case 8: Line 1071  case 8:
                         strcat(PC.error, "'");                          strcat(PC.error, "'");
                         YYERROR;                          YYERROR;
                 }                  }
                 if(strings_code->count()==1*2) {                  if(strings_code->count()==1*OPERATIONS_PER_OPVALUE) {
                         // new class' name                          // new class' name
                         const String& name=*LA2S(*strings_code);                          const String& name=*LA2S(*strings_code);
                         // creating the class                          // creating the class
Line 1076  case 8: Line 1081  case 8:
                         // append to request's classes                          // append to request's classes
                         PC.request.classes().put(name, cclass);                          PC.request.classes().put(name, cclass);
                 } else {                  } else {
                         strcpy(PC.error, "@"CLASS_NAME" must contain sole name");                          strcpy(PC.error, "@"CLASS_NAME" must contain only one line with class name (contains more then one)");
                         YYERROR;                          YYERROR;
                 }                  }
         } else if(command==USE_CONTROL_METHOD_NAME) {          } else if(command==USE_CONTROL_METHOD_NAME) {
                 for(size_t i=0; i<strings_code->count(); i+=2)                   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));                          PC.request.use_file(PC.request.main_class, *LA2S(*strings_code, i));
         } else if(command==BASE_NAME) {          } else if(command==BASE_NAME) {
                 if(PC.cclass->base_class()) { // already changed from default?                  if(PC.cclass->base_class()) { // already changed from default?
Line 1089  case 8: Line 1094  case 8:
                         strcat(PC.error, "'");                          strcat(PC.error, "'");
                         YYERROR;                          YYERROR;
                 }                  }
                 if(strings_code->count()==1*2) {                  if(strings_code->count()==1*OPERATIONS_PER_OPVALUE) {
                         const String& base_name=*LA2S(*strings_code);                          const String& base_name=*LA2S(*strings_code);
                         if(Value* base_class_value=PC.request.classes().get(base_name)) {                          if(Value* base_class_value=PC.request.classes().get(base_name)) {
                                 // @CLASS == @BASE sanity check                                  // @CLASS == @BASE sanity check
Line 1123  case 8: Line 1128  case 8:
 ;  ;
     break;}      break;}
 case 12:  case 12:
 #line 210 "compile.y"  #line 208 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 16:  case 16:
 #line 215 "compile.y"  #line 212 "compile.y"
 {  { 
         const String& name=*LA2S(*yyvsp[-5]);          PC.explicit_result=false;
           const String& name=*LA2S(*yyvsp[-4]);
   
         YYSTYPE params_names_code=yyvsp[-4];          YYSTYPE params_names_code=yyvsp[-3];
         ArrayString* params_names=0;          ArrayString* params_names=0;
         if(int size=params_names_code->count()) {          if(int size=params_names_code->count()) {
                 params_names=new ArrayString;                  params_names=new ArrayString;
                 for(int i=0; i<size; i+=2)                  for(int i=0; i<size; i+=OPERATIONS_PER_OPVALUE)
                         *params_names+=LA2S(*params_names_code, i);                          *params_names+=LA2S(*params_names_code, i);
         }          }
   
         YYSTYPE locals_names_code=yyvsp[-3];          YYSTYPE locals_names_code=yyvsp[-2];
         ArrayString* locals_names=0;          ArrayString* locals_names=0;
         if(int size=locals_names_code->count()) {          if(int size=locals_names_code->count()) {
                 locals_names=new ArrayString;                  locals_names=new ArrayString;
                 for(int i=0; i<size; i+=2)                  for(int i=0; i<size; i+=OPERATIONS_PER_OPVALUE) {
                         *locals_names+=LA2S(*locals_names_code, i);                          const String* local_name=LA2S(*locals_names_code, i);
                           if(*local_name==RESULT_VAR_NAME)
                                   PC.explicit_result=true;
                           else
                                   *locals_names+=local_name;
                   }
         }          }
   
         Method& method=*new Method(          Method* method=new Method(
                 //name,                   //name, 
                 Method::CT_ANY,                  Method::CT_ANY,
                 0, 0/*min,max numbered_params_count*/,                   0, 0/*min,max numbered_params_count*/, 
                 params_names, locals_names,                   params_names, locals_names, 
                 yyvsp[0], 0);                  0/*to be filled later in next {} */, 0);
         PC.cclass->add_method(PC.alias_method(name), method);          PC.cclass->add_method(PC.alias_method(name), *method);
           *reinterpret_cast<Method**>(&yyval)=method;
   
           // todo: check [][;result;]
 ;  ;
     break;}      break;}
 case 19:  case 17:
 #line 244 "compile.y"  #line 247 "compile.y"
   {
           // fill in the code
           reinterpret_cast<Method*>(yyvsp[-1])->parser_code=yyvsp[0];
   ;
       break;}
   case 20:
   #line 253 "compile.y"
 {yyval=yyvsp[-1];  {yyval=yyvsp[-1];
     break;}      break;}
 case 23:  case 24:
 #line 246 "compile.y"  #line 255 "compile.y"
 { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 29:  case 30:
 #line 254 "compile.y"  #line 263 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 35:  case 36:
 #line 260 "compile.y"  #line 269 "compile.y"
 {  {
         yyval=yyvsp[0]; /* stack: resulting value */           yyval=yyvsp[0]; /* stack: resulting value */ 
         changetail_or_append(*yyval,           changetail_or_append(*yyval, 
Line 1178  case 35: Line 1199  case 35:
                 ); /* value=pop; wcontext.write(value) */                  ); /* value=pop; wcontext.write(value) */
 ;  ;
     break;}      break;}
 case 36:  case 37:
 #line 267 "compile.y"  #line 276 "compile.y"
 { yyval=yyvsp[0] ;  { yyval=yyvsp[0] ;
     break;}      break;}
 case 39:  case 40:
 #line 269 "compile.y"  #line 278 "compile.y"
 { yyval=yyvsp[-1] ;  { yyval=yyvsp[-1] ;
     break;}      break;}
 case 42:  case 43:
 #line 273 "compile.y"  #line 282 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         ArrayOperation* diving_code=yyvsp[0];          ArrayOperation* diving_code=yyvsp[0];
         const String* first_name=LA2S(*diving_code);          const String* first_name=LA2S(*diving_code);
         // self.xxx... -> xxx...          // self.xxx... -> xxx...
         // OP_VALUE+string+OP_GET_ELEMENT+... -> OP_WITH_SELF+...          // OP_VALUE+origin+string+OP_GET_ELEMENT+... -> OP_WITH_SELF+...
         if(first_name && *first_name==SELF_ELEMENT_NAME) {          if(first_name && *first_name==SELF_ELEMENT_NAME) {
                 O(*yyval, OP_WITH_SELF); /* stack: starting context */                  O(*yyval, OP_WITH_SELF); /* stack: starting context */
                 P(*yyval, *diving_code,                   P(*yyval, *diving_code, 
                         /* skip over... */                          /* skip over... */
                         diving_code->count()>=3?3/*OP_VALUE+string+OP_GET_ELEMENTx*/:2/*OP_+string*/);                          diving_code->count()>=4?4/*OP_VALUE+origin+string+OP_GET_ELEMENTx*/:3/*OP_+origin+string*/);
         } else {          } else {
                 O(*yyval, OP_WITH_READ); /* stack: starting context */                  O(*yyval, OP_WITH_READ); /* stack: starting context */
   
                 // ^if ELEMENT -> ^if ELEMENT_OR_OPERATOR                  // ^if ELEMENT -> ^if ELEMENT_OR_OPERATOR
                 // OP_VALUE+string+OP_GET_ELEMENT. -> OP_VALUE+string+OP_GET_ELEMENT_OR_OPERATOR.                  // OP_VALUE+origin+string+OP_GET_ELEMENT. -> OP_VALUE+origin+string+OP_GET_ELEMENT_OR_OPERATOR.
                 if(PC.in_call_value && diving_code->count()==3)                  if(PC.in_call_value && diving_code->count()==4)
                         diving_code->put(2, OP_GET_ELEMENT_OR_OPERATOR);                          diving_code->put(4-1, OP_GET_ELEMENT_OR_OPERATOR);
                 P(*yyval, *diving_code);                  P(*yyval, *diving_code);
         }          }
         /* diving code; stack: current context */          /* diving code; stack: current context */
 ;  ;
     break;}      break;}
 case 43:  case 44:
 #line 295 "compile.y"  #line 304 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 45:  case 46:
 #line 296 "compile.y"  #line 305 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 46:  case 47:
 #line 300 "compile.y"  #line 309 "compile.y"
 {  {
         yyval=yyvsp[-1]; /* stack: context,name */          yyval=yyvsp[-1]; /* stack: context,name */
         P(*yyval, *yyvsp[0]); /* stack: context,name,constructor_value */          P(*yyval, *yyvsp[0]); /* stack: context,name,constructor_value */
 ;  ;
     break;}      break;}
 case 50:  case 51:
 #line 308 "compile.y"  #line 317 "compile.y"
 {  {
         yyval=N();          yyval=N();
         ArrayOperation* diving_code=yyvsp[0];          ArrayOperation* diving_code=yyvsp[0];
         const String* first_name=LA2S(*diving_code);          const String* first_name=LA2S(*diving_code);
         // $self.xxx... -> $xxx...          // $self.xxx... -> $xxx...
         // OP_VALUE+string+OP_GET_ELEMENT+... -> OP_WITH_SELF+...          // OP_VALUE+origin+string+OP_GET_ELEMENT+... -> OP_WITH_SELF+...
         if(first_name && *first_name==SELF_ELEMENT_NAME) {          if(first_name && *first_name==SELF_ELEMENT_NAME) {
                 O(*yyval, OP_WITH_SELF); /* stack: starting context */                  O(*yyval, OP_WITH_SELF); /* stack: starting context */
                 P(*yyval, *diving_code,                   P(*yyval, *diving_code, 
                         /* skip over... */                          /* skip over... */
                         diving_code->count()>=3?3/*OP_VALUE+string+OP_GET_ELEMENTx*/:2/*OP_+string*/);                          diving_code->count()>=4?4/*OP_VALUE+origin+string+OP_GET_ELEMENTx*/:3/*OP_+origin+string*/);
         } else {          } else {
                 O(*yyval, OP_WITH_ROOT); /* stack: starting context */                  O(*yyval, OP_WITH_ROOT); /* stack: starting context */
                 P(*yyval, *diving_code);                  P(*yyval, *diving_code);
Line 1246  case 50: Line 1267  case 50:
         /* diving code; stack: current context */          /* diving code; stack: current context */
 ;  ;
     break;}      break;}
 case 51:  case 52:
 #line 325 "compile.y"  #line 334 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         O(*yyval, OP_WITH_WRITE); /* stack: starting context */          O(*yyval, OP_WITH_WRITE); /* stack: starting context */
         P(*yyval, *yyvsp[0]); /* diving code; stack: context,name */          P(*yyval, *yyvsp[0]); /* diving code; stack: context,name */
 ;  ;
     break;}      break;}
 case 52:  case 53:
 #line 330 "compile.y"  #line 339 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 56:  case 57:
 #line 337 "compile.y"  #line 346 "compile.y"
   {
           // allow $result_or_other_variable[ letters here any time ]
           *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false;
   ;
       break;}
   case 58:
   #line 349 "compile.y"
   {
           PC.explicit_result=*reinterpret_cast<bool*>(&yyvsp[-1]);
   ;
       break;}
   case 59:
   #line 351 "compile.y"
 {  {
         // stack: context, name          // stack: context, name
         yyval=yyvsp[-1]; // stack: context, name, value          yyval=yyvsp[-2]; // stack: context, name, value
         O(*yyval, OP_CONSTRUCT_VALUE); /* value=pop; name=pop; context=pop; construct(context,name,value) */          O(*yyval, OP_CONSTRUCT_VALUE); /* value=pop; name=pop; context=pop; construct(context,name,value) */
 ;  ;
     break;}      break;}
 case 57:  case 60:
 #line 343 "compile.y"  #line 357 "compile.y"
 {   { 
         yyval=N();           yyval=N(); 
         O(*yyval, OP_PREPARE_TO_EXPRESSION);          O(*yyval, OP_PREPARE_TO_EXPRESSION);
Line 1276  case 57: Line 1310  case 57:
         O(*yyval, OP_CONSTRUCT_EXPR); /* value=pop->as_expr_result; name=pop; context=pop; construct(context,name,value) */          O(*yyval, OP_CONSTRUCT_EXPR); /* value=pop->as_expr_result; name=pop; context=pop; construct(context,name,value) */
 ;  ;
     break;}      break;}
 case 58:  case 61:
 #line 351 "compile.y"  #line 365 "compile.y"
 {  {
         // stack: context, name          // stack: context, name
         yyval=N();           yyval=N(); 
         OA(*yyval, OP_CURLY_CODE__CONSTRUCT, yyvsp[-1]); /* code=pop; name=pop; context=pop; construct(context,name,junction(code)) */          OA(*yyval, OP_CURLY_CODE__CONSTRUCT, yyvsp[-1]); /* code=pop; name=pop; context=pop; construct(context,name,junction(code)) */
 ;  ;
     break;}      break;}
 case 62:  case 65:
 #line 362 "compile.y"  #line 376 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         OA(*yyval, OP_OBJECT_POOL, yyvsp[0]); /* stack: empty write context */          OA(*yyval, OP_OBJECT_POOL, yyvsp[0]); /* stack: empty write context */
Line 1293  case 62: Line 1327  case 62:
         /* context=pop; stack: context.value() */          /* context=pop; stack: context.value() */
 ;  ;
     break;}      break;}
 case 65:  case 68:
 #line 369 "compile.y"  #line 383 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 66:  case 69:
 #line 373 "compile.y"  #line 387 "compile.y"
 {  {
         yyval=yyvsp[0]; /* stack: value */          yyval=yyvsp[0]; /* stack: value */
         changetail_or_append(*yyval,           changetail_or_append(*yyval, 
Line 1306  case 66: Line 1340  case 66:
                 /*or */OP_WRITE_VALUE); /* value=pop; wcontext.write(value) */                  /*or */OP_WRITE_VALUE); /* value=pop; wcontext.write(value) */
 ;  ;
     break;}      break;}
 case 67:  case 70:
 #line 379 "compile.y"  #line 393 "compile.y"
 {   { 
                                         PC.in_call_value=true;                                           PC.in_call_value=true; 
                         ;                          ;
     break;}      break;}
 case 68:  case 71:
 #line 382 "compile.y"  #line 396 "compile.y"
 {  {
                                 PC.in_call_value=false;                                  PC.in_call_value=false;
                         ;                          ;
     break;}      break;}
 case 69:  case 72:
 #line 385 "compile.y"  #line 399 "compile.y"
 { /* ^field.$method{vasya} */  { /* ^field.$method{vasya} */
         yyval=yyvsp[-3]; /* with_xxx,diving code; stack: context,method_junction */          yyval=yyvsp[-3]; /* with_xxx,diving code; stack: context,method_junction */
   
         YYSTYPE params_code=yyvsp[-1];          YYSTYPE params_code=yyvsp[-1];
         if(params_code->count()==3) { // probably [] case. [OP_VALUE + Void + STORE_PARAM]          if(params_code->count()==4) { // probably [] case. [OP_VALUE+origin+Void+STORE_PARAM]
                 if(Value* value=LA2V(*params_code)) // it is OP_VALUE + value?                  if(Value* value=LA2V(*params_code)) // it is OP_VALUE+origin+value?
                         if(!value->is_defined()) // value is VVoid?                          if(!value->is_defined()) // value is VVoid?
                                 params_code=0; // ^zzz[] case. don't append lone empty param.                                  params_code=0; // ^zzz[] case. don't append lone empty param.
         }          }
Line 1333  case 69: Line 1367  case 69:
         OA(*yyval, OP_CALL, params_code); // method_frame=make frame(pop junction); ncontext=pop; call(ncontext,method_frame) stack: value          OA(*yyval, OP_CALL, params_code); // method_frame=make frame(pop junction); ncontext=pop; call(ncontext,method_frame) stack: value
 ;  ;
     break;}      break;}
 case 72:  case 75:
 #line 400 "compile.y"  #line 414 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 76:  case 79:
 #line 406 "compile.y"  #line 420 "compile.y"
 {yyval=yyvsp[-1];  {
           // allow ^call[ letters here any time ]
           *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false;
   ;
       break;}
   case 80:
   #line 423 "compile.y"
   {
           PC.explicit_result=*reinterpret_cast<bool*>(&yyvsp[-1]);
   ;
     break;}      break;}
 case 77:  case 81:
 #line 407 "compile.y"  #line 425 "compile.y"
   {yyval=yyvsp[-2];
       break;}
   case 82:
   #line 426 "compile.y"
 {yyval=yyvsp[-1];  {yyval=yyvsp[-1];
     break;}      break;}
 case 78:  case 83:
 #line 408 "compile.y"  #line 427 "compile.y"
 {yyval=yyvsp[-1];  {yyval=yyvsp[-1];
     break;}      break;}
 case 80:  case 85:
 #line 411 "compile.y"  #line 430 "compile.y"
 { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 82:  case 87:
 #line 415 "compile.y"  #line 434 "compile.y"
 { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 84:  case 89:
 #line 419 "compile.y"  #line 438 "compile.y"
 { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 85:  case 90:
 #line 421 "compile.y"  #line 440 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(*yyval, OP_STORE_PARAM);          O(*yyval, OP_STORE_PARAM);
 ;  ;
     break;}      break;}
 case 86:  case 91:
 #line 425 "compile.y"  #line 444 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         OA(*yyval, OP_EXPR_CODE__STORE_PARAM, yyvsp[0]);          OA(*yyval, OP_EXPR_CODE__STORE_PARAM, yyvsp[0]);
 ;  ;
     break;}      break;}
 case 87:  case 92:
 #line 429 "compile.y"  #line 448 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         OA(*yyval, OP_CURLY_CODE__STORE_PARAM, yyvsp[0]);          OA(*yyval, OP_CURLY_CODE__STORE_PARAM, yyvsp[0]);
 ;  ;
     break;}      break;}
 case 91:  case 96:
 #line 438 "compile.y"  #line 457 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         O(*yyval, OP_PREPARE_TO_EXPRESSION);          O(*yyval, OP_PREPARE_TO_EXPRESSION);
Line 1391  case 91: Line 1438  case 91:
         O(*yyval, OP_WRITE_EXPR_RESULT);          O(*yyval, OP_WRITE_EXPR_RESULT);
 ;  ;
     break;}      break;}
 case 93:  case 98:
 #line 447 "compile.y"  #line 466 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 95:  case 100:
 #line 449 "compile.y"  #line 468 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 97:  case 102:
 #line 451 "compile.y"  #line 470 "compile.y"
 {  {
         // 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 1410  case 97: Line 1457  case 97:
         O(*yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */          O(*yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */
 ;  ;
     break;}      break;}
 case 98:  case 103:
 #line 459 "compile.y"  #line 478 "compile.y"
 {  {
         /* stack: context */          /* stack: context */
         yyval=yyvsp[0]; /* stack: context,name */          yyval=yyvsp[0]; /* stack: context,name */
         O(*yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */          O(*yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */
 ;  ;
     break;}      break;}
 case 104:  case 109:
 #line 472 "compile.y"  #line 491 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(*yyval, OP_GET_ELEMENT);          O(*yyval, OP_GET_ELEMENT);
 ;  ;
     break;}      break;}
 case 105:  case 110:
 #line 476 "compile.y"  #line 495 "compile.y"
 {  {
         ArrayOperation* code;          ArrayOperation* code;
         {          {
Line 1437  case 105: Line 1484  case 105:
         OA(*yyval, OP_STRING_POOL, code);          OA(*yyval, OP_STRING_POOL, code);
 ;  ;
     break;}      break;}
 case 106:  case 111:
 #line 485 "compile.y"  #line 504 "compile.y"
   {
           // allow $result_or_other_variable[ letters here any time ]
           *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false;
   ;
       break;}
   case 112:
   #line 507 "compile.y"
   {
           PC.explicit_result=*reinterpret_cast<bool*>(&yyvsp[-1]);
   ;
       break;}
   case 113:
   #line 509 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         OA(*yyval, OP_OBJECT_POOL, yyvsp[-1]); /* stack: empty write context */          OA(*yyval, OP_OBJECT_POOL, yyvsp[-2]); /* 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() */
 ;  ;
     break;}      break;}
 case 107:  case 114:
 #line 491 "compile.y"  #line 515 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         O(*yyval, OP_WITH_READ);          O(*yyval, OP_WITH_READ);
         P(*yyval, *yyvsp[0]);          P(*yyval, *yyvsp[0]);
 ;  ;
     break;}      break;}
 case 109:  case 116:
 #line 496 "compile.y"  #line 520 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 110:  case 117:
 #line 497 "compile.y"  #line 521 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(*yyval, OP_GET_ELEMENT__WRITE);          O(*yyval, OP_GET_ELEMENT__WRITE);
 ;  ;
     break;}      break;}
 case 113:  case 120:
 #line 506 "compile.y"  #line 530 "compile.y"
 {  {
         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
Line 1480  case 113: Line 1540  case 113:
         O(*yyval, OP_GET_CLASS);          O(*yyval, OP_GET_CLASS);
 ;  ;
     break;}      break;}
 case 114:  case 121:
 #line 518 "compile.y"  #line 542 "compile.y"
 {  {
         yyval=yyvsp[-1];          yyval=yyvsp[-1];
         if(!PC.in_call_value) {          if(!PC.in_call_value) {
Line 1491  case 114: Line 1551  case 114:
         O(*yyval, OP_PREPARE_TO_CONSTRUCT_OBJECT);          O(*yyval, OP_PREPARE_TO_CONSTRUCT_OBJECT);
 ;  ;
     break;}      break;}
 case 115:  case 126:
 #line 530 "compile.y"  #line 559 "compile.y"
 {  
         // see OP_PREPARE_TO_EXPRESSION!!  
         if((yyval=yyvsp[0])->count()==2) // only one string literal in there?  
                 change_string_literal_to_double_literal(*yyval); // make that string literal Double  
 ;  
     break;}  
 case 119:  
 #line 539 "compile.y"  
 { yyval = yyvsp[-1]; ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 120:  case 127:
 #line 540 "compile.y"  #line 560 "compile.y"
 { yyval = yyvsp[-1]; ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 121:  case 128:
 #line 541 "compile.y"  #line 561 "compile.y"
 { yyval = yyvsp[-1]; ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 122:  case 129:
 #line 543 "compile.y"  #line 563 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_NEG) ;  { yyval=yyvsp[0];  O(*yyval, OP_NEG) ;
     break;}      break;}
 case 123:  case 130:
 #line 544 "compile.y"  #line 564 "compile.y"
 { yyval=yyvsp[0] ;  { yyval=yyvsp[0] ;
     break;}      break;}
 case 124:  case 131:
 #line 545 "compile.y"  #line 565 "compile.y"
 { yyval=yyvsp[0];        O(*yyval, OP_INV) ;  { yyval=yyvsp[0];        O(*yyval, OP_INV) ;
     break;}      break;}
 case 125:  case 132:
 #line 546 "compile.y"  #line 566 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_NOT) ;  { yyval=yyvsp[0];  O(*yyval, OP_NOT) ;
     break;}      break;}
 case 126:  case 133:
 #line 547 "compile.y"  #line 567 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_DEF) ;  { yyval=yyvsp[0];  O(*yyval, OP_DEF) ;
     break;}      break;}
 case 127:  case 134:
 #line 548 "compile.y"  #line 568 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_IN) ;  { yyval=yyvsp[0];  O(*yyval, OP_IN) ;
     break;}      break;}
 case 128:  case 135:
 #line 549 "compile.y"  #line 569 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_FEXISTS) ;  { yyval=yyvsp[0];  O(*yyval, OP_FEXISTS) ;
     break;}      break;}
 case 129:  case 136:
 #line 550 "compile.y"  #line 570 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_DEXISTS) ;  { yyval=yyvsp[0];  O(*yyval, OP_DEXISTS) ;
     break;}      break;}
 case 130:  case 137:
 #line 552 "compile.y"  #line 572 "compile.y"
 {       yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_SUB) ;  {       yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_SUB) ;
     break;}      break;}
 case 131:  case 138:
 #line 553 "compile.y"  #line 573 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_ADD) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_ADD) ;
     break;}      break;}
 case 132:  case 139:
 #line 554 "compile.y"  #line 574 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_MUL) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_MUL) ;
     break;}      break;}
 case 133:  case 140:
 #line 555 "compile.y"  #line 575 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_DIV) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_DIV) ;
     break;}      break;}
 case 134:  case 141:
 #line 556 "compile.y"  #line 576 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_MOD) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_MOD) ;
     break;}      break;}
 case 135:  case 142:
 #line 557 "compile.y"  #line 577 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_INTDIV) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_INTDIV) ;
     break;}      break;}
 case 136:  case 143:
 #line 558 "compile.y"  #line 578 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_SL) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_SL) ;
     break;}      break;}
 case 137:  case 144:
 #line 559 "compile.y"  #line 579 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_SR) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_SR) ;
     break;}      break;}
 case 138:  case 145:
 #line 560 "compile.y"  #line 580 "compile.y"
 { yyval=yyvsp[-2];      P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_AND) ;  { yyval=yyvsp[-2];      P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_AND) ;
     break;}      break;}
 case 139:  case 146:
 #line 561 "compile.y"  #line 581 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_OR) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_OR) ;
     break;}      break;}
 case 140:  case 147:
 #line 562 "compile.y"  #line 582 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_XOR) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_XOR) ;
     break;}      break;}
 case 141:  case 148:
 #line 563 "compile.y"  #line 583 "compile.y"
 { yyval=yyvsp[-2];  OA(*yyval, OP_NESTED_CODE, yyvsp[0]);  O(*yyval, OP_LOG_AND) ;  { yyval=yyvsp[-2];  OA(*yyval, OP_NESTED_CODE, yyvsp[0]);  O(*yyval, OP_LOG_AND) ;
     break;}      break;}
 case 142:  case 149:
 #line 564 "compile.y"  #line 584 "compile.y"
 { yyval=yyvsp[-2];  OA(*yyval, OP_NESTED_CODE, yyvsp[0]);  O(*yyval, OP_LOG_OR) ;  { yyval=yyvsp[-2];  OA(*yyval, OP_NESTED_CODE, yyvsp[0]);  O(*yyval, OP_LOG_OR) ;
     break;}      break;}
 case 143:  case 150:
 #line 565 "compile.y"  #line 585 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_LOG_XOR) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_LOG_XOR) ;
     break;}      break;}
 case 144:  case 151:
 #line 566 "compile.y"  #line 586 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_LT) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_LT) ;
     break;}      break;}
 case 145:  case 152:
 #line 567 "compile.y"  #line 587 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_GT) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_GT) ;
     break;}      break;}
 case 146:  case 153:
 #line 568 "compile.y"  #line 588 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_LE) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_LE) ;
     break;}      break;}
 case 147:  case 154:
 #line 569 "compile.y"  #line 589 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_GE) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_GE) ;
     break;}      break;}
 case 148:  case 155:
 #line 570 "compile.y"  #line 590 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_EQ) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_EQ) ;
     break;}      break;}
 case 149:  case 156:
 #line 571 "compile.y"  #line 591 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_NE) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_NE) ;
     break;}      break;}
 case 150:  case 157:
 #line 572 "compile.y"  #line 592 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_LT) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_LT) ;
     break;}      break;}
 case 151:  case 158:
 #line 573 "compile.y"  #line 593 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_GT) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_GT) ;
     break;}      break;}
 case 152:  case 159:
 #line 574 "compile.y"  #line 594 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_LE) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_LE) ;
     break;}      break;}
 case 153:  case 160:
 #line 575 "compile.y"  #line 595 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_GE) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_GE) ;
     break;}      break;}
 case 154:  case 161:
 #line 576 "compile.y"  #line 596 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_EQ) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_EQ) ;
     break;}      break;}
 case 155:  case 162:
 #line 577 "compile.y"  #line 597 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_NE) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_NE) ;
     break;}      break;}
 case 156:  case 163:
 #line 578 "compile.y"  #line 598 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_IS) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_IS) ;
     break;}      break;}
 case 157:  case 164:
 #line 581 "compile.y"  #line 601 "compile.y"
   {
           // optimized from OP_STRING->OP_VALUE for doubles
           maybe_change_string_literal_to_double_literal(*(yyval=yyvsp[0]));
   ;
       break;}
   case 165:
   #line 606 "compile.y"
 {  {
         yyval=N();          yyval=N();
         OA(*yyval, OP_STRING_POOL, yyvsp[0]); /* stack: empty write context */          OA(*yyval, OP_STRING_POOL, yyvsp[0]); /* stack: empty write context */
Line 1660  case 157: Line 1719  case 157:
         /* context=pop; stack: context.get_string() */          /* context=pop; stack: context.get_string() */
 ;  ;
     break;}      break;}
 case 158:  case 166:
 #line 590 "compile.y"  #line 615 "compile.y"
 {  {
         // optimized from OP_STRING+OP_WRITE_VALUE to OP_STRING__WRITE          // optimized from OP_STRING+OP_WRITE_VALUE to OP_STRING__WRITE
         change_string_literal_to_write_string_literal(*(yyval=yyvsp[0]))          change_string_literal_to_write_string_literal(*(yyval=yyvsp[0]))
 ;  ;
     break;}      break;}
 case 159:  case 167:
 #line 595 "compile.y"  #line 620 "compile.y"
 { yyval=VL(new VVoid(), 0, 0, 0) ;  { yyval=VL(new VVoid(), 0, 0, 0) ;
     break;}      break;}
 case 160:  case 168:
 #line 596 "compile.y"  #line 621 "compile.y"
 { yyval=N() ;  { yyval=N() ;
     break;}      break;}
 }  }
Line 1897  yyerrhandle: Line 1956  yyerrhandle:
     }      }
   return 1;    return 1;
 }  }
 #line 598 "compile.y"  #line 623 "compile.y"
   
 #endif  #endif
   
Line 1942  static int yylex(YYSTYPE *lvalp, void *a Line 2001  static int yylex(YYSTYPE *lvalp, void *a
                   
         const char *begin=pc.source;          const char *begin=pc.source;
         Pos begin_pos=pc.pos;          Pos begin_pos=pc.pos;
         uint last_line_end_col=0;  
         const char *end;          const char *end;
         int skip_analized=0;          int skip_analized=0;
         while(true) {          while(true) {
                 c=*(end=(pc.source++));                  c=*(end=(pc.source++));
 //              fprintf(stderr, "\nchar: %c %02X; nestage: %d, sp=%d", c, c, lexical_brackets_nestage, pc.sp);  //              fprintf(stderr, "\nchar: %c %02X; nestage: %d, sp=%d", c, c, lexical_brackets_nestage, pc.sp);
   
                 if(c=='\n') {                  if(c=='\n')
                         pc.pos.line++;                          pc.pos_next_line();
                         last_line_end_col=pc.pos.col;                  else
                         pc.pos.col=0;                          pc.pos_next_c(c);
                 } else  //              fprintf(stderr, "\nchar: %c file(%d:%d)", c, pc.pos.line, pc.pos.col);
                         pc.pos.col+=c=='\t'?TAB_SIZE:1;  
   
                 if(c=='@' && pc.pos.col==0+1) {                  if(pc.pos.col==0+1 && c=='@') {
                         if(pc.ls==LS_DEF_SPECIAL_BODY) {                          if(pc.ls==LS_DEF_SPECIAL_BODY) {
                                 // @SPECIAL                                  // @SPECIAL
                                 // ...                                  // ...
Line 1969  static int yylex(YYSTYPE *lvalp, void *a Line 2026  static int yylex(YYSTYPE *lvalp, void *a
                         } else // @ in first column inside some code [when could that be?]                          } else // @ in first column inside some code [when could that be?]
                                 result=BAD_METHOD_DECL_START;                                  result=BAD_METHOD_DECL_START;
                         goto break2;                          goto break2;
                 } else if(c=='^') {                  }
                   if(c=='^') {
                         if(pc.ls==LS_METHOD_AFTER) {                          if(pc.ls==LS_METHOD_AFTER) {
                                 // handle after-method situation                                  // handle after-method situation
                                 pop_LS(pc);                                  pop_LS(pc);
Line 2000  default: Line 2058  default:
                                         if(!pc.string_start)                                          if(!pc.string_start)
                                                 pc.string_start=begin_pos;                                                  pc.string_start=begin_pos;
                                         // append piece till ^                                          // append piece till ^
                                         pc.string.append_strdup(begin, end-begin);                                          pc.string.append_strdup_know_length(begin, end-begin);
                                 }                                  }
                                 // reset piece 'begin' position & line                                  // reset piece 'begin' position & line
                                 begin=pc.source; // ->punctuation                                  begin=pc.source; // ->punctuation
Line 2016  default: Line 2074  default:
                                         if(!pc.string_start)                                          if(!pc.string_start)
                                                 pc.string_start=begin_pos;                                                  pc.string_start=begin_pos;
                                         // append piece till ^                                          // append piece till ^
                                         pc.string.append_strdup(begin, end-begin);                                          pc.string.append_strdup_know_length(begin, end-begin);
                                 }                                  }
                                 // #HH ?                                  // #HH ?
                                 if(pc.source[0]=='#' && pc.source[1] && pc.source[2]) {                                  if(pc.source[0]=='#' && pc.source[1] && pc.source[2]) {
Line 2049  default: Line 2107  default:
                                 if(!pc.string_start)                                  if(!pc.string_start)
                                         pc.string_start=begin_pos;                                          pc.string_start=begin_pos;
                                 // append piece till #                                  // append piece till #
                                 pc.string.append_strdup(begin, end-begin);                                  pc.string.append_strdup_know_length(begin, end-begin);
                         }                          }
                         // fall into COMMENT lexical state [wait for \n]                          // fall into COMMENT lexical state [wait for \n]
                         push_LS(pc, LS_USER_COMMENT);                          push_LS(pc, LS_USER_COMMENT);
Line 2088  default: Line 2146  default:
                                         lexical_brackets_nestage++;                                          lexical_brackets_nestage++;
                                 break;                                  break;
                         }                          }
                           if(pc.explicit_result && c)
                                   switch(c) {
                                   case '\n': case ' ': case '\t':
                                           begin=pc.source;
                                           begin_pos=pc.pos;
                                           continue; // skip it
                                   default:
                                           result=BAD_NONWHITESPACE_CHARACTER_IN_EXPLICIT_RESULT_MODE;
                                           goto break2;
                                   }
                         break;                          break;
                                                   
                 // #COMMENT                  // #COMMENT
Line 2194  default: Line 2262  default:
                                         if(!pc.string_start)                                          if(!pc.string_start)
                                                 pc.string_start=begin_pos;                                                  pc.string_start=begin_pos;
                                         // append piece till #                                          // append piece till #
                                         pc.string.append_strdup(begin, end-begin);                                          pc.string.append_strdup_know_length(begin, end-begin);
                                 }                                  }
                                 // fall into COMMENT lexical state [wait for \n]                                  // fall into COMMENT lexical state [wait for \n]
                                 push_LS(pc, LS_EXPRESSION_COMMENT);                                  push_LS(pc, LS_EXPRESSION_COMMENT);
Line 2377  default: Line 2445  default:
                                 // expression integer division                                  // expression integer division
                                 case '\\':                                  case '\\':
                                         pop_LS(pc);                                          pop_LS(pc);
                                         ungetc(pc, last_line_end_col);                                          pc.ungetc();
                                         result=EON;                                          result=EON;
                                         goto break2;                                          goto break2;
                                 }                                  }
Line 2389  default: Line 2457  default:
                                 switch(c) {                                  switch(c) {
                                 case ':':                                   case ':': 
                                         pop_LS(pc);                                          pop_LS(pc);
                                         ungetc(pc, last_line_end_col);                                          pc.ungetc();
                                         result=EON;                                          result=EON;
                                         goto break2;                                          goto break2;
                                 }                                  }
Line 2409  default: Line 2477  default:
                         // before call                          // before call
                         case '^':                           case '^': 
                                 pop_LS(pc);                                  pop_LS(pc);
                                 ungetc(pc, last_line_end_col);                                  pc.ungetc();
                                 result=EON;                                  result=EON;
                                 goto break2;                                  goto break2;
                         case '[':                          case '[':
Line 2541  default: Line 2609  default:
                         case ':': // ':name' or 'class:name'                          case ':': // ':name' or 'class:name'
                         case '^': // ^abc^xxx wrong. bailing out                          case '^': // ^abc^xxx wrong. bailing out
                         case ']': case '}': case ')': // ^abc]}) wrong. bailing out                          case ']': case '}': case ')': // ^abc]}) wrong. bailing out
                           case ' ': // ^if ( wrong. bailing out
                                 RC;                                  RC;
                         }                          }
                         break;                          break;
Line 2587  default: Line 2656  default:
                                 lexical_brackets_nestage++;                                  lexical_brackets_nestage++;
                                 break;                                  break;
                         }                          }
                           if(pc.explicit_result && c)
                                   switch(c) {
                                   case '\n': case ' ': case '\t':
                                           begin=pc.source;
                                           begin_pos=pc.pos;
                                           continue; // skip it
                                   default:
                                           result=BAD_NONWHITESPACE_CHARACTER_IN_EXPLICIT_RESULT_MODE;
                                           goto break2;
                                   }
                         break;                          break;
   
                 case LS_METHOD_AFTER:                  case LS_METHOD_AFTER:
Line 2606  default: Line 2685  default:
                                 RC;                                  RC;
                         }                                                                    }                                          
                         pop_LS(pc);                          pop_LS(pc);
                         ungetc(pc, last_line_end_col);                          pc.ungetc();
                         result=EON;                          result=EON;
                         goto break2;                          goto break2;
                 }                  }
Line 2628  break2: Line 2707  break2:
                         if(!pc.string_start)                          if(!pc.string_start)
                                 pc.string_start=begin_pos;                                  pc.string_start=begin_pos;
                         // append it                          // append it
                         pc.string.append_strdup(begin, end-begin);                          pc.string.append_strdup_know_length(begin, end-begin);
                 }                  }
         }          }
         if(!pc.string.is_empty()) { // something accumulated?          if(!pc.string.is_empty()) { // something accumulated?
                 // create STRING value: array of OP_VALUE+vstring                  // create STRING value: array of OP_VALUE+origin+vstring
                 *lvalp=VL(                  *lvalp=VL(
                         new VString(*new String(pc.string, String::L_CLEAN)),                          new VString(*new String(pc.string, String::L_CLEAN)),
                         pc.file_no, pc.string_start.line, pc.string_start.col);                          pc.file_no, pc.string_start.line, pc.string_start.col);

Removed from v.1.81.2.13.2.26  
changed lines
  Added in v.1.103.8.1


E-mail: