diff options
| author | Eugene Sandulenko | 2017-01-09 18:59:05 +0100 | 
|---|---|---|
| committer | Eugene Sandulenko | 2017-01-09 18:59:05 +0100 | 
| commit | 83c4cd19f0d964971991c073815832e1403fc025 (patch) | |
| tree | d3e463d1f85f3ec911f223da6ab3bf946ddb3dbe | |
| parent | b30971b03f9506898a81b1dc2f5472e6d2ccb776 (diff) | |
| download | scummvm-rg350-83c4cd19f0d964971991c073815832e1403fc025.tar.gz scummvm-rg350-83c4cd19f0d964971991c073815832e1403fc025.tar.bz2 scummvm-rg350-83c4cd19f0d964971991c073815832e1403fc025.zip  | |
DIRECTOR: Lingo: Allow 'me' as an argument to the handlers
| -rw-r--r-- | engines/director/lingo/lingo-gr.cpp | 551 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.y | 7 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-lex.cpp | 21 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-lex.l | 3 | ||||
| -rw-r--r-- | engines/director/lingo/lingo.cpp | 1 | ||||
| -rw-r--r-- | engines/director/lingo/lingo.h | 1 | 
6 files changed, 301 insertions, 283 deletions
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index 787f7e0124..d4b25c786e 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -496,16 +496,16 @@ union yyalloc  /* YYFINAL -- State number of the termination state.  */  #define YYFINAL  96  /* YYLAST -- Last index in YYTABLE.  */ -#define YYLAST   1014 +#define YYLAST   1029  /* YYNTOKENS -- Number of terminals.  */  #define YYNTOKENS  87  /* YYNNTS -- Number of nonterminals.  */ -#define YYNNTS  38 +#define YYNNTS  39  /* YYNRULES -- Number of rules.  */ -#define YYNRULES  133 +#define YYNRULES  134  /* YYNRULES -- Number of states.  */ -#define YYNSTATES  282 +#define YYNSTATES  283  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */  #define YYUNDEFTOK  2 @@ -569,15 +569,15 @@ static const yytype_uint16 yyprhs[] =       353,   355,   358,   361,   364,   367,   369,   372,   377,   380,       384,   386,   390,   392,   396,   399,   402,   405,   408,   412,       415,   418,   420,   424,   427,   430,   433,   437,   440,   441, -     450,   453,   454,   463,   464,   475,   476,   478,   482,   487, -     488,   492,   493,   495 +     450,   453,   454,   463,   464,   465,   477,   478,   480,   484, +     489,   490,   494,   495,   497  };  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */  static const yytype_int8 yyrhs[] =  {        88,     0,    -1,    88,    89,    90,    -1,    90,    -1,     1, -      89,    -1,    81,    -1,    -1,   117,    -1,   110,    -1,   123, +      89,    -1,    81,    -1,    -1,   117,    -1,   110,    -1,   124,        -1,    91,    -1,    93,    -1,    40,   109,    33,    21,    -1,        42,    21,    74,   109,    -1,    42,    13,    74,   109,    -1,        42,    14,   109,    74,   109,    -1,    42,    21,    44,   109, @@ -600,7 +600,7 @@ static const yytype_int8 yyrhs[] =        41,    47,    -1,    41,    46,    21,    -1,    32,    -1,    26,        -1,    -1,    -1,    -1,   107,    89,    -1,   107,    93,    -1,        45,    21,    43,    -1,    12,    -1,    15,    -1,    22,    -1, -      17,    -1,    21,    82,   124,    83,    -1,    21,    -1,    13, +      17,    -1,    21,    82,   125,    83,    -1,    21,    -1,    13,        -1,    14,   109,    -1,    91,    -1,   109,    76,   109,    -1,       109,    77,   109,    -1,   109,    78,   109,    -1,   109,    79,       109,    -1,   109,    65,   109,    -1,   109,    84,   109,    -1, @@ -613,19 +613,20 @@ static const yytype_int8 yyrhs[] =        71,   109,    -1,    40,   109,    -1,   113,    -1,   116,    -1,        28,    41,    -1,    28,    -1,    30,   111,    -1,    55,   112,        -1,    19,   109,    -1,    18,   109,    -1,    18,    -1,    20, -     124,    -1,    51,   109,    46,   109,    -1,    51,   109,    -1, -      73,    21,   124,    -1,    21,    -1,   111,    86,    21,    -1, +     125,    -1,    51,   109,    46,   109,    -1,    51,   109,    -1, +      73,    21,   125,    -1,    21,    -1,   111,    86,    21,    -1,        21,    -1,   112,    86,    21,    -1,    31,    34,    -1,    31,        37,    -1,    31,    39,    -1,    31,   114,    -1,    31,   114,       115,    -1,    31,   115,    -1,    29,   109,    -1,   109,    -1,        38,    36,   109,    -1,    36,   109,    -1,    52,    53,    -1,        52,   114,    -1,    52,   114,   115,    -1,    52,   115,    -1, -      -1,    35,    21,   118,   105,   121,    89,   122,   107,    -1, -      49,    21,    -1,    -1,    50,    21,   119,   105,   121,    89, -     122,   107,    -1,    -1,    72,    21,   120,   105,   121,    89, -     122,   107,    27,    21,    -1,    -1,    21,    -1,   121,    86, -      21,    -1,   121,    89,    86,    21,    -1,    -1,    21,   105, -     124,    -1,    -1,   109,    -1,   124,    86,   109,    -1 +      -1,    35,    21,   118,   105,   122,    89,   123,   107,    -1, +      49,    21,    -1,    -1,    50,    21,   119,   105,   122,    89, +     123,   107,    -1,    -1,    -1,    72,    21,   120,   105,   121, +     122,    89,   123,   107,    27,    21,    -1,    -1,    21,    -1, +     122,    86,    21,    -1,   122,    89,    86,    21,    -1,    -1, +      21,   105,   125,    -1,    -1,   109,    -1,   125,    86,   109, +      -1  };  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ @@ -643,8 +644,8 @@ static const yytype_uint16 yyrline[] =       415,   417,   418,   419,   422,   425,   428,   429,   430,   431,       434,   435,   438,   439,   450,   451,   452,   453,   456,   459,       464,   465,   468,   469,   472,   473,   476,   479,   509,   509, -     515,   518,   518,   523,   523,   535,   536,   537,   538,   540, -     544,   552,   553,   554 +     515,   518,   518,   523,   524,   523,   536,   537,   538,   539, +     541,   545,   553,   554,   555  };  #endif @@ -670,8 +671,8 @@ static const char *const yytname[] =    "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",    "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "expr",    "func", "globallist", "instancelist", "gotofunc", "gotoframe", -  "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "argdef", "argstore", -  "macro", "arglist", 0 +  "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "@4", "argdef", +  "argstore", "macro", "arglist", 0  };  #endif @@ -707,8 +708,8 @@ static const yytype_uint8 yyr1[] =       110,   110,   110,   110,   110,   110,   110,   110,   110,   110,       111,   111,   112,   112,   113,   113,   113,   113,   113,   113,       114,   114,   115,   115,   116,   116,   116,   116,   118,   117, -     117,   119,   117,   120,   117,   121,   121,   121,   121,   122, -     123,   124,   124,   124 +     117,   119,   117,   120,   121,   117,   122,   122,   122,   122, +     123,   124,   125,   125,   125  };  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ @@ -726,8 +727,8 @@ static const yytype_uint8 yyr2[] =         1,     2,     2,     2,     2,     1,     2,     4,     2,     3,         1,     3,     1,     3,     2,     2,     2,     2,     3,     2,         2,     1,     3,     2,     2,     2,     3,     2,     0,     8, -       2,     0,     8,     0,    10,     0,     1,     3,     4,     0, -       3,     0,     1,     3 +       2,     0,     8,     0,     0,    11,     0,     1,     3,     4, +       0,     3,     0,     1,     3  };  /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -735,35 +736,35 @@ static const yytype_uint8 yyr2[] =     means the default is an error.  */  static const yytype_uint8 yydefact[] =  { -       0,     0,    55,    61,     0,    56,    58,    95,     0,   131, +       0,     0,    55,    61,     0,    56,    58,    95,     0,   132,        49,    57,    90,     0,     0,    47,     0,     0,     0,     0,         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,         0,     0,     0,     0,     3,    63,    21,    11,    22,     0,         0,     0,     0,    19,     8,    87,    88,     7,     9,     5, -       4,    60,     0,    63,    62,    94,    93,   132,    96,   131, -     131,    89,   100,    91,     0,   104,     0,   105,     0,   106, +       4,    60,     0,    63,    62,    94,    93,   133,    96,   132, +     132,    89,   100,    91,     0,   104,     0,   105,     0,   106,       111,   107,   109,   118,    86,     0,    45,     0,     0,     0,         0,   120,   121,    98,   114,   115,   117,   102,    92,    76, -       0,   123,   131,    81,    82,     0,     1,     6,     0,     0, +       0,   123,   132,    81,    82,     0,     1,     6,     0,     0,         0,     0,    42,    50,     0,     0,     0,     0,     0,     0,         0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,   130,     0,   110,   113,     0,   108,    49, +       0,     0,     0,   131,     0,   110,   113,     0,   108,    49,         0,    46,     0,     0,     0,     0,     0,    54,    49,     0,       116,     0,     0,     0,    49,    99,    83,     2,     0,    50,         0,     0,    49,     0,    26,    72,    73,    71,    74,    75,        68,    78,    79,    80,    77,    64,    65,    66,    67,    69, -      70,   133,    59,   101,   112,   125,    12,    17,    14,     0, -       0,    16,    13,   125,    97,   103,    84,    85,   125,    51, -       0,    44,    51,     0,    43,   126,     0,    18,    15,     0, -       0,    50,     0,     0,    50,    50,    20,     0,   129,   129, -     129,    52,    53,     0,     0,    50,    49,    30,   127,     0, -      51,    51,    51,     0,    50,    51,     0,    51,     0,    48, -      49,    50,    38,     0,   128,   119,   122,     0,    23,    51, +      70,   134,    59,   101,   112,   126,    12,    17,    14,     0, +       0,    16,    13,   126,    97,   103,    84,    85,   124,    51, +       0,    44,    51,     0,    43,   127,     0,    18,    15,     0, +     126,    50,     0,     0,    50,    50,    20,     0,   130,   130, +       0,    52,    53,     0,     0,    50,    49,    30,   128,     0, +      51,    51,   130,     0,    50,    51,     0,    51,     0,    48, +      49,    50,    38,     0,   129,   119,   122,    51,    23,    51,        50,    27,    50,    50,    40,    36,     0,     0,    37,    33,         0,     0,    50,     0,     0,    35,     0,     0,    50,    49, -      50,    49,   124,     0,     0,     0,     0,    49,    31,     0, -      32,     0,     0,    24,    28,    29,    50,    34,    50,    25, -      41,    39 +      50,    49,     0,     0,     0,     0,     0,    49,    31,     0, +      32,     0,   125,     0,    24,    28,    29,    50,    34,    50, +      25,    41,    39  };  /* YYDEFGOTO[NTERM-NUM].  */ @@ -772,52 +773,52 @@ static const yytype_int16 yydefgoto[] =        -1,    33,   211,    34,    53,    36,   212,    38,   260,   243,       244,   232,   245,   101,    39,    40,    41,   233,   271,   154,       201,    42,    43,   206,    63,    88,    45,    71,    72,    46, -      47,   129,   138,   144,   196,   220,    48,    58 +      47,   129,   138,   144,   200,   196,   220,    48,    58  };  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing     STATE-NUM.  */ -#define YYPACT_NINF -215 +#define YYPACT_NINF -217  static const yytype_int16 yypact[] =  { -     263,   -39,  -215,  -215,    11,  -215,  -215,    11,    11,    11, -     929,  -215,    15,    25,   674,  -215,    31,    11,   -26,    65, -      44,    48,    53,    11,   706,    64,    11,    11,    68,    70, -      11,    11,    11,     2,  -215,     3,  -215,  -215,  -215,    12, -      22,   750,    11,   904,  -215,  -215,  -215,  -215,  -215,  -215, -    -215,    16,    11,  -215,   904,   904,   904,   904,    17,    11, -      11,  -215,  -215,    19,    11,  -215,    11,  -215,    73,  -215, -     904,    24,  -215,  -215,   745,    89,  -215,   -34,    11,   -29, -      69,  -215,  -215,   779,  -215,    24,  -215,  -215,    27,    -8, -     804,  -215,    11,    -8,    -8,   854,  -215,   334,   750,    11, -     750,    71,   879,   904,    11,    11,    11,    11,    11,    11, -      11,    11,    11,    11,    11,    11,    11,    11,    11,    11, -     745,    11,   -47,    17,    90,   904,   904,    11,  -215,  -215, -      94,  -215,    11,    11,   590,    11,    11,  -215,  -215,    11, -    -215,    95,    11,    11,  -215,    17,  -215,  -215,    34,   904, -      36,   829,   -39,    11,  -215,   244,   244,   244,    -8,    -8, -      -8,   904,   244,   244,   315,   138,   138,    -8,    -8,   904, -     904,   904,  -215,  -215,   904,   100,  -215,   904,   904,    11, -      11,   904,   904,   100,   904,  -215,   904,   904,   100,  -215, -      -6,  -215,  -215,   608,   904,  -215,   -59,   904,   904,   -59, -     -59,   471,    78,    11,   471,  -215,  -215,   105,    41,    41, -      41,  -215,  -215,   104,    11,   904,   -11,   -13,  -215,   113, -    -215,  -215,  -215,    96,   904,  -215,   109,  -215,   110,  -215, -    -215,   110,  -215,   750,  -215,   471,   471,   400,  -215,  -215, -     471,  -215,   471,   110,   110,  -215,   750,   608,  -215,   112, -     120,   144,   471,   139,   141,  -215,   142,   128,  -215,  -215, -    -215,  -215,  -215,   147,   137,   148,   149,   -20,  -215,   608, -    -215,   542,   143,  -215,  -215,  -215,   471,  -215,  -215,  -215, -    -215,  -215 +     275,   -30,  -217,  -217,   762,  -217,  -217,   762,   762,   762, +     173,  -217,    17,    10,   686,  -217,    32,   762,    13,    64, +      41,    47,    52,   762,   718,    55,   762,   762,    58,    59, +     762,   762,   762,     2,  -217,     3,  -217,  -217,  -217,     6, +      15,   776,   762,   944,  -217,  -217,  -217,  -217,  -217,  -217, +    -217,     9,   762,  -217,   944,   944,   944,   944,     8,   762, +     762,  -217,  -217,    19,   762,  -217,   762,  -217,    50,  -217, +     944,   -11,  -217,  -217,   794,    74,  -217,   -28,   762,   -24, +      53,  -217,  -217,   819,  -217,   -11,  -217,  -217,    21,   -10, +     844,  -217,   762,   -10,   -10,   894,  -217,   346,   776,   762, +     776,    60,   919,   944,   762,   762,   762,   762,   762,   762, +     762,   762,   762,   762,   762,   762,   762,   762,   762,   762, +     794,   762,     7,     8,    77,   944,   944,   762,  -217,  -217, +      89,  -217,   762,   762,   602,   762,   762,  -217,  -217,   762, +    -217,    92,   762,   762,  -217,     8,  -217,  -217,    31,   944, +      33,   869,   -30,   762,  -217,    46,    46,    46,   -10,   -10, +     -10,   944,    46,    46,   256,   -44,   -44,   -10,   -10,   944, +     944,   944,  -217,  -217,   944,    94,  -217,   944,   944,   762, +     762,   944,   944,    94,   944,  -217,   944,   944,  -217,  -217, +      -7,  -217,  -217,   620,   944,  -217,   -57,   944,   944,   -57, +      94,   483,    73,   762,   483,  -217,  -217,    98,    42,    42, +     -57,  -217,  -217,    99,   762,   944,   -15,   -12,  -217,   106, +    -217,  -217,    42,    93,   944,  -217,   101,  -217,   110,  -217, +    -217,   110,  -217,   776,  -217,   483,   483,  -217,  -217,  -217, +     483,  -217,   483,   110,   110,  -217,   776,   620,  -217,   112, +     119,   412,   483,   114,   115,  -217,   136,   123,  -217,  -217, +    -217,  -217,   116,   141,   129,   142,   145,   -20,  -217,   620, +    -217,   554,  -217,   139,  -217,  -217,  -217,   483,  -217,  -217, +    -217,  -217,  -217  };  /* YYPGOTO[NTERM-NUM].  */  static const yytype_int16 yypgoto[] =  { -    -215,  -215,    10,    93,     4,  -179,     0,  -215,  -215,  -215, -     -31,  -214,   -56,   -69,  -215,  -215,  -215,  -209,    -9,   -16, -     -97,  -215,    40,     5,  -215,  -215,  -215,   167,   -12,  -215, -    -215,  -215,  -215,  -215,  -133,  -102,  -215,   -51 +    -217,  -217,    12,    84,     4,  -182,     0,  -217,  -217,  -217, +     -33,  -216,   -58,   -68,  -217,  -217,  -217,  -205,    -9,    22, +     -23,  -217,    40,     5,  -217,  -217,  -217,   162,   -16,  -217, +    -217,  -217,  -217,  -217,  -217,  -157,  -170,  -217,   -50  };  /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If @@ -827,90 +828,94 @@ static const yytype_int16 yypgoto[] =  #define YYTABLE_NINF -61  static const yytype_int16 yytable[] =  { -      37,    60,    96,   -10,    35,    44,   -51,   -51,   122,   123, -     132,    50,    86,   229,   205,   135,   226,   248,   202,   246, -      75,    76,    49,     2,     3,     4,     5,   207,     6,   148, -     248,   150,    51,    11,   246,   230,   172,   227,   203,   121, -     133,   145,    49,    97,    54,   136,    62,    55,    56,    57, -     199,    52,    73,    19,    70,   200,    61,    74,   110,   128, -      66,   -51,    68,    83,    70,    80,    89,    90,   258,    81, -      93,    94,    95,   140,    82,    26,   118,   119,    77,    78, -      27,   102,   103,    49,   -10,    87,    79,    30,    31,    91, -     277,    92,   120,    32,    98,   204,    99,    37,    59,    57, -      57,    35,    44,   121,   125,   124,   126,   221,   222,   127, -     131,   173,   137,   141,   152,   176,   185,   189,   134,   191, -     175,   195,   214,   235,   236,   237,   218,   219,   240,   183, -     242,   223,    57,   190,   234,   188,   229,   238,   102,   149, -     151,   241,   252,   193,   155,   156,   157,   158,   159,   160, +      37,    60,    96,   -10,    35,    44,   -51,   -51,    86,   122, +     123,   205,   226,    50,   229,   248,   132,   202,   107,   108, +     135,   109,   110,   246,    49,    66,   199,    68,   248,   207, +     148,    62,   150,   227,   116,   117,   230,   203,   246,   221, +     118,   119,   145,   210,    54,    97,   133,    55,    56,    57, +     136,    49,   237,    73,    70,   128,   110,    74,    61,    75, +      76,   -51,    80,    83,    70,   258,    89,    90,    81,   140, +      93,    94,    95,    82,   118,   119,    87,    77,    78,    91, +      92,   102,   103,    49,   -10,    79,   127,   278,    98,    99, +     172,    59,   120,   121,   121,   131,   137,    37,   173,    57, +      57,    35,    44,   152,   125,   124,   126,   141,   107,   108, +     176,   109,   110,   185,   189,   195,   191,   214,   134,   218, +     175,   113,   114,   115,   116,   117,   223,   234,   219,   183, +     118,   119,    57,   241,   238,   188,   229,   272,   102,   149, +     151,   264,   265,   193,   155,   156,   157,   158,   159,   160,       161,   162,   163,   164,   165,   166,   167,   168,   169,   170, -     259,   171,   192,   261,   250,   262,   264,   174,   265,   266, -     276,   267,   177,   178,   272,   181,   182,   257,   273,   184, -     274,   275,   186,   187,   279,   213,   231,   255,   216,   217, -     147,    85,     0,   194,     0,     0,     0,     0,     0,   225, -     107,   108,     0,   109,   110,     0,   208,   228,   239,   209, -     210,     0,     0,     0,     0,   249,   116,   117,     0,   197, -     198,   247,   118,   119,   253,     0,   254,   256,     0,     0, -       0,     0,     0,     0,     0,     0,   263,     0,     0,     0, -       0,     0,   268,   215,   270,     0,     0,     0,     0,     0, -     269,     0,     0,     0,   224,     0,     0,     0,     0,     0, -     280,     0,   281,    -6,     1,     0,     0,     0,     0,     0, -       0,   278,     0,   102,     0,     2,     3,     4,     5,     0, -       6,     7,     8,     9,    10,    11,   102,     0,     0,     0, -       0,    12,     0,    13,    14,    15,     0,     0,    16,     0, -       0,     0,     0,    17,    18,    19,   107,   108,    20,   109, -     110,     0,    21,    22,    23,    24,     0,     0,    25,   113, -     114,   115,   116,   117,     0,     0,     0,    26,   118,   119, -       0,     0,    27,     0,     0,    28,    29,     0,     0,    30, -      31,     0,     0,     0,    -6,    32,     2,     3,     4,     5, -       0,     6,     7,     8,     9,    10,    11,     0,     0,     0, -       0,     0,    12,     0,    13,    14,    15,     0,     0,    16, -       0,     0,     0,     0,    17,    18,    19,   107,   108,    20, -     109,   110,     0,    21,    22,    23,    24,     0,     0,    25, -       0,   114,   115,   116,   117,     0,     0,     0,    26,   118, -     119,     0,     0,    27,     0,     0,    28,    29,     0,     0, -      30,    31,     2,     3,     4,     5,    32,     6,     7,     8, -       9,    51,    11,     0,     0,     0,     0,   251,    12,     0, -      13,    14,    15,     0,     0,     0,     0,     0,     0,     0, -      17,    18,    19,     0,     0,    20,     0,     0,     0,     0, -       0,    23,    24,     0,     0,    25,     0,     0,     0,     0, -       0,     0,     0,     0,    26,     0,     0,     0,     0,    27, -       0,     0,     0,    29,     0,     0,    30,    31,     0,     0, -       0,    49,    32,     2,     3,     4,     5,     0,     6,     7, -       8,     9,    51,    11,     0,     0,     0,     0,     0,    12, -       0,    13,    14,    15,     0,     0,     0,     0,     0,     0, -       0,    17,    18,    19,     0,     0,    20,     0,     0,     0, -       0,     0,    23,    24,     0,     0,    25,     0,     0,     0, -       0,     0,     0,     0,     0,    26,     0,     0,     0,     0, -      27,     0,     0,     0,    29,     0,     0,    30,    31,     0, -       0,     0,    49,    32,     2,     3,     4,     5,     0,     6, -       7,     8,     9,    51,    11,     0,     0,     0,     0,     0, +     259,   171,   261,   266,   192,   250,   267,   174,   273,   204, +     274,   190,   177,   178,   275,   181,   182,   276,   257,   184, +     280,   147,   186,   187,   231,   255,    85,     0,     0,     0, +       0,     0,     0,   194,     0,     0,     0,   235,   236,     0, +       0,     0,   240,     0,   242,     0,     0,   228,   208,     0, +       0,   209,     0,     0,   251,     0,   252,     0,     0,   197, +     198,   247,   222,   213,     0,     0,   216,   217,     0,   -60, +     -60,     0,     0,     0,   -60,   -60,   -60,   225,   -60,   -60, +     -60,   -60,     0,   215,   277,     0,   239,     0,   -60,     0, +     269,   -60,   -60,   249,   224,    59,     0,   -60,   -60,     0, +       0,     0,   253,     0,   254,   256,     0,     0,     0,     0, +       0,   279,     0,   102,   263,    -6,     1,     0,     0,     0, +     268,     0,   270,     0,     0,     0,   102,     2,     3,     4, +       5,     0,     6,     7,     8,     9,    10,    11,     0,   281, +       0,   282,     0,    12,     0,    13,    14,    15,     0,     0, +      16,     0,     0,     0,     0,    17,    18,    19,   107,   108, +      20,   109,   110,     0,    21,    22,    23,    24,     0,     0, +      25,     0,   114,   115,   116,   117,     0,     0,     0,    26, +     118,   119,     0,     0,    27,     0,     0,    28,    29,     0, +       0,    30,    31,     0,     0,     0,    -6,    32,     2,     3, +       4,     5,     0,     6,     7,     8,     9,    10,    11,     0, +       0,     0,     0,     0,    12,     0,    13,    14,    15,     0, +       0,    16,     0,     0,     0,     0,    17,    18,    19,     0, +       0,    20,     0,     0,     0,    21,    22,    23,    24,     0, +       0,    25,     0,     0,     0,     0,     0,     0,     0,     0, +      26,     0,     0,     0,     0,    27,     0,     0,    28,    29, +       0,     0,    30,    31,     2,     3,     4,     5,    32,     6, +       7,     8,     9,    51,    11,     0,     0,     0,     0,   262,        12,     0,    13,    14,    15,     0,     0,     0,     0,     0,         0,     0,    17,    18,    19,     0,     0,    20,     0,     0,         0,     0,     0,    23,    24,     0,     0,    25,     0,     0,         0,     0,     0,     0,     0,     0,    26,     0,     0,     0,         0,    27,     0,     0,     0,    29,     0,     0,    30,    31, -       2,     3,     4,     5,    32,     6,     7,     8,     9,    51, -      11,     0,     0,     0,   179,     0,    12,     0,    13,    14, -       0,     0,     0,     0,     0,     0,   104,   105,    17,     0, -      19,   106,   107,   108,     0,   109,   110,   111,   112,    23, -      24,     0,     0,    25,   180,   113,   114,   115,   116,   117, -       0,     0,    26,     0,   118,   119,     0,    27,     0,     0, -       0,    29,     0,     0,    30,    31,     2,     3,     4,     5, -      32,     6,     0,     0,     0,    51,    11,     0,     0,     0, -       0,     0,     0,    64,     0,     0,     0,     0,    65,     0, -      66,    67,    68,    69,    52,     0,    19,     0,     2,     3, -       4,     5,     0,     6,     0,     0,     0,    51,    11,     0, -       0,     0,     0,     0,     0,    64,     0,     0,    26,     0, -       0,     0,    66,    27,    68,     0,    52,     0,    19,     0, -      30,    31,     0,     0,     0,     0,    32,     0,     0,    84, -       0,     0,     2,     3,     4,     5,     0,     6,     0,     0, -      26,    51,    11,     0,     0,    27,     0,     0,   130,     0, -       0,     0,    30,    31,     0,     0,     0,     0,    32,     0, -      52,     0,    19,     0,     0,     0,     0,     0,     0,     0, -       0,   104,   105,     0,     0,     0,   106,   107,   108,     0, -     109,   110,   111,   112,    26,     0,     0,     0,     0,    27, -     113,   114,   115,   116,   117,   139,    30,    31,     0,   118, -     119,     0,   100,     0,     0,   104,   105,     0,     0,     0, +       0,     0,     0,    49,    32,     2,     3,     4,     5,     0, +       6,     7,     8,     9,    51,    11,     0,     0,     0,     0, +       0,    12,     0,    13,    14,    15,     0,     0,     0,     0, +       0,     0,     0,    17,    18,    19,     0,     0,    20,     0, +       0,     0,     0,     0,    23,    24,     0,     0,    25,     0, +       0,     0,     0,     0,     0,     0,     0,    26,     0,     0, +       0,     0,    27,     0,     0,     0,    29,     0,     0,    30, +      31,     0,     0,     0,    49,    32,     2,     3,     4,     5, +       0,     6,     7,     8,     9,    51,    11,     0,     0,     0, +       0,     0,    12,     0,    13,    14,    15,     0,     0,     0, +       0,     0,     0,     0,    17,    18,    19,     0,     0,    20, +       0,     0,     0,     0,     0,    23,    24,     0,     0,    25, +       0,     0,     0,     0,     0,     0,     0,     0,    26,     0, +       0,     0,     0,    27,     0,     0,     0,    29,     0,     0, +      30,    31,     2,     3,     4,     5,    32,     6,     7,     8, +       9,    51,    11,     0,     0,     0,   179,     0,    12,     0, +      13,    14,     0,     0,     0,     0,     0,     0,   104,   105, +      17,     0,    19,   106,   107,   108,     0,   109,   110,   111, +     112,    23,    24,     0,     0,    25,   180,   113,   114,   115, +     116,   117,     0,     0,    26,     0,   118,   119,     0,    27, +       0,     0,     0,    29,     0,     0,    30,    31,     2,     3, +       4,     5,    32,     6,     0,     0,     0,    51,    11,     0, +       0,     0,     0,     0,     0,    64,     0,     0,     0,     0, +      65,     0,    66,    67,    68,    69,    52,     0,    19,     0, +       2,     3,     4,     5,     0,     6,     0,     0,     0,    51, +      11,     0,     0,     0,     0,     0,     0,    64,     0,     0, +      26,     0,     0,     0,    66,    27,    68,     0,    52,     0, +      19,     0,    30,    31,     0,     0,     0,     0,    32,     0, +       0,    84,     0,     0,     2,     3,     4,     5,     0,     6, +       0,     0,    26,    51,    11,     0,     0,    27,     2,     3, +       4,     5,     0,     6,    30,    31,     0,    51,    11,     0, +      32,     0,    52,     0,    19,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,    52,     0,    19,     0, +       0,     0,     0,     0,     0,     0,    26,   130,     0,     0, +       0,    27,     0,     0,     0,     0,     0,     0,    30,    31, +      26,     0,     0,     0,    32,    27,     0,     0,     0,     0, +     104,   105,    30,    31,     0,   106,   107,   108,   100,   109, +     110,   111,   112,     0,     0,   139,     0,     0,     0,   113, +     114,   115,   116,   117,     0,   104,   105,     0,   118,   119,       106,   107,   108,     0,   109,   110,   111,   112,     0,     0,         0,     0,     0,     0,   113,   114,   115,   116,   117,     0,       104,   105,     0,   118,   119,   106,   107,   108,     0,   109, @@ -925,98 +930,99 @@ static const yytype_int16 yytable[] =         0,     0,     0,   153,   113,   114,   115,   116,   117,     0,       104,   105,     0,   118,   119,   106,   107,   108,     0,   109,       110,   111,   112,     0,     0,     0,     0,     0,     0,   113, -     114,   115,   116,   117,     0,   -60,   -60,     0,   118,   119, -     -60,   -60,   -60,     0,   -60,   -60,   -60,   -60,     0,     0, -       0,     0,     0,     0,   -60,     0,     0,   -60,   -60,     0, -       0,    59,     0,   -60,   -60 +     114,   115,   116,   117,     0,     0,     0,     0,   118,   119  };  static const yytype_int16 yycheck[] =  { -       0,    10,     0,     0,     0,     0,    26,    27,    59,    60, -      44,     1,    24,    26,   193,    44,    27,   231,    24,   228, -      46,    47,    81,    12,    13,    14,    15,    86,    17,    98, -     244,   100,    21,    22,   243,    48,    83,    48,    44,    86, -      74,    92,    81,    33,     4,    74,    21,     7,     8,     9, -     183,    40,    21,    42,    14,   188,    41,    17,    66,    71, -      36,    81,    38,    23,    24,    21,    26,    27,   247,    21, -      30,    31,    32,    85,    21,    64,    84,    85,    13,    14, -      69,    41,    42,    81,    81,    21,    21,    76,    77,    21, -     269,    21,    52,    82,    82,   192,    74,    97,    82,    59, -      60,    97,    97,    86,    64,    86,    66,   209,   210,    36, -      21,    21,    43,    86,    43,    21,    21,    83,    78,    83, -     129,    21,    44,   220,   221,   222,    21,    86,   225,   138, -     227,    27,    92,   149,    21,   144,    26,    41,    98,    99, -     100,    32,   239,   152,   104,   105,   106,   107,   108,   109, +       0,    10,     0,     0,     0,     0,    26,    27,    24,    59, +      60,   193,    27,     1,    26,   231,    44,    24,    62,    63, +      44,    65,    66,   228,    81,    36,   183,    38,   244,    86, +      98,    21,   100,    48,    78,    79,    48,    44,   243,   209, +      84,    85,    92,   200,     4,    33,    74,     7,     8,     9, +      74,    81,   222,    21,    14,    71,    66,    17,    41,    46, +      47,    81,    21,    23,    24,   247,    26,    27,    21,    85, +      30,    31,    32,    21,    84,    85,    21,    13,    14,    21, +      21,    41,    42,    81,    81,    21,    36,   269,    82,    74, +      83,    82,    52,    86,    86,    21,    43,    97,    21,    59, +      60,    97,    97,    43,    64,    86,    66,    86,    62,    63, +      21,    65,    66,    21,    83,    21,    83,    44,    78,    21, +     129,    75,    76,    77,    78,    79,    27,    21,    86,   138, +      84,    85,    92,    32,    41,   144,    26,    21,    98,    99, +     100,    27,    27,   152,   104,   105,   106,   107,   108,   109,       110,   111,   112,   113,   114,   115,   116,   117,   118,   119, -      48,   121,   152,    43,   233,    21,    27,   127,    27,    27, -     267,    43,   132,   133,    27,   135,   136,   246,    41,   139, -      32,    32,   142,   143,    41,   201,   217,   243,   204,   205, -      97,    24,    -1,   153,    -1,    -1,    -1,    -1,    -1,   215, -      62,    63,    -1,    65,    66,    -1,   196,   216,   224,   199, -     200,    -1,    -1,    -1,    -1,   231,    78,    79,    -1,   179, -     180,   230,    84,    85,   240,    -1,   242,   243,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    -1,   252,    -1,    -1,    -1, -      -1,    -1,   258,   203,   260,    -1,    -1,    -1,    -1,    -1, -     259,    -1,    -1,    -1,   214,    -1,    -1,    -1,    -1,    -1, -     276,    -1,   278,     0,     1,    -1,    -1,    -1,    -1,    -1, -      -1,   271,    -1,   233,    -1,    12,    13,    14,    15,    -1, -      17,    18,    19,    20,    21,    22,   246,    -1,    -1,    -1, -      -1,    28,    -1,    30,    31,    32,    -1,    -1,    35,    -1, -      -1,    -1,    -1,    40,    41,    42,    62,    63,    45,    65, -      66,    -1,    49,    50,    51,    52,    -1,    -1,    55,    75, -      76,    77,    78,    79,    -1,    -1,    -1,    64,    84,    85, -      -1,    -1,    69,    -1,    -1,    72,    73,    -1,    -1,    76, -      77,    -1,    -1,    -1,    81,    82,    12,    13,    14,    15, -      -1,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1, -      -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,    35, -      -1,    -1,    -1,    -1,    40,    41,    42,    62,    63,    45, -      65,    66,    -1,    49,    50,    51,    52,    -1,    -1,    55, -      -1,    76,    77,    78,    79,    -1,    -1,    -1,    64,    84, -      85,    -1,    -1,    69,    -1,    -1,    72,    73,    -1,    -1, -      76,    77,    12,    13,    14,    15,    82,    17,    18,    19, -      20,    21,    22,    -1,    -1,    -1,    -1,    27,    28,    -1, -      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -      40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1, -      -1,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    69, -      -1,    -1,    -1,    73,    -1,    -1,    76,    77,    -1,    -1, -      -1,    81,    82,    12,    13,    14,    15,    -1,    17,    18, -      19,    20,    21,    22,    -1,    -1,    -1,    -1,    -1,    28, -      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1, -      -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1, -      -1,    -1,    51,    52,    -1,    -1,    55,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1, -      69,    -1,    -1,    -1,    73,    -1,    -1,    76,    77,    -1, -      -1,    -1,    81,    82,    12,    13,    14,    15,    -1,    17, -      18,    19,    20,    21,    22,    -1,    -1,    -1,    -1,    -1, +      48,   121,    43,    27,   152,   233,    43,   127,    27,   192, +      41,   149,   132,   133,    32,   135,   136,    32,   246,   139, +      41,    97,   142,   143,   217,   243,    24,    -1,    -1,    -1, +      -1,    -1,    -1,   153,    -1,    -1,    -1,   220,   221,    -1, +      -1,    -1,   225,    -1,   227,    -1,    -1,   216,   196,    -1, +      -1,   199,    -1,    -1,   237,    -1,   239,    -1,    -1,   179, +     180,   230,   210,   201,    -1,    -1,   204,   205,    -1,    56, +      57,    -1,    -1,    -1,    61,    62,    63,   215,    65,    66, +      67,    68,    -1,   203,   267,    -1,   224,    -1,    75,    -1, +     259,    78,    79,   231,   214,    82,    -1,    84,    85,    -1, +      -1,    -1,   240,    -1,   242,   243,    -1,    -1,    -1,    -1, +      -1,   271,    -1,   233,   252,     0,     1,    -1,    -1,    -1, +     258,    -1,   260,    -1,    -1,    -1,   246,    12,    13,    14, +      15,    -1,    17,    18,    19,    20,    21,    22,    -1,   277, +      -1,   279,    -1,    28,    -1,    30,    31,    32,    -1,    -1, +      35,    -1,    -1,    -1,    -1,    40,    41,    42,    62,    63, +      45,    65,    66,    -1,    49,    50,    51,    52,    -1,    -1, +      55,    -1,    76,    77,    78,    79,    -1,    -1,    -1,    64, +      84,    85,    -1,    -1,    69,    -1,    -1,    72,    73,    -1, +      -1,    76,    77,    -1,    -1,    -1,    81,    82,    12,    13, +      14,    15,    -1,    17,    18,    19,    20,    21,    22,    -1, +      -1,    -1,    -1,    -1,    28,    -1,    30,    31,    32,    -1, +      -1,    35,    -1,    -1,    -1,    -1,    40,    41,    42,    -1, +      -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,    -1, +      -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      64,    -1,    -1,    -1,    -1,    69,    -1,    -1,    72,    73, +      -1,    -1,    76,    77,    12,    13,    14,    15,    82,    17, +      18,    19,    20,    21,    22,    -1,    -1,    -1,    -1,    27,        28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,        -1,    -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,        -1,    -1,    -1,    51,    52,    -1,    -1,    55,    -1,    -1,        -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,        -1,    69,    -1,    -1,    -1,    73,    -1,    -1,    76,    77, -      12,    13,    14,    15,    82,    17,    18,    19,    20,    21, -      22,    -1,    -1,    -1,    44,    -1,    28,    -1,    30,    31, -      -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    40,    -1, -      42,    61,    62,    63,    -1,    65,    66,    67,    68,    51, -      52,    -1,    -1,    55,    74,    75,    76,    77,    78,    79, -      -1,    -1,    64,    -1,    84,    85,    -1,    69,    -1,    -1, -      -1,    73,    -1,    -1,    76,    77,    12,    13,    14,    15, -      82,    17,    -1,    -1,    -1,    21,    22,    -1,    -1,    -1, -      -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    34,    -1, -      36,    37,    38,    39,    40,    -1,    42,    -1,    12,    13, -      14,    15,    -1,    17,    -1,    -1,    -1,    21,    22,    -1, -      -1,    -1,    -1,    -1,    -1,    29,    -1,    -1,    64,    -1, -      -1,    -1,    36,    69,    38,    -1,    40,    -1,    42,    -1, -      76,    77,    -1,    -1,    -1,    -1,    82,    -1,    -1,    53, -      -1,    -1,    12,    13,    14,    15,    -1,    17,    -1,    -1, -      64,    21,    22,    -1,    -1,    69,    -1,    -1,    33,    -1, -      -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    82,    -1, -      40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -      -1,    56,    57,    -1,    -1,    -1,    61,    62,    63,    -1, -      65,    66,    67,    68,    64,    -1,    -1,    -1,    -1,    69, -      75,    76,    77,    78,    79,    46,    76,    77,    -1,    84, -      85,    -1,    82,    -1,    -1,    56,    57,    -1,    -1,    -1, +      -1,    -1,    -1,    81,    82,    12,    13,    14,    15,    -1, +      17,    18,    19,    20,    21,    22,    -1,    -1,    -1,    -1, +      -1,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    40,    41,    42,    -1,    -1,    45,    -1, +      -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    55,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1, +      -1,    -1,    69,    -1,    -1,    -1,    73,    -1,    -1,    76, +      77,    -1,    -1,    -1,    81,    82,    12,    13,    14,    15, +      -1,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1, +      -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    40,    41,    42,    -1,    -1,    45, +      -1,    -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    55, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1, +      -1,    -1,    -1,    69,    -1,    -1,    -1,    73,    -1,    -1, +      76,    77,    12,    13,    14,    15,    82,    17,    18,    19, +      20,    21,    22,    -1,    -1,    -1,    44,    -1,    28,    -1, +      30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    56,    57, +      40,    -1,    42,    61,    62,    63,    -1,    65,    66,    67, +      68,    51,    52,    -1,    -1,    55,    74,    75,    76,    77, +      78,    79,    -1,    -1,    64,    -1,    84,    85,    -1,    69, +      -1,    -1,    -1,    73,    -1,    -1,    76,    77,    12,    13, +      14,    15,    82,    17,    -1,    -1,    -1,    21,    22,    -1, +      -1,    -1,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1, +      34,    -1,    36,    37,    38,    39,    40,    -1,    42,    -1, +      12,    13,    14,    15,    -1,    17,    -1,    -1,    -1,    21, +      22,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,    -1, +      64,    -1,    -1,    -1,    36,    69,    38,    -1,    40,    -1, +      42,    -1,    76,    77,    -1,    -1,    -1,    -1,    82,    -1, +      -1,    53,    -1,    -1,    12,    13,    14,    15,    -1,    17, +      -1,    -1,    64,    21,    22,    -1,    -1,    69,    12,    13, +      14,    15,    -1,    17,    76,    77,    -1,    21,    22,    -1, +      82,    -1,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    42,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    64,    33,    -1,    -1, +      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77, +      64,    -1,    -1,    -1,    82,    69,    -1,    -1,    -1,    -1, +      56,    57,    76,    77,    -1,    61,    62,    63,    82,    65, +      66,    67,    68,    -1,    -1,    46,    -1,    -1,    -1,    75, +      76,    77,    78,    79,    -1,    56,    57,    -1,    84,    85,        61,    62,    63,    -1,    65,    66,    67,    68,    -1,    -1,        -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,        56,    57,    -1,    84,    85,    61,    62,    63,    -1,    65, @@ -1031,10 +1037,7 @@ static const yytype_int16 yycheck[] =        -1,    -1,    -1,    74,    75,    76,    77,    78,    79,    -1,        56,    57,    -1,    84,    85,    61,    62,    63,    -1,    65,        66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75, -      76,    77,    78,    79,    -1,    56,    57,    -1,    84,    85, -      61,    62,    63,    -1,    65,    66,    67,    68,    -1,    -1, -      -1,    -1,    -1,    -1,    75,    -1,    -1,    78,    79,    -1, -      -1,    82,    -1,    84,    85 +      76,    77,    78,    79,    -1,    -1,    -1,    -1,    84,    85  };  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1045,31 +1048,31 @@ static const yytype_uint8 yystos[] =        21,    22,    28,    30,    31,    32,    35,    40,    41,    42,        45,    49,    50,    51,    52,    55,    64,    69,    72,    73,        76,    77,    82,    88,    90,    91,    92,    93,    94,   101, -     102,   103,   108,   109,   110,   113,   116,   117,   123,    81, -      89,    21,    40,    91,   109,   109,   109,   109,   124,    82, +     102,   103,   108,   109,   110,   113,   116,   117,   124,    81, +      89,    21,    40,    91,   109,   109,   109,   109,   125,    82,       105,    41,    21,   111,    29,    34,    36,    37,    38,    39,       109,   114,   115,    21,   109,    46,    47,    13,    14,    21,        21,    21,    21,   109,    53,   114,   115,    21,   112,   109,       109,    21,    21,   109,   109,   109,     0,    89,    82,    74,        82,   100,   109,   109,    56,    57,    61,    62,    63,    65,        66,    67,    68,    75,    76,    77,    78,    79,    84,    85, -     109,    86,   124,   124,    86,   109,   109,    36,   115,   118, +     109,    86,   125,   125,    86,   109,   109,    36,   115,   118,        33,    21,    44,    74,   109,    44,    74,    43,   119,    46, -     115,    86,    70,    71,   120,   124,    83,    90,   100,   109, +     115,    86,    70,    71,   120,   125,    83,    90,   100,   109,       100,   109,    43,    74,   106,   109,   109,   109,   109,   109,       109,   109,   109,   109,   109,   109,   109,   109,   109,   109,       109,   109,    83,    21,   109,   105,    21,   109,   109,    44,        74,   109,   109,   105,   109,    21,   109,   109,   105,    83, -     106,    83,    89,   105,   109,    21,   121,   109,   109,   121, +     106,    83,    89,   105,   109,    21,   122,   109,   109,   122,       121,   107,    24,    44,   107,    92,   110,    86,    89,    89, -      89,    89,    93,   106,    44,   109,   106,   106,    21,    86, -     122,   122,   122,    27,   109,   106,    27,    48,   105,    26, -      48,    97,    98,   104,    21,   107,   107,   107,    41,   106, +     122,    89,    93,   106,    44,   109,   106,   106,    21,    86, +     123,   123,    89,    27,   109,   106,    27,    48,   105,    26, +      48,    97,    98,   104,    21,   107,   107,   123,    41,   106,       107,    32,   107,    96,    97,    99,   104,   105,    98,   106, -     100,    27,   107,   106,   106,    99,   106,   100,    92,    48, -      95,    43,    21,   106,    27,    27,    27,    43,   106,   105, -     106,   105,    27,    41,    32,    32,   107,    92,    93,    41, -     106,   106 +     100,   107,   107,   106,   106,    99,   106,   100,    92,    48, +      95,    43,    27,   106,    27,    27,    27,    43,   106,   105, +     106,   105,    21,    27,    41,    32,    32,   107,    92,    93, +      41,   106,   106  };  #define yyerrok		(yyerrstatus = 0) @@ -2564,45 +2567,51 @@ yyreduce:    case 124:  #line 524 "engines/director/lingo/lingo-gr.y" +    { g_lingo->_ignoreMe = true; ;} +    break; + +  case 125: +#line 524 "engines/director/lingo/lingo-gr.y"      {  				g_lingo->codeConst(0); // Push fake value on stack  				g_lingo->code1(g_lingo->c_procret); -				g_lingo->define(*(yyvsp[(2) - (10)].s), (yyvsp[(4) - (10)].code), (yyvsp[(5) - (10)].narg)); +				g_lingo->define(*(yyvsp[(2) - (11)].s), (yyvsp[(4) - (11)].code), (yyvsp[(6) - (11)].narg));  				g_lingo->_indef = false; +				g_lingo->_ignoreMe = false; -				if (*(yyvsp[(2) - (10)].s) != *(yyvsp[(10) - (10)].s)) { +				if (*(yyvsp[(2) - (11)].s) != *(yyvsp[(11) - (11)].s)) {  					yyerror("on vs end handler mismatch");  				}  			;}      break; -  case 125: -#line 535 "engines/director/lingo/lingo-gr.y" -    { (yyval.narg) = 0; ;} -    break; -    case 126:  #line 536 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;} +    { (yyval.narg) = 0; ;}      break;    case 127:  #line 537 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} +    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}      break;    case 128:  #line 538 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;} +    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}      break;    case 129: -#line 540 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeArgStore(); ;} +#line 539 "engines/director/lingo/lingo-gr.y" +    { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}      break;    case 130: -#line 544 "engines/director/lingo/lingo-gr.y" +#line 541 "engines/director/lingo/lingo-gr.y" +    { g_lingo->codeArgStore(); ;} +    break; + +  case 131: +#line 545 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_call);  		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str()); @@ -2611,24 +2620,24 @@ yyreduce:  		g_lingo->code1(numpar); ;}      break; -  case 131: -#line 552 "engines/director/lingo/lingo-gr.y" -    { (yyval.narg) = 0; ;} -    break; -    case 132:  #line 553 "engines/director/lingo/lingo-gr.y" -    { (yyval.narg) = 1; ;} +    { (yyval.narg) = 0; ;}      break;    case 133:  #line 554 "engines/director/lingo/lingo-gr.y" +    { (yyval.narg) = 1; ;} +    break; + +  case 134: +#line 555 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}      break;  /* Line 1267 of yacc.c.  */ -#line 2632 "engines/director/lingo/lingo-gr.cpp" +#line 2641 "engines/director/lingo/lingo-gr.cpp"        default: break;      }    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2842,6 +2851,6 @@ yyreturn:  } -#line 557 "engines/director/lingo/lingo-gr.y" +#line 558 "engines/director/lingo/lingo-gr.y" diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index b10ef7570f..4b5f7f41ac 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -521,13 +521,14 @@ defn: tMACRO ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }  			g_lingo->define(*$2, $4, $5 + 1, &g_lingo->_currentFactory);  			g_lingo->_indef = false; }	;  	| tON ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); } -		begin argdef nl argstore stmtlist tEND ID	{ +		begin { g_lingo->_ignoreMe = true; } argdef nl argstore stmtlist tEND ID	{  				g_lingo->codeConst(0); // Push fake value on stack  				g_lingo->code1(g_lingo->c_procret); -				g_lingo->define(*$2, $4, $5); +				g_lingo->define(*$2, $4, $6);  				g_lingo->_indef = false; +				g_lingo->_ignoreMe = false; -				if (*$2 != *$10) { +				if (*$2 != *$11) {  					yyerror("on vs end handler mismatch");  				}  			} diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index e1f861fdaf..dea14757f4 100644 --- a/engines/director/lingo/lingo-lex.cpp +++ b/engines/director/lingo/lingo-lex.cpp @@ -1316,6 +1316,9 @@ YY_RULE_SETUP  		count();  		yylval.s = new Common::String(yytext); +		if (g_lingo->_ignoreMe && yylval.s->equalsIgnoreCase("me")) +			return ID; +  		if (g_lingo->_handlers.contains(yytext)) {  			if (g_lingo->_handlers[yytext]->type == BLTIN && g_lingo->_handlers[yytext]->parens == false) {  				if (g_lingo->_handlers[yytext]->nargs == 0) { @@ -1341,41 +1344,41 @@ YY_RULE_SETUP  	YY_BREAK  case 55:  YY_RULE_SETUP -#line 217 "engines/director/lingo/lingo-lex.l" +#line 220 "engines/director/lingo/lingo-lex.l"  { count(); yylval.f = atof(yytext); return FLOAT; }  	YY_BREAK  case 56:  YY_RULE_SETUP -#line 218 "engines/director/lingo/lingo-lex.l" +#line 221 "engines/director/lingo/lingo-lex.l"  { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }  	YY_BREAK  case 57:  YY_RULE_SETUP -#line 219 "engines/director/lingo/lingo-lex.l" +#line 222 "engines/director/lingo/lingo-lex.l"  { count(); return *yytext; }  	YY_BREAK  case 58:  /* rule 58 can match eol */  YY_RULE_SETUP -#line 220 "engines/director/lingo/lingo-lex.l" +#line 223 "engines/director/lingo/lingo-lex.l"  { return '\n'; }  	YY_BREAK  case 59:  YY_RULE_SETUP -#line 221 "engines/director/lingo/lingo-lex.l" +#line 224 "engines/director/lingo/lingo-lex.l"  { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }  	YY_BREAK  case 60:  YY_RULE_SETUP -#line 222 "engines/director/lingo/lingo-lex.l" +#line 225 "engines/director/lingo/lingo-lex.l"  	YY_BREAK  case 61:  YY_RULE_SETUP -#line 224 "engines/director/lingo/lingo-lex.l" +#line 227 "engines/director/lingo/lingo-lex.l"  ECHO;  	YY_BREAK -#line 1379 "engines/director/lingo/lingo-lex.cpp" +#line 1382 "engines/director/lingo/lingo-lex.cpp"  case YY_STATE_EOF(INITIAL):  	yyterminate(); @@ -2375,7 +2378,7 @@ void yyfree (void * ptr )  #define YYTABLES_NAME "yytables" -#line 224 "engines/director/lingo/lingo-lex.l" +#line 227 "engines/director/lingo/lingo-lex.l" diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index aa0aa7e8c8..25fde2a371 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -192,6 +192,9 @@ whitespace [\t ]  		count();  		yylval.s = new Common::String(yytext); +		if (g_lingo->_ignoreMe && yylval.s->equalsIgnoreCase("me")) +			return ID; +  		if (g_lingo->_handlers.contains(yytext)) {  			if (g_lingo->_handlers[yytext]->type == BLTIN && g_lingo->_handlers[yytext]->parens == false) {  				if (g_lingo->_handlers[yytext]->nargs == 0) { diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp index 9c6b586234..5eb687fe99 100644 --- a/engines/director/lingo/lingo.cpp +++ b/engines/director/lingo/lingo.cpp @@ -98,6 +98,7 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {  	_pc = 0;  	_returning = false;  	_indef = false; +	_ignoreMe = false;  	_linenumber = _colnumber = 0; diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 67ab57ae22..0ed69de587 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -421,6 +421,7 @@ public:  	ScriptType _currentScriptType;  	bool _returning;  	bool _indef; +	bool _ignoreMe;  	Common::Array<CFrame *> _callstack;  	Common::Array<Common::String *> _argstack;  | 
