Diff for /parser3/src/main/compile.tab.C between versions 1.81.2.13.2.22 and 1.97.2.1

version 1.81.2.13.2.22, 2003/04/03 06:16:04 version 1.97.2.1, 2004/04/06 11:58:15
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
   
 static int real_yyerror(Parse_control *pc, char *s);  static int real_yyerror(Parse_control* pc, char* s);
 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
Line 107  static int yylex(YYSTYPE *lvalp, void *p Line 105  static int yylex(YYSTYPE *lvalp, void *p
   
   
   
 #define YYFINAL         252  #define YYFINAL         253
 #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] : 140)
   
 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,   143,   147,   151,
    153,   155,   157,   159,   161,   164,   166,   167,   168,   175,     153,   155,   157,   159,   161,   163,   166,   168,   169,   170,
    177,   179,   182,   184,   186,   188,   192,   196,   200,   202,     177,   179,   181,   184,   186,   188,   190,   194,   198,   202,
    206,   208,   212,   214,   218,   220,   222,   224,   226,   228,     204,   208,   210,   214,   216,   220,   222,   224,   226,   228,
    230,   232,   234,   237,   239,   242,   245,   247,   249,   252,     230,   232,   234,   236,   239,   241,   244,   247,   249,   251,
    254,   256,   258,   260,   263,   266,   270,   272,   274,   277,     254,   256,   258,   260,   262,   265,   268,   272,   274,   276,
    280,   282,   284,   287,   290,   292,   294,   296,   298,   302,     279,   282,   284,   286,   289,   292,   294,   296,   298,   300,
    306,   310,   313,   316,   319,   322,   325,   328,   331,   334,     304,   308,   312,   315,   318,   321,   324,   327,   330,   333,
    338,   342,   346,   350,   354,   358,   362,   366,   370,   374,     336,   340,   344,   348,   352,   356,   360,   364,   368,   372,
    378,   382,   386,   390,   394,   398,   402,   406,   410,   414,     376,   380,   384,   388,   392,   396,   400,   404,   408,   412,
    418,   422,   426,   430,   434,   438,   442,   444,   446,   447     416,   420,   424,   428,   432,   436,   440,   444,   446,   448,
      449
 };  };
   
 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,   139,
      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,   139,     0,     4,     0,     0,    45,     4,    72,    71,
     46,    75,     0,   138,     0,    71,     0,    47,    72,    48,      75,    46,    70,    76,     0,   139,     0,    72,     0,    47,
      0,   138,     0,    73,     0,     4,     0,    73,    49,     4,      73,    48,     0,   139,     0,    74,     0,     4,     0,    74,
      0,   138,     0,     4,     0,   138,     0,    76,     0,    77,      49,     4,     0,   139,     0,     4,     0,   139,     0,    77,
      0,    76,    77,     0,   136,     0,    78,     0,    79,     0,       0,    78,     0,    77,    78,     0,   137,     0,    79,     0,
     87,     0,   100,     0,    80,     0,    50,    81,     0,    83,      80,     0,    88,     0,   101,     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,   131,    87,     0,   123,
    122,     0,    50,    88,    92,     0,    89,     0,    90,     0,       0,   120,   123,     0,    50,    89,    93,     0,    90,     0,
     91,     0,   118,     0,    53,   118,     0,   130,   118,     0,      91,     0,    92,     0,   119,     0,    53,   119,     0,   131,
     93,     0,    94,     0,    95,     0,    47,    96,    48,     0,     119,     0,    94,     0,    95,     0,    96,     0,    47,    97,
     54,   133,    55,     0,    51,    75,    52,     0,   137,     0,      48,     0,    54,   134,    55,     0,    51,    76,    52,     0,
      4,     0,    97,     0,    98,     0,    99,     0,    78,     0,     138,     0,     4,     0,    98,     0,    99,     0,   100,     0,
     77,    76,     0,   101,     0,     0,     0,    56,   102,   104,      79,     0,    78,    77,     0,   102,     0,     0,     0,    56,
    103,   105,     3,     0,    83,     0,   106,     0,   105,   106,     103,   105,   104,   106,     3,     0,    84,     0,   107,     0,
      0,   107,     0,   108,     0,   109,     0,    47,   110,    48,     106,   107,     0,   108,     0,   109,     0,   110,     0,    47,
      0,    54,   111,    55,     0,    51,   112,    52,     0,   113,     111,    48,     0,    54,   112,    55,     0,    51,   113,    52,
      0,   110,    49,   113,     0,   114,     0,   111,    49,   114,       0,   114,     0,   111,    49,   114,     0,   115,     0,   112,
      0,   115,     0,   112,    49,   115,     0,   116,     0,   117,      49,   115,     0,   116,     0,   113,    49,   116,     0,   117,
      0,    75,     0,   137,     0,     4,     0,    97,     0,   133,       0,   118,     0,    76,     0,   138,     0,     4,     0,    98,
      0,   123,     0,   119,   123,     0,   120,     0,   119,   120,       0,   134,     0,   124,     0,   120,   124,     0,   121,     0,
      0,   121,    53,     0,   123,     0,   123,     0,     4,     5,     120,   121,     0,   122,    53,     0,   124,     0,   124,     0,
      0,     4,     0,   124,     0,   125,     0,   126,     0,    50,       4,     5,     0,     4,     0,   125,     0,   126,     0,   127,
    127,     0,     4,   128,     0,    47,    76,    48,     0,     4,       0,    50,   128,     0,     4,   129,     0,    47,    77,    48,
      0,   129,     0,   128,   129,     0,    50,   127,     0,   131,       0,     4,     0,   130,     0,   129,   130,     0,    50,   128,
      0,   132,     0,     4,    57,     0,   131,    57,     0,   134,       0,   132,     0,   133,     0,     4,    57,     0,   132,    57,
      0,     4,     0,    80,     0,   101,     0,    58,   135,    58,       0,   135,     0,     4,     0,    81,     0,   102,     0,    58,
      0,    59,   135,    59,     0,    54,   134,    55,     0,    37,     136,    58,     0,    59,   136,    59,     0,    54,   135,    55,
    134,     0,    36,   134,     0,    43,   134,     0,    44,   134,       0,    37,   135,     0,    36,   135,     0,    43,   135,     0,
      0,    27,   134,     0,    28,   134,     0,    29,   134,     0,      44,   135,     0,    27,   135,     0,    28,   135,     0,    29,
     30,   134,     0,   134,    37,   134,     0,   134,    36,   134,     135,     0,    30,   135,     0,   135,    37,   135,     0,   135,
      0,   134,    38,   134,     0,   134,    39,   134,     0,   134,      36,   135,     0,   135,    38,   135,     0,   135,    39,   135,
     41,   134,     0,   134,    40,   134,     0,   134,    19,   134,       0,   135,    41,   135,     0,   135,    40,   135,     0,   135,
      0,   134,    20,   134,     0,   134,    35,   134,     0,   134,      19,   135,     0,   135,    20,   135,     0,   135,    35,   135,
     34,   134,     0,   134,    14,   134,     0,   134,    11,   134,       0,   135,    34,   135,     0,   135,    14,   135,     0,   135,
      0,   134,    12,   134,     0,   134,    13,   134,     0,   134,      11,   135,     0,   135,    12,   135,     0,   135,    13,   135,
     32,   134,     0,   134,    33,   134,     0,   134,    15,   134,       0,   135,    32,   135,     0,   135,    33,   135,     0,   135,
      0,   134,    16,   134,     0,   134,    17,   134,     0,   134,      15,   135,     0,   135,    16,   135,     0,   135,    17,   135,
     18,   134,     0,   134,    21,   134,     0,   134,    22,   134,       0,   135,    18,   135,     0,   135,    21,   135,     0,   135,
      0,   134,    23,   134,     0,   134,    24,   134,     0,   134,      22,   135,     0,   135,    23,   135,     0,   135,    24,   135,
     25,   134,     0,   134,    26,   134,     0,   134,    31,   134,       0,   135,    25,   135,     0,   135,    26,   135,     0,   135,
      0,    75,     0,     4,     0,     0,     0      31,   135,     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,   352,   360,   366,
    360,   362,   368,   369,   369,   373,   379,   382,   385,   398,     368,   369,   371,   377,   378,   378,   382,   393,   396,   399,
    400,   400,   401,   403,   404,   406,   407,   408,   409,   411,     412,   414,   414,   415,   417,   418,   420,   421,   422,   423,
    413,   415,   417,   419,   421,   425,   429,   433,   435,   436,     425,   427,   429,   431,   433,   435,   439,   443,   447,   449,
    438,   447,   447,   449,   449,   450,   451,   459,   464,   466,     450,   452,   461,   461,   463,   463,   464,   465,   473,   478,
    468,   469,   470,   472,   476,   485,   491,   496,   496,   497,     480,   482,   483,   484,   486,   490,   499,   505,   510,   510,
    502,   504,   506,   518,   530,   535,   537,   538,   539,   540,     511,   516,   518,   520,   532,   544,   549,   551,   552,   553,
    541,   543,   544,   545,   546,   547,   548,   549,   550,   552,     554,   555,   557,   558,   559,   560,   561,   562,   563,   564,
    553,   554,   555,   556,   557,   558,   559,   560,   561,   562,     566,   567,   568,   569,   570,   571,   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,   595,   604,   609,
      610
 };  };
 #endif  #endif
   
