DIRECTOR: Lingo. Added stubs for 'do' and 'open' commands

This commit is contained in:
Eugene Sandulenko 2016-08-06 21:16:34 +02:00
parent 949919bebd
commit bbc6e2aa6a
9 changed files with 701 additions and 632 deletions

View File

@ -58,6 +58,7 @@ static struct BuiltinProto {
{ "continue", Lingo::b_continue, 0, 0, false },
{ "cursor", Lingo::b_cursor, 1, 1, false },
{ "delay", Lingo::b_delay, 1, 1, false },
{ "do", Lingo::b_do, 1, 1, false },
{ "dontPassEvent", Lingo::b_dontPassEvent, 0, 0, false },
{ "editableText", Lingo::b_editableText, 0, 0, false },
{ "installMenu", Lingo::b_installMenu, 1, 1, false },
@ -330,6 +331,13 @@ void Lingo::b_moveableSprite() {
warning("STUB: b_moveableSprite(%d)", d.u.i);
}
void Lingo::b_do() {
Datum d = g_lingo->pop();
d.toString();
warning("STUB: b_do(%s)", d.u.s->c_str());
}
///////////////////
// Point

View File

@ -806,4 +806,14 @@ void Lingo::c_global() {
g_lingo->_pc += g_lingo->calcStringAlignment(name.c_str());
}
void Lingo::c_open() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
d1.toString();
d2.toString();
warning("STUB: c_open(%s, %s)", d1.u.s->c_str(), d2.u.s->c_str());
}
}

File diff suppressed because it is too large Load Diff

View File

@ -87,21 +87,22 @@
tNLELSE = 303,
tFACTORY = 304,
tMETHOD = 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
tOPEN = 306,
tGE = 307,
tLE = 308,
tGT = 309,
tLT = 310,
tEQ = 311,
tNEQ = 312,
tAND = 313,
tOR = 314,
tNOT = 315,
tCONCAT = 316,
tCONTAINS = 317,
tSTARTS = 318,
tSPRITE = 319,
tINTERSECTS = 320,
tWITHIN = 321
};
#endif
/* Tokens. */
@ -153,21 +154,22 @@
#define tNLELSE 303
#define tFACTORY 304
#define tMETHOD 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
#define tOPEN 306
#define tGE 307
#define tLE 308
#define tGT 309
#define tLT 310
#define tEQ 311
#define tNEQ 312
#define tAND 313
#define tOR 314
#define tNOT 315
#define tCONCAT 316
#define tCONTAINS 317
#define tSTARTS 318
#define tSPRITE 319
#define tINTERSECTS 320
#define tWITHIN 321
@ -185,7 +187,7 @@ typedef union YYSTYPE
Common::Array<double> *arr;
}
/* Line 1529 of yacc.c. */
#line 189 "engines/director/lingo/lingo-gr.hpp"
#line 191 "engines/director/lingo/lingo-gr.hpp"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1

View File

