diff options
| author | Eugene Sandulenko | 2016-08-04 22:26:04 +0200 | 
|---|---|---|
| committer | Eugene Sandulenko | 2016-08-04 23:00:55 +0200 | 
| commit | 7ec2e7bc31bbc6a916586c5aa0eecae98559eee4 (patch) | |
| tree | 1b620f288776a22b8fabc97bb582d36b668e9c64 | |
| parent | 12d1af66ef6d579141320017866ed7737b2b4c2e (diff) | |
| download | scummvm-rg350-7ec2e7bc31bbc6a916586c5aa0eecae98559eee4.tar.gz scummvm-rg350-7ec2e7bc31bbc6a916586c5aa0eecae98559eee4.tar.bz2 scummvm-rg350-7ec2e7bc31bbc6a916586c5aa0eecae98559eee4.zip | |
DIRECTOR: Lingo: Added 'alert' and 'beep' function stubs
| -rw-r--r-- | engines/director/lingo/lingo-code.cpp | 15 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-funcs.cpp | 8 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.cpp | 843 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.h | 66 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.y | 15 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-lex.cpp | 514 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-lex.l | 2 | ||||
| -rw-r--r-- | engines/director/lingo/lingo.h | 5 | 
8 files changed, 791 insertions, 677 deletions
| diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index b0099dc1b9..d529290b93 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -688,6 +688,21 @@ void Lingo::c_gotoprevious() {  	g_lingo->func_gotoprevious();  } +void Lingo::c_alert() { +	Datum d = g_lingo->pop(); + +	d.toString(); + +	g_lingo->func_alert(*d.u.s); + +	delete d.u.s; +} + +void Lingo::c_beep() { +	Datum d = g_lingo->pop(); +	g_lingo->func_beep(d.u.i); +} +  void Lingo::c_call() {  	Common::String name((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);  	g_lingo->_pc += g_lingo->calcStringAlignment(name.c_str()); diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp index 08b3d455ca..4f48689e34 100644 --- a/engines/director/lingo/lingo-funcs.cpp +++ b/engines/director/lingo/lingo-funcs.cpp @@ -222,4 +222,12 @@ void Lingo::func_gotoprevious() {  	_vm->_currentScore->gotoprevious();  } +void Lingo::func_alert(Common::String &s) { +	warning("STUB: func_alert(%s)", s.c_str()); +} + +void Lingo::func_beep(int num) { +	warning("STUB: func_beep(%d)", num); +} +  } diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index ce6e11b295..d776d4a32d 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -112,21 +112,23 @@       tNLELSE = 301,       tFACTORY = 302,       tMETHOD = 303, -     tGE = 304, -     tLE = 305, -     tGT = 306, -     tLT = 307, -     tEQ = 308, -     tNEQ = 309, -     tAND = 310, -     tOR = 311, -     tNOT = 312, -     tCONCAT = 313, -     tCONTAINS = 314, -     tSTARTS = 315, -     tSPRITE = 316, -     tINTERSECTS = 317, -     tWITHIN = 318 +     tALERT = 304, +     tBEEP = 305, +     tGE = 306, +     tLE = 307, +     tGT = 308, +     tLT = 309, +     tEQ = 310, +     tNEQ = 311, +     tAND = 312, +     tOR = 313, +     tNOT = 314, +     tCONCAT = 315, +     tCONTAINS = 316, +     tSTARTS = 317, +     tSPRITE = 318, +     tINTERSECTS = 319, +     tWITHIN = 320     };  #endif  /* Tokens.  */ @@ -176,21 +178,23 @@  #define tNLELSE 301  #define tFACTORY 302  #define tMETHOD 303 -#define tGE 304 -#define tLE 305 -#define tGT 306 -#define tLT 307 -#define tEQ 308 -#define tNEQ 309 -#define tAND 310 -#define tOR 311 -#define tNOT 312 -#define tCONCAT 313 -#define tCONTAINS 314 -#define tSTARTS 315 -#define tSPRITE 316 -#define tINTERSECTS 317 -#define tWITHIN 318 +#define tALERT 304 +#define tBEEP 305 +#define tGE 306 +#define tLE 307 +#define tGT 308 +#define tLT 309 +#define tEQ 310 +#define tNEQ 311 +#define tAND 312 +#define tOR 313 +#define tNOT 314 +#define tCONCAT 315 +#define tCONTAINS 316 +#define tSTARTS 317 +#define tSPRITE 318 +#define tINTERSECTS 319 +#define tWITHIN 320 @@ -248,7 +252,7 @@ typedef union YYSTYPE  	Common::Array<double> *arr;  }  /* Line 193 of yacc.c.  */ -#line 252 "engines/director/lingo/lingo-gr.cpp" +#line 256 "engines/director/lingo/lingo-gr.cpp"  	YYSTYPE;  # define yystype YYSTYPE /* obsolescent; will be withdrawn */  # define YYSTYPE_IS_DECLARED 1 @@ -261,7 +265,7 @@ typedef union YYSTYPE  /* Line 216 of yacc.c.  */ -#line 265 "engines/director/lingo/lingo-gr.cpp" +#line 269 "engines/director/lingo/lingo-gr.cpp"  #ifdef short  # undef short @@ -474,22 +478,22 @@ union yyalloc  #endif  /* YYFINAL -- State number of the termination state.  */ -#define YYFINAL  77 +#define YYFINAL  81  /* YYLAST -- Last index in YYTABLE.  */ -#define YYLAST   719 +#define YYLAST   785  /* YYNTOKENS -- Number of terminals.  */ -#define YYNTOKENS  77 +#define YYNTOKENS  79  /* YYNNTS -- Number of nonterminals.  */  #define YYNNTS  34  /* YYNRULES -- Number of rules.  */ -#define YYNRULES  118 +#define YYNRULES  121  /* YYNRULES -- Number of states.  */ -#define YYNSTATES  254 +#define YYNSTATES  258  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */  #define YYUNDEFTOK  2 -#define YYMAXUTOK   318 +#define YYMAXUTOK   320  #define YYTRANSLATE(YYX)						\    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -498,12 +502,12 @@ union yyalloc  static const yytype_uint8 yytranslate[] =  {         0,     2,     2,     2,     2,     2,     2,     2,     2,     2, -      70,     2,     2,     2,     2,     2,     2,     2,     2,     2, +      72,     2,     2,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2, -       2,     2,     2,     2,     2,     2,     2,    69,    75,     2, -      71,    72,    67,    65,    76,    66,     2,    68,     2,     2, +       2,     2,     2,     2,     2,     2,     2,    71,    77,     2, +      73,    74,    69,    67,    78,    68,     2,    70,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2, -      74,    64,    73,     2,     2,     2,     2,     2,     2,     2, +      76,    66,    75,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2, @@ -528,7 +532,8 @@ static const yytype_uint8 yytranslate[] =        25,    26,    27,    28,    29,    30,    31,    32,    33,    34,        35,    36,    37,    38,    39,    40,    41,    42,    43,    44,        45,    46,    47,    48,    49,    50,    51,    52,    53,    54, -      55,    56,    57,    58,    59,    60,    61,    62,    63 +      55,    56,    57,    58,    59,    60,    61,    62,    63,    64, +      65  };  #if YYDEBUG @@ -545,59 +550,61 @@ static const yytype_uint16 yyprhs[] =       246,   248,   251,   253,   257,   261,   265,   269,   273,   277,       281,   285,   289,   293,   297,   300,   304,   308,   312,   316,       319,   322,   326,   331,   336,   339,   342,   345,   347,   349, -     352,   354,   358,   361,   364,   367,   370,   374,   377,   381, -     384,   387,   389,   393,   396,   400,   401,   410,   413,   414, -     423,   424,   426,   430,   435,   436,   440,   441,   443 +     352,   355,   358,   360,   362,   366,   369,   372,   375,   378, +     382,   385,   389,   392,   395,   397,   401,   404,   408,   409, +     418,   421,   422,   431,   432,   434,   438,   443,   444,   448, +     449,   451  };  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */  static const yytype_int8 yyrhs[] =  { -      78,     0,    -1,    78,    79,    80,    -1,    80,    -1,     1, -      70,    -1,    70,    -1,    -1,   104,    -1,    99,    -1,   109, -      -1,    81,    -1,    83,    -1,    38,    98,    29,    19,    -1, -      40,    19,    64,    98,    -1,    40,    12,    64,    98,    -1, -      40,    13,    98,    64,    98,    -1,    40,    19,    42,    98, -      -1,    40,    12,    42,    98,    -1,    40,    13,    98,    42, -      98,    -1,    98,    -1,    99,    -1,    82,    -1,    84,    -1, -      91,    71,    90,    72,    97,    96,    23,    39,    -1,    92, -      64,    98,    96,    42,    98,    96,    97,    96,    23,    39, -      -1,    92,    64,    98,    96,    20,    42,    98,    96,    97, -      96,    23,    39,    -1,    43,    19,    41,    98,    -1,    93, -      90,    41,    79,    97,    96,    23,    28,    -1,    93,    90, -      41,    79,    97,    96,    46,    97,    96,    23,    28,    -1, -      93,    90,    41,    79,    97,    96,    95,    86,    96,    23, -      28,    -1,    93,    90,    41,    95,    82,    96,    -1,    93, -      90,    41,    95,    82,    96,    46,    95,    82,    96,    -1, -      93,    90,    41,    95,    82,    96,    87,    96,    85,    96, -      -1,    -1,    46,    95,    82,    -1,    86,    89,    -1,    89, -      -1,    87,    88,    -1,    88,    -1,    94,    90,    41,    95, -      83,    96,    -1,    87,    -1,    94,    90,    41,    97,    96, -      -1,    98,    -1,    98,    64,    98,    -1,    71,    90,    72, +      80,     0,    -1,    80,    81,    82,    -1,    82,    -1,     1, +      72,    -1,    72,    -1,    -1,   106,    -1,   101,    -1,   111, +      -1,    83,    -1,    85,    -1,    38,   100,    29,    19,    -1, +      40,    19,    66,   100,    -1,    40,    12,    66,   100,    -1, +      40,    13,   100,    66,   100,    -1,    40,    19,    42,   100, +      -1,    40,    12,    42,   100,    -1,    40,    13,   100,    42, +     100,    -1,   100,    -1,   101,    -1,    84,    -1,    86,    -1, +      93,    73,    92,    74,    99,    98,    23,    39,    -1,    94, +      66,   100,    98,    42,   100,    98,    99,    98,    23,    39, +      -1,    94,    66,   100,    98,    20,    42,   100,    98,    99, +      98,    23,    39,    -1,    43,    19,    41,   100,    -1,    95, +      92,    41,    81,    99,    98,    23,    28,    -1,    95,    92, +      41,    81,    99,    98,    46,    99,    98,    23,    28,    -1, +      95,    92,    41,    81,    99,    98,    97,    88,    98,    23, +      28,    -1,    95,    92,    41,    97,    84,    98,    -1,    95, +      92,    41,    97,    84,    98,    46,    97,    84,    98,    -1, +      95,    92,    41,    97,    84,    98,    89,    98,    87,    98, +      -1,    -1,    46,    97,    84,    -1,    88,    91,    -1,    91, +      -1,    89,    90,    -1,    90,    -1,    96,    92,    41,    97, +      85,    98,    -1,    89,    -1,    96,    92,    41,    99,    98, +      -1,   100,    -1,   100,    66,   100,    -1,    73,    92,    74,        -1,    39,    45,    -1,    39,    44,    19,    -1,    28,    -1, -      22,    -1,    -1,    -1,    -1,    97,    79,    -1,    97,    83, +      22,    -1,    -1,    -1,    -1,    99,    81,    -1,    99,    85,        -1,    11,    -1,    14,    -1,    17,    -1,    16,    -1,    19, -      71,   110,    72,    -1,    19,    -1,    12,    -1,    13,    98, -      -1,    81,    -1,    98,    65,    98,    -1,    98,    66,    98, -      -1,    98,    67,    98,    -1,    98,    68,    98,    -1,    98, -      73,    98,    -1,    98,    74,    98,    -1,    98,    54,    98, -      -1,    98,    49,    98,    -1,    98,    50,    98,    -1,    98, -      55,    98,    -1,    98,    56,    98,    -1,    57,    98,    -1, -      98,    75,    98,    -1,    98,    58,    98,    -1,    98,    59, -      98,    -1,    98,    60,    98,    -1,    65,    98,    -1,    66, -      98,    -1,    71,    98,    72,    -1,    61,    98,    62,    98, -      -1,    61,    98,    63,    98,    -1,    32,    17,    -1,    33, -      19,    -1,    38,    98,    -1,   101,    -1,    24,    -1,    26, -     100,    -1,    19,    -1,   100,    76,    19,    -1,    27,    30, -      -1,    27,    35,    -1,    27,    37,    -1,    27,   102,    -1, -      27,   102,   103,    -1,    27,   103,    -1,    42,    25,    17, -      -1,    25,    17,    -1,    42,    17,    -1,    17,    -1,    36, -      34,    17,    -1,    34,    17,    -1,    42,    34,    17,    -1, -      -1,    31,    19,   105,    95,   107,    79,   108,    97,    -1, -      47,    19,    -1,    -1,    48,    19,   106,    95,   107,    79, -     108,    97,    -1,    -1,    19,    -1,   107,    76,    19,    -1, -     107,    79,    76,    19,    -1,    -1,    19,    95,   110,    -1, -      -1,    98,    -1,   110,    76,    98,    -1 +      73,   112,    74,    -1,    19,    -1,    12,    -1,    13,   100, +      -1,    83,    -1,   100,    67,   100,    -1,   100,    68,   100, +      -1,   100,    69,   100,    -1,   100,    70,   100,    -1,   100, +      75,   100,    -1,   100,    76,   100,    -1,   100,    56,   100, +      -1,   100,    51,   100,    -1,   100,    52,   100,    -1,   100, +      57,   100,    -1,   100,    58,   100,    -1,    59,   100,    -1, +     100,    77,   100,    -1,   100,    60,   100,    -1,   100,    61, +     100,    -1,   100,    62,   100,    -1,    67,   100,    -1,    68, +     100,    -1,    73,   100,    74,    -1,    63,   100,    64,   100, +      -1,    63,   100,    65,   100,    -1,    32,    17,    -1,    33, +      19,    -1,    38,   100,    -1,   103,    -1,    24,    -1,    26, +     102,    -1,    49,   100,    -1,    50,    11,    -1,    50,    -1, +      19,    -1,   102,    78,    19,    -1,    27,    30,    -1,    27, +      35,    -1,    27,    37,    -1,    27,   104,    -1,    27,   104, +     105,    -1,    27,   105,    -1,    42,    25,    17,    -1,    25, +      17,    -1,    42,    17,    -1,    17,    -1,    36,    34,    17, +      -1,    34,    17,    -1,    42,    34,    17,    -1,    -1,    31, +      19,   107,    97,   109,    81,   110,    99,    -1,    47,    19, +      -1,    -1,    48,    19,   108,    97,   109,    81,   110,    99, +      -1,    -1,    19,    -1,   109,    78,    19,    -1,   109,    81, +      78,    19,    -1,    -1,    19,    97,   112,    -1,    -1,   100, +      -1,   112,    78,   100,    -1  };  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ @@ -612,9 +619,10 @@ static const yytype_uint16 yyrline[] =       367,   374,   380,   381,   382,   383,   384,   385,   386,   387,       388,   389,   390,   391,   392,   393,   394,   395,   396,   397,       398,   399,   400,   401,   404,   405,   406,   407,   408,   410, -     413,   414,   425,   426,   427,   428,   433,   439,   446,   447, -     448,   449,   452,   453,   454,   482,   482,   488,   491,   491, -     497,   498,   499,   500,   502,   506,   514,   515,   516 +     411,   412,   418,   426,   427,   438,   439,   440,   441,   446, +     452,   459,   460,   461,   462,   465,   466,   467,   495,   495, +     501,   504,   504,   510,   511,   512,   513,   515,   519,   527, +     528,   529  };  #endif @@ -630,11 +638,11 @@ static const char *const yytname[] =    "tFRAME", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMCI",    "tMCIWAIT", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT",    "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE", -  "tFACTORY", "tMETHOD", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ", "tAND", -  "tOR", "tNOT", "tCONCAT", "tCONTAINS", "tSTARTS", "tSPRITE", -  "tINTERSECTS", "tWITHIN", "'='", "'+'", "'-'", "'*'", "'/'", "'%'", -  "'\\n'", "'('", "')'", "'>'", "'<'", "'&'", "','", "$accept", "program", -  "nl", "programline", "asgn", "stmtoneliner", "stmt", "ifstmt", +  "tFACTORY", "tMETHOD", "tALERT", "tBEEP", "tGE", "tLE", "tGT", "tLT", +  "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tCONCAT", "tCONTAINS", "tSTARTS", +  "tSPRITE", "tINTERSECTS", "tWITHIN", "'='", "'+'", "'-'", "'*'", "'/'", +  "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "'&'", "','", "$accept", +  "program", "nl", "programline", "asgn", "stmtoneliner", "stmt", "ifstmt",    "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",    "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",    "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "expr", "func", @@ -654,26 +662,27 @@ static const yytype_uint16 yytoknum[] =       285,   286,   287,   288,   289,   290,   291,   292,   293,   294,       295,   296,   297,   298,   299,   300,   301,   302,   303,   304,       305,   306,   307,   308,   309,   310,   311,   312,   313,   314, -     315,   316,   317,   318,    61,    43,    45,    42,    47,    37, -      10,    40,    41,    62,    60,    38,    44 +     315,   316,   317,   318,   319,   320,    61,    43,    45,    42, +      47,    37,    10,    40,    41,    62,    60,    38,    44  };  # endif  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */  static const yytype_uint8 yyr1[] =  { -       0,    77,    78,    78,    78,    79,    80,    80,    80,    80, -      80,    80,    81,    81,    81,    81,    81,    81,    81,    82, -      82,    83,    83,    83,    83,    83,    83,    84,    84,    84, -      84,    84,    84,    85,    85,    86,    86,    87,    87,    88, -      89,    89,    90,    90,    90,    91,    92,    93,    94,    95, -      96,    97,    97,    97,    98,    98,    98,    98,    98,    98, -      98,    98,    98,    98,    98,    98,    98,    98,    98,    98, -      98,    98,    98,    98,    98,    98,    98,    98,    98,    98, -      98,    98,    98,    98,    99,    99,    99,    99,    99,    99, -     100,   100,   101,   101,   101,   101,   101,   101,   102,   102, -     102,   102,   103,   103,   103,   105,   104,   104,   106,   104, -     107,   107,   107,   107,   108,   109,   110,   110,   110 +       0,    79,    80,    80,    80,    81,    82,    82,    82,    82, +      82,    82,    83,    83,    83,    83,    83,    83,    83,    84, +      84,    85,    85,    85,    85,    85,    85,    86,    86,    86, +      86,    86,    86,    87,    87,    88,    88,    89,    89,    90, +      91,    91,    92,    92,    92,    93,    94,    95,    96,    97, +      98,    99,    99,    99,   100,   100,   100,   100,   100,   100, +     100,   100,   100,   100,   100,   100,   100,   100,   100,   100, +     100,   100,   100,   100,   100,   100,   100,   100,   100,   100, +     100,   100,   100,   100,   101,   101,   101,   101,   101,   101, +     101,   101,   101,   102,   102,   103,   103,   103,   103,   103, +     103,   104,   104,   104,   104,   105,   105,   105,   107,   106, +     106,   108,   106,   109,   109,   109,   109,   110,   111,   112, +     112,   112  };  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ @@ -688,9 +697,10 @@ static const yytype_uint8 yyr2[] =         1,     2,     1,     3,     3,     3,     3,     3,     3,     3,         3,     3,     3,     3,     2,     3,     3,     3,     3,     2,         2,     3,     4,     4,     2,     2,     2,     1,     1,     2, -       1,     3,     2,     2,     2,     2,     3,     2,     3,     2, -       2,     1,     3,     2,     3,     0,     8,     2,     0,     8, -       0,     1,     3,     4,     0,     3,     0,     1,     3 +       2,     2,     1,     1,     3,     2,     2,     2,     2,     3, +       2,     3,     2,     2,     1,     3,     2,     3,     0,     8, +       2,     0,     8,     0,     1,     3,     4,     0,     3,     0, +       1,     3  };  /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -700,81 +710,81 @@ static const yytype_uint8 yydefact[] =  {         0,     0,    54,    60,     0,    55,    57,    56,    49,    88,         0,     0,    47,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,     0,     0,     0,     0,     0,     3,    62, -      21,    11,    22,     0,     0,     0,    19,     8,    87,     7, -       9,     4,    59,     0,    62,    61,   116,   116,    90,    89, -     101,     0,    92,     0,    93,     0,    94,     0,    95,    97, -     105,    84,    85,    86,     0,    45,     0,     0,     0,     0, -     107,   108,    74,     0,    79,    80,     0,     1,     5,     6, -       0,     0,     0,     0,    42,     0,     0,     0,     0,     0, +       0,     0,     0,    92,     0,     0,     0,     0,     0,     0, +       3,    62,    21,    11,    22,     0,     0,     0,    19,     8, +      87,     7,     9,     4,    59,     0,    62,    61,   119,   119, +      93,    89,   104,     0,    95,     0,    96,     0,    97,     0, +      98,   100,   108,    84,    85,    86,     0,    45,     0,     0, +       0,     0,   110,   111,    90,    91,    74,     0,    79,    80, +       0,     1,     5,     6,     0,     0,     0,     0,    42,     0,         0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -       0,   117,     0,   115,     0,    99,   103,     0,   100,     0, -       0,     0,    96,    49,     0,    46,     0,     0,     0,     0, -       0,     0,    49,     0,     0,    81,     2,     0,    50,     0, -       0,    49,     0,    70,    71,    69,    72,    73,    76,    77, -      78,    63,    64,    65,    66,    67,    68,    75,    58,     0, -      91,   102,    98,   104,   110,    12,    17,    14,     0,     0, -      16,    13,    26,   110,    82,    83,    51,     0,    44,    51, -       0,    43,   118,   111,     0,    18,    15,     0,    50,     0, -       0,    50,    50,    20,     0,   114,   114,    52,    53,     0, -       0,    50,    49,    30,   112,     0,    51,    51,     0,    50, -      51,     0,    51,     0,    48,    49,    50,    38,     0,   113, -     106,   109,    23,    51,    50,    27,    50,    50,    40,    36, -       0,     0,    37,    33,     0,    50,     0,     0,    35,     0, -       0,    50,    49,    50,    49,     0,     0,     0,     0,    49, -      31,     0,    32,     0,     0,    24,    28,    29,    50,    34, -      50,    25,    41,    39 +       0,     0,     0,     0,     0,   120,     0,   118,     0,   102, +     106,     0,   103,     0,     0,     0,    99,    49,     0,    46, +       0,     0,     0,     0,     0,     0,    49,     0,     0,    81, +       2,     0,    50,     0,     0,    49,     0,    70,    71,    69, +      72,    73,    76,    77,    78,    63,    64,    65,    66,    67, +      68,    75,    58,     0,    94,   105,   101,   107,   113,    12, +      17,    14,     0,     0,    16,    13,    26,   113,    82,    83, +      51,     0,    44,    51,     0,    43,   121,   114,     0,    18, +      15,     0,    50,     0,     0,    50,    50,    20,     0,   117, +     117,    52,    53,     0,     0,    50,    49,    30,   115,     0, +      51,    51,     0,    50,    51,     0,    51,     0,    48,    49, +      50,    38,     0,   116,   109,   112,    23,    51,    50,    27, +      50,    50,    40,    36,     0,     0,    37,    33,     0,    50, +       0,     0,    35,     0,     0,    50,    49,    50,    49,     0, +       0,     0,     0,    49,    31,     0,    32,     0,     0,    24, +      28,    29,    50,    34,    50,    25,    41,    39  };  /* YYDEFGOTO[NTERM-NUM].  */  static const yytype_int16 yydefgoto[] =  { -      -1,    27,   187,    28,    44,    30,   188,    32,   233,   217, -     218,   207,   219,    83,    33,    34,    35,   208,   243,   167, -     178,    36,   183,    49,    38,    58,    59,    39,   113,   122, -     174,   196,    40,   102 +      -1,    29,   191,    30,    46,    32,   192,    34,   237,   221, +     222,   211,   223,    87,    35,    36,    37,   212,   247,   171, +     182,    38,   187,    51,    40,    60,    61,    41,   117,   126, +     178,   200,    42,   106  };  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing     STATE-NUM.  */ -#define YYPACT_NINF -187 +#define YYPACT_NINF -188  static const yytype_int16 yypact[] =  { -     188,   -39,  -187,  -187,   407,  -187,  -187,  -187,   617,  -187, -      40,   122,  -187,    43,    26,    48,   407,    28,    52,    49, -      51,    55,   407,   407,   407,   407,   407,    15,  -187,    33, -    -187,  -187,  -187,     4,    13,   439,   595,  -187,  -187,  -187, -    -187,  -187,    34,   407,  -187,   595,   407,   407,  -187,     5, -    -187,    91,  -187,    92,  -187,    76,  -187,    17,    24,  -187, -    -187,  -187,  -187,   453,    93,  -187,   -29,   407,   -23,    70, -    -187,  -187,   121,   497,   121,   121,   546,  -187,  -187,   249, -     439,   407,   439,    72,   573,   407,   407,   407,   407,   407, -     407,   407,   407,   407,   407,   407,   407,   407,   407,   407, -     453,   595,   -22,    38,    97,  -187,  -187,   100,  -187,   103, -     110,    94,  -187,  -187,   114,  -187,   407,   407,   475,   407, -     407,   407,  -187,   407,   407,  -187,  -187,    57,   595,    64, -     519,    68,   407,   595,   595,   595,   595,   595,   595,   595, -     595,   644,   644,   121,   121,   595,   595,   595,  -187,   407, -    -187,  -187,  -187,  -187,   124,  -187,   595,   595,   407,   407, -     595,   595,   595,   124,   595,   595,  -187,    10,  -187,  -187, -     377,   595,   595,  -187,   -54,   595,   595,   -54,   305,    98, -     407,   305,  -187,  -187,   125,    65,    65,  -187,  -187,   123, -     407,   595,    -6,    -8,  -187,   126,  -187,  -187,   115,   595, -    -187,   127,  -187,   140,  -187,  -187,   140,  -187,   439,  -187, -     305,   305,  -187,  -187,   305,  -187,   305,   140,   140,  -187, -     439,   377,  -187,   117,   108,   305,   142,   143,  -187,   144, -     128,  -187,  -187,  -187,  -187,   145,   133,   150,   155,   -13, -    -187,   377,  -187,   341,   134,  -187,  -187,  -187,   305,  -187, -    -187,  -187,  -187,  -187 +     192,   -51,  -188,  -188,   500,  -188,  -188,  -188,   668,  -188, +      36,   743,  -188,    39,    47,    46,   500,   -13,    44,    48, +      49,    50,   500,    55,   500,   500,   500,   500,   500,     4, +    -188,     8,  -188,  -188,  -188,    -3,     6,   517,   646,  -188, +    -188,  -188,  -188,  -188,     1,   500,  -188,   646,   500,   500, +    -188,    -5,  -188,    58,  -188,    60,  -188,    45,  -188,    19, +      18,  -188,  -188,  -188,  -188,   531,    59,  -188,   -33,   500, +     -31,    41,  -188,  -188,   646,  -188,   284,   575,   284,   284, +     597,  -188,  -188,   280,   517,   500,   517,    43,   624,   500, +     500,   500,   500,   500,   500,   500,   500,   500,   500,   500, +     500,   500,   500,   500,   531,   646,   -29,    11,    88,  -188, +    -188,    92,  -188,    94,    95,    79,  -188,  -188,    96,  -188, +     500,   500,   553,   500,   500,   500,  -188,   500,   500,  -188, +    -188,    40,   646,    42,   101,    52,   500,   646,   646,   646, +     646,   646,   646,   646,   646,   695,   695,   284,   284,   646, +     646,   646,  -188,   500,  -188,  -188,  -188,  -188,    98,  -188, +     646,   646,   500,   500,   646,   646,   646,    98,   646,   646, +    -188,    -1,  -188,  -188,   459,   646,   646,  -188,   -56,   646, +     646,   -56,   338,    76,   500,   338,  -188,  -188,   102,    54, +      54,  -188,  -188,    97,   500,   646,    -6,    -8,  -188,   114, +    -188,  -188,   100,   646,  -188,   106,  -188,   113,  -188,  -188, +     113,  -188,   517,  -188,   338,   338,  -188,  -188,   338,  -188, +     338,   113,   113,  -188,   517,   459,  -188,    90,    99,   338, +     118,   119,  -188,   121,   104,  -188,  -188,  -188,  -188,   123, +     108,   109,   120,   -10,  -188,   459,  -188,   401,   110,  -188, +    -188,  -188,   338,  -188,  -188,  -188,  -188,  -188  };  /* YYPGOTO[NTERM-NUM].  */  static const yytype_int16 yypgoto[] =  { -    -187,  -187,   -24,   105,     7,  -165,     0,  -187,  -187,  -187, -      -3,  -186,   -31,   -78,  -187,  -187,  -187,  -164,    -7,  -170, -     -65,     2,    23,  -187,  -187,  -187,   129,  -187,  -187,  -187, -      30,    11,  -187,   156 +    -188,  -188,   -27,    67,     7,  -164,     0,  -188,  -188,  -188, +     -41,  -185,   -61,   -81,  -188,  -188,  -188,  -187,    -7,    51, +    -158,     2,    23,  -188,  -188,  -188,   112,  -188,  -188,  -188, +      12,   -24,  -188,   124  };  /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If @@ -784,154 +794,168 @@ static const yytype_int16 yypgoto[] =  #define YYTABLE_NINF -60  static const yytype_int16 yytable[] =  { -      31,    47,   127,    79,   129,   182,    45,    29,   189,   -51, -     -51,   192,   193,   116,   204,    77,    78,   201,    63,   119, -     222,   200,   184,    37,    72,    73,    74,    75,    76,   213, -     179,    41,   222,   -10,   108,   117,   223,    84,   205,   220, -     202,   120,   109,    61,   226,   100,   227,   229,   101,   101, -     148,   110,   180,   220,   149,   235,   231,   -51,    53,    48, -      55,   240,    60,   242,    66,    67,   111,    62,    69,   118, -      70,    68,    64,    65,    71,    80,   249,    81,   252,    31, -     253,   104,    84,   128,   130,    78,    29,   133,   134,   135, -     136,   137,   138,   139,   140,   141,   142,   143,   144,   145, -     146,   147,    37,   -10,   181,    46,   154,   169,   105,   106, -     107,   121,   115,   131,   149,   163,   150,   151,   156,   157, -     152,   160,   161,   162,   170,   164,   165,   153,   110,   166, -     224,   210,   211,   155,   171,   214,   168,   216,    78,    50, -     190,   195,   230,   173,   194,   209,   198,    51,   225,   234, -     185,   172,    52,   186,   212,   215,    53,    54,    55,    56, -     175,   176,   204,   232,    57,   236,   237,   238,   244,   239, -      85,    86,   245,   251,   248,    87,    88,    89,   246,    90, -      91,    92,   191,   247,   126,   203,   228,   112,    -6,     1, -     206,     0,   199,   177,    97,    98,    99,   197,   221,     2, -       3,     4,     5,   103,     6,     7,     0,     8,     0,     0, -      84,     0,     9,     0,    10,    11,    12,     0,     0,    13, -      14,    15,    84,     0,     0,   241,    16,    17,    18,     0, -       0,    19,     0,     0,     0,    20,    21,     0,     0,     0, -       0,     0,     0,   250,     0,    22,     0,     0,     0,    23, -       0,     0,     0,    24,    25,     0,     0,     0,    -6,    26, -       2,     3,     4,     5,     0,     6,     7,     0,     8,     0, -       0,     0,     0,     9,     0,    10,    11,    12,     0,     0, -      13,    14,    15,     0,     0,     0,     0,    16,    17,    18, -       0,     0,    19,     0,     0,     0,    20,    21,     0,     0, -       0,     0,     0,     0,     0,     0,    22,     0,     0,     0, -      23,     0,     0,     0,    24,    25,     2,     3,     4,     5, -      26,     6,     7,     0,    42,     0,     0,     0,     0,     9, -       0,    10,    11,    12,     0,     0,     0,    14,    15,     0, -       0,     0,     0,    16,    17,    18,     0,     0,    19,     0, -       0,     0,     2,     3,     4,     5,     0,     6,     7,     0, -      42,     0,    22,     0,     0,     9,    23,    10,    11,    12, -      24,    25,     0,    14,    15,    78,    26,     0,     0,    16, -      17,    18,     0,     0,    19,     0,     0,     0,     2,     3, -       4,     5,     0,     6,     7,     0,    42,     0,    22,     0, -       0,     9,    23,    10,    11,     0,    24,    25,     0,    14, -      15,     0,    26,     0,     0,    16,     0,    18,     2,     3, -       4,     5,     0,     6,     7,     0,    42,     0,     0,     0, -       0,     0,     0,     0,    22,     0,     0,     0,    23,     0, -       0,     0,    24,    25,     0,    43,     0,    18,    26,     0, -       2,     3,     4,     5,     0,     6,     7,     0,    42,     0, -       0,     0,     0,     0,    22,     0,     0,     0,    23,     0, -       0,     0,    24,    25,     0,     0,     0,    43,    26,    18, -       0,     0,   114,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,     0,     0,     0,    22,     0,     0,     0, -      23,     0,    85,    86,    24,    25,     0,    87,    88,    89, -      82,    90,    91,    92,     0,     0,     0,   158,    93,    94, -      95,    96,     0,     0,    85,    86,    97,    98,    99,    87, -      88,    89,     0,    90,    91,    92,     0,     0,     0,   159, -      93,    94,    95,    96,     0,     0,    85,    86,    97,    98, -      99,    87,    88,    89,     0,    90,    91,    92,     0,   123, -     124,     0,    93,    94,    95,    96,     0,     0,    85,    86, -      97,    98,    99,    87,    88,    89,     0,    90,    91,    92, -       0,     0,     0,   132,    93,    94,    95,    96,     0,     0, -       0,   125,    97,    98,    99,    85,    86,     0,     0,     0, -      87,    88,    89,     0,    90,    91,    92,     0,     0,     0, -       0,    93,    94,    95,    96,     0,     0,     0,   125,    97, -      98,    99,    85,    86,     0,     0,     0,    87,    88,    89, -       0,    90,    91,    92,     0,     0,     0,   132,    93,    94, -      95,    96,     0,     0,    85,    86,    97,    98,    99,    87, -      88,    89,     0,    90,    91,    92,     0,     0,     0,     0, -      93,    94,    95,    96,     0,     0,   -59,   -59,    97,    98, -      99,   -59,   -59,   -59,     0,   -59,   -59,   -59,     0,     0, -       0,     0,     0,     0,   -59,   -59,     0,     0,    46,     0, -     -59,   -59,   -59,    85,    86,     0,     0,     0,    87,    88, -      89,     0,    90,    91,    92,     0,     0,     0,     0,     0, -       0,    95,    96,     0,     0,     0,     0,    97,    98,    99 +      33,    49,    83,   131,    81,   133,    47,    31,   -10,   120, +     186,   123,   -51,   -51,   208,   185,    82,   205,    65,   183, +     224,    43,   188,    39,    74,   226,    76,    77,    78,    79, +      80,    66,    67,   121,   224,   124,   112,   226,   209,    88, +     206,   184,   214,   215,   113,   152,   218,   104,   220,   153, +     105,   105,    55,   114,    57,    50,    68,    69,    62,   229, +     115,   235,   -51,    70,    63,    64,    75,    71,    72,    73, +      84,   122,    85,   108,    48,   109,    82,   110,   119,   111, +     -10,   253,   125,    33,   135,   252,    88,   132,   134,   153, +      31,   137,   138,   139,   140,   141,   142,   143,   144,   145, +     146,   147,   148,   149,   150,   151,    39,   154,   173,   155, +     158,   156,   157,   114,   170,   159,   172,   177,   194,   167, +     202,   198,   160,   161,    82,   164,   165,   166,   174,   168, +     169,   228,   199,   213,   219,   208,   236,   250,   175,   216, +     238,   240,   241,   234,   242,   243,   248,   249,   251,   255, +     130,   189,    89,    90,   190,   176,   210,    91,    92,    93, +     232,    94,    95,    96,   179,   180,   201,   136,    97,    98, +      99,   100,   116,   107,     0,   129,   101,   102,   103,   181, +       0,     0,     0,     0,     0,     0,   195,     0,     0,   207, +       0,     0,    -6,     1,     0,     0,   203,     0,     0,     0, +       0,     0,   225,     2,     3,     4,     5,     0,     6,     7, +       0,     8,     0,     0,    88,     0,     9,     0,    10,    11, +      12,     0,     0,    13,    14,    15,    88,     0,     0,   245, +      16,    17,    18,   193,     0,    19,   196,   197,     0,    20, +      21,    22,    23,     0,     0,     0,   204,   254,     0,     0, +       0,    24,     0,     0,   217,    25,     0,     0,     0,    26, +      27,   227,     0,     0,    -6,    28,     0,     0,     0,   230, +       0,   231,   233,     0,     0,     0,     0,     0,     0,     0, +     239,     0,     0,     0,     0,     0,   244,     0,   246,     0, +       0,     2,     3,     4,     5,     0,     6,     7,     0,     8, +       0,     0,     0,   256,     9,   257,    10,    11,    12,     0, +       0,    13,    14,    15,     0,     0,     0,     0,    16,    17, +      18,     0,     0,    19,     0,     0,     0,    20,    21,    22, +      23,     0,     0,     0,     0,    89,    90,     0,     0,    24, +      91,    92,    93,    25,    94,    95,    96,    26,    27,     2, +       3,     4,     5,    28,     6,     7,     0,    44,     0,   101, +     102,   103,     9,     0,    10,    11,    12,     0,     0,     0, +      14,    15,     0,     0,     0,     0,    16,    17,    18,     0, +       0,    19,     0,     0,     0,     0,     0,    22,    23,     0, +       0,     0,     0,     0,     0,     0,     0,    24,     0,     0, +       0,    25,     0,     0,     0,    26,    27,     0,     0,     0, +      82,    28,     2,     3,     4,     5,     0,     6,     7,     0, +      44,     0,     0,     0,     0,     9,     0,    10,    11,    12, +       0,     0,     0,    14,    15,     0,     0,     0,     0,    16, +      17,    18,     0,     0,    19,     0,     0,     0,     0,     0, +      22,    23,     0,     0,     0,     0,     0,     0,     0,     0, +      24,     0,     0,     0,    25,     0,     0,     0,    26,    27, +       2,     3,     4,     5,    28,     6,     7,     0,    44,     0, +       0,     0,     0,     9,     0,    10,    11,     0,     0,     0, +       0,    14,    15,     0,     0,     0,     0,    16,     0,    18, +       0,     0,     0,     0,     0,     0,     0,     0,    22,    23, +       0,     2,     3,     4,     5,     0,     6,     7,    24,    44, +       0,     0,    25,     0,     0,     0,    26,    27,     2,     3, +       4,     5,    28,     6,     7,     0,    44,     0,    45,     0, +      18,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,    45,     0,    18,     0,    24, +     118,     0,     0,    25,     0,     0,     0,    26,    27,     0, +       0,     0,     0,    28,     0,     0,    24,     0,     0,     0, +      25,     0,    89,    90,    26,    27,     0,    91,    92,    93, +      86,    94,    95,    96,     0,   162,     0,     0,    97,    98, +      99,   100,     0,     0,    89,    90,   101,   102,   103,    91, +      92,    93,     0,    94,    95,    96,     0,     0,     0,   163, +      97,    98,    99,   100,     0,     0,    89,    90,   101,   102, +     103,    91,    92,    93,     0,    94,    95,    96,     0,   127, +     128,     0,    97,    98,    99,   100,     0,     0,    89,    90, +     101,   102,   103,    91,    92,    93,     0,    94,    95,    96, +       0,     0,     0,     0,    97,    98,    99,   100,     0,     0, +       0,   129,   101,   102,   103,    89,    90,     0,     0,     0, +      91,    92,    93,     0,    94,    95,    96,     0,     0,     0, +     136,    97,    98,    99,   100,     0,     0,    89,    90,   101, +     102,   103,    91,    92,    93,     0,    94,    95,    96,     0, +       0,     0,     0,    97,    98,    99,   100,     0,     0,   -59, +     -59,   101,   102,   103,   -59,   -59,   -59,     0,   -59,   -59, +     -59,     0,     0,     0,     0,     0,     0,   -59,   -59,     0, +       0,    48,     0,   -59,   -59,   -59,    89,    90,     0,     0, +       0,    91,    92,    93,     0,    94,    95,    96,     0,     0, +      52,     0,     0,     0,    99,   100,     0,     0,    53,     0, +     101,   102,   103,    54,     0,     0,     0,    55,    56,    57, +      58,     0,     0,     0,     0,    59  };  static const yytype_int16 yycheck[] =  { -       0,     8,    80,    27,    82,   170,     4,     0,   178,    22, -      23,   181,   182,    42,    22,     0,    70,    23,    16,    42, -     206,   191,    76,     0,    22,    23,    24,    25,    26,   199, -      20,    70,   218,     0,    17,    64,   206,    35,    46,   203, -      46,    64,    25,    17,   214,    43,   216,   217,    46,    47, -      72,    34,    42,   217,    76,   225,   221,    70,    34,    19, -      36,   231,    19,   233,    12,    13,    42,    19,    19,    67, -      19,    19,    44,    45,    19,    71,   241,    64,   248,    79, -     250,    76,    80,    81,    82,    70,    79,    85,    86,    87, -      88,    89,    90,    91,    92,    93,    94,    95,    96,    97, -      98,    99,    79,    70,   169,    71,   113,   131,    17,    17, -      34,    41,    19,    41,    76,   122,    19,    17,   116,   117, -      17,   119,   120,   121,   131,   123,   124,    17,    34,    72, -     208,   196,   197,    19,   132,   200,    72,   202,    70,    17, -      42,    76,   220,    19,    19,    19,    23,    25,   213,    41, -     174,   149,    30,   177,    39,    28,    34,    35,    36,    37, -     158,   159,    22,    46,    42,    23,    23,    23,    23,    41, -      49,    50,    39,    39,   239,    54,    55,    56,    28,    58, -      59,    60,   180,    28,    79,   192,   217,    58,     0,     1, -     193,    -1,   190,   163,    73,    74,    75,   186,   205,    11, -      12,    13,    14,    47,    16,    17,    -1,    19,    -1,    -1, -     208,    -1,    24,    -1,    26,    27,    28,    -1,    -1,    31, -      32,    33,   220,    -1,    -1,   232,    38,    39,    40,    -1, -      -1,    43,    -1,    -1,    -1,    47,    48,    -1,    -1,    -1, -      -1,    -1,    -1,   243,    -1,    57,    -1,    -1,    -1,    61, -      -1,    -1,    -1,    65,    66,    -1,    -1,    -1,    70,    71, -      11,    12,    13,    14,    -1,    16,    17,    -1,    19,    -1, -      -1,    -1,    -1,    24,    -1,    26,    27,    28,    -1,    -1, -      31,    32,    33,    -1,    -1,    -1,    -1,    38,    39,    40, -      -1,    -1,    43,    -1,    -1,    -1,    47,    48,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    -1, -      61,    -1,    -1,    -1,    65,    66,    11,    12,    13,    14, -      71,    16,    17,    -1,    19,    -1,    -1,    -1,    -1,    24, -      -1,    26,    27,    28,    -1,    -1,    -1,    32,    33,    -1, -      -1,    -1,    -1,    38,    39,    40,    -1,    -1,    43,    -1, -      -1,    -1,    11,    12,    13,    14,    -1,    16,    17,    -1, -      19,    -1,    57,    -1,    -1,    24,    61,    26,    27,    28, -      65,    66,    -1,    32,    33,    70,    71,    -1,    -1,    38, -      39,    40,    -1,    -1,    43,    -1,    -1,    -1,    11,    12, -      13,    14,    -1,    16,    17,    -1,    19,    -1,    57,    -1, -      -1,    24,    61,    26,    27,    -1,    65,    66,    -1,    32, -      33,    -1,    71,    -1,    -1,    38,    -1,    40,    11,    12, -      13,    14,    -1,    16,    17,    -1,    19,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    -1, -      -1,    -1,    65,    66,    -1,    38,    -1,    40,    71,    -1, -      11,    12,    13,    14,    -1,    16,    17,    -1,    19,    -1, -      -1,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    -1, -      -1,    -1,    65,    66,    -1,    -1,    -1,    38,    71,    40, -      -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    -1, -      61,    -1,    49,    50,    65,    66,    -1,    54,    55,    56, -      71,    58,    59,    60,    -1,    -1,    -1,    42,    65,    66, -      67,    68,    -1,    -1,    49,    50,    73,    74,    75,    54, -      55,    56,    -1,    58,    59,    60,    -1,    -1,    -1,    64, -      65,    66,    67,    68,    -1,    -1,    49,    50,    73,    74, -      75,    54,    55,    56,    -1,    58,    59,    60,    -1,    62, -      63,    -1,    65,    66,    67,    68,    -1,    -1,    49,    50, -      73,    74,    75,    54,    55,    56,    -1,    58,    59,    60, -      -1,    -1,    -1,    64,    65,    66,    67,    68,    -1,    -1, -      -1,    72,    73,    74,    75,    49,    50,    -1,    -1,    -1, -      54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    -1, -      -1,    65,    66,    67,    68,    -1,    -1,    -1,    72,    73, -      74,    75,    49,    50,    -1,    -1,    -1,    54,    55,    56, -      -1,    58,    59,    60,    -1,    -1,    -1,    64,    65,    66, -      67,    68,    -1,    -1,    49,    50,    73,    74,    75,    54, -      55,    56,    -1,    58,    59,    60,    -1,    -1,    -1,    -1, -      65,    66,    67,    68,    -1,    -1,    49,    50,    73,    74, -      75,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1, -      -1,    -1,    -1,    -1,    67,    68,    -1,    -1,    71,    -1, -      73,    74,    75,    49,    50,    -1,    -1,    -1,    54,    55, -      56,    -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1, -      -1,    67,    68,    -1,    -1,    -1,    -1,    73,    74,    75 +       0,     8,    29,    84,     0,    86,     4,     0,     0,    42, +     174,    42,    22,    23,    22,   173,    72,    23,    16,    20, +     207,    72,    78,     0,    22,   210,    24,    25,    26,    27, +      28,    44,    45,    66,   221,    66,    17,   222,    46,    37, +      46,    42,   200,   201,    25,    74,   204,    45,   206,    78, +      48,    49,    34,    34,    36,    19,    12,    13,    19,   217, +      42,   225,    72,    19,    17,    19,    11,    19,    19,    19, +      73,    69,    66,    78,    73,    17,    72,    17,    19,    34, +      72,   245,    41,    83,    41,   243,    84,    85,    86,    78, +      83,    89,    90,    91,    92,    93,    94,    95,    96,    97, +      98,    99,   100,   101,   102,   103,    83,    19,   135,    17, +     117,    17,    17,    34,    74,    19,    74,    19,    42,   126, +      23,    19,   120,   121,    72,   123,   124,   125,   135,   127, +     128,   212,    78,    19,    28,    22,    46,    28,   136,    39, +      41,    23,    23,   224,    23,    41,    23,    39,    28,    39, +      83,   178,    51,    52,   181,   153,   197,    56,    57,    58, +     221,    60,    61,    62,   162,   163,   190,    66,    67,    68, +      69,    70,    60,    49,    -1,    74,    75,    76,    77,   167, +      -1,    -1,    -1,    -1,    -1,    -1,   184,    -1,    -1,   196, +      -1,    -1,     0,     1,    -1,    -1,   194,    -1,    -1,    -1, +      -1,    -1,   209,    11,    12,    13,    14,    -1,    16,    17, +      -1,    19,    -1,    -1,   212,    -1,    24,    -1,    26,    27, +      28,    -1,    -1,    31,    32,    33,   224,    -1,    -1,   236, +      38,    39,    40,   182,    -1,    43,   185,   186,    -1,    47, +      48,    49,    50,    -1,    -1,    -1,   195,   247,    -1,    -1, +      -1,    59,    -1,    -1,   203,    63,    -1,    -1,    -1,    67, +      68,   210,    -1,    -1,    72,    73,    -1,    -1,    -1,   218, +      -1,   220,   221,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +     229,    -1,    -1,    -1,    -1,    -1,   235,    -1,   237,    -1, +      -1,    11,    12,    13,    14,    -1,    16,    17,    -1,    19, +      -1,    -1,    -1,   252,    24,   254,    26,    27,    28,    -1, +      -1,    31,    32,    33,    -1,    -1,    -1,    -1,    38,    39, +      40,    -1,    -1,    43,    -1,    -1,    -1,    47,    48,    49, +      50,    -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    59, +      56,    57,    58,    63,    60,    61,    62,    67,    68,    11, +      12,    13,    14,    73,    16,    17,    -1,    19,    -1,    75, +      76,    77,    24,    -1,    26,    27,    28,    -1,    -1,    -1, +      32,    33,    -1,    -1,    -1,    -1,    38,    39,    40,    -1, +      -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1, +      -1,    63,    -1,    -1,    -1,    67,    68,    -1,    -1,    -1, +      72,    73,    11,    12,    13,    14,    -1,    16,    17,    -1, +      19,    -1,    -1,    -1,    -1,    24,    -1,    26,    27,    28, +      -1,    -1,    -1,    32,    33,    -1,    -1,    -1,    -1,    38, +      39,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    -1, +      49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      59,    -1,    -1,    -1,    63,    -1,    -1,    -1,    67,    68, +      11,    12,    13,    14,    73,    16,    17,    -1,    19,    -1, +      -1,    -1,    -1,    24,    -1,    26,    27,    -1,    -1,    -1, +      -1,    32,    33,    -1,    -1,    -1,    -1,    38,    -1,    40, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50, +      -1,    11,    12,    13,    14,    -1,    16,    17,    59,    19, +      -1,    -1,    63,    -1,    -1,    -1,    67,    68,    11,    12, +      13,    14,    73,    16,    17,    -1,    19,    -1,    38,    -1, +      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    38,    -1,    40,    -1,    59, +      29,    -1,    -1,    63,    -1,    -1,    -1,    67,    68,    -1, +      -1,    -1,    -1,    73,    -1,    -1,    59,    -1,    -1,    -1, +      63,    -1,    51,    52,    67,    68,    -1,    56,    57,    58, +      73,    60,    61,    62,    -1,    42,    -1,    -1,    67,    68, +      69,    70,    -1,    -1,    51,    52,    75,    76,    77,    56, +      57,    58,    -1,    60,    61,    62,    -1,    -1,    -1,    66, +      67,    68,    69,    70,    -1,    -1,    51,    52,    75,    76, +      77,    56,    57,    58,    -1,    60,    61,    62,    -1,    64, +      65,    -1,    67,    68,    69,    70,    -1,    -1,    51,    52, +      75,    76,    77,    56,    57,    58,    -1,    60,    61,    62, +      -1,    -1,    -1,    -1,    67,    68,    69,    70,    -1,    -1, +      -1,    74,    75,    76,    77,    51,    52,    -1,    -1,    -1, +      56,    57,    58,    -1,    60,    61,    62,    -1,    -1,    -1, +      66,    67,    68,    69,    70,    -1,    -1,    51,    52,    75, +      76,    77,    56,    57,    58,    -1,    60,    61,    62,    -1, +      -1,    -1,    -1,    67,    68,    69,    70,    -1,    -1,    51, +      52,    75,    76,    77,    56,    57,    58,    -1,    60,    61, +      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1, +      -1,    73,    -1,    75,    76,    77,    51,    52,    -1,    -1, +      -1,    56,    57,    58,    -1,    60,    61,    62,    -1,    -1, +      17,    -1,    -1,    -1,    69,    70,    -1,    -1,    25,    -1, +      75,    76,    77,    30,    -1,    -1,    -1,    34,    35,    36, +      37,    -1,    -1,    -1,    -1,    42  };  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -940,30 +964,30 @@ static const yytype_uint8 yystos[] =  {         0,     1,    11,    12,    13,    14,    16,    17,    19,    24,        26,    27,    28,    31,    32,    33,    38,    39,    40,    43, -      47,    48,    57,    61,    65,    66,    71,    78,    80,    81, -      82,    83,    84,    91,    92,    93,    98,    99,   101,   104, -     109,    70,    19,    38,    81,    98,    71,    95,    19,   100, -      17,    25,    30,    34,    35,    36,    37,    42,   102,   103, -      19,    17,    19,    98,    44,    45,    12,    13,    19,    19, -      19,    19,    98,    98,    98,    98,    98,     0,    70,    79, -      71,    64,    71,    90,    98,    49,    50,    54,    55,    56, -      58,    59,    60,    65,    66,    67,    68,    73,    74,    75, -      98,    98,   110,   110,    76,    17,    17,    34,    17,    25, -      34,    42,   103,   105,    29,    19,    42,    64,    98,    42, -      64,    41,   106,    62,    63,    72,    80,    90,    98,    90, -      98,    41,    64,    98,    98,    98,    98,    98,    98,    98, -      98,    98,    98,    98,    98,    98,    98,    98,    72,    76, -      19,    17,    17,    17,    95,    19,    98,    98,    42,    64, -      98,    98,    98,    95,    98,    98,    72,    96,    72,    79, -      95,    98,    98,    19,   107,    98,    98,   107,    97,    20, -      42,    97,    82,    99,    76,    79,    79,    79,    83,    96, -      42,    98,    96,    96,    19,    76,   108,   108,    23,    98, -      96,    23,    46,    95,    22,    46,    87,    88,    94,    19, -      97,    97,    39,    96,    97,    28,    97,    86,    87,    89, -      94,    95,    88,    96,    90,    97,    96,    96,    89,    96, -      90,    82,    46,    85,    41,    96,    23,    23,    23,    41, -      96,    95,    96,    95,    23,    39,    28,    28,    97,    82, -      83,    39,    96,    96 +      47,    48,    49,    50,    59,    63,    67,    68,    73,    80, +      82,    83,    84,    85,    86,    93,    94,    95,   100,   101, +     103,   106,   111,    72,    19,    38,    83,   100,    73,    97, +      19,   102,    17,    25,    30,    34,    35,    36,    37,    42, +     104,   105,    19,    17,    19,   100,    44,    45,    12,    13, +      19,    19,    19,    19,   100,    11,   100,   100,   100,   100, +     100,     0,    72,    81,    73,    66,    73,    92,   100,    51, +      52,    56,    57,    58,    60,    61,    62,    67,    68,    69, +      70,    75,    76,    77,   100,   100,   112,   112,    78,    17, +      17,    34,    17,    25,    34,    42,   105,   107,    29,    19, +      42,    66,   100,    42,    66,    41,   108,    64,    65,    74, +      82,    92,   100,    92,   100,    41,    66,   100,   100,   100, +     100,   100,   100,   100,   100,   100,   100,   100,   100,   100, +     100,   100,    74,    78,    19,    17,    17,    17,    97,    19, +     100,   100,    42,    66,   100,   100,   100,    97,   100,   100, +      74,    98,    74,    81,    97,   100,   100,    19,   109,   100, +     100,   109,    99,    20,    42,    99,    84,   101,    78,    81, +      81,    81,    85,    98,    42,   100,    98,    98,    19,    78, +     110,   110,    23,   100,    98,    23,    46,    97,    22,    46, +      89,    90,    96,    19,    99,    99,    39,    98,    99,    28, +      99,    88,    89,    91,    96,    97,    90,    98,    92,    99, +      98,    98,    91,    98,    92,    84,    46,    87,    41,    98, +      23,    23,    23,    41,    98,    97,    98,    97,    23,    39, +      28,    28,    99,    84,    85,    39,    98,    98  };  #define yyerrok		(yyerrstatus = 0) @@ -2288,32 +2312,57 @@ yyreduce:      break;    case 90: -#line 413 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} +#line 411 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_alert); ;}      break;    case 91: -#line 414 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} +#line 412 "engines/director/lingo/lingo-gr.y" +    { +		g_lingo->code1(g_lingo->c_constpush); +		inst i = 0; +		WRITE_UINT32(&i, (yyvsp[(2) - (2)].i)); +		g_lingo->code1(i); +		g_lingo->code1(g_lingo->c_beep); ;}      break;    case 92: -#line 425 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotoloop); ;} +#line 418 "engines/director/lingo/lingo-gr.y" +    { +		g_lingo->code1(g_lingo->c_constpush); +		inst i = 0; +		WRITE_UINT32(&i, 0); +		g_lingo->code1(i); +		g_lingo->code1(g_lingo->c_beep); ;}      break;    case 93:  #line 426 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotonext); ;} +    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}      break;    case 94:  #line 427 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotoprevious); ;} +    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}      break;    case 95: -#line 428 "engines/director/lingo/lingo-gr.y" +#line 438 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_gotoloop); ;} +    break; + +  case 96: +#line 439 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_gotonext); ;} +    break; + +  case 97: +#line 440 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_gotoprevious); ;} +    break; + +  case 98: +#line 441 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_goto);  		g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str()); @@ -2321,8 +2370,8 @@ yyreduce:  		delete (yyvsp[(2) - (2)].s); ;}      break; -  case 96: -#line 433 "engines/director/lingo/lingo-gr.y" +  case 99: +#line 446 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_goto);  		g_lingo->codeString((yyvsp[(2) - (3)].s)->c_str()); @@ -2331,8 +2380,8 @@ yyreduce:  		delete (yyvsp[(3) - (3)].s); ;}      break; -  case 97: -#line 439 "engines/director/lingo/lingo-gr.y" +  case 100: +#line 452 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_goto);  		g_lingo->codeString(""); @@ -2340,48 +2389,48 @@ yyreduce:  		delete (yyvsp[(2) - (2)].s); ;}      break; -  case 98: -#line 446 "engines/director/lingo/lingo-gr.y" +  case 101: +#line 459 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(3) - (3)].s); ;}      break; -  case 99: -#line 447 "engines/director/lingo/lingo-gr.y" +  case 102: +#line 460 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(2) - (2)].s); ;}      break; -  case 100: -#line 448 "engines/director/lingo/lingo-gr.y" +  case 103: +#line 461 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(2) - (2)].s); ;}      break; -  case 101: -#line 449 "engines/director/lingo/lingo-gr.y" +  case 104: +#line 462 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(1) - (1)].s); ;}      break; -  case 102: -#line 452 "engines/director/lingo/lingo-gr.y" +  case 105: +#line 465 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(3) - (3)].s); ;}      break; -  case 103: -#line 453 "engines/director/lingo/lingo-gr.y" +  case 106: +#line 466 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(2) - (2)].s); ;}      break; -  case 104: -#line 454 "engines/director/lingo/lingo-gr.y" +  case 107: +#line 467 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(3) - (3)].s); ;}      break; -  case 105: -#line 482 "engines/director/lingo/lingo-gr.y" +  case 108: +#line 495 "engines/director/lingo/lingo-gr.y"      { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}      break; -  case 106: -#line 483 "engines/director/lingo/lingo-gr.y" +  case 109: +#line 496 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->code2(g_lingo->c_constpush, (inst)0); // Push fake value on stack  			g_lingo->code1(g_lingo->c_procret); @@ -2389,20 +2438,20 @@ yyreduce:  			g_lingo->_indef = false; ;}      break; -  case 107: -#line 488 "engines/director/lingo/lingo-gr.y" +  case 110: +#line 501 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));  		;}      break; -  case 108: -#line 491 "engines/director/lingo/lingo-gr.y" +  case 111: +#line 504 "engines/director/lingo/lingo-gr.y"      { g_lingo->_indef = true; ;}      break; -  case 109: -#line 492 "engines/director/lingo/lingo-gr.y" +  case 112: +#line 505 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->code2(g_lingo->c_constpush, (inst)0); // Push fake value on stack  			g_lingo->code1(g_lingo->c_procret); @@ -2410,33 +2459,33 @@ yyreduce:  			g_lingo->_indef = false; ;}      break; -  case 110: -#line 497 "engines/director/lingo/lingo-gr.y" +  case 113: +#line 510 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = 0; ;}      break; -  case 111: -#line 498 "engines/director/lingo/lingo-gr.y" +  case 114: +#line 511 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}      break; -  case 112: -#line 499 "engines/director/lingo/lingo-gr.y" +  case 115: +#line 512 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}      break; -  case 113: -#line 500 "engines/director/lingo/lingo-gr.y" +  case 116: +#line 513 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}      break; -  case 114: -#line 502 "engines/director/lingo/lingo-gr.y" +  case 117: +#line 515 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeArgStore(); ;}      break; -  case 115: -#line 506 "engines/director/lingo/lingo-gr.y" +  case 118: +#line 519 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_call);  		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str()); @@ -2445,24 +2494,24 @@ yyreduce:  		g_lingo->code1(numpar); ;}      break; -  case 116: -#line 514 "engines/director/lingo/lingo-gr.y" +  case 119: +#line 527 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = 0; ;}      break; -  case 117: -#line 515 "engines/director/lingo/lingo-gr.y" +  case 120: +#line 528 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = 1; ;}      break; -  case 118: -#line 516 "engines/director/lingo/lingo-gr.y" +  case 121: +#line 529 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}      break;  /* Line 1267 of yacc.c.  */ -#line 2466 "engines/director/lingo/lingo-gr.cpp" +#line 2515 "engines/director/lingo/lingo-gr.cpp"        default: break;      }    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2676,6 +2725,6 @@ yyreturn:  } -#line 519 "engines/director/lingo/lingo-gr.y" +#line 532 "engines/director/lingo/lingo-gr.y" diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h index f5d97e9f00..bca98cb552 100644 --- a/engines/director/lingo/lingo-gr.h +++ b/engines/director/lingo/lingo-gr.h @@ -85,21 +85,23 @@       tNLELSE = 301,       tFACTORY = 302,       tMETHOD = 303, -     tGE = 304, -     tLE = 305, -     tGT = 306, -     tLT = 307, -     tEQ = 308, -     tNEQ = 309, -     tAND = 310, -     tOR = 311, -     tNOT = 312, -     tCONCAT = 313, -     tCONTAINS = 314, -     tSTARTS = 315, -     tSPRITE = 316, -     tINTERSECTS = 317, -     tWITHIN = 318 +     tALERT = 304, +     tBEEP = 305, +     tGE = 306, +     tLE = 307, +     tGT = 308, +     tLT = 309, +     tEQ = 310, +     tNEQ = 311, +     tAND = 312, +     tOR = 313, +     tNOT = 314, +     tCONCAT = 315, +     tCONTAINS = 316, +     tSTARTS = 317, +     tSPRITE = 318, +     tINTERSECTS = 319, +     tWITHIN = 320     };  #endif  /* Tokens.  */ @@ -149,21 +151,23 @@  #define tNLELSE 301  #define tFACTORY 302  #define tMETHOD 303 -#define tGE 304 -#define tLE 305 -#define tGT 306 -#define tLT 307 -#define tEQ 308 -#define tNEQ 309 -#define tAND 310 -#define tOR 311 -#define tNOT 312 -#define tCONCAT 313 -#define tCONTAINS 314 -#define tSTARTS 315 -#define tSPRITE 316 -#define tINTERSECTS 317 -#define tWITHIN 318 +#define tALERT 304 +#define tBEEP 305 +#define tGE 306 +#define tLE 307 +#define tGT 308 +#define tLT 309 +#define tEQ 310 +#define tNEQ 311 +#define tAND 312 +#define tOR 313 +#define tNOT 314 +#define tCONCAT 315 +#define tCONTAINS 316 +#define tSTARTS 317 +#define tSPRITE 318 +#define tINTERSECTS 319 +#define tWITHIN 320 @@ -181,7 +185,7 @@ typedef union YYSTYPE  	Common::Array<double> *arr;  }  /* Line 1529 of yacc.c.  */ -#line 185 "engines/director/lingo/lingo-gr.hpp" +#line 189 "engines/director/lingo/lingo-gr.hpp"  	YYSTYPE;  # define yystype YYSTYPE /* obsolescent; will be withdrawn */  # define YYSTYPE_IS_DECLARED 1 diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index 59a103bfac..d8b7519eaa 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -85,7 +85,7 @@ void yyerror(char *s) {  %token<s> ID  %token tDOWN tELSE tNLELSIF tEND tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO  %token tMCI tMCIWAIT tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN -%token tWITH tWHILE tNLELSE tFACTORY tMETHOD +%token tWITH tWHILE tNLELSE tFACTORY tMETHOD tALERT tBEEP  %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT  %token tCONCAT tCONTAINS tSTARTS  %token tSPRITE tINTERSECTS tWITHIN @@ -408,6 +408,19 @@ func: tMCI vSTRING			{ g_lingo->code1(g_lingo->c_mci); g_lingo->codeString($2->c  	| tEXIT					{ g_lingo->code2(g_lingo->c_constpush, (inst)0); // Push fake value on stack  							  g_lingo->code1(g_lingo->c_procret); }  	| tGLOBAL globallist +	| tALERT expr			{ g_lingo->code1(g_lingo->c_alert); } +	| tBEEP vINT			{ +		g_lingo->code1(g_lingo->c_constpush); +		inst i = 0; +		WRITE_UINT32(&i, $2); +		g_lingo->code1(i); +		g_lingo->code1(g_lingo->c_beep); } +	| tBEEP 				{ +		g_lingo->code1(g_lingo->c_constpush); +		inst i = 0; +		WRITE_UINT32(&i, 0); +		g_lingo->code1(i); +		g_lingo->code1(g_lingo->c_beep); }  	;  globallist: ID				{ g_lingo->code1(g_lingo->c_global); g_lingo->codeString($1->c_str()); delete $1; } diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index 1fd200d0d0..d4f2a01ea2 100644 --- a/engines/director/lingo/lingo-lex.cpp +++ b/engines/director/lingo/lingo-lex.cpp @@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );  	*yy_cp = '\0'; \  	(yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 54 -#define YY_END_OF_BUFFER 55 +#define YY_NUM_RULES 56 +#define YY_END_OF_BUFFER 57  /* This struct is not used in this scanner,     but its presence is necessary. */  struct yy_trans_info @@ -373,28 +373,30 @@ struct yy_trans_info  	flex_int32_t yy_verify;  	flex_int32_t yy_nxt;  	}; -static yyconst flex_int16_t yy_accept[186] = +static yyconst flex_int16_t yy_accept[194] =      {   0, -        0,    0,   55,   53,    3,   51,   51,   53,   53,   50, -       50,   50,   49,   50,   50,   47,   47,   47,   47,   47, -       47,   47,   47,   47,   47,   47,   47,   47,   47,   47, -       47,   47,    2,    2,    3,   51,    0,    0,   51,    0, -        0,   52,   46,    1,   48,   49,   45,   43,   44,   47, -       47,   47,   47,   47,   47,   47,   47,   47,   47,   16, -        7,   47,   47,   47,   47,   47,   47,   47,   47,   27, -       28,   47,   47,   47,   47,   47,   47,   47,   37,   47, -       47,    2,    2,    0,    1,   48,    4,   47,   47,   47, -       11,   47,   47,   47,   47,   47,   47,   47,   21,   47, - -       47,   47,   26,   47,   30,   47,   32,   47,   47,   47, -       47,   47,   47,    0,   47,    6,   10,   13,   47,   47, -       47,   47,   18,   19,   47,   47,   47,   47,   25,   47, -       47,   47,   47,    0,   36,   41,   47,   39,    9,   47, -       47,   14,   47,   47,   20,   47,   47,   24,   47,   47, -       47,   47,   35,   42,   47,    0,   47,   47,   15,   47, -       47,   23,   47,   31,   38,   33,    0,   40,    0,   47, -       12,   47,   22,   47,    0,    8,    5,   47,   29,    0, -       47,    0,   17,   34,    0 +        0,    0,   57,   55,    3,   53,   53,   55,   55,   52, +       52,   52,   51,   52,   52,   49,   49,   49,   49,   49, +       49,   49,   49,   49,   49,   49,   49,   49,   49,   49, +       49,   49,   49,    2,    2,    3,   53,    0,    0,   53, +        0,    0,   54,   48,    1,   50,   51,   47,   45,   46, +       49,   49,   49,   49,   49,   49,   49,   49,   49,   49, +       49,   49,   18,    9,   49,   49,   49,   49,   49,   49, +       49,   49,   29,   30,   49,   49,   49,   49,   49,   49, +       49,   39,   49,   49,    2,    2,    0,    1,   50,   49, +        5,   49,   49,   49,   49,   13,   49,   49,   49,   49, + +       49,   49,   49,   23,   49,   49,   49,   28,   49,   32, +       49,   34,   49,   49,   49,   49,   49,   49,    0,   49, +        6,   49,    8,   12,   15,   49,   49,   49,   49,   20, +       21,   49,   49,   49,   49,   27,   49,   49,   49,   49, +        0,   38,   43,   49,   41,   11,    4,   49,   49,   16, +       49,   49,   22,   49,   49,   26,   49,   49,   49,   49, +       37,   44,   49,    0,   49,   49,   17,   49,   49,   25, +       49,   33,   40,   35,    0,   42,    0,   49,   14,   49, +       24,   49,    0,   10,    7,   49,   31,    0,   49,    0, +       19,   36,    0 +      } ;  static yyconst flex_int32_t yy_ec[256] = @@ -439,115 +441,120 @@ static yyconst flex_int32_t yy_meta[61] =          6,    6,    6,    6,    6,    6,    6,    6,    6,    6      } ; -static yyconst flex_int16_t yy_base[191] = +static yyconst flex_int16_t yy_base[199] =      {   0, -        0,   59,  210,  446,   63,   67,   71,   75,  192,  446, -      150,  148,   52,   68,  137,   56,    0,   56,   57,   67, -       72,   68,   68,   69,  112,   70,   79,  103,   81,  109, -      120,  121,  170,  174,  178,  101,  182,  186,  190,   97, -      143,  446,  446,    0,   90,  124,  446,  446,  446,    0, -      112,  110,  104,  115,  147,  167,  179,  182,  119,    0, -        0,  167,  172,  184,  179,  172,  173,  172,  179,    0, -        0,  193,  183,  187,  185,  188,  198,  200,    0,  205, -      200,  242,  254,  211,    0,   80,    0,  217,  223,  232, -        0,  221,  222,  234,  245,  243,  235,  236,  232,  246, - -      246,  242,    0,  244,    0,  260,    0,  257,  252,  279, -      261,  266,  273,  277,  283,    0,    0,    0,  272,  283, -      292,  279,    0,    0,  282,  297,  287,  294,    0,  293, -      302,  289,  292,  201,    0,    0,  299,  302,  325,  305, -      304,    0,  310,  308,    0,  320,  327,    0,  320,  318, -      327,  320,  351,    0,  327,  358,  328,  322,    0,  342, -      332,    0,  332,    0,    0,    0,  370,    0,  346,  337, -        0,  359,    0,  348,  360,  446,    0,  351,    0,  384, -      353,  390,    0,  391,  446,  421,  423,  429,  434,  439 +        0,   59,  205,  459,   63,   67,   71,   75,  167,  459, +      164,  149,   52,   68,  134,   58,   68,   56,   61,   67, +       83,   68,    0,   77,   67,  113,  106,  109,   90,   81, +      116,  109,  128,  174,  178,  182,   98,  186,  190,  194, +      113,  136,  459,  459,    0,   94,  155,  459,  459,  459, +        0,   90,  151,  151,  113,  109,  169,  183,  179,  186, +      189,  178,    0,    0,  175,  180,  193,  188,  183,  182, +      181,  186,    0,    0,  193,  187,  191,  189,  192,  209, +      213,    0,  227,  217,  249,  255,  224,    0,   88,  231, +        0,  233,  231,  237,  228,    0,  233,  234,  241,  252, + +      254,  246,  246,  242,  247,  256,  249,    0,  249,    0, +      272,    0,  271,  266,  305,  274,  277,  287,  292,  276, +        0,  297,    0,    0,    0,  286,  297,  302,  290,    0, +        0,  293,  307,  298,  304,    0,  304,  313,  298,  302, +       86,    0,    0,  319,  316,  340,    0,  325,  320,    0, +      329,  325,    0,  335,  341,    0,  333,  332,  346,  336, +      364,    0,  341,  369,  343,  338,    0,  357,  346,    0, +      347,    0,    0,    0,  383,    0,  361,  355,    0,  377, +        0,  365,  377,  459,    0,  367,    0,  402,  371,  408, +        0,  410,  459,  434,  436,  442,  447,  452 +      } ; -static yyconst flex_int16_t yy_def[191] = +static yyconst flex_int16_t yy_def[199] =      {   0, -      185,    1,  185,  185,  185,  185,  185,  185,  186,  185, -      185,  185,  185,  185,  185,  187,  187,  187,  187,  187, -      187,  187,  187,  187,  187,  187,  187,  187,  187,  187, -      187,  187,  185,  185,  185,  185,  185,  185,  185,  185, -      186,  185,  185,  188,  185,  185,  185,  185,  185,  187, -      187,  187,  187,  187,  187,  187,  187,  187,  187,  187, -      187,  187,  187,  187,  187,  187,  187,  187,  187,  187, -      187,  187,  187,  187,  187,  187,  187,  187,  187,  187, -      187,  185,  185,  185,  188,  185,  187,  187,  187,  187, -      187,  187,  187,  187,  187,  187,  187,  187,  187,  187, - -      187,  187,  187,  187,  187,  187,  187,  187,  187,  187, -      187,  187,  187,  185,  187,  187,  187,  187,  187,  187, -      187,  187,  187,  187,  187,  187,  187,  187,  187,  187, -      187,  187,  187,  189,  187,  187,  187,  187,  185,  187, -      187,  187,  187,  187,  187,  187,  187,  187,  187,  187, -      187,  187,  189,  187,  187,  185,  187,  187,  187,  187, -      187,  187,  187,  187,  187,  187,  185,  187,  185,  187, -      187,  187,  187,  187,  185,  185,  187,  187,  187,  185, -      187,  190,  187,  190,    0,  185,  185,  185,  185,  185 +      193,    1,  193,  193,  193,  193,  193,  193,  194,  193, +      193,  193,  193,  193,  193,  195,  195,  195,  195,  195, +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, +      195,  195,  195,  193,  193,  193,  193,  193,  193,  193, +      193,  194,  193,  193,  196,  193,  193,  193,  193,  193, +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, +      195,  195,  195,  195,  193,  193,  193,  196,  193,  195, +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, + +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, +      195,  195,  195,  195,  195,  195,  195,  195,  193,  195, +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, +      197,  195,  195,  195,  195,  193,  195,  195,  195,  195, +      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, +      197,  195,  195,  193,  195,  195,  195,  195,  195,  195, +      195,  195,  195,  195,  193,  195,  193,  195,  195,  195, +      195,  195,  193,  193,  195,  195,  195,  193,  195,  198, +      195,  198,    0,  193,  193,  193,  193,  193 +      } ; -static yyconst flex_int16_t yy_nxt[507] = +static yyconst flex_int16_t yy_nxt[520] =      {   0,          4,    5,    6,    7,    8,    9,   10,   11,   12,    4,         13,   14,   10,   15,   16,   17,   18,   19,   20,   21, -       22,   17,   23,   17,   24,   25,   26,   27,   28,   29, -       30,   31,   17,   17,   32,   17,   17,   17,   16,   17, -       18,   19,   20,   21,   22,   17,   23,   24,   25,   26, -       27,   28,   29,   30,   31,   17,   17,   32,   17,   17, -       33,   45,   46,   34,   35,   36,   36,   37,   38,   39, -       39,   38,   38,   39,   39,   38,   37,   36,   36,   37, -       47,   48,   51,   52,   53,   40,   57,   61,   68,   40, -       86,   54,   59,   55,   62,   60,   63,   69,   70,   74, - -       86,   58,   56,   36,   36,   51,   52,   53,   71,   40, -       57,   61,   68,   40,   54,   59,   55,   62,   60,   63, -       69,   84,   70,   74,   58,   56,   64,   75,   65,   87, -       66,   71,   72,   45,   46,   73,   88,   76,   89,   67, -       77,   78,   80,   81,   84,   90,   95,   79,   42,   49, -       64,   75,   65,   87,   66,   72,   44,   43,   73,   88, -       76,   89,   67,   77,   91,   78,   80,   81,   90,   95, -       79,   82,   36,   36,   83,   83,   36,   36,   83,   35, -       36,   36,   37,   37,   36,   36,   37,   38,   91,   92, -       38,   38,   39,   39,   38,   93,   94,   42,   96,   97, - -       98,   99,  134,  100,   40,  134,  101,  102,   40,  185, -      103,  104,  109,   92,  105,  106,  107,  108,  110,   93, -       94,   96,   97,  111,   98,   99,  100,  112,   40,  101, -      102,  113,   40,  103,  185,  104,  109,  105,  106,  107, -      108,  114,  110,   82,   36,   36,   83,  111,  115,  116, -      117,  112,  118,  119,  113,   83,   36,   36,   83,  120, -      121,  122,  185,  124,  114,  125,  126,  127,  128,  185, -      123,  115,  116,  129,  117,  118,  119,  130,  131,  132, -      134,  133,  120,  134,  121,  122,  124,  136,  125,  126, -      137,  127,  128,  123,  138,  139,  129,  140,  185,  141, - -      130,  142,  131,  132,  133,  135,  143,  185,  144,  145, -      136,  146,  148,  137,  147,  149,  150,  154,  138,  139, -      151,  140,  141,  152,  155,  142,  156,  157,  135,  156, -      143,  144,  145,  158,  159,  146,  148,  147,  160,  149, -      150,  154,  161,  151,  162,  165,  152,  163,  155,  164, -      166,  157,  167,  168,  170,  167,  158,  159,  171,  156, -      172,  160,  156,  173,  174,  176,  161,  177,  162,  165, -      163,  167,  164,  166,  167,  178,  168,  170,  179,  180, -      169,  171,  181,  183,  172,  182,  173,  174,  182,  176, -      177,  182,  185,  185,  182,  185,  185,  175,  185,  178, - -      185,  179,  185,  180,  169,  181,  183,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      175,   41,   41,  185,   41,   41,   41,   50,   50,   85, -       85,  185,  185,   85,   85,  153,  185,  185,  185,  153, -      184,  185,  185,  185,  184,    3,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, - -      185,  185,  185,  185,  185,  185 +       22,   23,   24,   23,   25,   26,   27,   28,   29,   30, +       31,   32,   23,   23,   33,   23,   23,   23,   16,   17, +       18,   19,   20,   21,   22,   23,   24,   25,   26,   27, +       28,   29,   30,   31,   32,   23,   23,   33,   23,   23, +       34,   46,   47,   35,   36,   37,   37,   38,   39,   40, +       40,   39,   39,   40,   40,   39,   38,   37,   37,   38, +       48,   49,   52,   55,   53,   41,   54,  141,   56,   41, +      141,   57,   62,   58,   66,   63,   64,   60,   89,   77, + +       37,   37,   59,   65,   89,   52,   55,   53,   90,   41, +       54,   56,   61,   41,   57,   62,   58,   66,   63,   75, +       64,   60,   76,   77,   71,   59,   65,   67,   73,   68, +       81,   69,   90,   72,   78,   61,   82,   87,   74,   93, +       70,   43,   75,   94,   79,   76,   50,   80,   71,   83, +       84,   67,   73,   68,   81,   69,   72,   45,   78,   82, +       87,   74,   93,   70,   46,   47,   94,   79,   91,   92, +       80,   44,   43,   83,   84,   85,   37,   37,   86,   86, +       37,   37,   86,   36,   37,   37,   38,   38,   37,   37, +       38,   39,   91,   92,   39,   39,   40,   40,   39,   95, + +       96,   97,   98,   99,  193,  100,  101,  102,   41,  103, +      104,  109,   41,  193,  105,  106,  107,  108,  110,  111, +      112,  113,   95,  114,   96,   97,   98,   99,  100,  101, +      102,  115,   41,  103,  104,  109,   41,  105,  106,  107, +      108,  110,  111,  112,  113,  116,  124,  114,  118,  117, +       85,   37,   37,   86,  119,  115,   86,   37,   37,   86, +      120,  121,  122,  123,  125,  126,  127,  128,  134,  116, +      124,  118,  129,  117,  131,  132,  133,  119,  135,  193, +      136,  130,  137,  120,  121,  122,  123,  125,  126,  127, +      138,  128,  134,  139,  193,  140,  129,  131,  132,  133, + +      143,  144,  135,  136,  130,  137,  141,  147,  145,  141, +      146,  148,  193,  149,  138,  150,  151,  139,  140,  152, +      153,  154,  156,  143,  144,  155,  157,  158,  193,  159, +      147,  142,  145,  160,  146,  148,  149,  162,  163,  150, +      151,  164,  152,  153,  164,  154,  156,  165,  155,  166, +      157,  158,  159,  167,  142,  168,  160,  169,  170,  193, +      171,  162,  163,  172,  173,  175,  174,  176,  175,  178, +      164,  165,  166,  164,  179,  180,  167,  181,  168,  182, +      184,  169,  170,  171,  175,  185,  172,  175,  173,  174, +      176,  177,  178,  186,  193,  187,  188,  179,  189,  180, + +      181,  191,  182,  190,  184,  193,  190,  193,  185,  190, +      183,  193,  190,  193,  193,  177,  193,  186,  187,  193, +      188,  189,  193,  193,  191,  193,  193,  193,  193,  193, +      193,  193,  193,  183,   42,   42,  193,   42,   42,   42, +       51,   51,   88,   88,  193,  193,   88,   88,  161,  193, +      193,  193,  161,  192,  193,  193,  193,  192,    3,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, + +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193      } ; -static yyconst flex_int16_t yy_chk[507] = +static yyconst flex_int16_t yy_chk[520] =      {   0,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1, @@ -557,54 +564,55 @@ static yyconst flex_int16_t yy_chk[507] =          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          2,   13,   13,    2,    5,    5,    5,    5,    6,    6,          6,    6,    7,    7,    7,    7,    8,    8,    8,    8, -       14,   14,   16,   18,   19,    6,   21,   23,   26,    7, -       86,   20,   22,   20,   23,   22,   24,   26,   27,   29, - -       45,   21,   20,   36,   36,   16,   18,   19,   27,    6, -       21,   23,   26,    7,   20,   22,   20,   23,   22,   24, -       26,   40,   27,   29,   21,   20,   25,   30,   25,   51, -       25,   27,   28,   46,   46,   28,   52,   30,   53,   25, -       30,   31,   32,   32,   40,   54,   59,   31,   41,   15, -       25,   30,   25,   51,   25,   28,   12,   11,   28,   52, -       30,   53,   25,   30,   55,   31,   32,   32,   54,   59, -       31,   33,   33,   33,   33,   34,   34,   34,   34,   35, -       35,   35,   35,   37,   37,   37,   37,   38,   55,   56, -       38,   39,   39,   39,   39,   57,   58,    9,   62,   63, - -       64,   65,  134,   66,   38,  134,   67,   68,   39,    3, -       69,   72,   77,   56,   73,   74,   75,   76,   78,   57, -       58,   62,   63,   80,   64,   65,   66,   80,   38,   67, -       68,   81,   39,   69,    0,   72,   77,   73,   74,   75, -       76,   84,   78,   82,   82,   82,   82,   80,   88,   89, -       90,   80,   92,   93,   81,   83,   83,   83,   83,   94, -       95,   96,    0,   97,   84,   98,   99,  100,  101,    0, -       96,   88,   89,  102,   90,   92,   93,  104,  106,  108, -      110,  109,   94,  110,   95,   96,   97,  111,   98,   99, -      112,  100,  101,   96,  113,  114,  102,  115,    0,  119, - -      104,  120,  106,  108,  109,  110,  121,    0,  122,  125, -      111,  126,  128,  112,  127,  130,  131,  137,  113,  114, -      132,  115,  119,  133,  138,  120,  139,  140,  110,  139, -      121,  122,  125,  141,  143,  126,  128,  127,  144,  130, -      131,  137,  146,  132,  147,  151,  133,  149,  138,  150, -      152,  140,  153,  155,  157,  153,  141,  143,  158,  156, -      160,  144,  156,  161,  163,  169,  146,  170,  147,  151, -      149,  167,  150,  152,  167,  172,  155,  157,  174,  175, -      156,  158,  178,  181,  160,  180,  161,  163,  180,  169, -      170,  182,  184,    0,  182,  184,    0,  167,    0,  172, - -        0,  174,    0,  175,  156,  178,  181,    0,    0,    0, -        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, -      167,  186,  186,    0,  186,  186,  186,  187,  187,  188, -      188,    0,    0,  188,  188,  189,    0,    0,    0,  189, -      190,    0,    0,    0,  190,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, -      185,  185,  185,  185,  185,  185,  185,  185,  185,  185, - -      185,  185,  185,  185,  185,  185 +       14,   14,   16,   18,   16,    6,   17,  141,   19,    7, +      141,   20,   22,   20,   25,   22,   24,   21,   89,   30, + +       37,   37,   20,   24,   46,   16,   18,   16,   52,    6, +       17,   19,   21,    7,   20,   22,   20,   25,   22,   29, +       24,   21,   29,   30,   27,   20,   24,   26,   28,   26, +       32,   26,   52,   27,   31,   21,   32,   41,   28,   55, +       26,   42,   29,   56,   31,   29,   15,   31,   27,   33, +       33,   26,   28,   26,   32,   26,   27,   12,   31,   32, +       41,   28,   55,   26,   47,   47,   56,   31,   53,   54, +       31,   11,    9,   33,   33,   34,   34,   34,   34,   35, +       35,   35,   35,   36,   36,   36,   36,   38,   38,   38, +       38,   39,   53,   54,   39,   40,   40,   40,   40,   57, + +       58,   59,   60,   61,    3,   62,   65,   66,   39,   67, +       68,   75,   40,    0,   69,   70,   71,   72,   76,   77, +       78,   79,   57,   80,   58,   59,   60,   61,   62,   65, +       66,   81,   39,   67,   68,   75,   40,   69,   70,   71, +       72,   76,   77,   78,   79,   83,   95,   80,   84,   83, +       85,   85,   85,   85,   87,   81,   86,   86,   86,   86, +       90,   92,   93,   94,   97,   98,   99,  100,  105,   83, +       95,   84,  101,   83,  102,  103,  104,   87,  106,    0, +      107,  101,  109,   90,   92,   93,   94,   97,   98,   99, +      111,  100,  105,  113,    0,  114,  101,  102,  103,  104, + +      116,  117,  106,  107,  101,  109,  115,  120,  118,  115, +      119,  122,    0,  126,  111,  127,  128,  113,  114,  129, +      132,  133,  135,  116,  117,  134,  137,  138,    0,  139, +      120,  115,  118,  140,  119,  122,  126,  144,  145,  127, +      128,  146,  129,  132,  146,  133,  135,  148,  134,  149, +      137,  138,  139,  151,  115,  152,  140,  154,  155,    0, +      157,  144,  145,  158,  159,  161,  160,  163,  161,  165, +      164,  148,  149,  164,  166,  168,  151,  169,  152,  171, +      177,  154,  155,  157,  175,  178,  158,  175,  159,  160, +      163,  164,  165,  180,    0,  182,  183,  166,  186,  168, + +      169,  189,  171,  188,  177,    0,  188,    0,  178,  190, +      175,  192,  190,    0,  192,  164,    0,  180,  182,    0, +      183,  186,    0,    0,  189,    0,    0,    0,    0,    0, +        0,    0,    0,  175,  194,  194,    0,  194,  194,  194, +      195,  195,  196,  196,    0,    0,  196,  196,  197,    0, +        0,    0,  197,  198,    0,    0,    0,  198,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, + +      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, +      193,  193,  193,  193,  193,  193,  193,  193,  193      } ;  static yy_state_type yy_last_accepting_state; @@ -674,7 +682,7 @@ static void countnl() {  	g_lingo->_colnumber = strlen(p);  } -#line 678 "engines/director/lingo/lingo-lex.cpp" +#line 686 "engines/director/lingo/lingo-lex.cpp"  #define INITIAL 0 @@ -862,7 +870,7 @@ YY_DECL  #line 65 "engines/director/lingo/lingo-lex.l" -#line 866 "engines/director/lingo/lingo-lex.cpp" +#line 874 "engines/director/lingo/lingo-lex.cpp"  	if ( !(yy_init) )  		{ @@ -916,13 +924,13 @@ yy_match:  			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  				{  				yy_current_state = (int) yy_def[yy_current_state]; -				if ( yy_current_state >= 186 ) +				if ( yy_current_state >= 194 )  					yy_c = yy_meta[(unsigned int) yy_c];  				}  			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];  			++yy_cp;  			} -		while ( yy_base[yy_current_state] != 446 ); +		while ( yy_base[yy_current_state] != 459 );  yy_find_action:  		yy_act = yy_accept[yy_current_state]; @@ -964,158 +972,168 @@ YY_RULE_SETUP  case 4:  YY_RULE_SETUP  #line 71 "engines/director/lingo/lingo-lex.l" -{ count(); return tAND; } +{ count(); return tALERT; }  	YY_BREAK  case 5:  YY_RULE_SETUP  #line 72 "engines/director/lingo/lingo-lex.l" -{ count(); return tCONTAINS; } +{ count(); return tAND; }  	YY_BREAK  case 6:  YY_RULE_SETUP  #line 73 "engines/director/lingo/lingo-lex.l" -{ count(); return tDOWN; } +{ count(); return tBEEP; }  	YY_BREAK  case 7:  YY_RULE_SETUP  #line 74 "engines/director/lingo/lingo-lex.l" -{ count(); return tIF; } +{ count(); return tCONTAINS; }  	YY_BREAK  case 8: -/* rule 8 can match eol */  YY_RULE_SETUP  #line 75 "engines/director/lingo/lingo-lex.l" -{ countnl(); return tNLELSIF; } +{ count(); return tDOWN; }  	YY_BREAK  case 9: -/* rule 9 can match eol */  YY_RULE_SETUP  #line 76 "engines/director/lingo/lingo-lex.l" -{ countnl(); return tNLELSE; } +{ count(); return tIF; }  	YY_BREAK  case 10: +/* rule 10 can match eol */  YY_RULE_SETUP  #line 77 "engines/director/lingo/lingo-lex.l" -{ count(); return tELSE; } +{ countnl(); return tNLELSIF; }  	YY_BREAK  case 11: +/* rule 11 can match eol */  YY_RULE_SETUP  #line 78 "engines/director/lingo/lingo-lex.l" -{ count(); return tEND; } +{ countnl(); return tNLELSE; }  	YY_BREAK  case 12:  YY_RULE_SETUP  #line 79 "engines/director/lingo/lingo-lex.l" -{ count(); return tFACTORY; } +{ count(); return tELSE; }  	YY_BREAK  case 13:  YY_RULE_SETUP  #line 80 "engines/director/lingo/lingo-lex.l" -{ count(); return tEXIT; } +{ count(); return tEND; }  	YY_BREAK  case 14:  YY_RULE_SETUP  #line 81 "engines/director/lingo/lingo-lex.l" -{ count(); return tFRAME; } +{ count(); return tFACTORY; }  	YY_BREAK  case 15:  YY_RULE_SETUP  #line 82 "engines/director/lingo/lingo-lex.l" -{ count(); return tGLOBAL; } +{ count(); return tEXIT; }  	YY_BREAK  case 16:  YY_RULE_SETUP  #line 83 "engines/director/lingo/lingo-lex.l" -{ count(); return tGO; } +{ count(); return tFRAME; }  	YY_BREAK  case 17:  YY_RULE_SETUP  #line 84 "engines/director/lingo/lingo-lex.l" -{ count(); return tINTERSECTS; } +{ count(); return tGLOBAL; }  	YY_BREAK  case 18:  YY_RULE_SETUP  #line 85 "engines/director/lingo/lingo-lex.l" -{ count(); return tINTO; } +{ count(); return tGO; }  	YY_BREAK  case 19:  YY_RULE_SETUP  #line 86 "engines/director/lingo/lingo-lex.l" -{ count(); return tLOOP; } +{ count(); return tINTERSECTS; }  	YY_BREAK  case 20:  YY_RULE_SETUP  #line 87 "engines/director/lingo/lingo-lex.l" -{ count(); return tMACRO; } +{ count(); return tINTO; }  	YY_BREAK  case 21:  YY_RULE_SETUP  #line 88 "engines/director/lingo/lingo-lex.l" -{ count(); return tMCI; } +{ count(); return tLOOP; }  	YY_BREAK  case 22:  YY_RULE_SETUP  #line 89 "engines/director/lingo/lingo-lex.l" -{ count(); return tMCIWAIT; } +{ count(); return tMACRO; }  	YY_BREAK  case 23:  YY_RULE_SETUP  #line 90 "engines/director/lingo/lingo-lex.l" -{ count(); return tMETHOD; } +{ count(); return tMCI; }  	YY_BREAK  case 24:  YY_RULE_SETUP  #line 91 "engines/director/lingo/lingo-lex.l" -{ count(); return tMOVIE; } +{ count(); return tMCIWAIT; }  	YY_BREAK  case 25:  YY_RULE_SETUP  #line 92 "engines/director/lingo/lingo-lex.l" -{ count(); return tNEXT; } +{ count(); return tMETHOD; }  	YY_BREAK  case 26:  YY_RULE_SETUP  #line 93 "engines/director/lingo/lingo-lex.l" -{ count(); return tNOT; } +{ count(); return tMOVIE; }  	YY_BREAK  case 27:  YY_RULE_SETUP  #line 94 "engines/director/lingo/lingo-lex.l" -{ count(); return tOF; } +{ count(); return tNEXT; }  	YY_BREAK  case 28:  YY_RULE_SETUP  #line 95 "engines/director/lingo/lingo-lex.l" -{ count(); return tOR; } +{ count(); return tNOT; }  	YY_BREAK  case 29:  YY_RULE_SETUP  #line 96 "engines/director/lingo/lingo-lex.l" -{ count(); return tPREVIOUS; } +{ count(); return tOF; }  	YY_BREAK  case 30:  YY_RULE_SETUP  #line 97 "engines/director/lingo/lingo-lex.l" -{ count(); return tPUT; } +{ count(); return tOR; }  	YY_BREAK  case 31:  YY_RULE_SETUP  #line 98 "engines/director/lingo/lingo-lex.l" -{ count(); return tREPEAT; } +{ count(); return tPREVIOUS; }  	YY_BREAK  case 32:  YY_RULE_SETUP  #line 99 "engines/director/lingo/lingo-lex.l" -{ count(); return tSET; } +{ count(); return tPUT; }  	YY_BREAK  case 33:  YY_RULE_SETUP  #line 100 "engines/director/lingo/lingo-lex.l" -{ count(); return tSTARTS; } +{ count(); return tREPEAT; }  	YY_BREAK  case 34:  YY_RULE_SETUP  #line 101 "engines/director/lingo/lingo-lex.l" +{ count(); return tSET; } +	YY_BREAK +case 35: +YY_RULE_SETUP +#line 102 "engines/director/lingo/lingo-lex.l" +{ count(); return tSTARTS; } +	YY_BREAK +case 36: +YY_RULE_SETUP +#line 103 "engines/director/lingo/lingo-lex.l"  {  		count(); @@ -1157,9 +1175,9 @@ YY_RULE_SETUP  		warning("Unhandled the entity %s", ptr);  	}  	YY_BREAK -case 35: +case 37:  YY_RULE_SETUP -#line 141 "engines/director/lingo/lingo-lex.l" +#line 143 "engines/director/lingo/lingo-lex.l"  {  		count(); @@ -1180,64 +1198,64 @@ YY_RULE_SETUP  		warning("Unhandled the entity %s", ptr);  	}  	YY_BREAK -case 36: -YY_RULE_SETUP -#line 160 "engines/director/lingo/lingo-lex.l" -{ count(); return tTHEN; } -	YY_BREAK -case 37: -YY_RULE_SETUP -#line 161 "engines/director/lingo/lingo-lex.l" -{ count(); return tTO; } -	YY_BREAK  case 38:  YY_RULE_SETUP  #line 162 "engines/director/lingo/lingo-lex.l" -{ count(); return tSPRITE; } +{ count(); return tTHEN; }  	YY_BREAK  case 39:  YY_RULE_SETUP  #line 163 "engines/director/lingo/lingo-lex.l" -{ count(); return tWITH; } +{ count(); return tTO; }  	YY_BREAK  case 40:  YY_RULE_SETUP  #line 164 "engines/director/lingo/lingo-lex.l" -{ count(); return tWITHIN; } +{ count(); return tSPRITE; }  	YY_BREAK  case 41:  YY_RULE_SETUP  #line 165 "engines/director/lingo/lingo-lex.l" -{ count(); return tWHEN; } +{ count(); return tWITH; }  	YY_BREAK  case 42:  YY_RULE_SETUP  #line 166 "engines/director/lingo/lingo-lex.l" -{ count(); return tWHILE; } +{ count(); return tWITHIN; }  	YY_BREAK  case 43:  YY_RULE_SETUP -#line 168 "engines/director/lingo/lingo-lex.l" -{ count(); return tNEQ; } +#line 167 "engines/director/lingo/lingo-lex.l" +{ count(); return tWHEN; }  	YY_BREAK  case 44:  YY_RULE_SETUP -#line 169 "engines/director/lingo/lingo-lex.l" -{ count(); return tGE; } +#line 168 "engines/director/lingo/lingo-lex.l" +{ count(); return tWHILE; }  	YY_BREAK  case 45:  YY_RULE_SETUP  #line 170 "engines/director/lingo/lingo-lex.l" -{ count(); return tLE; } +{ count(); return tNEQ; }  	YY_BREAK  case 46:  YY_RULE_SETUP  #line 171 "engines/director/lingo/lingo-lex.l" -{ count(); return tCONCAT; } +{ count(); return tGE; }  	YY_BREAK  case 47:  YY_RULE_SETUP +#line 172 "engines/director/lingo/lingo-lex.l" +{ count(); return tLE; } +	YY_BREAK +case 48: +YY_RULE_SETUP  #line 173 "engines/director/lingo/lingo-lex.l" +{ count(); return tCONCAT; } +	YY_BREAK +case 49: +YY_RULE_SETUP +#line 175 "engines/director/lingo/lingo-lex.l"  {  		count();  		yylval.s = new Common::String(yytext); @@ -1250,43 +1268,43 @@ YY_RULE_SETUP  		return ID;  	}  	YY_BREAK -case 48: -YY_RULE_SETUP -#line 184 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.f = atof(yytext); return vFLOAT; } -	YY_BREAK -case 49: -YY_RULE_SETUP -#line 185 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.i = strtol(yytext, NULL, 10); return vINT; } -	YY_BREAK  case 50:  YY_RULE_SETUP  #line 186 "engines/director/lingo/lingo-lex.l" -{ count(); return *yytext; } +{ count(); yylval.f = atof(yytext); return vFLOAT; }  	YY_BREAK  case 51: -/* rule 51 can match eol */  YY_RULE_SETUP  #line 187 "engines/director/lingo/lingo-lex.l" -{ return '\n'; } +{ count(); yylval.i = strtol(yytext, NULL, 10); return vINT; }  	YY_BREAK  case 52:  YY_RULE_SETUP  #line 188 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return vSTRING; } +{ count(); return *yytext; }  	YY_BREAK  case 53: +/* rule 53 can match eol */  YY_RULE_SETUP  #line 189 "engines/director/lingo/lingo-lex.l" - +{ return '\n'; }  	YY_BREAK  case 54:  YY_RULE_SETUP +#line 190 "engines/director/lingo/lingo-lex.l" +{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return vSTRING; } +	YY_BREAK +case 55: +YY_RULE_SETUP  #line 191 "engines/director/lingo/lingo-lex.l" + +	YY_BREAK +case 56: +YY_RULE_SETUP +#line 193 "engines/director/lingo/lingo-lex.l"  ECHO;  	YY_BREAK -#line 1290 "engines/director/lingo/lingo-lex.cpp" +#line 1308 "engines/director/lingo/lingo-lex.cpp"  case YY_STATE_EOF(INITIAL):  	yyterminate(); @@ -1579,7 +1597,7 @@ static int yy_get_next_buffer (void)  		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  			{  			yy_current_state = (int) yy_def[yy_current_state]; -			if ( yy_current_state >= 186 ) +			if ( yy_current_state >= 194 )  				yy_c = yy_meta[(unsigned int) yy_c];  			}  		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1607,11 +1625,11 @@ static int yy_get_next_buffer (void)  	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  		{  		yy_current_state = (int) yy_def[yy_current_state]; -		if ( yy_current_state >= 186 ) +		if ( yy_current_state >= 194 )  			yy_c = yy_meta[(unsigned int) yy_c];  		}  	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; -	yy_is_jam = (yy_current_state == 185); +	yy_is_jam = (yy_current_state == 193);  	return yy_is_jam ? 0 : yy_current_state;  } @@ -2286,7 +2304,7 @@ void yyfree (void * ptr )  #define YYTABLES_NAME "yytables" -#line 191 "engines/director/lingo/lingo-lex.l" +#line 193 "engines/director/lingo/lingo-lex.l" diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index e96a82e972..b9ecfc3a9d 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -68,7 +68,9 @@ whitespace [\t ]  ^{whitespace}+		{ count(); }  [\t]+				{ count(); return ' '; } +(?i:alert)			{ count(); return tALERT; }  (?i:and)			{ count(); return tAND; } +(?i:beep)			{ count(); return tBEEP; }  (?i:contains)		{ count(); return tCONTAINS; }  (?i:down)			{ count(); return tDOWN; }  (?i:if)				{ count(); return tIF; } diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index fb68dbb4e3..023a1947e5 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -244,6 +244,9 @@ public:  	static void c_gotoprevious();  	static void c_global(); +	static void c_alert(); +	static void c_beep(); +  	static void b_abs();  	static void b_atan();  	static void b_chars(); @@ -273,6 +276,8 @@ public:  	void func_gotoloop();  	void func_gotonext();  	void func_gotoprevious(); +	void func_alert(Common::String &s); +	void func_beep(int num);  public:  	void setTheEntity(int entity, Datum &id, int field, Datum &d); | 