Line 241  static const short yyrline[] = { 0, Line 241  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","construct_round","construct_curly","any_constructor_code_value",
 "constructor_code_value","constructor_code","codes__excluding_sole_str_literal",  "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","@2","@3","call_name","store_params","store_param","store_square_param",
 "store_round_param","store_curly_param","store_code_param_parts","store_expr_param_parts",  "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",
Line 268  static const char * const yytname[] = { Line 268  static const char * const yytname[] = {
   
 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,    94,    95,    96,    97,
     96,    97,    98,    99,    99,   100,   102,   103,   101,   104,      97,    97,    98,    99,   100,   100,   101,   103,   104,   102,
    105,   105,   106,   106,   106,   107,   108,   109,   110,   110,     105,   106,   106,   107,   107,   107,   108,   109,   110,   111,
    111,   111,   112,   112,   113,   114,   115,   116,   116,   116,     111,   112,   112,   113,   113,   114,   115,   116,   117,   117,
    117,   118,   118,   119,   119,   120,   121,   122,   122,   123,     117,   118,   119,   119,   120,   120,   121,   122,   123,   123,
    123,   123,   123,   124,   125,   126,   127,   128,   128,   129,     124,   124,   124,   124,   125,   126,   127,   128,   129,   129,
    130,   130,   131,   132,   133,   134,   134,   134,   134,   134,     130,   131,   131,   132,   133,   134,   135,   135,   135,   135,
    134,   134,   134,   134,   134,   134,   134,   134,   134,   134,     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
    134,   134,   134,   134,   134,   134,   134,   134,   134,   134,     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
    134,   134,   134,   134,   134,   134,   134,   134,   134,   134,     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
    134,   134,   134,   134,   134,   134,   135,   136,   137,   138     135,   135,   135,   135,   135,   135,   135,   136,   137,   138,
      139
 };  };
   
 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,     3,     3,     3,     1,
      1,     1,     1,     1,     2,     1,     0,     0,     6,     1,       1,     1,     1,     1,     1,     2,     1,     0,     0,     6,
      1,     2,     1,     1,     1,     3,     3,     3,     1,     3,       1,     1,     2,     1,     1,     1,     3,     3,     3,     1,
      1,     3,     1,     3,     1,     1,     1,     1,     1,     1,       3,     1,     3,     1,     3,     1,     1,     1,     1,     1,
      1,     1,     2,     1,     2,     2,     1,     1,     2,     1,       1,     1,     1,     2,     1,     2,     2,     1,     1,     2,
      1,     1,     1,     2,     2,     3,     1,     1,     2,     2,       1,     1,     1,     1,     2,     2,     3,     1,     1,     2,
      1,     1,     2,     2,     1,     1,     1,     1,     3,     3,       2,     1,     1,     2,     2,     1,     1,     1,     1,     3,
      3,     2,     2,     2,     2,     2,     2,     2,     2,     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,     1,     1,     0,     0       3,     3,     3,     3,     3,     3,     3,     1,     1,     0,
        0
 };  };
   
 static const short yydefact[] = {   160,  static const short yydefact[] = {   161,
    158,     0,     0,    67,     2,     1,     3,     6,     7,     5,     159,     0,     0,    68,     2,     1,     3,     6,     7,     5,
     27,    28,    31,    32,    35,    33,    34,    66,    30,    26,      28,    29,    32,    33,    36,    34,    35,    67,    31,    27,
      0,   100,     0,     0,     0,     0,    36,    38,     0,    40,       0,   101,     0,     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,    95,     0,
     44,    92,   101,   102,   103,     0,   111,   112,     0,     4,      45,    93,   102,   103,   104,     0,   112,   113,     0,     4,
     29,   160,   160,   160,    99,     0,   113,   105,   108,     0,      30,   161,   161,   161,   100,     0,   114,   106,   109,     0,
    107,   104,     0,     0,    98,     0,   100,    51,     0,    92,     108,   105,     0,     0,    99,     0,   101,    52,     0,    93,
     37,   159,   160,     0,    46,    53,    54,    55,   100,    95,      38,   160,   161,     0,    47,    54,    55,    56,   101,    96,
     45,    93,    96,    43,    52,   114,    70,    68,    15,     8,      46,    94,    97,    44,    53,   115,    71,    69,    15,     8,
     10,    11,     0,     9,    22,     0,    21,    20,   160,    18,      10,    11,     0,     9,    23,     0,    22,    21,   161,    19,
     17,   110,   109,   106,    39,    93,   158,     0,    31,     0,      18,   111,   110,   107,    40,    94,   159,     0,    32,     0,
     61,    62,    63,    59,     0,   116,     0,     0,     0,     0,      62,    63,    64,    60,     0,   117,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,   160,   160,   117,   118,       0,     0,     0,     0,     0,     0,   161,   161,   118,   119,
      0,   115,     0,    12,    14,    13,    19,     0,    25,     0,       0,   116,     0,    12,    14,    13,    20,     0,    26,     0,
     24,    65,    56,    58,   126,   127,   128,   129,   123,   122,      25,    66,    57,    59,   127,   128,   129,   130,   124,   123,
    124,   125,     0,   157,     0,     0,    57,     0,     0,     0,     125,   126,     0,   158,     0,     0,    58,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,   159,   160,     0,     0,    71,    73,       0,     0,     0,     0,   160,   161,     0,     0,    72,    74,
     74,    75,    23,   160,   121,   119,   120,   141,   142,   143,      75,    76,    24,    16,   122,   120,   121,   142,   143,   144,
    140,   146,   147,   148,   149,   136,   137,   150,   151,   152,     141,   147,   148,   149,   150,   137,   138,   151,   152,   153,
    153,   154,   155,   156,   144,   145,   139,   138,   131,   130,     154,   155,   156,   157,   145,   146,   140,   139,   132,   131,
    132,   133,   135,   134,   158,    90,     0,    79,    85,    88,     133,   134,   136,   135,   159,    91,     0,    80,    86,    89,
     87,     0,    83,     0,    81,    86,    91,    69,    72,    16,      88,     0,    84,     0,    82,    87,    92,    70,    73,   161,
     76,   159,   160,    78,     0,    77,    80,    84,    82,     0,      77,   160,   161,    79,     0,    78,    17,    81,    85,    83,
      0,     0       0,     0,     0
 };  };
   
 static const short yydefgoto[] = {   250,  static const short yydefgoto[] = {   251,
      5,     6,     7,     8,    90,    91,    92,    93,     9,    99,       5,     6,     7,     8,    90,    91,    92,    93,     9,   240,
     54,    96,    97,   140,   154,    11,    12,    13,    14,   129,      99,    54,    96,    97,   140,   154,    11,    12,    13,    14,
     27,    28,    29,    30,    31,    32,    16,    33,    34,    35,     129,    27,    28,    29,    30,    31,    32,    16,    33,    34,
     36,    75,    76,    77,    78,   110,   226,   112,   113,    17,      35,    36,    75,    76,    77,    78,   110,   226,   112,   113,
    130,    49,   133,    88,   188,   189,   190,   191,   192,   227,      17,   130,    49,   133,    88,   188,   189,   190,   191,   192,
    234,   232,   228,   235,   233,   229,   236,    37,    64,    39,     227,   234,   232,   228,   235,   233,   229,   236,    37,    64,
     40,    41,    65,    43,    44,    45,    62,    58,    59,    66,      39,    40,    41,    65,    43,    44,    45,    62,    58,    59,
     47,    48,   237,   132,   155,    19,   230,    20      66,    47,    48,   237,   132,   155,    19,   230,    20
 };  };
   
 static const short yypact[] = {    13,  static const short yypact[] = {     9,
 -32768,    24,    98,-32768,    36,-32768,-32768,-32768,-32768,-32768,  -32768,    16,    43,-32768,   -35,-32768,-32768,-32768,-32768,-32768,
     14,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,      24,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
    -26,    39,    14,    44,    45,   100,-32768,-32768,    47,-32768,      64,    32,    24,    80,     3,    79,-32768,-32768,    83,-32768,
 -32768,-32768,    52,-32768,-32768,-32768,-32768,   118,-32768,    59,  -32768,-32768,   -33,-32768,-32768,-32768,-32768,    91,-32768,    54,
 -32768,     4,-32768,-32768,-32768,   118,    -3,-32768,    45,-32768,  -32768,    14,-32768,-32768,-32768,    91,    56,-32768,     3,-32768,
 -32768,   101,   113,    71,-32768,    44,-32768,    70,-32768,    32,  -32768,   119,   121,    92,-32768,    80,-32768,    90,-32768,    31,
 -32768,-32768,    73,   118,    83,   118,    70,-32768,   100,    83,  -32768,-32768,    78,    91,    96,    91,    90,-32768,    79,    96,
 -32768,    27,    14,    57,-32768,-32768,-32768,-32768,     1,-32768,  -32768,    41,    24,    12,-32768,-32768,-32768,-32768,    19,-32768,
 -32768,     4,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -32768,    14,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
     20,-32768,    78,    91,-32768,    90,    94,-32768,   135,-32768,      15,-32768,    97,   104,-32768,   113,   115,-32768,   141,-32768,
 -32768,-32768,-32768,-32768,-32768,    83,    92,    14,   -22,   106,  -32768,-32768,-32768,-32768,-32768,    96,   117,    24,    86,   118,
 -32768,-32768,-32768,-32768,   115,-32768,    57,    57,    57,    57,  -32768,-32768,-32768,-32768,   116,-32768,    12,    12,    12,    12,
     57,    57,    57,    57,   105,    57,    14,    14,-32768,-32768,      12,    12,    12,    12,    53,    12,    24,    24,-32768,-32768,
    114,   281,    72,-32768,-32768,-32768,-32768,   142,-32768,   107,     114,   283,   -25,-32768,-32768,-32768,-32768,   166,-32768,   126,
 -32768,    14,-32768,-32768,   440,   440,   440,   440,-32768,-32768,  -32768,    24,-32768,-32768,   442,   442,   442,   442,-32768,-32768,
 -32768,-32768,   236,-32768,   112,   120,-32768,    57,    57,    57,  -32768,-32768,   238,-32768,   129,   167,-32768,    12,    12,    12,
     57,    57,    57,    57,    57,    57,    57,    57,    57,    57,      12,    12,    12,    12,    12,    12,    12,    12,    12,    12,
     57,    57,    57,    57,    57,    57,    57,    57,    57,    57,      12,    12,    12,    12,    12,    12,    12,    12,    12,    12,
     57,    57,    57,    57,    41,    14,    57,     5,-32768,-32768,      12,    12,    12,    12,    42,    24,    12,    55,-32768,-32768,
 -32768,-32768,-32768,    14,-32768,-32768,-32768,   371,   343,   312,  -32768,-32768,-32768,-32768,-32768,-32768,-32768,   373,   345,   314,
    244,   399,   399,   412,   412,   136,   136,   399,   399,   399,     143,   401,   401,   414,   414,   183,   183,   401,   401,   401,
    399,   412,   412,   440,   399,   399,   447,   453,    93,    93,     401,   414,   414,   442,   401,   401,   246,   427,    77,    77,
 -32768,-32768,-32768,-32768,   -11,-32768,    19,-32768,-32768,-32768,  -32768,-32768,-32768,-32768,    88,-32768,    99,-32768,-32768,-32768,
 -32768,   -10,-32768,   -33,-32768,-32768,-32768,-32768,-32768,-32768,  -32768,   -16,-32768,   -24,-32768,-32768,-32768,-32768,-32768,    24,
 -32768,    41,    14,-32768,    57,-32768,-32768,-32768,-32768,   180,  -32768,    42,    24,-32768,    12,-32768,-32768,-32768,-32768,-32768,
    181,-32768     173,   174,-32768
 };  };
   
 static const short yypgoto[] = {-32768,  static const short yypgoto[] = {-32768,
 -32768,-32768,   177,-32768,-32768,-32768,    99,-32768,-32768,-32768,  -32768,-32768,   170,-32768,-32768,-32768,   134,-32768,-32768,-32768,
    129,-32768,-32768,-32768,     3,   -18,    -7,   -71,-32768,     0,  -32768,   175,-32768,-32768,-32768,     5,   -20,    -9,   -71,-32768,
 -32768,-32768,    -6,-32768,-32768,   -37,-32768,-32768,-32768,-32768,       0,-32768,-32768,   -19,-32768,-32768,    39,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,   119,-32768,-32768,-32768,  -32768,-32768,-32768,-32768,-32768,-32768,-32768,   155,-32768,-32768,
      2,-32768,-32768,-32768,-32768,    -4,-32768,-32768,-32768,-32768,  -32768,     4,-32768,-32768,-32768,-32768,    40,-32768,-32768,-32768,
 -32768,-32768,   -50,   -52,   -48,-32768,-32768,   -16,    95,   -23,  -32768,-32768,-32768,   -54,   -15,   -12,-32768,-32768,    73,    98,
 -32768,   -24,     9,-32768,-32768,-32768,   169,-32768,   168,   224,     -26,-32768,   -30,     6,-32768,-32768,-32768,   176,-32768,   177,
 -32768,-32768,   154,    40,   102,-32768,   157,   -20     231,-32768,-32768,   162,    34,   109,-32768,   169,    68
 };  };
   
   
 #define YYLAST          494  #define YYLAST          483
   
   
 static const short yytable[] = {    15,  static const short yytable[] = {    15,
    109,    18,    10,    51,    60,    55,   -98,   238,    84,    68,     109,    51,    60,    18,    10,    63,    22,    81,    42,     2,
     15,    42,    18,    81,    80,   245,     1,     1,    63,    52,      15,    80,     1,    72,    18,   116,   -99,    73,    89,    21,
     53,   246,    15,    89,    18,   -64,   -64,    21,    84,    85,      74,   185,    15,    55,   245,   186,    18,     1,   187,    87,
    107,    94,    98,   101,    70,     1,   -89,   -89,   243,    81,     246,    70,   243,    81,     1,   244,    55,    80,   117,   118,
     80,   244,    87,    55,   225,    80,    82,    61,    22,    71,     119,   120,    80,    82,   107,   225,    22,   121,   122,    23,
     56,   185,    51,    86,    42,   186,   -97,     2,   187,    15,      51,    42,    24,     2,   123,   124,    22,   238,     3,    15,
    116,    18,     3,     3,   108,  -160,   241,   242,     4,     4,    -161,   125,   108,    18,     4,   126,   -98,     4,    56,   127,
    135,    15,    15,    18,    18,   115,     3,   106,   141,   104,     128,    15,    15,     3,   106,    18,    18,   115,   104,     4,
      2,     3,     4,   117,   118,   119,   120,     4,    56,   142,       3,    56,    67,    61,    84,    71,     4,   142,    57,    23,
      3,    23,   121,   122,    24,    57,     4,    38,    72,   123,       3,     3,    24,    25,    79,    26,     4,     4,    68,    23,
    124,    22,    73,    67,    89,    74,   125,    15,    22,    18,      38,   185,    24,    25,    84,   186,    83,    15,   187,    52,
    126,    83,     4,   109,   127,   128,    95,    53,   185,    56,      53,    18,    86,   109,   181,   182,   183,   184,    85,    94,
     69,    79,   186,   136,   105,   187,    15,    15,    18,    18,      98,   101,    89,    69,    95,    23,    15,    15,    24,   105,
    181,   182,   183,   184,    51,   -97,   -14,   137,   139,   -60,      18,    18,    51,   -65,   -65,   -90,   -90,    23,    53,    56,
     38,    15,   138,    18,    23,   193,    23,    24,    25,    24,      24,    15,   136,    38,   139,    18,   241,   242,   -98,   -14,
     26,    23,   194,   143,    24,    25,   145,   146,   147,   148,     145,   146,   147,   148,   149,   150,   151,   152,   135,   153,
    149,   150,   151,   152,    23,   153,   144,    24,   157,   196,     137,   166,   167,   138,   -61,   143,   141,   144,   157,   193,
    109,   179,   180,   181,   182,   183,   184,   108,   197,   251,     109,   194,   252,   253,    50,   108,   177,   178,   179,   180,
    252,    50,   100,   239,    15,    15,    18,    18,   231,   134,     181,   182,   183,   184,    15,    15,   196,   248,    18,    18,
    111,   247,   249,    15,   248,    18,   240,   198,   199,   200,     231,   198,   199,   200,   201,   202,   203,   204,   205,   206,
    201,   202,   203,   204,   205,   206,   207,   208,   209,   210,     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
    211,   212,   213,   214,   215,   216,   217,   218,   219,   220,     217,   218,   219,   220,   221,   222,   223,   224,   179,   180,
    221,   222,   223,   224,   102,   103,    46,   131,   114,   156,     181,   182,   183,   184,   134,   197,   111,   239,   100,   250,
      0,     0,     0,     0,   108,     0,     0,     0,     0,     0,     249,   102,   108,    46,   103,   131,   156,     0,     0,    15,
      0,    15,    15,    18,    18,   231,   158,   159,   160,   161,     114,    15,    15,    18,   247,    18,    18,   231,   158,   159,
    162,   163,   164,   165,   166,   167,   168,   169,   170,   171,     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
    172,   173,   166,   167,     0,     0,   174,   175,   176,   177,     170,   171,   172,   173,   166,   167,     0,     0,   174,   175,
    178,   179,   180,   181,   182,   183,   184,   177,   178,   179,     176,   177,   178,   179,   180,   181,   182,   183,   184,     0,
    180,   181,   182,   183,   184,     0,     0,     0,     0,     0,     178,   179,   180,   181,   182,   183,   184,     0,     0,     0,
    195,   158,   159,   160,   161,   162,   163,   164,   165,   166,       0,     0,   195,   158,   159,   160,   161,   162,   163,   164,
    167,   168,   169,   170,   171,   172,   173,     0,     0,     0,     165,   166,   167,   168,   169,   170,   171,   172,   173,     0,
      0,   174,   175,   176,   177,   178,   179,   180,   181,   182,       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
    183,   184,   158,   159,     0,   161,   162,   163,   164,   165,     181,   182,   183,   184,   158,   159,     0,   161,   162,   163,
    166,   167,   168,   169,   170,   171,   172,   173,     0,     0,     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
      0,     0,   174,   175,   176,   177,   178,   179,   180,   181,       0,     0,     0,     0,   174,   175,   176,   177,   178,   179,
    182,   183,   184,   158,     0,     0,   161,   162,   163,   164,     180,   181,   182,   183,   184,   158,     0,     0,   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,   162,   163,   164,
    165,   166,   167,   168,   169,   170,   171,   172,   173,     0,     165,   166,   167,   168,   169,   170,   171,   172,   173,     0,
      0,     0,     0,   174,   175,   176,   177,   178,   179,   180,       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
    181,   182,   183,   184,   161,   162,   163,   164,   165,   166,     181,   182,   183,   184,   161,     0,     0,   164,   165,   166,
    167,   168,   169,   170,   171,   172,   173,     0,     0,     0,     167,     0,     0,     0,     0,   172,   173,   161,     0,     0,
      0,   174,   175,   176,   177,   178,   179,   180,   181,   182,       0,   174,   166,   167,   177,   178,   179,   180,   181,   182,
    183,   184,   161,     0,     0,   164,   165,   166,   167,     0,     183,   184,     0,     0,   174,   166,   167,   177,   178,   179,
      0,     0,     0,   172,   173,   161,     0,     0,     0,   174,     180,   181,   182,   183,   184,   161,     0,     0,     0,     0,
    166,   167,   177,   178,   179,   180,   181,   182,   183,   184,     166,   167,   179,   180,   181,   182,   183,   184,     0,     0,
      0,     0,   174,     0,     0,   177,   178,   179,   180,   181,       0,     0,     0,     0,     0,   177,   178,   179,   180,   181,
    182,   183,   184,   161,     0,     0,     0,     0,   166,   167,     182,   183,   184
      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,      72,    11,    23,     0,     0,    25,     4,    38,     3,    45,
     11,     3,    11,    38,    38,    49,     4,     4,    25,    46,      11,    38,     4,    47,    11,     4,     3,    51,     4,     4,
     47,    55,    23,     4,    23,    48,    49,     4,    66,    46,      54,    47,    23,     5,    49,    51,    23,     4,    54,    49,
      4,    52,    53,    54,    26,     4,    48,    49,    49,    64,      55,    26,    49,    64,     4,    52,     5,    64,    27,    28,
     64,    52,    49,     5,     4,    69,    38,     4,     4,     3,      29,    30,    69,    38,     4,     4,     4,    36,    37,    47,
     50,    47,    60,    57,    46,    51,    53,    45,    54,    60,      60,    46,    50,    45,    43,    44,     4,     3,    50,    60,
      4,    60,    50,    50,    72,    46,    48,    49,    56,    56,      46,    50,    72,    60,    56,    54,    53,    56,    50,    58,
     91,    72,    73,    72,    73,    73,    50,    69,    99,    48,      59,    72,    73,    50,    69,    72,    73,    73,    48,    56,
     45,    50,    56,    27,    28,    29,    30,    56,    50,   108,      50,    50,     4,     4,    46,     3,    56,   108,    57,    47,
     50,    47,    36,    37,    50,    57,    56,     3,    47,    43,      50,    50,    50,    51,     4,    53,    56,    56,    26,    47,
     44,     4,    51,     4,     4,    54,    50,   108,     4,   108,       3,    47,    50,    51,    66,    51,    53,   108,    54,    46,
     54,    53,    56,   185,    58,    59,     4,    47,    47,    50,      47,   108,    57,   185,    38,    39,    40,    41,    46,    52,
     26,     4,    51,    46,    52,    54,   127,   128,   127,   128,      53,    54,     4,    26,     4,    47,   127,   128,    50,    52,
     38,    39,    40,    41,   142,    53,    46,    48,     4,    48,     127,   128,   142,    48,    49,    48,    49,    47,    47,    50,
     46,   142,    49,   142,    47,     4,    47,    50,    51,    50,      50,   142,    46,    46,     4,   142,    48,    49,    53,    46,
     53,    47,    46,    48,    50,    51,   117,   118,   119,   120,     117,   118,   119,   120,   121,   122,   123,   124,    91,   126,
    121,   122,   123,   124,    47,   126,    52,    50,    55,    58,      48,    19,    20,    49,    48,    48,    99,    52,    55,     4,
    242,    36,    37,    38,    39,    40,    41,   185,    59,     0,     242,    46,     0,     0,     5,   185,    34,    35,    36,    37,
      0,     5,    54,   188,   185,   186,   185,   186,   186,    91,      38,    39,    40,    41,   185,   186,    58,   242,   185,   186,
     72,   242,   245,   194,   243,   194,   194,   158,   159,   160,     186,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
    171,   172,   173,   174,   175,   176,   177,   178,   179,   180,     177,   178,   179,   180,   181,   182,   183,   184,    36,    37,
    181,   182,   183,   184,    56,    58,     3,    74,    72,   128,      38,    39,    40,    41,    91,    59,    72,   188,    54,   245,
     -1,    -1,    -1,    -1,   242,    -1,    -1,    -1,    -1,    -1,     243,    56,   242,     3,    58,    74,   128,    -1,    -1,   240,
     -1,   242,   243,   242,   243,   243,    11,    12,    13,    14,      72,   242,   243,   240,   240,   242,   243,   243,    11,    12,
     15,    16,    17,    18,    19,    20,    21,    22,    23,    24,      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     25,    26,    19,    20,    -1,    -1,    31,    32,    33,    34,      23,    24,    25,    26,    19,    20,    -1,    -1,    31,    32,
     35,    36,    37,    38,    39,    40,    41,    34,    35,    36,      33,    34,    35,    36,    37,    38,    39,    40,    41,    -1,
     37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,      35,    36,    37,    38,    39,    40,    41,    -1,    -1,    -1,
     55,    11,    12,    13,    14,    15,    16,    17,    18,    19,      -1,    -1,    55,    11,    12,    13,    14,    15,    16,    17,
     20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,  
     -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,  
     40,    41,    11,    12,    -1,    14,    15,    16,    17,    18,  
     19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,  
     -1,    -1,    31,    32,    33,    34,    35,    36,    37,    38,  
     39,    40,    41,    11,    -1,    -1,    14,    15,    16,    17,  
     18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     -1,    -1,    -1,    31,    32,    33,    34,    35,    36,    37,      -1,    -1,    -1,    31,    32,    33,    34,    35,    36,    37,
     38,    39,    40,    41,    14,    15,    16,    17,    18,    19,      38,    39,    40,    41,    11,    12,    -1,    14,    15,    16,
     20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,      -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,    36,
     40,    41,    14,    -1,    -1,    17,    18,    19,    20,    -1,      37,    38,    39,    40,    41,    11,    -1,    -1,    14,    15,
     -1,    -1,    -1,    25,    26,    14,    -1,    -1,    -1,    31,      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     19,    20,    34,    35,    36,    37,    38,    39,    40,    41,      26,    -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,
     -1,    -1,    31,    -1,    -1,    34,    35,    36,    37,    38,      36,    37,    38,    39,    40,    41,    14,    15,    16,    17,
     39,    40,    41,    14,    -1,    -1,    -1,    -1,    19,    20,      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     -1,    -1,    -1,    -1,    -1,    19,    20,    -1,    -1,    -1,      -1,    -1,    -1,    31,    32,    33,    34,    35,    36,    37,
     -1,    19,    20,    34,    35,    36,    37,    38,    39,    40,      38,    39,    40,    41,    14,    -1,    -1,    17,    18,    19,
     41,    35,    36,    37,    38,    39,    40,    41,    36,    37,      20,    -1,    -1,    -1,    -1,    25,    26,    14,    -1,    -1,
     38,    39,    40,    41      -1,    31,    19,    20,    34,    35,    36,    37,    38,    39,
       40,    41,    -1,    -1,    31,    19,    20,    34,    35,    36,
       37,    38,    39,    40,    41,    14,    -1,    -1,    -1,    -1,
       19,    20,    36,    37,    38,    39,    40,    41,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    34,    35,    36,    37,    38,
       39,    40,    41
 };  };
 #define YYPURE 1  #define YYPURE 1
   