@ -84,7 +84,7 @@ void yyerror(char *s) {
%token<s> BLTIN BLTINNOARGS BLTINNOARGSORONE BLTINONEARG ID STRING HANDLER
%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 tOPEN
%token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT
%token tCONCAT tCONTAINS tSTARTS
%token tSPRITE tINTERSECTS tWITHIN
@ -412,6 +412,8 @@ func: tMCI STRING { g_lingo->code1(g_lingo->c_mci); g_lingo->codeString($2->c_
| BLTINNOARGSORONE {
g_lingo->code2(g_lingo->c_voidpush, g_lingo->_handlers[*$1]->u.func);
delete $1; }
| tOPEN expr tWITH expr { g_lingo->code1(g_lingo->c_open); }
| tOPEN expr { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); }
;
globallist: ID { g_lingo->code1(g_lingo->c_global); g_lingo->codeString($1->c_str()); delete $1; }

View File

@ -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 55
#define YY_END_OF_BUFFER 56
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@ -373,28 +373,28 @@ 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[189] =
{ 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,
0, 0, 56, 54, 3, 52, 52, 54, 54, 51,
51, 51, 50, 51, 51, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 2, 2, 3, 52, 0, 0, 52, 0,
0, 53, 47, 1, 49, 50, 46, 44, 45, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 16,
7, 48, 48, 48, 48, 48, 48, 48, 48, 27,
48, 29, 48, 48, 48, 48, 48, 48, 48, 38,
48, 48, 2, 2, 0, 1, 49, 4, 48, 48,
48, 11, 48, 48, 48, 48, 48, 48, 48, 21,
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
48, 48, 48, 26, 48, 48, 31, 48, 33, 48,
48, 48, 48, 48, 48, 0, 48, 6, 10, 13,
48, 48, 48, 48, 18, 19, 48, 48, 48, 48,
25, 28, 48, 48, 48, 48, 0, 37, 42, 48,
40, 9, 48, 48, 14, 48, 48, 20, 48, 48,
24, 48, 48, 48, 48, 36, 43, 48, 0, 48,
48, 15, 48, 48, 23, 48, 32, 39, 34, 0,
41, 0, 48, 12, 48, 22, 48, 0, 8, 5,
48, 30, 0, 48, 0, 17, 35, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@ -439,55 +439,59 @@ 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[194] =
{ 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,
0, 59, 164, 454, 63, 67, 71, 75, 153, 454,
144, 141, 52, 68, 124, 56, 0, 56, 57, 67,
72, 68, 68, 69, 112, 70, 104, 105, 80, 117,
119, 120, 171, 175, 179, 97, 183, 187, 191, 80,
116, 454, 454, 0, 93, 134, 454, 454, 454, 0,
112, 82, 104, 137, 172, 174, 181, 184, 173, 0,
0, 170, 175, 187, 182, 176, 175, 176, 181, 0,
196, 0, 197, 186, 190, 188, 197, 218, 218, 0,
225, 214, 249, 260, 216, 0, 80, 0, 223, 229,
230, 0, 226, 227, 234, 250, 248, 242, 244, 240,
255, 257, 252, 0, 258, 252, 0, 268, 0, 265,
262, 291, 273, 277, 267, 276, 288, 0, 0, 0,
277, 287, 295, 284, 0, 0, 288, 305, 289, 302,
0, 0, 299, 309, 294, 297, 330, 0, 0, 312,
310, 345, 313, 308, 0, 317, 312, 0, 328, 335,
0, 328, 326, 335, 328, 362, 0, 335, 366, 336,
332, 0, 351, 340, 0, 340, 0, 0, 0, 378,
0, 354, 345, 0, 367, 0, 356, 368, 454, 0,
359, 0, 388, 366, 398, 0, 399, 454, 429, 431,
437, 442, 447
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
} ;
static yyconst flex_int16_t yy_def[191] =
static yyconst flex_int16_t yy_def[194] =
{ 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,
188, 1, 188, 188, 188, 188, 188, 188, 189, 188,
188, 188, 188, 188, 188, 190, 190, 190, 190, 190,
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 188, 188, 188, 188, 188, 188, 188, 188,
189, 188, 188, 191, 188, 188, 188, 188, 188, 190,
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 188, 188, 188, 191, 188, 190, 190, 190,
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 190, 190, 190, 188, 190, 190, 190, 190,
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 190, 190, 190, 190, 192, 190, 190, 190,
190, 188, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 190, 190, 190, 192, 190, 190, 188, 190,
190, 190, 190, 190, 190, 190, 190, 190, 190, 188,
190, 188, 190, 190, 190, 190, 190, 188, 188, 190,
190, 190, 188, 190, 193, 190, 193, 0, 188, 188,
188, 188, 188
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
} ;
static yyconst flex_int16_t yy_nxt[507] =
static yyconst flex_int16_t yy_nxt[515] =
{ 0,
4, 5, 6, 7, 8, 9, 10, 11, 12, 4,
13, 14, 10, 15, 16, 17, 18, 19, 20, 21,
@ -498,56 +502,57 @@ static yyconst flex_int16_t yy_nxt[507] =
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,
87, 54, 59, 55, 62, 60, 63, 69, 75, 36,
86, 58, 56, 36, 36, 51, 52, 53, 71, 40,
36, 58, 56, 87, 85, 51, 52, 53, 89, 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,
69, 42, 75, 70, 58, 56, 64, 85, 65, 88,
66, 89, 71, 72, 73, 76, 49, 74, 90, 67,
79, 81, 82, 45, 46, 77, 80, 70, 78, 44,
64, 43, 65, 88, 66, 71, 72, 73, 42, 76,
74, 90, 67, 188, 79, 81, 82, 91, 77, 80,
188, 78, 83, 36, 36, 84, 84, 36, 36, 84,
35, 36, 36, 37, 37, 36, 36, 37, 38, 92,
91, 38, 38, 39, 39, 38, 93, 94, 95, 188,
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,
96, 97, 98, 99, 100, 40, 188, 101, 102, 40,
188, 103, 104, 92, 105, 106, 188, 107, 108, 109,
93, 94, 95, 96, 97, 98, 110, 99, 100, 40,
101, 102, 111, 40, 103, 104, 112, 188, 105, 106,
107, 108, 109, 113, 188, 115, 116, 114, 119, 110,
83, 36, 36, 84, 117, 118, 111, 120, 121, 122,
112, 84, 36, 36, 84, 123, 124, 113, 115, 116,
126, 114, 119, 127, 128, 125, 129, 117, 118, 130,
120, 121, 122, 131, 132, 133, 134, 135, 141, 123,
124, 136, 137, 126, 142, 137, 127, 128, 125, 139,
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,
129, 140, 143, 130, 144, 145, 131, 132, 133, 146,
134, 135, 141, 147, 136, 148, 150, 138, 142, 149,
151, 152, 139, 153, 140, 154, 143, 144, 155, 145,
157, 137, 158, 146, 137, 160, 147, 161, 148, 150,
138, 162, 163, 149, 151, 152, 159, 153, 154, 159,
164, 155, 165, 168, 157, 166, 158, 167, 169, 160,
161, 171, 173, 170, 162, 163, 170, 159, 174, 175,
159, 176, 177, 179, 164, 180, 165, 168, 166, 170,
167, 169, 170, 181, 171, 173, 182, 183, 172, 185,
184, 174, 185, 175, 176, 177, 186, 179, 180, 185,
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,
188, 188, 185, 188, 188, 178, 188, 181, 188, 182,
188, 183, 172, 184, 188, 188, 188, 188, 188, 186,
188, 188, 188, 188, 188, 188, 188, 188, 178, 41,
41, 188, 41, 41, 41, 50, 50, 86, 86, 188,
188, 86, 86, 156, 188, 188, 188, 156, 187, 188,
188, 188, 187, 3, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
185, 185, 185, 185, 185, 185
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188
} ;
static yyconst flex_int16_t yy_chk[507] =
static yyconst flex_int16_t yy_chk[515] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@ -558,53 +563,54 @@ static yyconst flex_int16_t yy_chk[507] =
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,
87, 20, 22, 20, 23, 22, 24, 26, 29, 36,
45, 21, 20, 36, 36, 16, 18, 19, 27, 6,
36, 21, 20, 45, 40, 16, 18, 19, 52, 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,
26, 41, 29, 27, 21, 20, 25, 40, 25, 51,
25, 52, 27, 27, 28, 30, 15, 28, 53, 25,
31, 32, 32, 46, 46, 30, 31, 27, 30, 12,
25, 11, 25, 51, 25, 27, 27, 28, 9, 30,
28, 53, 25, 3, 31, 32, 32, 54, 30, 31,
0, 30, 33, 33, 33, 33, 34, 34, 34, 34,
35, 35, 35, 35, 37, 37, 37, 37, 38, 55,
54, 38, 39, 39, 39, 39, 56, 57, 58, 0,
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,
59, 62, 63, 64, 65, 38, 0, 66, 67, 39,
0, 68, 69, 55, 71, 73, 0, 74, 75, 76,
56, 57, 58, 59, 62, 63, 77, 64, 65, 38,
66, 67, 78, 39, 68, 69, 79, 0, 71, 73,
74, 75, 76, 81, 0, 82, 85, 81, 91, 77,
83, 83, 83, 83, 89, 90, 78, 93, 94, 95,
79, 84, 84, 84, 84, 96, 97, 81, 82, 85,
98, 81, 91, 99, 100, 97, 101, 89, 90, 102,
93, 94, 95, 103, 105, 106, 108, 110, 115, 96,
97, 111, 112, 98, 116, 112, 99, 100, 97, 113,
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,
101, 114, 117, 102, 121, 122, 103, 105, 106, 123,
108, 110, 115, 124, 111, 127, 129, 112, 116, 128,
130, 133, 113, 134, 114, 135, 117, 121, 136, 122,
140, 137, 141, 123, 137, 143, 124, 144, 127, 129,
112, 146, 147, 128, 130, 133, 142, 134, 135, 142,
149, 136, 150, 154, 140, 152, 141, 153, 155, 143,
144, 158, 160, 156, 146, 147, 156, 159, 161, 163,
159, 164, 166, 172, 149, 173, 150, 154, 152, 170,
153, 155, 170, 175, 158, 160, 177, 178, 159, 183,
181, 161, 183, 163, 164, 166, 184, 172, 173, 185,
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,
187, 0, 185, 187, 0, 170, 0, 175, 0, 177,
0, 178, 159, 181, 0, 0, 0, 0, 0, 184,
0, 0, 0, 0, 0, 0, 0, 0, 170, 189,
189, 0, 189, 189, 189, 190, 190, 191, 191, 0,
0, 191, 191, 192, 0, 0, 0, 192, 193, 0,
0, 0, 193, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
185, 185, 185, 185, 185, 185
188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
188, 188, 188, 188
} ;
static yy_state_type yy_last_accepting_state;
@ -678,7 +684,7 @@ static void countnl() {
g_lingo->_colnumber = strlen(p);
}
#line 682 "engines/director/lingo/lingo-lex.cpp"
#line 688 "engines/director/lingo/lingo-lex.cpp"
#define INITIAL 0
@ -866,7 +872,7 @@ YY_DECL
#line 69 "engines/director/lingo/lingo-lex.l"
#line 870 "engines/director/lingo/lingo-lex.cpp"
#line 876 "engines/director/lingo/lingo-lex.cpp"
if ( !(yy_init) )
{
@ -920,13 +926,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 >= 189 )
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] != 454 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@ -1090,36 +1096,41 @@ YY_RULE_SETUP
case 28:
YY_RULE_SETUP
#line 99 "engines/director/lingo/lingo-lex.l"
{ count(); return tOR; }
{ count(); return tOPEN; }
YY_BREAK
case 29:
YY_RULE_SETUP
#line 100 "engines/director/lingo/lingo-lex.l"
{ count(); return tPREVIOUS; }
{ count(); return tOR; }
YY_BREAK
case 30:
YY_RULE_SETUP
#line 101 "engines/director/lingo/lingo-lex.l"
{ count(); return tPUT; }
{ count(); return tPREVIOUS; }
YY_BREAK
case 31:
YY_RULE_SETUP
#line 102 "engines/director/lingo/lingo-lex.l"
{ count(); return tREPEAT; }
{ count(); return tPUT; }
YY_BREAK
case 32:
YY_RULE_SETUP
#line 103 "engines/director/lingo/lingo-lex.l"
{ count(); return tSET; }
{ count(); return tREPEAT; }
YY_BREAK
case 33:
YY_RULE_SETUP
#line 104 "engines/director/lingo/lingo-lex.l"
{ count(); return tSTARTS; }
{ count(); return tSET; }
YY_BREAK
case 34:
YY_RULE_SETUP
#line 105 "engines/director/lingo/lingo-lex.l"
{ count(); return tSTARTS; }
YY_BREAK
case 35:
YY_RULE_SETUP
#line 106 "engines/director/lingo/lingo-lex.l"
{
count();
@ -1161,9 +1172,9 @@ YY_RULE_SETUP
warning("Unhandled the entity %s", ptr);
}
YY_BREAK
case 35:
case 36:
YY_RULE_SETUP
#line 145 "engines/director/lingo/lingo-lex.l"
#line 146 "engines/director/lingo/lingo-lex.l"
{
count();
@ -1184,64 +1195,64 @@ YY_RULE_SETUP
warning("Unhandled the entity %s", ptr);
}
YY_BREAK
case 36:
YY_RULE_SETUP
#line 164 "engines/director/lingo/lingo-lex.l"
{ count(); return tTHEN; }
YY_BREAK
case 37:
YY_RULE_SETUP
#line 165 "engines/director/lingo/lingo-lex.l"
{ count(); return tTO; }
{ count(); return tTHEN; }
YY_BREAK
case 38:
YY_RULE_SETUP
#line 166 "engines/director/lingo/lingo-lex.l"
{ count(); return tSPRITE; }
{ count(); return tTO; }
YY_BREAK
case 39:
YY_RULE_SETUP
#line 167 "engines/director/lingo/lingo-lex.l"
{ count(); return tWITH; }
{ count(); return tSPRITE; }
YY_BREAK
case 40:
YY_RULE_SETUP
#line 168 "engines/director/lingo/lingo-lex.l"
{ count(); return tWITHIN; }
{ count(); return tWITH; }
YY_BREAK
case 41:
YY_RULE_SETUP
#line 169 "engines/director/lingo/lingo-lex.l"
{ count(); return tWHEN; }
{ count(); return tWITHIN; }
YY_BREAK
case 42:
YY_RULE_SETUP
#line 170 "engines/director/lingo/lingo-lex.l"
{ count(); return tWHILE; }
{ count(); return tWHEN; }
YY_BREAK
case 43:
YY_RULE_SETUP
#line 172 "engines/director/lingo/lingo-lex.l"
{ count(); return tNEQ; }
#line 171 "engines/director/lingo/lingo-lex.l"
{ count(); return tWHILE; }
YY_BREAK
case 44:
YY_RULE_SETUP
#line 173 "engines/director/lingo/lingo-lex.l"
{ count(); return tGE; }
{ count(); return tNEQ; }
YY_BREAK
case 45:
YY_RULE_SETUP
#line 174 "engines/director/lingo/lingo-lex.l"
{ count(); return tLE; }
{ count(); return tGE; }
YY_BREAK
case 46:
YY_RULE_SETUP
#line 175 "engines/director/lingo/lingo-lex.l"
{ count(); return tCONCAT; }
{ count(); return tLE; }
YY_BREAK
case 47:
YY_RULE_SETUP
#line 177 "engines/director/lingo/lingo-lex.l"
#line 176 "engines/director/lingo/lingo-lex.l"
{ count(); return tCONCAT; }
YY_BREAK
case 48:
YY_RULE_SETUP
#line 178 "engines/director/lingo/lingo-lex.l"
{
count();
yylval.s = new Common::String(yytext);
@ -1267,43 +1278,43 @@ YY_RULE_SETUP
return ID;
}
YY_BREAK
case 48:
YY_RULE_SETUP
#line 201 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.f = atof(yytext); return FLOAT; }
YY_BREAK
case 49:
YY_RULE_SETUP
#line 202 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
{ count(); yylval.f = atof(yytext); return FLOAT; }
YY_BREAK
case 50:
YY_RULE_SETUP
#line 203 "engines/director/lingo/lingo-lex.l"
{ count(); return *yytext; }
{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
YY_BREAK
case 51:
/* rule 51 can match eol */
YY_RULE_SETUP
#line 204 "engines/director/lingo/lingo-lex.l"
{ return '\n'; }
{ count(); return *yytext; }
YY_BREAK
case 52:
/* rule 52 can match eol */
YY_RULE_SETUP
#line 205 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
{ return '\n'; }
YY_BREAK
case 53:
YY_RULE_SETUP
#line 206 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
YY_BREAK
case 54:
YY_RULE_SETUP
#line 208 "engines/director/lingo/lingo-lex.l"
#line 207 "engines/director/lingo/lingo-lex.l"
YY_BREAK
case 55:
YY_RULE_SETUP
#line 209 "engines/director/lingo/lingo-lex.l"
ECHO;
YY_BREAK
#line 1307 "engines/director/lingo/lingo-lex.cpp"
#line 1318 "engines/director/lingo/lingo-lex.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@ -1596,7 +1607,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 >= 189 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@ -1624,11 +1635,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 >= 189 )
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 == 188);
return yy_is_jam ? 0 : yy_current_state;
}
@ -2303,7 +2314,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
#line 208 "engines/director/lingo/lingo-lex.l"
#line 209 "engines/director/lingo/lingo-lex.l"

View File

@ -96,6 +96,7 @@ whitespace [\t ]
(?i:next) { count(); return tNEXT; }
(?i:not) { count(); return tNOT; }
(?i:of) { count(); return tOF; }
(?i:open) { count(); return tOPEN; }
(?i:or) { count(); return tOR; }
(?i:previous) { count(); return tPREVIOUS; }
(?i:put) { count(); return tPUT; }

View File

@ -249,6 +249,8 @@ public:
static void c_gotoprevious();
static void c_global();
static void c_open();
static void b_abs();
static void b_atan();
static void b_chars();
@ -282,6 +284,7 @@ public:
static void b_closeXlib();
static void b_cursor();
static void b_delay();
static void b_do();
static void b_point();

View File

@ -2,3 +2,7 @@ beep
beep 3
alert "Hi"
alert "Hi" && "there"
open "Hello"
open "Hello" with "Finder"
open "Hello" && "more" with "Finder"