Line 772  yyparse(YYPARSE_PARAM_ARG) Line 772  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 1039  yyreduce:
   switch (yyn) {    switch (yyn) {
   
 case 1:  case 1:
 #line 123 "compile.y"  #line 121 "compile.y"
 {  {
         Method& method=*new Method(/*main_method_name, */Method::CT_ANY,          Method& method=*new Method(Method::CT_ANY,
                 0, 0, /*min, max numbered_params_count*/                  0, 0, /*min, max numbered_params_count*/
                 0/*param_names*/, 0/*local_names*/,                   0/*param_names*/, 0/*local_names*/, 
                 yyvsp[0]/*parser_code*/, 0/*native_code*/);                  yyvsp[0]/*parser_code*/, 0/*native_code*/);
         PC.cclass->add_method(main_method_name, method);          PC.cclass->add_method(PC.alias_method(main_method_name), method);
 ;  ;
     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 1066  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 1076  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 1089  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 1123  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(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 1194  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 1262  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"
 {  {
         // stack: context, name          // stack: context, name
         yyval=yyvsp[-1]; // stack: context, name, value          yyval=yyvsp[-1]; // 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 58:
 #line 343 "compile.y"  #line 352 "compile.y"
 {   { 
         yyval=N();           yyval=N(); 
         O(*yyval, OP_PREPARE_TO_EXPRESSION);          O(*yyval, OP_PREPARE_TO_EXPRESSION);
Line 1276  case 57: Line 1292  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 59:
 #line 351 "compile.y"  #line 360 "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 63:
 #line 362 "compile.y"  #line 371 "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 1309  case 62:
         /* context=pop; stack: context.value() */          /* context=pop; stack: context.value() */
 ;  ;
     break;}      break;}
 case 65:  case 66:
 #line 369 "compile.y"  #line 378 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 66:  case 67:
 #line 373 "compile.y"  #line 382 "compile.y"
 {  {
         yyval=yyvsp[0]; /* stack: value */          yyval=yyvsp[0]; /* stack: value */
         changetail_or_append(*yyval,           if(PC.explicit_result)
                 OP_CALL, true,  /*->*/ OP_CALL__WRITE,                  changetail_or_append(*yyval, 
                 /*or */OP_WRITE_VALUE); /* value=pop; wcontext.write(value) */                          OP_CALL, true,  /*->*/ OP_CALL__WRITE__EXPLICIT_RESULT,
                           /*or */OP_WRITE_VALUE/*__EXPLICIT_RESULT*/); /* value=pop; check_empty(value) */
           else
                   changetail_or_append(*yyval, 
                           OP_CALL, true,  /*->*/ OP_CALL__WRITE,
                           /*or */OP_WRITE_VALUE); /* value=pop; wcontext.write(value) */
 ;  ;
     break;}      break;}
 case 67:  case 68:
 #line 379 "compile.y"  #line 393 "compile.y"
 {   { 
                                         PC.in_call_value=true;                                           PC.in_call_value=true; 
                         ;                          ;
     break;}      break;}
 case 68:  case 69:
 #line 382 "compile.y"  #line 396 "compile.y"
 {  {
                                 PC.in_call_value=false;                                  PC.in_call_value=false;
                         ;                          ;
     break;}      break;}
 case 69:  case 70:
 #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 1354  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 73:
 #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:  
 #line 406 "compile.y"  
 {yyval=yyvsp[-1];  
     break;}  
 case 77:  case 77:
 #line 407 "compile.y"  #line 420 "compile.y"
 {yyval=yyvsp[-1];  {yyval=yyvsp[-1];
     break;}      break;}
 case 78:  case 78:
 #line 408 "compile.y"  #line 421 "compile.y"
 {yyval=yyvsp[-1];  {yyval=yyvsp[-1];
     break;}      break;}
 case 80:  case 79:
 #line 411 "compile.y"  #line 422 "compile.y"
 { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;  {yyval=yyvsp[-1];
     break;}      break;}
 case 82:  case 81:
 #line 415 "compile.y"  #line 425 "compile.y"
 { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 84:  case 83:
 #line 419 "compile.y"  #line 429 "compile.y"
 { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 85:  case 85:
 #line 421 "compile.y"  #line 433 "compile.y"
   { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ;
       break;}
   case 86:
   #line 435 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(*yyval, OP_STORE_PARAM);          O(*yyval, OP_STORE_PARAM);
 ;  ;
     break;}      break;}
 case 86:  case 87:
 #line 425 "compile.y"  #line 439 "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 88:
 #line 429 "compile.y"  #line 443 "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 92:
 #line 438 "compile.y"  #line 452 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         O(*yyval, OP_PREPARE_TO_EXPRESSION);          O(*yyval, OP_PREPARE_TO_EXPRESSION);
Line 1391  case 91: Line 1412  case 91:
         O(*yyval, OP_WRITE_EXPR_RESULT);          O(*yyval, OP_WRITE_EXPR_RESULT);
 ;  ;
     break;}      break;}
 case 93:  case 94:
 #line 447 "compile.y"  #line 461 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 95:  case 96:
 #line 449 "compile.y"  #line 463 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 97:  case 98:
 #line 451 "compile.y"  #line 465 "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 1431  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 99:
 #line 459 "compile.y"  #line 473 "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 105:
 #line 472 "compile.y"  #line 486 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(*yyval, OP_GET_ELEMENT);          O(*yyval, OP_GET_ELEMENT);
 ;  ;
     break;}      break;}
 case 105:  case 106:
 #line 476 "compile.y"  #line 490 "compile.y"
 {  {
         ArrayOperation* code;          ArrayOperation* code;
         {          {
Line 1437  case 105: Line 1458  case 105:
         OA(*yyval, OP_STRING_POOL, code);          OA(*yyval, OP_STRING_POOL, code);
 ;  ;
     break;}      break;}
 case 106:  case 107:
 #line 485 "compile.y"  #line 499 "compile.y"
 {  {
         yyval=N();           yyval=N(); 
         OA(*yyval, OP_OBJECT_POOL, yyvsp[-1]); /* stack: empty write context */          OA(*yyval, OP_OBJECT_POOL, yyvsp[-1]); /* stack: empty write context */
Line 1446  case 106: Line 1467  case 106:
         /* context=pop; stack: context.value() */          /* context=pop; stack: context.value() */
 ;  ;
     break;}      break;}
 case 107:  case 108:
 #line 491 "compile.y"  #line 505 "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 110:
 #line 496 "compile.y"  #line 510 "compile.y"
 { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;  { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ;
     break;}      break;}
 case 110:  case 111:
 #line 497 "compile.y"  #line 511 "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 114:
 #line 506 "compile.y"  #line 520 "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 1501  case 113:
         O(*yyval, OP_GET_CLASS);          O(*yyval, OP_GET_CLASS);
 ;  ;
     break;}      break;}
 case 114:  case 115:
 #line 518 "compile.y"  #line 532 "compile.y"
 {  {
         yyval=yyvsp[-1];          yyval=yyvsp[-1];
         if(!PC.in_call_value) {          if(!PC.in_call_value) {
Line 1491  case 114: Line 1512  case 114:
         O(*yyval, OP_PREPARE_TO_CONSTRUCT_OBJECT);          O(*yyval, OP_PREPARE_TO_CONSTRUCT_OBJECT);
 ;  ;
     break;}      break;}
 case 115:  case 116:
 #line 530 "compile.y"  #line 544 "compile.y"
 {  {
         // see OP_PREPARE_TO_EXPRESSION!!          // see OP_PREPARE_TO_EXPRESSION!!
         if((yyval=yyvsp[0])->count()==2) // only one string literal in there?          if((yyval=yyvsp[0])->count()==2) // only one string literal in there?
                 change_string_literal_to_double_literal(*yyval); // make that string literal Double                  change_string_literal_to_double_literal(*yyval); // make that string literal Double
 ;  ;
     break;}      break;}
 case 119:  
 #line 539 "compile.y"  
 { yyval = yyvsp[-1]; ;  
     break;}  
 case 120:  case 120:
 #line 540 "compile.y"  #line 553 "compile.y"
 { yyval = yyvsp[-1]; ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 121:  case 121:
 #line 541 "compile.y"  #line 554 "compile.y"
 { yyval = yyvsp[-1]; ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 122:  case 122:
 #line 543 "compile.y"  #line 555 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_NEG) ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 123:  case 123:
 #line 544 "compile.y"  #line 557 "compile.y"
 { yyval=yyvsp[0] ;  { yyval=yyvsp[0];  O(*yyval, OP_NEG) ;
     break;}      break;}
 case 124:  case 124:
 #line 545 "compile.y"  #line 558 "compile.y"
 { yyval=yyvsp[0];        O(*yyval, OP_INV) ;  { yyval=yyvsp[0] ;
     break;}      break;}
 case 125:  case 125:
 #line 546 "compile.y"  #line 559 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_NOT) ;  { yyval=yyvsp[0];        O(*yyval, OP_INV) ;
     break;}      break;}
 case 126:  case 126:
 #line 547 "compile.y"  #line 560 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_DEF) ;  { yyval=yyvsp[0];  O(*yyval, OP_NOT) ;
     break;}      break;}
 case 127:  case 127:
 #line 548 "compile.y"  #line 561 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_IN) ;  { yyval=yyvsp[0];  O(*yyval, OP_DEF) ;
     break;}      break;}
 case 128:  case 128:
 #line 549 "compile.y"  #line 562 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_FEXISTS) ;  { yyval=yyvsp[0];  O(*yyval, OP_IN) ;
     break;}      break;}
 case 129:  case 129:
 #line 550 "compile.y"  #line 563 "compile.y"
 { yyval=yyvsp[0];  O(*yyval, OP_DEXISTS) ;  { yyval=yyvsp[0];  O(*yyval, OP_FEXISTS) ;
     break;}      break;}
 case 130:  case 130:
 #line 552 "compile.y"  #line 564 "compile.y"
 {       yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_SUB) ;  { yyval=yyvsp[0];  O(*yyval, OP_DEXISTS) ;
     break;}      break;}
 case 131:  case 131:
 #line 553 "compile.y"  #line 566 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_ADD) ;  {       yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_SUB) ;
     break;}      break;}
 case 132:  case 132:
 #line 554 "compile.y"  #line 567 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_MUL) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_ADD) ;
     break;}      break;}
 case 133:  case 133:
 #line 555 "compile.y"  #line 568 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_DIV) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_MUL) ;
     break;}      break;}
 case 134:  case 134:
 #line 556 "compile.y"  #line 569 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_MOD) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_DIV) ;
     break;}      break;}
 case 135:  case 135:
 #line 557 "compile.y"  #line 570 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_INTDIV) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_MOD) ;
     break;}      break;}
 case 136:  case 136:
 #line 558 "compile.y"  #line 571 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_SL) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_INTDIV) ;
     break;}      break;}
 case 137:  case 137:
 #line 559 "compile.y"  #line 572 "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_SL) ;
     break;}      break;}
 case 138:  case 138:
 #line 560 "compile.y"  #line 573 "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_SR) ;
     break;}      break;}
 case 139:  case 139:
 #line 561 "compile.y"  #line 574 "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_AND) ;
     break;}      break;}
 case 140:  case 140:
 #line 562 "compile.y"  #line 575 "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_OR) ;
     break;}      break;}
 case 141:  case 141:
 #line 563 "compile.y"  #line 576 "compile.y"
 { yyval=yyvsp[-2];  OA(*yyval, OP_NESTED_CODE, yyvsp[0]);  O(*yyval, OP_LOG_AND) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_BIN_XOR) ;
     break;}      break;}
 case 142:  case 142:
 #line 564 "compile.y"  #line 577 "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_AND) ;
     break;}      break;}
 case 143:  case 143:
 #line 565 "compile.y"  #line 578 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_LOG_XOR) ;  { yyval=yyvsp[-2];  OA(*yyval, OP_NESTED_CODE, yyvsp[0]);  O(*yyval, OP_LOG_OR) ;
     break;}      break;}
 case 144:  case 144:
 #line 566 "compile.y"  #line 579 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_LT) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_LOG_XOR) ;
     break;}      break;}
 case 145:  case 145:
 #line 567 "compile.y"  #line 580 "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_LT) ;
     break;}      break;}
 case 146:  case 146:
 #line 568 "compile.y"  #line 581 "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_GT) ;
     break;}      break;}
 case 147:  case 147:
 #line 569 "compile.y"  #line 582 "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_LE) ;
     break;}      break;}
 case 148:  case 148:
 #line 570 "compile.y"  #line 583 "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_GE) ;
     break;}      break;}
 case 149:  case 149:
 #line 571 "compile.y"  #line 584 "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_EQ) ;
     break;}      break;}
 case 150:  case 150:
 #line 572 "compile.y"  #line 585 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_LT) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_NUM_NE) ;
     break;}      break;}
 case 151:  case 151:
 #line 573 "compile.y"  #line 586 "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_LT) ;
     break;}      break;}
 case 152:  case 152:
 #line 574 "compile.y"  #line 587 "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_GT) ;
     break;}      break;}
 case 153:  case 153:
 #line 575 "compile.y"  #line 588 "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_LE) ;
     break;}      break;}
 case 154:  case 154:
 #line 576 "compile.y"  #line 589 "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_GE) ;
     break;}      break;}
 case 155:  case 155:
 #line 577 "compile.y"  #line 590 "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_EQ) ;
     break;}      break;}
 case 156:  case 156:
 #line 578 "compile.y"  #line 591 "compile.y"
 { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_IS) ;  { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_STR_NE) ;
     break;}      break;}
 case 157:  case 157:
 #line 581 "compile.y"  #line 592 "compile.y"
   { yyval=yyvsp[-2];  P(*yyval, *yyvsp[0]);  O(*yyval, OP_IS) ;
       break;}
   case 158:
   #line 595 "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 1681  case 157:
         /* context=pop; stack: context.get_string() */          /* context=pop; stack: context.get_string() */
 ;  ;
     break;}      break;}
 case 158:  case 159:
 #line 590 "compile.y"  #line 604 "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 160:
 #line 595 "compile.y"  #line 609 "compile.y"
 { yyval=VL(new VVoid(), 0, 0, 0) ;  { yyval=VL(new VVoid(), 0, 0, 0) ;
     break;}      break;}
 case 160:  case 161:
 #line 596 "compile.y"  #line 610 "compile.y"
 { yyval=N() ;  { yyval=N() ;
     break;}      break;}
 }  }
Line 1897  yyerrhandle: Line 1918  yyerrhandle:
     }      }
   return 1;    return 1;
 }  }
 #line 598 "compile.y"  #line 612 "compile.y"
   
 #endif  #endif
   
Line 1917  yyerrhandle: Line 1938  yyerrhandle:
                 4:[^({]=pop                  4:[^({]=pop
 */  */
   
 inline ungetc(Parse_control& pc, uint last_line_end_col) {  inline void ungetc(Parse_control& pc, uint last_line_end_col) {
         pc.source--;          pc.source--;
         if(pc.pos.col==0) {          if(pc.pos.col==0) {
                 --pc.pos.line; pc.pos.col=last_line_end_col;                  --pc.pos.line; pc.pos.col=last_line_end_col;
Line 1942  static int yylex(YYSTYPE *lvalp, void *a Line 1963  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 1988  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 2020  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 2036  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 2069  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 2108  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 2224  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 2407  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 2419  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 2439  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 2571  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 2618  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 2647  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 2669  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.22  
changed lines
  Added in v.1.97.2.1


E-mail: