From c147a5c979c26f1b6ab8cdc2f5ced82a0fde11e1 Mon Sep 17 00:00:00 2001 From: djsrv <dservilla@gmail.com> Date: Fri, 21 Aug 2020 21:35:53 -0400 Subject: [PATCH] DIRECTOR: LINGO: Implement chunk refs --- engines/director/lingo/lingo-code.cpp | 372 +++--- engines/director/lingo/lingo-code.h | 1 + engines/director/lingo/lingo-gr.cpp | 1553 +++++++++++++------------ engines/director/lingo/lingo-gr.h | 153 +-- engines/director/lingo/lingo-gr.y | 2 +- engines/director/lingo/lingo.cpp | 17 +- engines/director/lingo/lingo.h | 12 +- engines/director/types.h | 7 + 8 files changed, 1058 insertions(+), 1059 deletions(-) diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index f0916fe8823..02c1cef86b8 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -875,266 +875,226 @@ void LC::c_within() { } } +Datum LC::chunkRef(ChunkType type, int startChunk, int endChunk, const Datum &src) { + // A chunk expression is made up of 0 or more chunks within a source text. + // These chunks are called chars, words, items, or lines, but it's easier to think of them + // as a substring between 0 or more skip characters and a break character (or the end of the string). + // This function returns a reference to the source text, the start index of the first chunk, + // and the end index of the last chunk in the chunk expression. + + if (startChunk < 1 || (0 > endChunk && endChunk < startChunk)) + return src; + + if (endChunk < 1) + endChunk = startChunk; + + Common::String skipChars; + Common::String breakChars; + + switch (type) { + case kChunkChar: + skipChars = ""; + breakChars = ""; + break; + case kChunkWord: + skipChars = "\t\n\r "; + breakChars = "\t\n\r "; + break; + case kChunkItem: + skipChars = ""; + breakChars = Common::String::format("%c", g_lingo->_itemDelimiter); + break; + case kChunkLine: + skipChars = ""; + breakChars = "\n\r"; + break; + } + + Common::String str = src.asString(); + int idx = 0; + int chunkNum = 0; + + int startIdx = -1; + int endIdx = -1; + + while (true) { + // each iteration processes one chunk + + // find the start of the chunk + while (idx < (int)str.size() && skipChars.contains(str[idx])) { + idx++; + } + chunkNum++; + if (chunkNum == startChunk) { + startIdx = idx; // found start of chunk expression + } + + // find the end of the chunk + if (!breakChars.empty()) { + while (idx < (int)str.size() && !breakChars.contains(str[idx])) { + idx++; + } + } else if (idx < (int)str.size()) { + idx++; + } + if (chunkNum == endChunk || idx == (int)str.size()) { + endIdx = idx; // found end of chunk expression + break; + } + + if (!breakChars.empty()) + idx++; // skip break char + } + + if (startIdx < 0) + startIdx = endIdx; + + Datum res; + res.u.cref = new ChunkReference(src, startIdx, endIdx); + res.type = CHUNKREF; + return res; +} + void LC::c_of() { // put char 5 of word 1 of line 2 into field "thing" - Datum target = g_lingo->pop(); - Datum last_line = g_lingo->pop(); - Datum first_line = g_lingo->pop(); - Datum last_item = g_lingo->pop(); - Datum first_item = g_lingo->pop(); - Datum last_word = g_lingo->pop(); - Datum first_word = g_lingo->pop(); - Datum last_char = g_lingo->pop(); - Datum first_char = g_lingo->pop(); + Datum src = g_lingo->pop(); + Datum lastLine = g_lingo->pop(); + Datum firstLine = g_lingo->pop(); + Datum lastItem = g_lingo->pop(); + Datum firstItem = g_lingo->pop(); + Datum lastWord = g_lingo->pop(); + Datum firstWord = g_lingo->pop(); + Datum lastChar = g_lingo->pop(); + Datum firstChar = g_lingo->pop(); - Common::String result = target.asString(); + Datum res = src; - if (first_line.u.i > 0) { - Common::String newline("\r"); - int first = first_line.u.i; - int last = first; - if (last_line.u.i > 0) { - if ((first_item.u.i > 0) || (first_word.u.i > 0) || (first_char.u.i > 0)) { - warning("LC::c_of(): last_line defined but unused"); - } else if (last_line.u.i < first_line.u.i) { - warning("LC::c_of(): last_line before first_line, ignoring"); - } else { - last = last_line.u.i; - } - } - uint32 pointer = 0; - int curLine = 0; - int firstIndex = -1; - int lastIndex = -1; - while (pointer < result.size()) { - curLine += 1; - if (curLine == first) { - firstIndex = pointer; - } - pointer = result.find(newline, pointer); - if (curLine == last) { - lastIndex = pointer; - break; - } - } - if (firstIndex < 0 || lastIndex < 0) { - warning("LC::c_of(): first_line or last_line out of range"); - result = ""; - } else { - result = result.substr(firstIndex, lastIndex); - } - } + if (firstChar.asInt() > 0) + res = LC::chunkRef(kChunkChar, firstChar.asInt(), lastChar.asInt(), src); + else if (firstWord.asInt() > 0) + res = LC::chunkRef(kChunkWord, firstWord.asInt(), lastWord.asInt(), src); + else if (firstItem.asInt() > 0) + res = LC::chunkRef(kChunkItem, firstItem.asInt(), lastItem.asInt(), src); + else if (lastLine.asInt() > 0) + res = LC::chunkRef(kChunkLine, firstLine.asInt(), lastLine.asInt(), src); - if (first_item.u.i > 0 || last_item.u.i > 0) { - warning("STUB: LC::c_of() item indexing"); - } - - if (first_word.u.i > 0) { - int first = first_word.u.i; - int last = first; - if (last_word.u.i > 0) { - if (first_char.u.i > 0) { - warning("LC::c_of(): last_word defined but unused"); - } else if (last_word.u.i < first_word.u.i) { - warning("LC::c_of(): last_word before first_word, ignoring"); - } else { - last = last_word.u.i; - } - } - uint32 pointer = 0; - int curWord = 0; - int firstIndex = -1; - int lastIndex = -1; - bool inWord = false; - while (pointer < result.size()) { - if ((result[pointer] == '\r') || (result[pointer] == '\t') || - (result[pointer] == '\n') || (result[pointer] == ' ')) { - if (inWord) { - inWord = false; - if (last == curWord) { - break; - } - } - } else { - if (!inWord) { - inWord = true; - curWord += 1; - if (first == curWord) { - firstIndex = pointer; - } - } - } - pointer += 1; - } - lastIndex = pointer; - if (firstIndex < 0) { - warning("LC::c_of(): first_word out of range"); - result = ""; - } else { - result = result.substr(firstIndex, lastIndex - firstIndex); - } - } - - if (first_char.u.i > 0) { - int first = first_char.u.i; - int last = first; - if (last_char.u.i > 0) { - if (last_char.u.i < first_char.u.i) { - warning("LC::c_of(): last_char before first_char, ignoring"); - } else { - last = last_char.u.i; - } - } - result = result.substr(first - 1, last - first); - } - - target = Datum(result); - - g_lingo->push(target); + g_lingo->push(res); } void LC::c_charOf() { - Datum d2 = g_lingo->pop(); // string - Datum d1 = g_lingo->pop(); // index + Datum src = g_lingo->pop(false); + Datum index = g_lingo->pop(); - if ((d1.type != INT && d1.type != FLOAT) || d2.type != STRING) { - warning("LC::c_charOf(): Called with wrong data types: %s and %s", d1.type2str(), d2.type2str()); + if ((index.type != INT && index.type != FLOAT) + || (src.type != STRING && src.type != VAR && src.type != FIELDREF && src.type != CHUNKREF && src.type != CASTREF)) { + g_lingo->lingoError("LC::c_charOf(): Called with wrong data types: %s and %s", index.type2str(), src.type2str()); g_lingo->push(Datum("")); return; } - Datum res; - int index = d1.asInt(); - Common::String chunkExpr = *d2.u.s; - - if (index < 1) - res = Datum(chunkExpr); - else if (uint(index) > chunkExpr.size()) - res = Datum(""); - else - res = Datum(Common::String(chunkExpr[index - 1])); - g_lingo->push(res); + g_lingo->push(LC::chunkRef(kChunkChar, index.asInt(), 0, src)); } void LC::c_charToOf() { - Datum d3 = g_lingo->pop(); // string - Datum d2 = g_lingo->pop(); // indexFrom - Datum d1 = g_lingo->pop(); // indexTo + Datum src = g_lingo->pop(false); + Datum indexTo = g_lingo->pop(); + Datum indexFrom = g_lingo->pop(); - if ((d1.type != INT && d1.type != FLOAT) || (d2.type != INT && d2.type != FLOAT) || d3.type != STRING) { - warning("LC::c_charToOf(): Called with wrong data types: %s, %s and %s", d1.type2str(), d2.type2str(), d3.type2str()); + if ((indexTo.type != INT && indexTo.type != FLOAT) || (indexFrom.type != INT && indexFrom.type != FLOAT) + || (src.type != STRING && src.type != VAR && src.type != FIELDREF && src.type != CHUNKREF && src.type != CASTREF)) { + warning("LC::c_charToOf(): Called with wrong data types: %s, %s and %s", indexTo.type2str(), indexFrom.type2str(), src.type2str()); g_lingo->push(Datum("")); return; } - int indexFrom = d1.asInt(); - int indexTo = d2.asInt(); - Common::String chunkExpr = *d3.u.s; - - Datum res; - // The if order is important. It mimicks the checks, i.e. bugs, of Director 4. - if (indexFrom < 1) - res = Datum(chunkExpr); - else if (indexTo < 1) - res = Datum(Common::String(chunkExpr[indexFrom - 1])); // treat as charOf - else if (indexFrom > indexTo) - res = Datum(""); - else if (uint(indexFrom) > chunkExpr.size()) - res = Datum(""); - else - res = Datum(chunkExpr.substr(indexFrom - 1, indexTo - indexFrom + 1)); - g_lingo->push(res); + g_lingo->push(LC::chunkRef(kChunkChar, indexFrom.asInt(), indexTo.asInt(), src)); } void LC::c_itemOf() { + Datum src = g_lingo->pop(false); + Datum index = g_lingo->pop(); - Datum d2 = g_lingo->pop(); // chunkExpression - Datum d1 = g_lingo->pop(); // index - - char delimiter = g_lingo->_itemDelimiter; - - if ((d1.type != INT && d1.type != FLOAT) || d2.type != STRING) { - warning("LC::c_itemOf(): Called with wrong data types: %s and %s", d1.type2str(), d2.type2str()); + if ((index.type != INT && index.type != FLOAT) + || (src.type != STRING && src.type != VAR && src.type != FIELDREF && src.type != CHUNKREF && src.type != CASTREF)) { + warning("LC::c_itemOf(): Called with wrong data types: %s and %s", index.type2str(), src.type2str()); g_lingo->push(Datum("")); return; } - int index = d1.asInt(); - - if (index < 1) { - // returns the input string - g_lingo->push(d2); - return; - } - Common::String chunkExpr = *d2.u.s; - uint startPos = 0; - - while (index-- > 1) { - startPos = chunkExpr.find(delimiter, startPos); - if (startPos == Common::String::npos) - break; - startPos++; // skipping comma - } - - Datum res; - if (startPos == Common::String::npos) { - res = Datum(""); - } else { - uint endPos = chunkExpr.find(delimiter, startPos); - if (endPos == Common::String::npos) - endPos = chunkExpr.size(); - res = Datum(chunkExpr.substr(startPos, endPos - startPos)); - } - - g_lingo->push(res); + g_lingo->push(LC::chunkRef(kChunkItem, index.asInt(), 0, src)); } void LC::c_itemToOf() { - Datum d3 = g_lingo->pop(); - Datum d2 = g_lingo->pop(); - Datum d1 = g_lingo->pop(); + Datum src = g_lingo->pop(false); + Datum indexTo = g_lingo->pop(); + Datum indexFrom = g_lingo->pop(); - warning("STUB: LC::c_itemToOf(): %d %d %d", d1.u.i, d2.u.i, d3.u.i); + if ((indexTo.type != INT && indexTo.type != FLOAT) || (indexFrom.type != INT && indexFrom.type != FLOAT) + || (src.type != STRING && src.type != VAR && src.type != FIELDREF && src.type != CHUNKREF && src.type != CASTREF)) { + warning("LC::c_itemToOf(): Called with wrong data types: %s, %s and %s", indexTo.type2str(), indexFrom.type2str(), src.type2str()); + g_lingo->push(Datum("")); + return; + } - g_lingo->push(d1); + g_lingo->push(LC::chunkRef(kChunkItem, indexFrom.asInt(), indexTo.asInt(), src)); } void LC::c_lineOf() { - Datum d2 = g_lingo->pop(); - Datum d1 = g_lingo->pop(); + Datum src = g_lingo->pop(false); + Datum index = g_lingo->pop(); - warning("STUB: LC::c_lineOf(): %d %d", d1.u.i, d2.u.i); + if ((index.type != INT && index.type != FLOAT) + || (src.type != STRING && src.type != VAR && src.type != FIELDREF && src.type != CHUNKREF && src.type != CASTREF)) { + warning("LC::c_lineOf(): Called with wrong data types: %s and %s", index.type2str(), src.type2str()); + g_lingo->push(Datum("")); + return; + } - g_lingo->push(d1); + g_lingo->push(LC::chunkRef(kChunkLine, index.asInt(), 0, src)); } void LC::c_lineToOf() { - Datum d3 = g_lingo->pop(); - Datum d2 = g_lingo->pop(); - Datum d1 = g_lingo->pop(); + Datum src = g_lingo->pop(false); + Datum indexTo = g_lingo->pop(); + Datum indexFrom = g_lingo->pop(); - warning("STUB: LC::c_lineToOf(): %d %d %d", d1.u.i, d2.u.i, d3.u.i); + if ((indexTo.type != INT && indexTo.type != FLOAT) || (indexFrom.type != INT && indexFrom.type != FLOAT) + || (src.type != STRING && src.type != VAR && src.type != FIELDREF && src.type != CHUNKREF && src.type != CASTREF)) { + warning("LC::c_lineToOf(): Called with wrong data types: %s, %s and %s", indexTo.type2str(), indexFrom.type2str(), src.type2str()); + g_lingo->push(Datum("")); + return; + } - g_lingo->push(d1); + g_lingo->push(LC::chunkRef(kChunkLine, indexFrom.asInt(), indexTo.asInt(), src)); } void LC::c_wordOf() { - Datum d2 = g_lingo->pop(); - Datum d1 = g_lingo->pop(); + Datum src = g_lingo->pop(false); + Datum index = g_lingo->pop(); - warning("STUB: LC::c_wordOf(): %d %d", d1.u.i, d2.u.i); + if ((index.type != INT && index.type != FLOAT) + || (src.type != STRING && src.type != VAR && src.type != FIELDREF && src.type != CHUNKREF && src.type != CASTREF)) { + warning("LC::c_wordOf(): Called with wrong data types: %s and %s", index.type2str(), src.type2str()); + g_lingo->push(Datum("")); + return; + } - g_lingo->push(d1); + g_lingo->push(LC::chunkRef(kChunkWord, index.asInt(), 0, src)); } void LC::c_wordToOf() { - Datum d3 = g_lingo->pop(); - Datum d2 = g_lingo->pop(); - Datum d1 = g_lingo->pop(); + Datum src = g_lingo->pop(false); + Datum indexTo = g_lingo->pop(); + Datum indexFrom = g_lingo->pop(); - warning("STUB: LC::c_wordToOf(): %d %d %d", d1.u.i, d2.u.i, d3.u.i); + if ((indexTo.type != INT && indexTo.type != FLOAT) || (indexFrom.type != INT && indexFrom.type != FLOAT) + || (src.type != STRING && src.type != VAR && src.type != FIELDREF && src.type != CHUNKREF && src.type != CASTREF)) { + warning("LC::c_wordToOf(): Called with wrong data types: %s, %s and %s", indexTo.type2str(), indexFrom.type2str(), src.type2str()); + g_lingo->push(Datum("")); + return; + } - g_lingo->push(d1); + g_lingo->push(LC::chunkRef(kChunkWord, indexFrom.asInt(), indexTo.asInt(), src)); } void LC::c_and() { diff --git a/engines/director/lingo/lingo-code.h b/engines/director/lingo/lingo-code.h index 461ccc1a920..c07a9a75d42 100644 --- a/engines/director/lingo/lingo-code.h +++ b/engines/director/lingo/lingo-code.h @@ -56,6 +56,7 @@ void c_starts(); void c_intersects(); void c_within(); +Datum chunkRef(ChunkType type, int startChunk, int endChunk, const Datum &src); void c_of(); void c_charOf(); void c_charToOf(); diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index 643a7b5a44c..9ff550f1792 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -235,159 +235,160 @@ enum yysymbol_kind_t YYSYMBOL_PARRAY = 11, /* PARRAY */ YYSYMBOL_CASTREF = 12, /* CASTREF */ YYSYMBOL_FIELDREF = 13, /* FIELDREF */ - YYSYMBOL_INT = 14, /* INT */ - YYSYMBOL_ARGC = 15, /* ARGC */ - YYSYMBOL_ARGCNORET = 16, /* ARGCNORET */ - YYSYMBOL_THEENTITY = 17, /* THEENTITY */ - YYSYMBOL_THEENTITYWITHID = 18, /* THEENTITYWITHID */ - YYSYMBOL_THEMENUITEMENTITY = 19, /* THEMENUITEMENTITY */ - YYSYMBOL_THEMENUITEMSENTITY = 20, /* THEMENUITEMSENTITY */ - YYSYMBOL_FLOAT = 21, /* FLOAT */ - YYSYMBOL_THEFUNC = 22, /* THEFUNC */ - YYSYMBOL_THEFUNCINOF = 23, /* THEFUNCINOF */ - YYSYMBOL_VARID = 24, /* VARID */ - YYSYMBOL_STRING = 25, /* STRING */ - YYSYMBOL_SYMBOL = 26, /* SYMBOL */ - YYSYMBOL_ENDCLAUSE = 27, /* ENDCLAUSE */ - YYSYMBOL_tPLAYACCEL = 28, /* tPLAYACCEL */ - YYSYMBOL_tMETHOD = 29, /* tMETHOD */ - YYSYMBOL_THEOBJECTPROP = 30, /* THEOBJECTPROP */ - YYSYMBOL_tCAST = 31, /* tCAST */ - YYSYMBOL_tFIELD = 32, /* tFIELD */ - YYSYMBOL_tSCRIPT = 33, /* tSCRIPT */ - YYSYMBOL_tWINDOW = 34, /* tWINDOW */ - YYSYMBOL_tDOWN = 35, /* tDOWN */ - YYSYMBOL_tELSE = 36, /* tELSE */ - YYSYMBOL_tELSIF = 37, /* tELSIF */ - YYSYMBOL_tEXIT = 38, /* tEXIT */ - YYSYMBOL_tGLOBAL = 39, /* tGLOBAL */ - YYSYMBOL_tGO = 40, /* tGO */ - YYSYMBOL_tGOLOOP = 41, /* tGOLOOP */ - YYSYMBOL_tIF = 42, /* tIF */ - YYSYMBOL_tIN = 43, /* tIN */ - YYSYMBOL_tINTO = 44, /* tINTO */ - YYSYMBOL_tMACRO = 45, /* tMACRO */ - YYSYMBOL_tMOVIE = 46, /* tMOVIE */ - YYSYMBOL_tNEXT = 47, /* tNEXT */ - YYSYMBOL_tOF = 48, /* tOF */ - YYSYMBOL_tPREVIOUS = 49, /* tPREVIOUS */ - YYSYMBOL_tPUT = 50, /* tPUT */ - YYSYMBOL_tREPEAT = 51, /* tREPEAT */ - YYSYMBOL_tSET = 52, /* tSET */ - YYSYMBOL_tTHEN = 53, /* tTHEN */ - YYSYMBOL_tTO = 54, /* tTO */ - YYSYMBOL_tWHEN = 55, /* tWHEN */ - YYSYMBOL_tWITH = 56, /* tWITH */ - YYSYMBOL_tWHILE = 57, /* tWHILE */ - YYSYMBOL_tFACTORY = 58, /* tFACTORY */ - YYSYMBOL_tOPEN = 59, /* tOPEN */ - YYSYMBOL_tPLAY = 60, /* tPLAY */ - YYSYMBOL_tINSTANCE = 61, /* tINSTANCE */ - YYSYMBOL_tGE = 62, /* tGE */ - YYSYMBOL_tLE = 63, /* tLE */ - YYSYMBOL_tEQ = 64, /* tEQ */ - YYSYMBOL_tNEQ = 65, /* tNEQ */ - YYSYMBOL_tAND = 66, /* tAND */ - YYSYMBOL_tOR = 67, /* tOR */ - YYSYMBOL_tNOT = 68, /* tNOT */ - YYSYMBOL_tMOD = 69, /* tMOD */ - YYSYMBOL_tAFTER = 70, /* tAFTER */ - YYSYMBOL_tBEFORE = 71, /* tBEFORE */ - YYSYMBOL_tCONCAT = 72, /* tCONCAT */ - YYSYMBOL_tCONTAINS = 73, /* tCONTAINS */ - YYSYMBOL_tSTARTS = 74, /* tSTARTS */ - YYSYMBOL_tCHAR = 75, /* tCHAR */ - YYSYMBOL_tITEM = 76, /* tITEM */ - YYSYMBOL_tLINE = 77, /* tLINE */ - YYSYMBOL_tWORD = 78, /* tWORD */ - YYSYMBOL_tSPRITE = 79, /* tSPRITE */ - YYSYMBOL_tINTERSECTS = 80, /* tINTERSECTS */ - YYSYMBOL_tWITHIN = 81, /* tWITHIN */ - YYSYMBOL_tTELL = 82, /* tTELL */ - YYSYMBOL_tPROPERTY = 83, /* tPROPERTY */ - YYSYMBOL_tON = 84, /* tON */ - YYSYMBOL_tENDIF = 85, /* tENDIF */ - YYSYMBOL_tENDREPEAT = 86, /* tENDREPEAT */ - YYSYMBOL_tENDTELL = 87, /* tENDTELL */ - YYSYMBOL_tASSERTERROR = 88, /* tASSERTERROR */ - YYSYMBOL_89_ = 89, /* '<' */ - YYSYMBOL_90_ = 90, /* '>' */ - YYSYMBOL_91_ = 91, /* '&' */ - YYSYMBOL_92_ = 92, /* '+' */ - YYSYMBOL_93_ = 93, /* '-' */ - YYSYMBOL_94_ = 94, /* '*' */ - YYSYMBOL_95_ = 95, /* '/' */ - YYSYMBOL_96_ = 96, /* '%' */ - YYSYMBOL_97_n_ = 97, /* '\n' */ - YYSYMBOL_98_ = 98, /* '(' */ - YYSYMBOL_99_ = 99, /* ')' */ - YYSYMBOL_100_ = 100, /* ',' */ - YYSYMBOL_101_ = 101, /* '[' */ - YYSYMBOL_102_ = 102, /* ']' */ - YYSYMBOL_103_ = 103, /* ':' */ - YYSYMBOL_YYACCEPT = 104, /* $accept */ - YYSYMBOL_program = 105, /* program */ - YYSYMBOL_programline = 106, /* programline */ - YYSYMBOL_ID = 107, /* ID */ - YYSYMBOL_asgn = 108, /* asgn */ - YYSYMBOL_stmtoneliner = 109, /* stmtoneliner */ - YYSYMBOL_stmt = 110, /* stmt */ - YYSYMBOL_111_1 = 111, /* $@1 */ - YYSYMBOL_112_2 = 112, /* $@2 */ - YYSYMBOL_113_3 = 113, /* $@3 */ - YYSYMBOL_114_4 = 114, /* $@4 */ - YYSYMBOL_115_5 = 115, /* $@5 */ - YYSYMBOL_116_6 = 116, /* $@6 */ - YYSYMBOL_117_7 = 117, /* $@7 */ - YYSYMBOL_118_8 = 118, /* $@8 */ - YYSYMBOL_119_9 = 119, /* $@9 */ - YYSYMBOL_startrepeat = 120, /* startrepeat */ - YYSYMBOL_tellstart = 121, /* tellstart */ - YYSYMBOL_asserterrorstart = 122, /* asserterrorstart */ - YYSYMBOL_ifstmt = 123, /* ifstmt */ - YYSYMBOL_elseifstmtlist = 124, /* elseifstmtlist */ - YYSYMBOL_elseifstmt = 125, /* elseifstmt */ - YYSYMBOL_jumpifz = 126, /* jumpifz */ - YYSYMBOL_jump = 127, /* jump */ - YYSYMBOL_varassign = 128, /* varassign */ - YYSYMBOL_if = 129, /* if */ - YYSYMBOL_lbl = 130, /* lbl */ - YYSYMBOL_stmtlist = 131, /* stmtlist */ - YYSYMBOL_stmtlistline = 132, /* stmtlistline */ - YYSYMBOL_simpleexprnoparens = 133, /* simpleexprnoparens */ - YYSYMBOL_134_10 = 134, /* $@10 */ - YYSYMBOL_simpleexpr = 135, /* simpleexpr */ - YYSYMBOL_expr = 136, /* expr */ - YYSYMBOL_chunkexpr = 137, /* chunkexpr */ - YYSYMBOL_reference = 138, /* reference */ - YYSYMBOL_proc = 139, /* proc */ - YYSYMBOL_140_11 = 140, /* $@11 */ - YYSYMBOL_141_12 = 141, /* $@12 */ - YYSYMBOL_142_13 = 142, /* $@13 */ - YYSYMBOL_143_14 = 143, /* $@14 */ - YYSYMBOL_globallist = 144, /* globallist */ - YYSYMBOL_propertylist = 145, /* propertylist */ - YYSYMBOL_instancelist = 146, /* instancelist */ - YYSYMBOL_gotofunc = 147, /* gotofunc */ - YYSYMBOL_gotomovie = 148, /* gotomovie */ - YYSYMBOL_playfunc = 149, /* playfunc */ - YYSYMBOL_150_15 = 150, /* $@15 */ - YYSYMBOL_defn = 151, /* defn */ - YYSYMBOL_152_16 = 152, /* $@16 */ - YYSYMBOL_153_17 = 153, /* $@17 */ - YYSYMBOL_on = 154, /* on */ - YYSYMBOL_155_18 = 155, /* $@18 */ - YYSYMBOL_argname = 156, /* argname */ - YYSYMBOL_argdef = 157, /* argdef */ - YYSYMBOL_endargdef = 158, /* endargdef */ - YYSYMBOL_argstore = 159, /* argstore */ - YYSYMBOL_arglist = 160, /* arglist */ - YYSYMBOL_nonemptyarglist = 161, /* nonemptyarglist */ - YYSYMBOL_list = 162, /* list */ - YYSYMBOL_valuelist = 163, /* valuelist */ - YYSYMBOL_linearlist = 164, /* linearlist */ - YYSYMBOL_proplist = 165, /* proplist */ - YYSYMBOL_proppair = 166 /* proppair */ + YYSYMBOL_CHUNKREF = 14, /* CHUNKREF */ + YYSYMBOL_INT = 15, /* INT */ + YYSYMBOL_ARGC = 16, /* ARGC */ + YYSYMBOL_ARGCNORET = 17, /* ARGCNORET */ + YYSYMBOL_THEENTITY = 18, /* THEENTITY */ + YYSYMBOL_THEENTITYWITHID = 19, /* THEENTITYWITHID */ + YYSYMBOL_THEMENUITEMENTITY = 20, /* THEMENUITEMENTITY */ + YYSYMBOL_THEMENUITEMSENTITY = 21, /* THEMENUITEMSENTITY */ + YYSYMBOL_FLOAT = 22, /* FLOAT */ + YYSYMBOL_THEFUNC = 23, /* THEFUNC */ + YYSYMBOL_THEFUNCINOF = 24, /* THEFUNCINOF */ + YYSYMBOL_VARID = 25, /* VARID */ + YYSYMBOL_STRING = 26, /* STRING */ + YYSYMBOL_SYMBOL = 27, /* SYMBOL */ + YYSYMBOL_ENDCLAUSE = 28, /* ENDCLAUSE */ + YYSYMBOL_tPLAYACCEL = 29, /* tPLAYACCEL */ + YYSYMBOL_tMETHOD = 30, /* tMETHOD */ + YYSYMBOL_THEOBJECTPROP = 31, /* THEOBJECTPROP */ + YYSYMBOL_tCAST = 32, /* tCAST */ + YYSYMBOL_tFIELD = 33, /* tFIELD */ + YYSYMBOL_tSCRIPT = 34, /* tSCRIPT */ + YYSYMBOL_tWINDOW = 35, /* tWINDOW */ + YYSYMBOL_tDOWN = 36, /* tDOWN */ + YYSYMBOL_tELSE = 37, /* tELSE */ + YYSYMBOL_tELSIF = 38, /* tELSIF */ + YYSYMBOL_tEXIT = 39, /* tEXIT */ + YYSYMBOL_tGLOBAL = 40, /* tGLOBAL */ + YYSYMBOL_tGO = 41, /* tGO */ + YYSYMBOL_tGOLOOP = 42, /* tGOLOOP */ + YYSYMBOL_tIF = 43, /* tIF */ + YYSYMBOL_tIN = 44, /* tIN */ + YYSYMBOL_tINTO = 45, /* tINTO */ + YYSYMBOL_tMACRO = 46, /* tMACRO */ + YYSYMBOL_tMOVIE = 47, /* tMOVIE */ + YYSYMBOL_tNEXT = 48, /* tNEXT */ + YYSYMBOL_tOF = 49, /* tOF */ + YYSYMBOL_tPREVIOUS = 50, /* tPREVIOUS */ + YYSYMBOL_tPUT = 51, /* tPUT */ + YYSYMBOL_tREPEAT = 52, /* tREPEAT */ + YYSYMBOL_tSET = 53, /* tSET */ + YYSYMBOL_tTHEN = 54, /* tTHEN */ + YYSYMBOL_tTO = 55, /* tTO */ + YYSYMBOL_tWHEN = 56, /* tWHEN */ + YYSYMBOL_tWITH = 57, /* tWITH */ + YYSYMBOL_tWHILE = 58, /* tWHILE */ + YYSYMBOL_tFACTORY = 59, /* tFACTORY */ + YYSYMBOL_tOPEN = 60, /* tOPEN */ + YYSYMBOL_tPLAY = 61, /* tPLAY */ + YYSYMBOL_tINSTANCE = 62, /* tINSTANCE */ + YYSYMBOL_tGE = 63, /* tGE */ + YYSYMBOL_tLE = 64, /* tLE */ + YYSYMBOL_tEQ = 65, /* tEQ */ + YYSYMBOL_tNEQ = 66, /* tNEQ */ + YYSYMBOL_tAND = 67, /* tAND */ + YYSYMBOL_tOR = 68, /* tOR */ + YYSYMBOL_tNOT = 69, /* tNOT */ + YYSYMBOL_tMOD = 70, /* tMOD */ + YYSYMBOL_tAFTER = 71, /* tAFTER */ + YYSYMBOL_tBEFORE = 72, /* tBEFORE */ + YYSYMBOL_tCONCAT = 73, /* tCONCAT */ + YYSYMBOL_tCONTAINS = 74, /* tCONTAINS */ + YYSYMBOL_tSTARTS = 75, /* tSTARTS */ + YYSYMBOL_tCHAR = 76, /* tCHAR */ + YYSYMBOL_tITEM = 77, /* tITEM */ + YYSYMBOL_tLINE = 78, /* tLINE */ + YYSYMBOL_tWORD = 79, /* tWORD */ + YYSYMBOL_tSPRITE = 80, /* tSPRITE */ + YYSYMBOL_tINTERSECTS = 81, /* tINTERSECTS */ + YYSYMBOL_tWITHIN = 82, /* tWITHIN */ + YYSYMBOL_tTELL = 83, /* tTELL */ + YYSYMBOL_tPROPERTY = 84, /* tPROPERTY */ + YYSYMBOL_tON = 85, /* tON */ + YYSYMBOL_tENDIF = 86, /* tENDIF */ + YYSYMBOL_tENDREPEAT = 87, /* tENDREPEAT */ + YYSYMBOL_tENDTELL = 88, /* tENDTELL */ + YYSYMBOL_tASSERTERROR = 89, /* tASSERTERROR */ + YYSYMBOL_90_ = 90, /* '<' */ + YYSYMBOL_91_ = 91, /* '>' */ + YYSYMBOL_92_ = 92, /* '&' */ + YYSYMBOL_93_ = 93, /* '+' */ + YYSYMBOL_94_ = 94, /* '-' */ + YYSYMBOL_95_ = 95, /* '*' */ + YYSYMBOL_96_ = 96, /* '/' */ + YYSYMBOL_97_ = 97, /* '%' */ + YYSYMBOL_98_n_ = 98, /* '\n' */ + YYSYMBOL_99_ = 99, /* '(' */ + YYSYMBOL_100_ = 100, /* ')' */ + YYSYMBOL_101_ = 101, /* ',' */ + YYSYMBOL_102_ = 102, /* '[' */ + YYSYMBOL_103_ = 103, /* ']' */ + YYSYMBOL_104_ = 104, /* ':' */ + YYSYMBOL_YYACCEPT = 105, /* $accept */ + YYSYMBOL_program = 106, /* program */ + YYSYMBOL_programline = 107, /* programline */ + YYSYMBOL_ID = 108, /* ID */ + YYSYMBOL_asgn = 109, /* asgn */ + YYSYMBOL_stmtoneliner = 110, /* stmtoneliner */ + YYSYMBOL_stmt = 111, /* stmt */ + YYSYMBOL_112_1 = 112, /* $@1 */ + YYSYMBOL_113_2 = 113, /* $@2 */ + YYSYMBOL_114_3 = 114, /* $@3 */ + YYSYMBOL_115_4 = 115, /* $@4 */ + YYSYMBOL_116_5 = 116, /* $@5 */ + YYSYMBOL_117_6 = 117, /* $@6 */ + YYSYMBOL_118_7 = 118, /* $@7 */ + YYSYMBOL_119_8 = 119, /* $@8 */ + YYSYMBOL_120_9 = 120, /* $@9 */ + YYSYMBOL_startrepeat = 121, /* startrepeat */ + YYSYMBOL_tellstart = 122, /* tellstart */ + YYSYMBOL_asserterrorstart = 123, /* asserterrorstart */ + YYSYMBOL_ifstmt = 124, /* ifstmt */ + YYSYMBOL_elseifstmtlist = 125, /* elseifstmtlist */ + YYSYMBOL_elseifstmt = 126, /* elseifstmt */ + YYSYMBOL_jumpifz = 127, /* jumpifz */ + YYSYMBOL_jump = 128, /* jump */ + YYSYMBOL_varassign = 129, /* varassign */ + YYSYMBOL_if = 130, /* if */ + YYSYMBOL_lbl = 131, /* lbl */ + YYSYMBOL_stmtlist = 132, /* stmtlist */ + YYSYMBOL_stmtlistline = 133, /* stmtlistline */ + YYSYMBOL_simpleexprnoparens = 134, /* simpleexprnoparens */ + YYSYMBOL_135_10 = 135, /* $@10 */ + YYSYMBOL_simpleexpr = 136, /* simpleexpr */ + YYSYMBOL_expr = 137, /* expr */ + YYSYMBOL_chunkexpr = 138, /* chunkexpr */ + YYSYMBOL_reference = 139, /* reference */ + YYSYMBOL_proc = 140, /* proc */ + YYSYMBOL_141_11 = 141, /* $@11 */ + YYSYMBOL_142_12 = 142, /* $@12 */ + YYSYMBOL_143_13 = 143, /* $@13 */ + YYSYMBOL_144_14 = 144, /* $@14 */ + YYSYMBOL_globallist = 145, /* globallist */ + YYSYMBOL_propertylist = 146, /* propertylist */ + YYSYMBOL_instancelist = 147, /* instancelist */ + YYSYMBOL_gotofunc = 148, /* gotofunc */ + YYSYMBOL_gotomovie = 149, /* gotomovie */ + YYSYMBOL_playfunc = 150, /* playfunc */ + YYSYMBOL_151_15 = 151, /* $@15 */ + YYSYMBOL_defn = 152, /* defn */ + YYSYMBOL_153_16 = 153, /* $@16 */ + YYSYMBOL_154_17 = 154, /* $@17 */ + YYSYMBOL_on = 155, /* on */ + YYSYMBOL_156_18 = 156, /* $@18 */ + YYSYMBOL_argname = 157, /* argname */ + YYSYMBOL_argdef = 158, /* argdef */ + YYSYMBOL_endargdef = 159, /* endargdef */ + YYSYMBOL_argstore = 160, /* argstore */ + YYSYMBOL_arglist = 161, /* arglist */ + YYSYMBOL_nonemptyarglist = 162, /* nonemptyarglist */ + YYSYMBOL_list = 163, /* list */ + YYSYMBOL_valuelist = 164, /* valuelist */ + YYSYMBOL_linearlist = 165, /* linearlist */ + YYSYMBOL_proplist = 166, /* proplist */ + YYSYMBOL_proppair = 167 /* proppair */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -697,10 +698,10 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 102 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1980 +#define YYLAST 2006 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 104 +#define YYNTOKENS 105 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 63 /* YYNRULES -- Number of rules. */ @@ -709,7 +710,7 @@ union yyalloc #define YYNSTATES 394 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 343 +#define YYMAXUTOK 344 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -724,15 +725,15 @@ union yyalloc static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 97, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 98, 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, 96, 91, 2, - 98, 99, 94, 92, 100, 93, 2, 95, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 103, 2, - 89, 2, 90, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 97, 92, 2, + 99, 100, 95, 93, 101, 94, 2, 96, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 104, 2, + 90, 2, 91, 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, 101, 2, 102, 2, 2, 2, 2, 2, 2, + 2, 102, 2, 103, 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, @@ -757,7 +758,7 @@ static const yytype_int8 yytranslate[] = 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88 + 85, 86, 87, 88, 89 }; #if YYDEBUG @@ -802,15 +803,15 @@ yysymbol_name (yysymbol_kind_t yysymbol) { "end of file", "error", "invalid token", "UNARY", "VOID", "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "LEXERROR", "PARRAY", "CASTREF", - "FIELDREF", "INT", "ARGC", "ARGCNORET", "THEENTITY", "THEENTITYWITHID", - "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT", "THEFUNC", - "THEFUNCINOF", "VARID", "STRING", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", - "tMETHOD", "THEOBJECTPROP", "tCAST", "tFIELD", "tSCRIPT", "tWINDOW", - "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tGOLOOP", "tIF", - "tIN", "tINTO", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", - "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", - "tFACTORY", "tOPEN", "tPLAY", "tINSTANCE", "tGE", "tLE", "tEQ", "tNEQ", - "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT", + "FIELDREF", "CHUNKREF", "INT", "ARGC", "ARGCNORET", "THEENTITY", + "THEENTITYWITHID", "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT", + "THEFUNC", "THEFUNCINOF", "VARID", "STRING", "SYMBOL", "ENDCLAUSE", + "tPLAYACCEL", "tMETHOD", "THEOBJECTPROP", "tCAST", "tFIELD", "tSCRIPT", + "tWINDOW", "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", + "tGOLOOP", "tIF", "tIN", "tINTO", "tMACRO", "tMOVIE", "tNEXT", "tOF", + "tPREVIOUS", "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", + "tWHILE", "tFACTORY", "tOPEN", "tPLAY", "tINSTANCE", "tGE", "tLE", "tEQ", + "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE", "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tENDIF", "tENDREPEAT", "tENDTELL", "tASSERTERROR", "'<'", "'>'", "'&'", "'+'", @@ -844,13 +845,13 @@ static const yytype_int16 yytoknum[] = 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 60, - 62, 38, 43, 45, 42, 47, 37, 10, 40, 41, - 44, 91, 93, 58 + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 60, 62, 38, 43, 45, 42, 47, 37, 10, 40, + 41, 44, 91, 93, 58 }; #endif -#define YYPACT_NINF (-329) +#define YYPACT_NINF (-359) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -864,46 +865,46 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 586, -84, -329, -329, -329, -329, -329, -329, -329, -34, - -329, 1054, -329, -329, -329, -26, 1175, 21, 262, 156, - 156, 1257, 1136, -329, 1257, -329, -329, -329, 5, -329, - 1284, -329, -329, -329, -329, 1257, -329, -329, -329, -329, - -329, -329, 1257, -329, -329, 156, -329, -329, 1257, -329, - -17, 1257, -329, -329, -329, 1366, 1366, 1366, 1366, 1257, - -329, -3, -329, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1015, -65, -329, -329, 1357, -329, -329, -329, - -329, 156, -329, 156, 508, 156, -329, -38, 1257, 1257, - -32, 7, -7, -329, 1714, 1357, -329, 156, 1658, 156, - 156, 406, -329, 586, 1257, 1761, -329, 1885, 156, -329, - 156, -30, -329, -329, 1257, -329, -329, -329, -329, -329, - 1885, 1257, -329, 1406, 1440, 1474, 1508, 1851, -329, -329, - 1813, -37, -28, -329, -74, 1885, -29, -8, -2, -329, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, -329, -329, - 1257, 160, 160, 160, -20, 1257, 1257, 1257, 1700, 63, - 1257, 1257, 1257, 1257, 1257, 1257, -329, 12, -329, -329, - -329, 14, -329, -329, -329, -329, -12, 1748, 25, 1257, - 73, -329, 32, 37, 39, 156, -329, 1885, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, -329, 1257, - 1257, 1257, -329, 1257, 97, -4, 43, -57, -57, -57, - -57, 268, 268, -329, -41, -57, -57, -57, -57, -41, - -55, -55, -329, -329, 156, 94, -329, -329, -329, -329, - -329, -329, 1257, 1257, 1885, 1885, 1885, 1257, 1257, 156, - 1885, 1885, 1885, 1885, 1885, 1885, 156, 406, 816, 156, - -329, -329, -329, -329, 754, 156, -329, -329, -329, -329, - 1542, -329, 1576, -329, 1610, -329, 1644, -329, -329, 1885, - 1885, 1885, 1885, -37, -28, 41, -329, -329, -329, -329, - 48, 1257, 1885, 134, -329, 1885, 79, 1257, -329, -329, - -329, -329, 49, -329, 1257, -329, -329, 648, 701, 1257, - 1257, 1257, 1257, 1257, -329, 1885, -329, -329, -329, 877, - 20, -329, 62, 479, 1800, 51, -329, 125, -329, -329, - -329, -329, -329, 54, 701, -329, -329, -329, -329, 1257, - 1257, -329, -329, 1257, -329, 53, 156, -329, -329, -329, - 101, 121, 74, 1885, 1885, -329, 938, 1257, -329, 82, - -329, 59, -329, 1257, 114, -329, -329, 1885, -329, 156, - -329, 1885, 1257, 90, 129, -329, 877, -329, 1885, -329, - 754, 92, -329, -329, -329, -329, 877, -329, -329, 116, - 877, -329, 118, -329 + 585, -72, -359, -359, -359, -359, -359, -359, -359, -30, + -359, 1079, -359, -359, -359, -8, 1200, -42, 261, 54, + 54, 1282, 1161, -359, 1282, -359, -359, -359, 13, -359, + 1309, -359, -359, -359, -359, 1282, -359, -359, -359, -359, + -359, -359, 1282, -359, -359, 54, -359, -359, 1282, -359, + -10, 1282, -359, -359, -359, 1391, 1391, 1391, 1391, 1282, + -359, -1, -359, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1282, 1040, -40, -359, -359, 1382, -359, -359, -359, + -359, 54, -359, 54, 507, 54, -359, -24, 1282, 1282, + -12, 5, 17, -359, 1739, 1382, -359, 54, 1683, 54, + 54, 405, -359, 585, 1282, 1786, -359, 1910, 54, -359, + 54, -17, -359, -359, 1282, -359, -359, -359, -359, -359, + 1910, 1282, -359, 1431, 1465, 1499, 1533, 1876, -359, -359, + 1838, -14, -6, -359, -76, 1910, -37, -9, 1, -359, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, -359, -359, + 1282, 159, 159, 159, -27, 1282, 1282, 1282, 1725, 63, + 1282, 1282, 1282, 1282, 1282, 1282, -359, 23, -359, -359, + -359, 25, -359, -359, -359, -359, -26, 1773, 14, 1282, + 80, -359, 31, 38, 40, 54, -359, 1910, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, -359, 1282, + 1282, 1282, -359, 1282, 96, -5, 42, -59, -59, -59, + -59, 267, 267, -359, -38, -59, -59, -59, -59, -38, + -45, -45, -359, -359, 54, 99, -359, -359, -359, -359, + -359, -359, 1282, 1282, 1910, 1910, 1910, 1282, 1282, 54, + 1910, 1910, 1910, 1910, 1910, 1910, 54, 405, 834, 54, + -359, -359, -359, -359, 772, 54, -359, -359, -359, -359, + 1567, -359, 1601, -359, 1635, -359, 1669, -359, -359, 1910, + 1910, 1910, 1910, -14, -6, 41, -359, -359, -359, -359, + 48, 1282, 1910, 133, -359, 1910, 78, 1282, -359, -359, + -359, -359, 51, -359, 1282, -359, -359, 652, 719, 1282, + 1282, 1282, 1282, 1282, -359, 1910, -359, -359, -359, 896, + 12, -359, 62, 478, 1825, 52, -359, 125, -359, -359, + -359, -359, -359, 55, 719, -359, -359, -359, -359, 1282, + 1282, -359, -359, 1282, -359, 24, 54, -359, -359, -359, + 101, 123, 73, 1910, 1910, -359, 963, 1282, -359, 81, + -359, 67, -359, 1282, 120, -359, -359, 1910, -359, 54, + -359, 1910, 1282, 92, 126, -359, 896, -359, 1910, -359, + 772, 95, -359, -359, -359, -359, 896, -359, -359, 115, + 896, -359, 117, -359 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -956,13 +957,13 @@ static const yytype_uint8 yydefact[] = /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -329, -329, 102, 0, -329, -100, 6, -329, -329, -329, - -329, -329, -329, -329, -329, -329, -320, 29, -329, -329, - -329, -329, -242, -328, -108, -329, -39, -243, -329, 2, - -329, -21, 250, -44, -329, -329, -329, -329, -329, -329, - 16, -47, -43, -329, -13, -329, -329, -329, -329, -329, - -329, -329, -329, -107, -329, -259, -35, -302, -329, -329, - -329, -329, 1 + -359, -359, 102, 0, -359, -100, 6, -359, -359, -359, + -359, -359, -359, -359, -359, -359, -358, 29, -359, -359, + -359, -359, -242, -330, -108, -359, -39, -243, -359, 132, + -359, -21, 250, -44, -359, -359, -359, -359, -359, -359, + 16, -47, -43, -359, -13, -359, -359, -359, -359, -359, + -359, -359, -359, -107, -359, -262, -35, -303, -359, -359, + -359, -359, 2 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -982,28 +983,28 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 30, 184, 294, 194, 110, 102, 33, 109, 308, 96, - 352, 333, 147, 41, 147, 148, 166, 44, 91, 92, - 93, 305, 170, 242, 140, 82, 167, 113, 147, 211, - 115, 114, 171, 140, 153, 154, 155, 156, 157, 156, - 157, 355, 122, 121, 243, 111, 174, 165, 128, 129, - 376, 154, 155, 156, 157, 334, 388, 116, 117, 118, - 119, 172, 386, 158, 327, 328, 209, 390, 169, 188, - 195, 173, 134, 212, 339, 210, 338, 85, 86, -24, - 342, 159, 176, 160, 340, 164, 140, 260, 261, 356, - 357, 348, 213, 196, 140, 287, 288, 177, 214, 181, - 183, 30, 103, 30, 186, 216, -24, 362, 191, 33, - 191, 249, 256, 366, 259, -24, -24, 237, 239, 241, - 234, 2, 283, 284, 262, 374, 264, 290, 5, 6, - 7, 8, 265, 381, 266, 382, 267, 384, 291, 235, - 215, 387, 289, 389, 211, 314, 323, 392, 147, 341, - 344, 148, 346, 347, 263, 363, 364, 299, 306, 369, - 365, 236, 238, 240, -24, -24, -24, 368, 372, -38, - 153, 154, 155, 156, 157, 379, -24, 269, 385, 271, - 2, 273, 380, 275, 2, 277, 278, 5, 6, 7, - 8, 55, 56, 7, 8, 111, 141, 142, 143, 144, + 30, 184, 294, 194, 110, 308, 33, 109, 352, 96, + 333, 147, 376, 102, 148, 85, 86, 242, 91, 92, + 93, 305, 44, 140, 386, 147, 41, 113, 211, 390, + 115, 166, 147, 153, 154, 155, 156, 157, 243, 114, + 355, 167, 122, 170, 82, 111, 121, 165, 128, 129, + 156, 157, 334, 171, 388, 154, 155, 156, 157, 140, + 172, 356, 357, 158, 327, 328, 212, 339, 169, 188, + 173, 174, 134, 140, 260, 261, 338, 340, -24, 2, + 342, 159, 176, 160, 195, 164, 5, 6, 7, 8, + 209, 348, 213, 196, 140, 287, 288, 177, 210, 181, + 183, 30, 214, 30, 186, 216, -24, 362, 191, 33, + 191, 103, 249, 366, 262, -24, -24, 237, 239, 241, + 234, 2, 283, 284, 256, 374, 259, 290, 5, 6, + 7, 8, 265, 381, 264, 382, 266, 384, 267, 235, + 215, 387, 289, 389, 291, 211, 314, 392, 147, 323, + 341, 148, 344, 346, 263, 347, 363, 299, 306, 364, + 365, 236, 238, 240, -24, -24, -24, 368, 369, -38, + 153, 154, 155, 156, 157, 372, -24, 269, 379, 271, + 380, 273, 385, 275, 2, 277, 278, 116, 117, 118, + 119, 55, 56, 7, 8, 111, 141, 142, 143, 144, 145, 146, 391, 147, 393, 185, 148, 149, 150, 258, - 337, 268, 303, 298, 285, 286, 0, 0, 0, 0, + 337, 268, 303, 298, 285, 0, 286, 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, 0, 0, 0, 191, 64, 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, @@ -1029,8 +1030,8 @@ static const yytype_int16 yytable[] = 8, 0, 0, 0, 9, 10, 11, 12, 0, 270, 0, 272, 0, 274, 0, 276, 16, 0, 18, 279, 280, 281, 0, 282, 0, 21, 22, 23, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 0, -67, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 292, 293, 0, 0, 0, 295, 296, 0, 0, 0, 0, 2, 0, 0, -67, 3, 0, 0, 5, 6, 7, 8, 0, -67, -67, 9, 10, 11, @@ -1040,421 +1041,425 @@ static const yytype_int16 yytable[] = 0, 0, 161, 0, 324, 0, 0, 0, 0, 0, 0, 24, 25, 324, -67, -67, -67, 27, 0, 0, 141, 142, 143, 144, 145, 146, -67, 147, 162, 163, - 148, 149, 150, 0, 0, 0, -4, 1, 0, 353, + 148, 149, 150, 0, 0, -4, 1, 0, 0, 353, 354, 0, 0, 324, 0, 0, 0, 151, 152, 153, 154, 155, 156, 157, 0, 0, 0, 367, 0, 0, 2, 0, 0, 371, 3, 4, 0, 5, 6, 7, 8, 0, 378, 0, 9, 10, 11, 12, 13, 0, 0, 14, 0, 15, 0, 0, 16, 17, 18, 0, - 0, 19, 0, 0, 20, 21, 22, 23, -67, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 0, 0, 20, 21, 22, 23, 0, 0, + 0, 0, -67, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, - 26, 0, 2, 0, 27, -67, 3, 0, 0, 5, - 6, 7, 8, -4, 0, 0, 9, 10, 11, 12, - 13, 0, 0, 0, 0, 15, 0, 0, 16, 17, - 18, -67, 1, 19, 0, 0, 0, 21, 22, 23, + 26, 0, 0, 0, 27, 0, 0, 2, 0, 0, + -67, 3, 0, -4, 5, 6, 7, 8, 0, 0, + 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, + 15, 0, 0, 16, 17, 18, 0, 0, 19, 0, + 0, 0, 21, 22, 23, 0, 0, 0, 0, -67, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 25, 0, 0, 0, + 0, 27, 0, 0, 2, 0, 0, 0, 3, 0, + -67, 5, 6, 7, 8, 0, 0, 0, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 15, 0, 0, + 16, 17, 18, 1, 0, 19, 0, 0, 0, 21, + 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 3, 24, 25, 5, 6, 7, 8, 27, -67, + -67, 9, 10, 11, 12, 13, 0, -67, 0, 0, + 15, 0, 0, 16, 17, 18, 0, 0, 19, 0, + 0, 0, 21, 22, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, - 24, 25, 5, 6, 7, 8, 27, 0, 0, 9, - 10, 11, 12, 13, 0, -67, 0, 0, 15, 0, - 0, 16, 17, 18, 0, 1, 19, 0, 0, 0, - 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 3, 24, 25, 5, 6, 7, 8, 27, - -67, -67, 9, 10, 11, 12, 13, 0, -67, 0, + 0, 0, 0, 0, 0, 24, 25, 0, -67, 2, + 0, 27, 0, 3, 0, 0, 5, 6, 7, 8, + -67, 0, 0, 9, 10, 11, 12, 13, 0, 0, + 0, 0, 15, 0, 0, 16, 17, 18, 0, 0, + 19, 0, 0, 0, 21, 22, 23, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 25, 0, + 0, 2, -67, 27, 0, 3, 0, 0, 5, 6, + 7, 8, -67, 0, 0, 9, 10, 11, 12, 13, + 0, 0, 0, 0, 15, 0, 0, 16, 17, 18, + 0, 0, 19, 0, 0, 0, 21, 22, 23, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 25, 0, 0, -67, 0, 27, 0, 0, 2, 0, + 0, 0, 3, 0, -67, 5, 6, 7, 8, 0, + 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 15, 0, 0, 16, 17, 18, 0, 0, 19, - 0, 0, 0, 21, 22, 23, 0, 1, 0, 0, + 0, 0, 0, 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 0, -67, - 2, 0, 27, 0, 3, 0, 0, 5, 6, 7, - 8, -67, 0, 0, 9, 10, 11, 12, 13, 0, - 0, 0, 0, 15, 0, 0, 16, 17, 18, 0, - 0, 19, 0, 0, 0, 21, 22, 23, 1, 0, + 0, 0, 27, 0, 0, 46, 0, 0, 47, 48, + 0, -67, 49, 50, 51, 2, 131, 132, 0, 0, + 0, 54, 55, 56, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, - 0, 2, 0, -67, 27, 3, 0, 0, 5, 6, - 7, 8, 0, -67, 0, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 15, 0, 0, 16, 17, 18, - 0, 0, 19, 0, 0, 0, 21, 22, 23, 1, + 0, 0, 0, 0, 46, 0, 0, 47, 48, 0, + 0, 49, 50, 51, 2, 52, 53, 0, 0, 63, + 54, 55, 56, 57, 58, 0, 64, 65, 66, 67, + 68, 0, 0, 0, 0, 0, 59, 60, 61, 62, + 0, 0, 0, 69, 70, 0, 0, 0, 0, 71, + 0, 0, 72, 0, 133, 0, 0, 0, 63, 0, + 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, - 25, 0, 2, -67, 0, 27, 3, 0, 0, 5, - 6, 7, 8, 0, -67, 0, 9, 10, 11, 12, - 13, 0, 0, 0, 0, 15, 0, 0, 16, 17, - 18, 0, 0, 19, 0, 0, 0, 21, 22, 23, + 0, 0, 69, 70, 0, 0, 46, 0, 71, 47, + 48, 72, 0, 49, 50, 51, 2, 52, 53, 0, + 0, 0, 54, 55, 56, 57, 58, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, + 61, 0, 0, 0, 0, 46, 0, 0, 47, 48, + 0, 83, 49, 50, 51, 2, 52, 53, 0, 0, + 63, 54, 55, 56, 57, 58, 0, 64, 65, 66, + 67, 68, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 70, 0, 0, 0, 0, + 71, 0, 0, 72, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 69, 70, 0, 0, 46, 0, 71, + 47, 48, 72, 0, 49, 50, 51, 2, 52, 53, + 0, 0, 0, 54, 55, 56, 57, 58, 0, 0, + 0, 0, 0, 0, 46, 0, 0, 47, 48, 0, + 0, 49, 50, 51, 2, 52, 53, 0, 0, 0, + 54, 55, 56, 57, 58, 0, 0, 0, 0, 0, + 0, 63, 0, 0, 0, 0, 0, 0, 64, 65, + 66, 67, 68, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 69, 70, 0, 63, 0, + 0, 71, 0, 0, 72, 64, 65, 66, 67, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 25, 0, -67, 0, 0, 27, 0, 0, 46, - 0, 0, 47, 48, 0, -67, 49, 50, 51, 2, - 131, 132, 0, 0, 0, 54, 55, 56, 57, 58, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, - 0, 47, 48, 0, 0, 49, 50, 51, 2, 52, - 53, 0, 0, 63, 54, 55, 56, 57, 58, 0, - 64, 65, 66, 67, 68, 0, 0, 0, 0, 0, - 59, 60, 61, 62, 0, 0, 0, 69, 70, 0, - 0, 0, 0, 71, 0, 0, 72, 0, 133, 0, - 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, - 65, 66, 67, 68, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 70, 0, 0, - 46, 0, 71, 47, 48, 72, 0, 49, 50, 51, - 2, 52, 53, 0, 0, 0, 54, 55, 56, 57, - 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 0, 61, 0, 0, 0, 0, 46, - 0, 0, 47, 48, 0, 83, 49, 50, 51, 2, - 52, 53, 0, 0, 63, 54, 55, 56, 57, 58, - 0, 64, 65, 66, 67, 68, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 69, 70, - 0, 0, 0, 0, 71, 0, 0, 72, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, - 64, 65, 66, 67, 68, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 69, 70, 0, - 0, 46, 0, 71, 47, 48, 72, 0, 49, 50, - 51, 2, 52, 53, 0, 0, 0, 54, 55, 56, - 57, 58, 0, 0, 0, 0, 0, 0, 46, 0, - 0, 47, 48, 0, 0, 49, 50, 51, 2, 52, - 53, 0, 0, 0, 54, 55, 56, 57, 58, 0, - 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 64, 65, 66, 67, 68, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, - 70, 0, 63, 0, 0, 71, 0, 0, 72, 64, - 65, 66, 67, 68, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 70, 0, 0, - 46, 0, 104, 47, 48, 72, 0, 49, 50, 51, - 2, 52, 53, 0, 0, 0, 54, 55, 56, 57, - 58, 0, 0, 59, 0, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, - 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, - 149, 150, 0, 0, 63, 0, 0, 0, 0, 0, - 0, 64, 65, 66, 67, 68, 151, 152, 153, 154, - 155, 156, 157, 0, 198, 0, 0, 0, 0, 0, - 199, 0, 0, 0, 0, 0, 0, 72, 141, 142, + 0, 0, 69, 70, 0, 0, 46, 0, 104, 47, + 48, 72, 0, 49, 50, 51, 2, 52, 53, 0, + 0, 0, 54, 55, 56, 57, 58, 0, 0, 59, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 141, 142, 143, 144, 145, + 146, 0, 147, 0, 0, 148, 149, 150, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 64, 65, 66, + 67, 68, 151, 152, 153, 154, 155, 156, 157, 0, + 198, 0, 0, 0, 0, 0, 199, 0, 0, 0, + 0, 0, 0, 72, 141, 142, 143, 144, 145, 146, + 0, 147, 0, 0, 148, 149, 150, 0, 0, 0, + 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, + 201, 151, 152, 153, 154, 155, 156, 157, 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, - 150, 0, 0, 0, 0, 0, 0, 0, 200, 0, - 0, 0, 0, 0, 201, 151, 152, 153, 154, 155, + 150, 0, 0, 0, 0, 0, 0, 0, 202, 0, + 0, 0, 0, 0, 203, 151, 152, 153, 154, 155, 156, 157, 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, - 0, 0, 202, 0, 0, 0, 0, 0, 203, 151, + 0, 0, 204, 0, 0, 0, 0, 0, 205, 151, 152, 153, 154, 155, 156, 157, 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, 150, 0, - 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, - 0, 0, 205, 151, 152, 153, 154, 155, 156, 157, + 0, 0, 0, 0, 0, 0, 309, 0, 0, 0, + 0, 0, 0, 151, 152, 153, 154, 155, 156, 157, 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, 0, - 309, 0, 0, 0, 0, 0, 0, 151, 152, 153, + 310, 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, 155, 156, 157, 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, 150, 0, 0, 0, - 0, 0, 0, 0, 310, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 311, 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, 155, 156, 157, 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, - 150, 0, 0, 0, 0, 0, 0, 0, 311, 0, + 150, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, 155, - 156, 157, 141, 142, 143, 144, 145, 146, 0, 147, - 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, - 0, 0, 312, 0, 0, 0, 0, 0, 0, 151, - 152, 153, 154, 155, 156, 157, 141, 142, 143, 144, - 145, 146, 179, 147, 0, 0, 148, 149, 150, 0, - 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 0, 0, 0, 0, 0, 0, 0, 151, 152, 153, - 154, 155, 156, 157, 247, 180, 0, 0, 0, 0, - 0, 0, 141, 142, 248, 144, 145, 146, 0, 147, - 175, 0, 148, 149, 150, 0, 141, 142, 143, 144, + 156, 157, 141, 142, 143, 144, 145, 146, 179, 147, + 0, 0, 148, 149, 150, 0, 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 0, 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, 155, 156, 157, - 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, - 148, 149, 150, 141, 142, 143, 144, 145, 146, 0, - 147, 0, 0, 148, 149, 150, 0, 151, 152, 153, - 154, 155, 156, 157, 0, 0, 0, 208, 189, 0, - 151, 152, 153, 154, 155, 156, 157, 0, 0, 0, - 0, 189, 141, 142, 143, 144, 145, 146, 0, 147, - 0, 0, 148, 149, 150, 141, 142, 143, 144, 145, - 146, 0, 147, 0, 0, 148, 149, 150, 0, 151, - 152, 153, 154, 155, 156, 157, 0, 0, 0, 0, - 343, 0, 151, 152, 153, 154, 155, 156, 157, 0, - 0, 0, 208, 141, 142, 143, 144, 145, 146, 0, + 247, 180, 0, 0, 0, 0, 0, 0, 141, 142, + 248, 144, 145, 146, 0, 147, 175, 0, 148, 149, + 150, 0, 141, 142, 143, 144, 145, 146, 0, 147, + 0, 0, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 0, 0, 0, 0, 0, 0, 0, 151, + 152, 153, 154, 155, 156, 157, 141, 142, 143, 144, + 145, 146, 0, 147, 0, 0, 148, 149, 150, 141, + 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, + 149, 150, 0, 151, 152, 153, 154, 155, 156, 157, + 0, 0, 0, 208, 189, 0, 151, 152, 153, 154, + 155, 156, 157, 0, 0, 0, 0, 189, 141, 142, + 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, + 150, 141, 142, 143, 144, 145, 146, 0, 147, 0, + 0, 148, 149, 150, 0, 151, 152, 153, 154, 155, + 156, 157, 0, 0, 0, 0, 343, 0, 151, 152, + 153, 154, 155, 156, 157, 0, 0, 0, 208, 141, + 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 206, 207, 0, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, + 155, 156, 157, 141, 142, 143, 144, 145, 146, 0, 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, - 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, - 151, 152, 153, 154, 155, 156, 157, 141, 142, 143, - 144, 145, 146, 0, 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 151, 152, 153, 154, 155, 156, - 157 + 151, 152, 153, 154, 155, 156, 157 }; static const yytype_int16 yycheck[] = { - 0, 101, 244, 110, 43, 0, 0, 42, 267, 22, - 338, 313, 69, 97, 69, 72, 54, 51, 18, 19, - 20, 264, 54, 43, 98, 51, 64, 48, 69, 103, - 51, 48, 64, 98, 91, 92, 93, 94, 95, 94, - 95, 343, 63, 46, 64, 45, 53, 86, 69, 70, - 370, 92, 93, 94, 95, 314, 384, 55, 56, 57, - 58, 54, 382, 76, 307, 308, 103, 387, 89, 104, - 100, 64, 72, 102, 54, 103, 319, 56, 57, 0, - 323, 81, 95, 83, 64, 85, 98, 99, 100, 36, - 37, 334, 100, 114, 98, 99, 100, 97, 100, 99, - 100, 101, 97, 103, 104, 140, 27, 349, 108, 103, - 110, 48, 100, 356, 100, 36, 37, 161, 162, 163, - 159, 24, 25, 26, 99, 367, 53, 234, 31, 32, - 33, 34, 100, 376, 97, 377, 97, 380, 44, 160, - 140, 383, 99, 386, 103, 97, 97, 390, 69, 87, - 99, 72, 27, 99, 189, 54, 35, 257, 265, 100, - 86, 161, 162, 163, 85, 86, 87, 85, 54, 35, - 91, 92, 93, 94, 95, 85, 97, 198, 86, 200, - 24, 202, 53, 204, 24, 206, 207, 31, 32, 33, - 34, 31, 32, 33, 34, 195, 62, 63, 64, 65, - 66, 67, 86, 69, 86, 103, 72, 73, 74, 180, - 318, 195, 259, 256, 214, 214, -1, -1, -1, -1, - -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, - -1, -1, -1, -1, 234, 75, 76, 77, 78, -1, + 0, 101, 244, 110, 43, 267, 0, 42, 338, 22, + 313, 70, 370, 0, 73, 57, 58, 44, 18, 19, + 20, 264, 52, 99, 382, 70, 98, 48, 104, 387, + 51, 55, 70, 92, 93, 94, 95, 96, 65, 49, + 343, 65, 63, 55, 52, 45, 47, 86, 69, 70, + 95, 96, 314, 65, 384, 93, 94, 95, 96, 99, + 55, 37, 38, 76, 307, 308, 103, 55, 89, 104, + 65, 54, 72, 99, 100, 101, 319, 65, 0, 25, + 323, 81, 95, 83, 101, 85, 32, 33, 34, 35, + 104, 334, 101, 114, 99, 100, 101, 97, 104, 99, + 100, 101, 101, 103, 104, 140, 28, 349, 108, 103, + 110, 98, 49, 356, 100, 37, 38, 161, 162, 163, + 159, 25, 26, 27, 101, 367, 101, 234, 32, 33, + 34, 35, 101, 376, 54, 377, 98, 380, 98, 160, + 140, 383, 100, 386, 45, 104, 98, 390, 70, 98, + 88, 73, 100, 28, 189, 100, 55, 257, 265, 36, + 87, 161, 162, 163, 86, 87, 88, 86, 101, 36, + 92, 93, 94, 95, 96, 55, 98, 198, 86, 200, + 54, 202, 87, 204, 25, 206, 207, 55, 56, 57, + 58, 32, 33, 34, 35, 195, 63, 64, 65, 66, + 67, 68, 87, 70, 87, 103, 73, 74, 75, 180, + 318, 195, 259, 256, 214, -1, 214, -1, -1, -1, + -1, -1, -1, 90, 91, 92, 93, 94, 95, 96, + -1, -1, -1, -1, 234, 76, 77, 78, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, 256, 257, 258, 259, 299, 11, 301, -1, 264, 265, 16, -1, -1, -1, - -1, 21, 22, -1, 24, -1, 297, 316, -1, 17, - 18, 19, -1, -1, -1, 35, 24, -1, 309, 310, - 311, 312, 30, 31, 32, 33, 34, -1, -1, -1, + -1, 21, 22, -1, 24, -1, 297, 316, -1, 18, + 19, 20, -1, -1, -1, 35, 25, -1, 309, 310, + 311, 312, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, 345, 307, 308, 59, -1, -1, -1, -1, 64, 65, 66, 67, 68, 319, -1, 71, 72, 323, -1, -1, -1, 366, -1, -1, - 62, 63, 64, 65, 334, -1, -1, 69, 88, -1, - 72, 73, 74, -1, -1, -1, 346, -1, -1, -1, - -1, -1, -1, -1, 104, -1, 356, 89, 90, 91, - 92, 93, 94, 95, -1, -1, -1, -1, -1, 369, + 63, 64, 65, 66, 334, -1, -1, 70, 88, -1, + 73, 74, 75, -1, -1, -1, 346, -1, -1, -1, + -1, -1, -1, -1, 104, -1, 356, 90, 91, 92, + 93, 94, 95, 96, -1, -1, -1, -1, -1, 369, -1, 121, -1, -1, -1, -1, 376, -1, -1, -1, 380, -1, -1, -1, -1, -1, 386, -1, -1, -1, 390, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, -1, -1, -1, -1, -1, -1, 165, 166, 167, -1, -1, 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - 24, -1, -1, -1, 28, -1, -1, 31, 32, 33, - 34, -1, -1, -1, 38, 39, 40, 41, -1, 199, - -1, 201, -1, 203, -1, 205, 50, -1, 52, 209, - 210, 211, -1, 213, -1, 59, 60, 61, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, - 1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 25, -1, -1, -1, 29, -1, -1, 32, 33, 34, + 35, -1, -1, -1, 39, 40, 41, 42, -1, 199, + -1, 201, -1, 203, -1, 205, 51, -1, 53, 209, + 210, 211, -1, 213, -1, 60, 61, 62, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, 242, 243, -1, -1, -1, 247, 248, -1, - -1, -1, -1, 24, -1, -1, 27, 28, -1, -1, - 31, 32, 33, 34, -1, 36, 37, 38, 39, 40, - 41, 42, -1, -1, -1, -1, 47, -1, -1, 50, - 51, 52, -1, -1, 55, -1, -1, -1, 59, 60, - 61, 291, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 44, -1, 304, -1, -1, -1, -1, -1, - -1, 82, 83, 313, 85, 86, 87, 88, -1, -1, - 62, 63, 64, 65, 66, 67, 97, 69, 70, 71, - 72, 73, 74, -1, -1, -1, 0, 1, -1, 339, - 340, -1, -1, 343, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, -1, -1, -1, 357, -1, -1, - 24, -1, -1, 363, 28, 29, -1, 31, 32, 33, - 34, -1, 372, -1, 38, 39, 40, 41, 42, -1, - -1, 45, -1, 47, -1, -1, 50, 51, 52, -1, - -1, 55, -1, -1, 58, 59, 60, 61, 0, 1, + -1, -1, -1, 25, -1, -1, 28, 29, -1, -1, + 32, 33, 34, 35, -1, 37, 38, 39, 40, 41, + 42, 43, -1, -1, -1, -1, 48, -1, -1, 51, + 52, 53, -1, -1, 56, -1, -1, -1, 60, 61, + 62, 291, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, 304, -1, -1, -1, -1, -1, + -1, 83, 84, 313, 86, 87, 88, 89, -1, -1, + 63, 64, 65, 66, 67, 68, 98, 70, 71, 72, + 73, 74, 75, -1, -1, 0, 1, -1, -1, 339, + 340, -1, -1, 343, -1, -1, -1, 90, 91, 92, + 93, 94, 95, 96, -1, -1, -1, 357, -1, -1, + 25, -1, -1, 363, 29, 30, -1, 32, 33, 34, + 35, -1, 372, -1, 39, 40, 41, 42, 43, -1, + -1, 46, -1, 48, -1, -1, 51, 52, 53, -1, + -1, 56, -1, -1, 59, 60, 61, 62, -1, -1, + -1, -1, 0, 1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 83, 84, + 85, -1, -1, -1, 89, -1, -1, 25, -1, -1, + 28, 29, -1, 98, 32, 33, 34, 35, -1, -1, + -1, 39, 40, 41, 42, 43, -1, -1, -1, -1, + 48, -1, -1, 51, 52, 53, -1, -1, 56, -1, + -1, -1, 60, 61, 62, -1, -1, -1, -1, 0, + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 83, 84, -1, -1, -1, + -1, 89, -1, -1, 25, -1, -1, -1, 29, -1, + 98, 32, 33, 34, 35, -1, -1, -1, 39, 40, + 41, 42, 43, -1, -1, -1, -1, 48, -1, -1, + 51, 52, 53, 1, -1, 56, -1, -1, -1, 60, + 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 25, -1, -1, + -1, 29, 83, 84, 32, 33, 34, 35, 89, 37, + 38, 39, 40, 41, 42, 43, -1, 98, -1, -1, + 48, -1, -1, 51, 52, 53, -1, -1, 56, -1, + -1, -1, 60, 61, 62, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, - 84, -1, 24, -1, 88, 27, 28, -1, -1, 31, - 32, 33, 34, 97, -1, -1, 38, 39, 40, 41, - 42, -1, -1, -1, -1, 47, -1, -1, 50, 51, - 52, 0, 1, 55, -1, -1, -1, 59, 60, 61, + -1, -1, -1, -1, -1, 83, 84, -1, 86, 25, + -1, 89, -1, 29, -1, -1, 32, 33, 34, 35, + 98, -1, -1, 39, 40, 41, 42, 43, -1, -1, + -1, -1, 48, -1, -1, 51, 52, 53, -1, -1, + 56, -1, -1, -1, 60, 61, 62, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 24, -1, -1, -1, 28, - 82, 83, 31, 32, 33, 34, 88, -1, -1, 38, - 39, 40, 41, 42, -1, 97, -1, -1, 47, -1, - -1, 50, 51, 52, -1, 1, 55, -1, -1, -1, - 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, - -1, -1, 28, 82, 83, 31, 32, 33, 34, 88, - 36, 37, 38, 39, 40, 41, 42, -1, 97, -1, - -1, 47, -1, -1, 50, 51, 52, -1, -1, 55, - -1, -1, -1, 59, 60, 61, -1, 1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 83, 84, -1, + -1, 25, 88, 89, -1, 29, -1, -1, 32, 33, + 34, 35, 98, -1, -1, 39, 40, 41, 42, 43, + -1, -1, -1, -1, 48, -1, -1, 51, 52, 53, + -1, -1, 56, -1, -1, -1, 60, 61, 62, -1, + -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + 84, -1, -1, 87, -1, 89, -1, -1, 25, -1, + -1, -1, 29, -1, 98, 32, 33, 34, 35, -1, + -1, -1, 39, 40, 41, 42, 43, -1, -1, -1, + -1, 48, -1, -1, 51, 52, 53, -1, -1, 56, + -1, -1, -1, 60, 61, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 82, 83, -1, 85, - 24, -1, 88, -1, 28, -1, -1, 31, 32, 33, - 34, 97, -1, -1, 38, 39, 40, 41, 42, -1, - -1, -1, -1, 47, -1, -1, 50, 51, 52, -1, - -1, 55, -1, -1, -1, 59, 60, 61, 1, -1, + -1, -1, -1, -1, -1, -1, 83, 84, -1, 86, + -1, -1, 89, -1, -1, 15, -1, -1, 18, 19, + -1, 98, 22, 23, 24, 25, 26, 27, -1, -1, + -1, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, - -1, 24, -1, 87, 88, 28, -1, -1, 31, 32, - 33, 34, -1, 97, -1, 38, 39, 40, 41, 42, - -1, -1, -1, -1, 47, -1, -1, 50, 51, 52, - -1, -1, 55, -1, -1, -1, 59, 60, 61, 1, + -1, -1, -1, -1, 15, -1, -1, 18, 19, -1, + -1, 22, 23, 24, 25, 26, 27, -1, -1, 69, + 31, 32, 33, 34, 35, -1, 76, 77, 78, 79, + 80, -1, -1, -1, -1, -1, 47, 48, 49, 50, + -1, -1, -1, 93, 94, -1, -1, -1, -1, 99, + -1, -1, 102, -1, 104, -1, -1, -1, 69, -1, + -1, -1, -1, -1, -1, 76, 77, 78, 79, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - 83, -1, 24, 86, -1, 88, 28, -1, -1, 31, - 32, 33, 34, -1, 97, -1, 38, 39, 40, 41, - 42, -1, -1, -1, -1, 47, -1, -1, 50, 51, - 52, -1, -1, 55, -1, -1, -1, 59, 60, 61, + -1, -1, 93, 94, -1, -1, 15, -1, 99, 18, + 19, 102, -1, 22, 23, 24, 25, 26, 27, -1, + -1, -1, 31, 32, 33, 34, 35, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, + 49, -1, -1, -1, -1, 15, -1, -1, 18, 19, + -1, 21, 22, 23, 24, 25, 26, 27, -1, -1, + 69, 31, 32, 33, 34, 35, -1, 76, 77, 78, + 79, 80, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, + 99, -1, -1, 102, -1, -1, -1, -1, -1, 69, + -1, -1, -1, -1, -1, -1, 76, 77, 78, 79, + 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, 94, -1, -1, 15, -1, 99, + 18, 19, 102, -1, 22, 23, 24, 25, 26, 27, + -1, -1, -1, 31, 32, 33, 34, 35, -1, -1, + -1, -1, -1, -1, 15, -1, -1, 18, 19, -1, + -1, 22, 23, 24, 25, 26, 27, -1, -1, -1, + 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, + -1, 69, -1, -1, -1, -1, -1, -1, 76, 77, + 78, 79, 80, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 94, -1, 69, -1, + -1, 99, -1, -1, 102, 76, 77, 78, 79, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, 94, -1, -1, 15, -1, 99, 18, + 19, 102, -1, 22, 23, 24, 25, 26, 27, -1, + -1, -1, 31, 32, 33, 34, 35, -1, -1, 47, + -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 63, 64, 65, 66, 67, + 68, -1, 70, -1, -1, 73, 74, 75, -1, -1, + 69, -1, -1, -1, -1, -1, -1, 76, 77, 78, + 79, 80, 90, 91, 92, 93, 94, 95, 96, -1, + 49, -1, -1, -1, -1, -1, 55, -1, -1, -1, + -1, -1, -1, 102, 63, 64, 65, 66, 67, 68, + -1, 70, -1, -1, 73, 74, 75, -1, -1, -1, + -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, + 55, 90, 91, 92, 93, 94, 95, 96, 63, 64, + 65, 66, 67, 68, -1, 70, -1, -1, 73, 74, + 75, -1, -1, -1, -1, -1, -1, -1, 49, -1, + -1, -1, -1, -1, 55, 90, 91, 92, 93, 94, + 95, 96, 63, 64, 65, 66, 67, 68, -1, 70, + -1, -1, 73, 74, 75, -1, -1, -1, -1, -1, + -1, -1, 49, -1, -1, -1, -1, -1, 55, 90, + 91, 92, 93, 94, 95, 96, 63, 64, 65, 66, + 67, 68, -1, 70, -1, -1, 73, 74, 75, -1, + -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, + -1, -1, -1, 90, 91, 92, 93, 94, 95, 96, + 63, 64, 65, 66, 67, 68, -1, 70, -1, -1, + 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, + 49, -1, -1, -1, -1, -1, -1, 90, 91, 92, + 93, 94, 95, 96, 63, 64, 65, 66, 67, 68, + -1, 70, -1, -1, 73, 74, 75, -1, -1, -1, + -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, + -1, 90, 91, 92, 93, 94, 95, 96, 63, 64, + 65, 66, 67, 68, -1, 70, -1, -1, 73, 74, + 75, -1, -1, -1, -1, -1, -1, -1, 49, -1, + -1, -1, -1, -1, -1, 90, 91, 92, 93, 94, + 95, 96, 63, 64, 65, 66, 67, 68, 55, 70, + -1, -1, 73, 74, 75, -1, 63, 64, 65, 66, + 67, 68, -1, 70, -1, -1, 73, 74, 75, 90, + 91, 92, 93, 94, 95, 96, -1, -1, -1, -1, + -1, -1, -1, 90, 91, 92, 93, 94, 95, 96, + 55, 98, -1, -1, -1, -1, -1, -1, 63, 64, + 65, 66, 67, 68, -1, 70, 57, -1, 73, 74, + 75, -1, 63, 64, 65, 66, 67, 68, -1, 70, + -1, -1, 73, 74, 75, 90, 91, 92, 93, 94, + 95, 96, -1, -1, -1, -1, -1, -1, -1, 90, + 91, 92, 93, 94, 95, 96, 63, 64, 65, 66, + 67, 68, -1, 70, -1, -1, 73, 74, 75, 63, + 64, 65, 66, 67, 68, -1, 70, -1, -1, 73, + 74, 75, -1, 90, 91, 92, 93, 94, 95, 96, + -1, -1, -1, 100, 101, -1, 90, 91, 92, 93, + 94, 95, 96, -1, -1, -1, -1, 101, 63, 64, + 65, 66, 67, 68, -1, 70, -1, -1, 73, 74, + 75, 63, 64, 65, 66, 67, 68, -1, 70, -1, + -1, 73, 74, 75, -1, 90, 91, 92, 93, 94, + 95, 96, -1, -1, -1, -1, 101, -1, 90, 91, + 92, 93, 94, 95, 96, -1, -1, -1, 100, 63, + 64, 65, 66, 67, 68, -1, 70, -1, -1, 73, + 74, 75, -1, -1, -1, -1, -1, 81, 82, -1, + -1, -1, -1, -1, -1, -1, 90, 91, 92, 93, + 94, 95, 96, 63, 64, 65, 66, 67, 68, -1, + 70, -1, -1, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 82, 83, -1, 85, -1, -1, 88, -1, -1, 14, - -1, -1, 17, 18, -1, 97, 21, 22, 23, 24, - 25, 26, -1, -1, -1, 30, 31, 32, 33, 34, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 14, -1, - -1, 17, 18, -1, -1, 21, 22, 23, 24, 25, - 26, -1, -1, 68, 30, 31, 32, 33, 34, -1, - 75, 76, 77, 78, 79, -1, -1, -1, -1, -1, - 46, 47, 48, 49, -1, -1, -1, 92, 93, -1, - -1, -1, -1, 98, -1, -1, 101, -1, 103, -1, - -1, -1, 68, -1, -1, -1, -1, -1, -1, 75, - 76, 77, 78, 79, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 92, 93, -1, -1, - 14, -1, 98, 17, 18, 101, -1, 21, 22, 23, - 24, 25, 26, -1, -1, -1, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 46, -1, 48, -1, -1, -1, -1, 14, - -1, -1, 17, 18, -1, 20, 21, 22, 23, 24, - 25, 26, -1, -1, 68, 30, 31, 32, 33, 34, - -1, 75, 76, 77, 78, 79, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 92, 93, - -1, -1, -1, -1, 98, -1, -1, 101, -1, -1, - -1, -1, -1, 68, -1, -1, -1, -1, -1, -1, - 75, 76, 77, 78, 79, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 92, 93, -1, - -1, 14, -1, 98, 17, 18, 101, -1, 21, 22, - 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, - 33, 34, -1, -1, -1, -1, -1, -1, 14, -1, - -1, 17, 18, -1, -1, 21, 22, 23, 24, 25, - 26, -1, -1, -1, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, -1, 68, -1, -1, -1, -1, - -1, -1, 75, 76, 77, 78, 79, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, - 93, -1, 68, -1, -1, 98, -1, -1, 101, 75, - 76, 77, 78, 79, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 92, 93, -1, -1, - 14, -1, 98, 17, 18, 101, -1, 21, 22, 23, - 24, 25, 26, -1, -1, -1, 30, 31, 32, 33, - 34, -1, -1, 46, -1, 48, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, - 63, 64, 65, 66, 67, -1, 69, -1, -1, 72, - 73, 74, -1, -1, 68, -1, -1, -1, -1, -1, - -1, 75, 76, 77, 78, 79, 89, 90, 91, 92, - 93, 94, 95, -1, 48, -1, -1, -1, -1, -1, - 54, -1, -1, -1, -1, -1, -1, 101, 62, 63, - 64, 65, 66, 67, -1, 69, -1, -1, 72, 73, - 74, -1, -1, -1, -1, -1, -1, -1, 48, -1, - -1, -1, -1, -1, 54, 89, 90, 91, 92, 93, - 94, 95, 62, 63, 64, 65, 66, 67, -1, 69, - -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, 48, -1, -1, -1, -1, -1, 54, 89, - 90, 91, 92, 93, 94, 95, 62, 63, 64, 65, - 66, 67, -1, 69, -1, -1, 72, 73, 74, -1, - -1, -1, -1, -1, -1, -1, 48, -1, -1, -1, - -1, -1, 54, 89, 90, 91, 92, 93, 94, 95, - 62, 63, 64, 65, 66, 67, -1, 69, -1, -1, - 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, - 48, -1, -1, -1, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, 62, 63, 64, 65, 66, 67, - -1, 69, -1, -1, 72, 73, 74, -1, -1, -1, - -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, - -1, 89, 90, 91, 92, 93, 94, 95, 62, 63, - 64, 65, 66, 67, -1, 69, -1, -1, 72, 73, - 74, -1, -1, -1, -1, -1, -1, -1, 48, -1, - -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, - 94, 95, 62, 63, 64, 65, 66, 67, -1, 69, - -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, - -1, -1, 48, -1, -1, -1, -1, -1, -1, 89, - 90, 91, 92, 93, 94, 95, 62, 63, 64, 65, - 66, 67, 54, 69, -1, -1, 72, 73, 74, -1, - 62, 63, 64, 65, 66, 67, -1, 69, -1, -1, - 72, 73, 74, 89, 90, 91, 92, 93, 94, 95, - -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, - 92, 93, 94, 95, 54, 97, -1, -1, -1, -1, - -1, -1, 62, 63, 64, 65, 66, 67, -1, 69, - 56, -1, 72, 73, 74, -1, 62, 63, 64, 65, - 66, 67, -1, 69, -1, -1, 72, 73, 74, 89, - 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, - -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, - 62, 63, 64, 65, 66, 67, -1, 69, -1, -1, - 72, 73, 74, 62, 63, 64, 65, 66, 67, -1, - 69, -1, -1, 72, 73, 74, -1, 89, 90, 91, - 92, 93, 94, 95, -1, -1, -1, 99, 100, -1, - 89, 90, 91, 92, 93, 94, 95, -1, -1, -1, - -1, 100, 62, 63, 64, 65, 66, 67, -1, 69, - -1, -1, 72, 73, 74, 62, 63, 64, 65, 66, - 67, -1, 69, -1, -1, 72, 73, 74, -1, 89, - 90, 91, 92, 93, 94, 95, -1, -1, -1, -1, - 100, -1, 89, 90, 91, 92, 93, 94, 95, -1, - -1, -1, 99, 62, 63, 64, 65, 66, 67, -1, - 69, -1, -1, 72, 73, 74, -1, -1, -1, -1, - -1, 80, 81, -1, -1, -1, -1, -1, -1, -1, - 89, 90, 91, 92, 93, 94, 95, 62, 63, 64, - 65, 66, 67, -1, 69, -1, -1, 72, 73, 74, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, - 95 + 90, 91, 92, 93, 94, 95, 96 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 1, 24, 28, 29, 31, 32, 33, 34, 38, - 39, 40, 41, 42, 45, 47, 50, 51, 52, 55, - 58, 59, 60, 61, 82, 83, 84, 88, 105, 106, - 107, 108, 109, 110, 123, 129, 139, 147, 149, 151, - 154, 97, 150, 153, 51, 140, 14, 17, 18, 21, - 22, 23, 25, 26, 30, 31, 32, 33, 34, 46, - 47, 48, 49, 68, 75, 76, 77, 78, 79, 92, - 93, 98, 101, 107, 133, 135, 136, 137, 138, 148, - 162, 152, 51, 20, 136, 56, 57, 17, 18, 19, - 30, 107, 107, 107, 136, 136, 148, 142, 136, 141, - 155, 122, 0, 97, 98, 136, 160, 136, 130, 160, - 130, 107, 144, 135, 48, 135, 133, 133, 133, 133, - 136, 46, 135, 136, 136, 136, 136, 136, 135, 135, - 136, 25, 26, 103, 107, 136, 163, 164, 165, 166, - 98, 62, 63, 64, 65, 66, 67, 69, 72, 73, - 74, 89, 90, 91, 92, 93, 94, 95, 148, 107, - 107, 44, 70, 71, 107, 130, 54, 64, 136, 135, - 54, 64, 54, 64, 53, 56, 148, 107, 146, 54, - 97, 107, 145, 107, 109, 106, 107, 136, 160, 100, - 126, 107, 156, 157, 157, 100, 135, 136, 48, 54, - 48, 54, 48, 54, 48, 54, 80, 81, 99, 103, - 103, 103, 102, 100, 100, 107, 160, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 130, 135, 107, 137, 107, 137, - 107, 137, 43, 64, 136, 136, 136, 54, 64, 48, - 136, 136, 136, 136, 136, 136, 100, 121, 121, 100, - 99, 100, 99, 160, 53, 100, 97, 97, 144, 135, - 136, 135, 136, 135, 136, 135, 136, 135, 135, 136, - 136, 136, 136, 25, 26, 107, 166, 99, 100, 99, - 157, 44, 136, 136, 126, 136, 136, 107, 146, 109, - 110, 131, 132, 145, 143, 131, 157, 159, 159, 48, - 48, 48, 48, 134, 97, 136, 117, 111, 114, 120, - 135, 130, 130, 97, 136, 161, 127, 131, 131, 135, - 135, 135, 135, 161, 159, 130, 128, 128, 131, 54, - 64, 87, 131, 100, 99, 124, 27, 99, 131, 118, - 112, 115, 127, 136, 136, 161, 36, 37, 125, 130, - 107, 158, 126, 54, 35, 86, 131, 136, 85, 100, - 119, 136, 54, 130, 126, 107, 120, 113, 136, 85, - 53, 131, 126, 116, 131, 86, 120, 126, 127, 131, - 120, 86, 131, 86 + 0, 1, 25, 29, 30, 32, 33, 34, 35, 39, + 40, 41, 42, 43, 46, 48, 51, 52, 53, 56, + 59, 60, 61, 62, 83, 84, 85, 89, 106, 107, + 108, 109, 110, 111, 124, 130, 140, 148, 150, 152, + 155, 98, 151, 154, 52, 141, 15, 18, 19, 22, + 23, 24, 26, 27, 31, 32, 33, 34, 35, 47, + 48, 49, 50, 69, 76, 77, 78, 79, 80, 93, + 94, 99, 102, 108, 134, 136, 137, 138, 139, 149, + 163, 153, 52, 21, 137, 57, 58, 18, 19, 20, + 31, 108, 108, 108, 137, 137, 149, 143, 137, 142, + 156, 123, 0, 98, 99, 137, 161, 137, 131, 161, + 131, 108, 145, 136, 49, 136, 134, 134, 134, 134, + 137, 47, 136, 137, 137, 137, 137, 137, 136, 136, + 137, 26, 27, 104, 108, 137, 164, 165, 166, 167, + 99, 63, 64, 65, 66, 67, 68, 70, 73, 74, + 75, 90, 91, 92, 93, 94, 95, 96, 149, 108, + 108, 45, 71, 72, 108, 131, 55, 65, 137, 136, + 55, 65, 55, 65, 54, 57, 149, 108, 147, 55, + 98, 108, 146, 108, 110, 107, 108, 137, 161, 101, + 127, 108, 157, 158, 158, 101, 136, 137, 49, 55, + 49, 55, 49, 55, 49, 55, 81, 82, 100, 104, + 104, 104, 103, 101, 101, 108, 161, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 131, 136, 108, 138, 108, 138, + 108, 138, 44, 65, 137, 137, 137, 55, 65, 49, + 137, 137, 137, 137, 137, 137, 101, 122, 122, 101, + 100, 101, 100, 161, 54, 101, 98, 98, 145, 136, + 137, 136, 137, 136, 137, 136, 137, 136, 136, 137, + 137, 137, 137, 26, 27, 108, 167, 100, 101, 100, + 158, 45, 137, 137, 127, 137, 137, 108, 147, 110, + 111, 132, 133, 146, 144, 132, 158, 160, 160, 49, + 49, 49, 49, 135, 98, 137, 118, 112, 115, 121, + 136, 131, 131, 98, 137, 162, 128, 132, 132, 136, + 136, 136, 136, 162, 160, 131, 129, 129, 132, 55, + 65, 88, 132, 101, 100, 125, 28, 100, 132, 119, + 113, 116, 128, 137, 137, 162, 37, 38, 126, 131, + 108, 159, 127, 55, 36, 87, 132, 137, 86, 101, + 120, 137, 55, 131, 127, 108, 121, 114, 137, 86, + 54, 132, 127, 117, 132, 87, 121, 127, 128, 132, + 121, 87, 132, 87 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 104, 105, 105, 106, 106, 106, 107, 107, 107, - 107, 107, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, - 109, 110, 110, 110, 111, 112, 113, 110, 114, 115, - 116, 110, 117, 118, 119, 110, 110, 110, 110, 110, - 110, 110, 120, 121, 122, 123, 123, 124, 124, 125, - 126, 127, 128, 129, 130, 131, 131, 132, 132, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 134, 133, 133, 133, - 135, 135, 136, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 0, 105, 106, 106, 107, 107, 107, 108, 108, 108, + 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 110, + 110, 111, 111, 111, 112, 113, 114, 111, 115, 116, + 117, 111, 118, 119, 120, 111, 111, 111, 111, 111, + 111, 111, 121, 122, 123, 124, 124, 125, 125, 126, + 127, 128, 129, 130, 131, 132, 132, 133, 133, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 135, 134, 134, 134, + 136, 136, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 138, 138, 138, 139, 139, 139, 139, 139, 140, 139, - 141, 139, 142, 139, 139, 139, 139, 143, 139, 139, - 139, 144, 144, 144, 145, 145, 145, 146, 146, 146, - 147, 147, 147, 147, 147, 147, 148, 148, 149, 149, - 149, 150, 149, 152, 151, 151, 153, 151, 151, 151, - 155, 154, 156, 157, 157, 157, 158, 158, 158, 159, - 160, 160, 160, 161, 161, 161, 162, 163, 163, 163, - 163, 164, 164, 165, 165, 166, 166, 166 + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 139, 139, 139, 140, 140, 140, 140, 140, 141, 140, + 142, 140, 143, 140, 140, 140, 140, 144, 140, 140, + 140, 145, 145, 145, 146, 146, 146, 147, 147, 147, + 148, 148, 148, 148, 148, 148, 149, 149, 150, 150, + 150, 151, 150, 153, 152, 152, 154, 152, 152, 152, + 156, 155, 157, 158, 158, 158, 159, 159, 159, 160, + 161, 161, 161, 162, 162, 162, 163, 164, 164, 164, + 164, 165, 165, 166, 166, 167, 167, 167 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1753,61 +1758,61 @@ yydestruct (const char *yymsg, case YYSYMBOL_THEFUNC: /* THEFUNC */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1757 "engines/director/lingo/lingo-gr.cpp" +#line 1762 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_THEFUNCINOF: /* THEFUNCINOF */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1763 "engines/director/lingo/lingo-gr.cpp" +#line 1768 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_VARID: /* VARID */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1769 "engines/director/lingo/lingo-gr.cpp" +#line 1774 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_STRING: /* STRING */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1775 "engines/director/lingo/lingo-gr.cpp" +#line 1780 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_SYMBOL: /* SYMBOL */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1781 "engines/director/lingo/lingo-gr.cpp" +#line 1786 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_ENDCLAUSE: /* ENDCLAUSE */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1787 "engines/director/lingo/lingo-gr.cpp" +#line 1792 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_tPLAYACCEL: /* tPLAYACCEL */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1793 "engines/director/lingo/lingo-gr.cpp" +#line 1798 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_tMETHOD: /* tMETHOD */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1799 "engines/director/lingo/lingo-gr.cpp" +#line 1804 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_ID: /* ID */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1805 "engines/director/lingo/lingo-gr.cpp" +#line 1810 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_on: /* on */ #line 232 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1811 "engines/director/lingo/lingo-gr.cpp" +#line 1816 "engines/director/lingo/lingo-gr.cpp" break; default: @@ -2075,25 +2080,25 @@ yyreduce: case 8: /* ID: tCAST */ #line 244 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("cast"); } -#line 2079 "engines/director/lingo/lingo-gr.cpp" +#line 2084 "engines/director/lingo/lingo-gr.cpp" break; case 9: /* ID: tFIELD */ #line 245 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("field"); } -#line 2085 "engines/director/lingo/lingo-gr.cpp" +#line 2090 "engines/director/lingo/lingo-gr.cpp" break; case 10: /* ID: tSCRIPT */ #line 246 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("script"); } -#line 2091 "engines/director/lingo/lingo-gr.cpp" +#line 2096 "engines/director/lingo/lingo-gr.cpp" break; case 11: /* ID: tWINDOW */ #line 247 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("window"); } -#line 2097 "engines/director/lingo/lingo-gr.cpp" +#line 2102 "engines/director/lingo/lingo-gr.cpp" break; case 12: /* asgn: tPUT expr tINTO ID */ @@ -2105,7 +2110,7 @@ yyreduce: g_lingo->code1(LC::c_assign); (yyval.code) = (yyvsp[-2].code); delete (yyvsp[0].s); } -#line 2109 "engines/director/lingo/lingo-gr.cpp" +#line 2114 "engines/director/lingo/lingo-gr.cpp" break; case 13: /* asgn: tPUT expr tINTO chunkexpr */ @@ -2113,7 +2118,7 @@ yyreduce: { g_lingo->code1(LC::c_assign); (yyval.code) = (yyvsp[-2].code); } -#line 2117 "engines/director/lingo/lingo-gr.cpp" +#line 2122 "engines/director/lingo/lingo-gr.cpp" break; case 14: /* asgn: tPUT THEMENUITEMSENTITY ID simpleexpr tINTO expr */ @@ -2129,7 +2134,7 @@ yyreduce: g_lingo->codeInt((yyvsp[-4].e)[1]); g_lingo->code1(LC::c_assign); (yyval.code) = (yyvsp[0].code); } -#line 2133 "engines/director/lingo/lingo-gr.cpp" +#line 2138 "engines/director/lingo/lingo-gr.cpp" break; case 15: /* asgn: tPUT expr tAFTER ID */ @@ -2141,7 +2146,7 @@ yyreduce: g_lingo->code1(LC::c_putafter); (yyval.code) = (yyvsp[-2].code); delete (yyvsp[0].s); } -#line 2145 "engines/director/lingo/lingo-gr.cpp" +#line 2150 "engines/director/lingo/lingo-gr.cpp" break; case 16: /* asgn: tPUT expr tAFTER chunkexpr */ @@ -2149,7 +2154,7 @@ yyreduce: { g_lingo->code1(LC::c_putafter); (yyval.code) = (yyvsp[-2].code); } -#line 2153 "engines/director/lingo/lingo-gr.cpp" +#line 2158 "engines/director/lingo/lingo-gr.cpp" break; case 17: /* asgn: tPUT expr tBEFORE ID */ @@ -2161,7 +2166,7 @@ yyreduce: g_lingo->code1(LC::c_putbefore); (yyval.code) = (yyvsp[-2].code); delete (yyvsp[0].s); } -#line 2165 "engines/director/lingo/lingo-gr.cpp" +#line 2170 "engines/director/lingo/lingo-gr.cpp" break; case 18: /* asgn: tPUT expr tBEFORE chunkexpr */ @@ -2169,7 +2174,7 @@ yyreduce: { g_lingo->code1(LC::c_putbefore); (yyval.code) = (yyvsp[-2].code); } -#line 2173 "engines/director/lingo/lingo-gr.cpp" +#line 2178 "engines/director/lingo/lingo-gr.cpp" break; case 19: /* asgn: tSET ID tEQ expr */ @@ -2181,7 +2186,7 @@ yyreduce: g_lingo->code1(LC::c_assign); (yyval.code) = (yyvsp[0].code); delete (yyvsp[-2].s); } -#line 2185 "engines/director/lingo/lingo-gr.cpp" +#line 2190 "engines/director/lingo/lingo-gr.cpp" break; case 20: /* asgn: tSET THEENTITY tEQ expr */ @@ -2193,7 +2198,7 @@ yyreduce: g_lingo->codeInt((yyvsp[-2].e)[0]); g_lingo->codeInt((yyvsp[-2].e)[1]); (yyval.code) = (yyvsp[0].code); } -#line 2197 "engines/director/lingo/lingo-gr.cpp" +#line 2202 "engines/director/lingo/lingo-gr.cpp" break; case 21: /* asgn: tSET ID tTO expr */ @@ -2205,7 +2210,7 @@ yyreduce: g_lingo->code1(LC::c_assign); (yyval.code) = (yyvsp[0].code); delete (yyvsp[-2].s); } -#line 2209 "engines/director/lingo/lingo-gr.cpp" +#line 2214 "engines/director/lingo/lingo-gr.cpp" break; case 22: /* asgn: tSET THEENTITY tTO expr */ @@ -2217,7 +2222,7 @@ yyreduce: g_lingo->codeInt((yyvsp[-2].e)[0]); g_lingo->codeInt((yyvsp[-2].e)[1]); (yyval.code) = (yyvsp[0].code); } -#line 2221 "engines/director/lingo/lingo-gr.cpp" +#line 2226 "engines/director/lingo/lingo-gr.cpp" break; case 23: /* asgn: tSET THEENTITYWITHID expr tTO expr */ @@ -2228,7 +2233,7 @@ yyreduce: g_lingo->codeInt((yyvsp[-3].e)[0]); g_lingo->codeInt((yyvsp[-3].e)[1]); (yyval.code) = (yyvsp[0].code); } -#line 2232 "engines/director/lingo/lingo-gr.cpp" +#line 2237 "engines/director/lingo/lingo-gr.cpp" break; case 24: /* asgn: tSET THEENTITYWITHID expr tEQ expr */ @@ -2239,7 +2244,7 @@ yyreduce: g_lingo->codeInt((yyvsp[-3].e)[0]); g_lingo->codeInt((yyvsp[-3].e)[1]); (yyval.code) = (yyvsp[0].code); } -#line 2243 "engines/director/lingo/lingo-gr.cpp" +#line 2248 "engines/director/lingo/lingo-gr.cpp" break; case 25: /* asgn: tSET THEMENUITEMENTITY simpleexpr tOF ID simpleexpr tTO expr */ @@ -2255,7 +2260,7 @@ yyreduce: g_lingo->codeInt((yyvsp[-6].e)[0]); g_lingo->codeInt((yyvsp[-6].e)[1]); (yyval.code) = (yyvsp[0].code); } -#line 2259 "engines/director/lingo/lingo-gr.cpp" +#line 2264 "engines/director/lingo/lingo-gr.cpp" break; case 26: /* asgn: tSET THEMENUITEMENTITY simpleexpr tOF ID simpleexpr tEQ expr */ @@ -2271,7 +2276,7 @@ yyreduce: g_lingo->codeInt((yyvsp[-6].e)[0]); g_lingo->codeInt((yyvsp[-6].e)[1]); (yyval.code) = (yyvsp[0].code); } -#line 2275 "engines/director/lingo/lingo-gr.cpp" +#line 2280 "engines/director/lingo/lingo-gr.cpp" break; case 27: /* asgn: tSET THEOBJECTPROP tTO expr */ @@ -2283,7 +2288,7 @@ yyreduce: delete (yyvsp[-2].objectprop).obj; delete (yyvsp[-2].objectprop).prop; (yyval.code) = (yyvsp[0].code); } -#line 2287 "engines/director/lingo/lingo-gr.cpp" +#line 2292 "engines/director/lingo/lingo-gr.cpp" break; case 28: /* asgn: tSET THEOBJECTPROP tEQ expr */ @@ -2295,7 +2300,7 @@ yyreduce: delete (yyvsp[-2].objectprop).obj; delete (yyvsp[-2].objectprop).prop; (yyval.code) = (yyvsp[0].code); } -#line 2299 "engines/director/lingo/lingo-gr.cpp" +#line 2304 "engines/director/lingo/lingo-gr.cpp" break; case 33: /* stmt: tREPEAT tWHILE lbl expr jumpifz startrepeat stmtlist jump tENDREPEAT */ @@ -2307,7 +2312,7 @@ yyreduce: (*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end; /* end, if cond fails */ (*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start; /* looping back */ endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code)); } -#line 2311 "engines/director/lingo/lingo-gr.cpp" +#line 2316 "engines/director/lingo/lingo-gr.cpp" break; case 34: /* $@1: %empty */ @@ -2315,20 +2320,20 @@ yyreduce: { g_lingo->code1(LC::c_varpush); g_lingo->codeString((yyvsp[-2].s)->c_str()); mVar((yyvsp[-2].s), globalCheck()); } -#line 2319 "engines/director/lingo/lingo-gr.cpp" +#line 2324 "engines/director/lingo/lingo-gr.cpp" break; case 35: /* $@2: %empty */ #line 395 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_eval); g_lingo->codeString((yyvsp[-4].s)->c_str()); } -#line 2326 "engines/director/lingo/lingo-gr.cpp" +#line 2331 "engines/director/lingo/lingo-gr.cpp" break; case 36: /* $@3: %empty */ #line 398 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_le); } -#line 2332 "engines/director/lingo/lingo-gr.cpp" +#line 2337 "engines/director/lingo/lingo-gr.cpp" break; case 37: /* stmt: tREPEAT tWITH ID tEQ expr $@1 varassign $@2 tTO expr $@3 jumpifz startrepeat stmtlist tENDREPEAT */ @@ -2353,7 +2358,7 @@ yyreduce: (*g_lingo->_currentAssembly)[pos] = loop; /* final count value */ (*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end; /* end, if cond fails */ endRepeat(pos + 1, nextPos); } -#line 2357 "engines/director/lingo/lingo-gr.cpp" +#line 2362 "engines/director/lingo/lingo-gr.cpp" break; case 38: /* $@4: %empty */ @@ -2361,20 +2366,20 @@ yyreduce: { g_lingo->code1(LC::c_varpush); g_lingo->codeString((yyvsp[-2].s)->c_str()); mVar((yyvsp[-2].s), globalCheck()); } -#line 2365 "engines/director/lingo/lingo-gr.cpp" +#line 2370 "engines/director/lingo/lingo-gr.cpp" break; case 39: /* $@5: %empty */ #line 429 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_eval); g_lingo->codeString((yyvsp[-4].s)->c_str()); } -#line 2372 "engines/director/lingo/lingo-gr.cpp" +#line 2377 "engines/director/lingo/lingo-gr.cpp" break; case 40: /* $@6: %empty */ #line 432 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_ge); } -#line 2378 "engines/director/lingo/lingo-gr.cpp" +#line 2383 "engines/director/lingo/lingo-gr.cpp" break; case 41: /* stmt: tREPEAT tWITH ID tEQ expr $@4 varassign $@5 tDOWN tTO expr $@6 jumpifz startrepeat stmtlist tENDREPEAT */ @@ -2399,7 +2404,7 @@ yyreduce: (*g_lingo->_currentAssembly)[pos] = loop; /* final count value */ (*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end; /* end, if cond fails */ endRepeat(pos + 1, nextPos); } -#line 2403 "engines/director/lingo/lingo-gr.cpp" +#line 2408 "engines/director/lingo/lingo-gr.cpp" break; case 42: /* $@7: %empty */ @@ -2410,7 +2415,7 @@ yyreduce: g_lingo->codeFunc(&count, 1); g_lingo->code1(LC::c_intpush); // start counter g_lingo->codeInt(1); } -#line 2414 "engines/director/lingo/lingo-gr.cpp" +#line 2419 "engines/director/lingo/lingo-gr.cpp" break; case 43: /* $@8: %empty */ @@ -2420,7 +2425,7 @@ yyreduce: g_lingo->code1(LC::c_stackpeek); // get array size g_lingo->codeInt(2); g_lingo->code1(LC::c_le); } -#line 2424 "engines/director/lingo/lingo-gr.cpp" +#line 2429 "engines/director/lingo/lingo-gr.cpp" break; case 44: /* $@9: %empty */ @@ -2435,7 +2440,7 @@ yyreduce: g_lingo->codeString((yyvsp[-6].s)->c_str()); mVar((yyvsp[-6].s), globalCheck()); g_lingo->code1(LC::c_assign); } -#line 2439 "engines/director/lingo/lingo-gr.cpp" +#line 2444 "engines/director/lingo/lingo-gr.cpp" break; case 45: /* stmt: tREPEAT tWITH ID tIN expr $@7 lbl $@8 jumpifz $@9 startrepeat stmtlist tENDREPEAT */ @@ -2459,7 +2464,7 @@ yyreduce: (*g_lingo->_currentAssembly)[jump + 1] = loop; /* final count value */ (*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end; /* end, if cond fails */ endRepeat(end2, nextPos); } -#line 2463 "engines/director/lingo/lingo-gr.cpp" +#line 2468 "engines/director/lingo/lingo-gr.cpp" break; case 46: /* stmt: tNEXT tREPEAT */ @@ -2472,7 +2477,7 @@ yyreduce: } else { warning("# LINGO: next repeat not inside repeat block"); } } -#line 2476 "engines/director/lingo/lingo-gr.cpp" +#line 2481 "engines/director/lingo/lingo-gr.cpp" break; case 47: /* stmt: tWHEN ID tTHEN expr */ @@ -2480,49 +2485,49 @@ yyreduce: { g_lingo->code1(LC::c_whencode); g_lingo->codeString((yyvsp[-2].s)->c_str()); } -#line 2484 "engines/director/lingo/lingo-gr.cpp" +#line 2489 "engines/director/lingo/lingo-gr.cpp" break; case 48: /* stmt: tTELL expr '\n' tellstart stmtlist lbl tENDTELL */ #line 513 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_telldone); } -#line 2490 "engines/director/lingo/lingo-gr.cpp" +#line 2495 "engines/director/lingo/lingo-gr.cpp" break; case 49: /* stmt: tTELL expr tTO tellstart stmtoneliner lbl */ #line 514 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_telldone); } -#line 2496 "engines/director/lingo/lingo-gr.cpp" +#line 2501 "engines/director/lingo/lingo-gr.cpp" break; case 50: /* stmt: tASSERTERROR asserterrorstart stmtoneliner */ #line 515 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_asserterrordone); } -#line 2502 "engines/director/lingo/lingo-gr.cpp" +#line 2507 "engines/director/lingo/lingo-gr.cpp" break; case 51: /* stmt: error '\n' */ #line 516 "engines/director/lingo/lingo-gr.y" { yyerrok; } -#line 2508 "engines/director/lingo/lingo-gr.cpp" +#line 2513 "engines/director/lingo/lingo-gr.cpp" break; case 52: /* startrepeat: %empty */ #line 518 "engines/director/lingo/lingo-gr.y" { startRepeat(); } -#line 2514 "engines/director/lingo/lingo-gr.cpp" +#line 2519 "engines/director/lingo/lingo-gr.cpp" break; case 53: /* tellstart: %empty */ #line 520 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_tell); } -#line 2520 "engines/director/lingo/lingo-gr.cpp" +#line 2525 "engines/director/lingo/lingo-gr.cpp" break; case 54: /* asserterrorstart: %empty */ #line 522 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_asserterror); } -#line 2526 "engines/director/lingo/lingo-gr.cpp" +#line 2531 "engines/director/lingo/lingo-gr.cpp" break; case 55: /* ifstmt: if expr jumpifz tTHEN stmtlist jump elseifstmtlist lbl tENDIF */ @@ -2534,7 +2539,7 @@ yyreduce: (*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1; /* elsepart */ (*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3; /* end, if cond fails */ g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); } -#line 2538 "engines/director/lingo/lingo-gr.cpp" +#line 2543 "engines/director/lingo/lingo-gr.cpp" break; case 56: /* ifstmt: if expr jumpifz tTHEN stmtlist jump elseifstmtlist tELSE stmtlist lbl tENDIF */ @@ -2546,7 +2551,7 @@ yyreduce: (*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1; /* elsepart */ (*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end; /* end, if cond fails */ g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); } -#line 2550 "engines/director/lingo/lingo-gr.cpp" +#line 2555 "engines/director/lingo/lingo-gr.cpp" break; case 59: /* elseifstmt: tELSIF expr jumpifz tTHEN stmtlist jump */ @@ -2556,7 +2561,7 @@ yyreduce: WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1); (*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1; /* end, if cond fails */ g_lingo->codeLabel((yyvsp[0].code)); } -#line 2560 "engines/director/lingo/lingo-gr.cpp" +#line 2565 "engines/director/lingo/lingo-gr.cpp" break; case 60: /* jumpifz: %empty */ @@ -2564,7 +2569,7 @@ yyreduce: { g_lingo->code2(LC::c_jumpifz, 0); (yyval.code) = g_lingo->_currentAssembly->size() - 1; } -#line 2568 "engines/director/lingo/lingo-gr.cpp" +#line 2573 "engines/director/lingo/lingo-gr.cpp" break; case 61: /* jump: %empty */ @@ -2572,7 +2577,7 @@ yyreduce: { g_lingo->code2(LC::c_jump, 0); (yyval.code) = g_lingo->_currentAssembly->size() - 1; } -#line 2576 "engines/director/lingo/lingo-gr.cpp" +#line 2581 "engines/director/lingo/lingo-gr.cpp" break; case 62: /* varassign: %empty */ @@ -2580,20 +2585,20 @@ yyreduce: { g_lingo->code1(LC::c_assign); (yyval.code) = g_lingo->_currentAssembly->size() - 1; } -#line 2584 "engines/director/lingo/lingo-gr.cpp" +#line 2589 "engines/director/lingo/lingo-gr.cpp" break; case 63: /* if: tIF */ #line 560 "engines/director/lingo/lingo-gr.y" { g_lingo->codeLabel(0); } -#line 2591 "engines/director/lingo/lingo-gr.cpp" +#line 2596 "engines/director/lingo/lingo-gr.cpp" break; case 64: /* lbl: %empty */ #line 563 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->_currentAssembly->size(); } -#line 2597 "engines/director/lingo/lingo-gr.cpp" +#line 2602 "engines/director/lingo/lingo-gr.cpp" break; case 69: /* simpleexprnoparens: INT */ @@ -2601,7 +2606,7 @@ yyreduce: { (yyval.code) = g_lingo->code1(LC::c_intpush); g_lingo->codeInt((yyvsp[0].i)); } -#line 2605 "engines/director/lingo/lingo-gr.cpp" +#line 2610 "engines/director/lingo/lingo-gr.cpp" break; case 70: /* simpleexprnoparens: FLOAT */ @@ -2609,7 +2614,7 @@ yyreduce: { (yyval.code) = g_lingo->code1(LC::c_floatpush); g_lingo->codeFloat((yyvsp[0].f)); } -#line 2613 "engines/director/lingo/lingo-gr.cpp" +#line 2618 "engines/director/lingo/lingo-gr.cpp" break; case 71: /* simpleexprnoparens: SYMBOL */ @@ -2618,7 +2623,7 @@ yyreduce: (yyval.code) = g_lingo->code1(LC::c_symbolpush); g_lingo->codeString((yyvsp[0].s)->c_str()); delete (yyvsp[0].s); } -#line 2622 "engines/director/lingo/lingo-gr.cpp" +#line 2627 "engines/director/lingo/lingo-gr.cpp" break; case 72: /* simpleexprnoparens: STRING */ @@ -2627,25 +2632,25 @@ yyreduce: (yyval.code) = g_lingo->code1(LC::c_stringpush); g_lingo->codeString((yyvsp[0].s)->c_str()); delete (yyvsp[0].s); } -#line 2631 "engines/director/lingo/lingo-gr.cpp" +#line 2636 "engines/director/lingo/lingo-gr.cpp" break; case 73: /* simpleexprnoparens: '+' simpleexpr */ #line 585 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[0].code); } -#line 2637 "engines/director/lingo/lingo-gr.cpp" +#line 2642 "engines/director/lingo/lingo-gr.cpp" break; case 74: /* simpleexprnoparens: '-' simpleexpr */ #line 586 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); } -#line 2643 "engines/director/lingo/lingo-gr.cpp" +#line 2648 "engines/director/lingo/lingo-gr.cpp" break; case 75: /* simpleexprnoparens: tNOT simpleexpr */ #line 587 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_not); } -#line 2649 "engines/director/lingo/lingo-gr.cpp" +#line 2654 "engines/director/lingo/lingo-gr.cpp" break; case 77: /* simpleexprnoparens: THEENTITY */ @@ -2658,7 +2663,7 @@ yyreduce: WRITE_UINT32(&e, (yyvsp[0].e)[0]); WRITE_UINT32(&f, (yyvsp[0].e)[1]); g_lingo->code2(e, f); } -#line 2662 "engines/director/lingo/lingo-gr.cpp" +#line 2667 "engines/director/lingo/lingo-gr.cpp" break; case 78: /* simpleexprnoparens: THEENTITYWITHID simpleexpr */ @@ -2669,7 +2674,7 @@ yyreduce: WRITE_UINT32(&e, (yyvsp[-1].e)[0]); WRITE_UINT32(&f, (yyvsp[-1].e)[1]); g_lingo->code2(e, f); } -#line 2673 "engines/director/lingo/lingo-gr.cpp" +#line 2678 "engines/director/lingo/lingo-gr.cpp" break; case 79: /* simpleexprnoparens: THEFUNCINOF simpleexpr */ @@ -2677,7 +2682,7 @@ yyreduce: { (yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1); delete (yyvsp[-1].s); } -#line 2681 "engines/director/lingo/lingo-gr.cpp" +#line 2686 "engines/director/lingo/lingo-gr.cpp" break; case 80: /* simpleexprnoparens: THEFUNC tOF simpleexpr */ @@ -2685,7 +2690,7 @@ yyreduce: { (yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1); delete (yyvsp[-2].s); } -#line 2689 "engines/director/lingo/lingo-gr.cpp" +#line 2694 "engines/director/lingo/lingo-gr.cpp" break; case 81: /* simpleexprnoparens: THEOBJECTPROP */ @@ -2696,19 +2701,19 @@ yyreduce: g_lingo->codeString((yyvsp[0].objectprop).prop->c_str()); delete (yyvsp[0].objectprop).obj; delete (yyvsp[0].objectprop).prop; } -#line 2700 "engines/director/lingo/lingo-gr.cpp" +#line 2705 "engines/director/lingo/lingo-gr.cpp" break; case 82: /* simpleexprnoparens: tSPRITE expr tINTERSECTS simpleexpr */ #line 615 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_intersects); } -#line 2706 "engines/director/lingo/lingo-gr.cpp" +#line 2711 "engines/director/lingo/lingo-gr.cpp" break; case 83: /* simpleexprnoparens: tSPRITE expr tWITHIN simpleexpr */ #line 616 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_within); } -#line 2712 "engines/director/lingo/lingo-gr.cpp" +#line 2717 "engines/director/lingo/lingo-gr.cpp" break; case 85: /* simpleexprnoparens: ID '(' ID ')' */ @@ -2719,13 +2724,13 @@ yyreduce: g_lingo->codeFunc((yyvsp[-3].s), 1); delete (yyvsp[-3].s); delete (yyvsp[-1].s); } -#line 2723 "engines/director/lingo/lingo-gr.cpp" +#line 2728 "engines/director/lingo/lingo-gr.cpp" break; case 86: /* $@10: %empty */ #line 624 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_varpush); g_lingo->codeString((yyvsp[-1].s)->c_str()); } -#line 2729 "engines/director/lingo/lingo-gr.cpp" +#line 2734 "engines/director/lingo/lingo-gr.cpp" break; case 87: /* simpleexprnoparens: ID '(' ID ',' $@10 nonemptyarglist ')' */ @@ -2734,7 +2739,7 @@ yyreduce: g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1); delete (yyvsp[-6].s); delete (yyvsp[-4].s); } -#line 2738 "engines/director/lingo/lingo-gr.cpp" +#line 2743 "engines/director/lingo/lingo-gr.cpp" break; case 88: /* simpleexprnoparens: ID '(' arglist ')' */ @@ -2742,7 +2747,7 @@ yyreduce: { (yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg)); delete (yyvsp[-3].s); } -#line 2746 "engines/director/lingo/lingo-gr.cpp" +#line 2751 "engines/director/lingo/lingo-gr.cpp" break; case 89: /* simpleexprnoparens: ID */ @@ -2755,121 +2760,121 @@ yyreduce: } g_lingo->codeString((yyvsp[0].s)->c_str()); delete (yyvsp[0].s); } -#line 2759 "engines/director/lingo/lingo-gr.cpp" +#line 2764 "engines/director/lingo/lingo-gr.cpp" break; case 91: /* simpleexpr: '(' expr ')' */ #line 642 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[-1].code); } -#line 2765 "engines/director/lingo/lingo-gr.cpp" +#line 2770 "engines/director/lingo/lingo-gr.cpp" break; case 92: /* expr: simpleexpr */ #line 644 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[0].code); } -#line 2771 "engines/director/lingo/lingo-gr.cpp" +#line 2776 "engines/director/lingo/lingo-gr.cpp" break; case 93: /* expr: expr '+' expr */ #line 645 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_add); } -#line 2777 "engines/director/lingo/lingo-gr.cpp" +#line 2782 "engines/director/lingo/lingo-gr.cpp" break; case 94: /* expr: expr '-' expr */ #line 646 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_sub); } -#line 2783 "engines/director/lingo/lingo-gr.cpp" +#line 2788 "engines/director/lingo/lingo-gr.cpp" break; case 95: /* expr: expr '*' expr */ #line 647 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_mul); } -#line 2789 "engines/director/lingo/lingo-gr.cpp" +#line 2794 "engines/director/lingo/lingo-gr.cpp" break; case 96: /* expr: expr '/' expr */ #line 648 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_div); } -#line 2795 "engines/director/lingo/lingo-gr.cpp" +#line 2800 "engines/director/lingo/lingo-gr.cpp" break; case 97: /* expr: expr tMOD expr */ #line 649 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_mod); } -#line 2801 "engines/director/lingo/lingo-gr.cpp" +#line 2806 "engines/director/lingo/lingo-gr.cpp" break; case 98: /* expr: expr '>' expr */ #line 650 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_gt); } -#line 2807 "engines/director/lingo/lingo-gr.cpp" +#line 2812 "engines/director/lingo/lingo-gr.cpp" break; case 99: /* expr: expr '<' expr */ #line 651 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_lt); } -#line 2813 "engines/director/lingo/lingo-gr.cpp" +#line 2818 "engines/director/lingo/lingo-gr.cpp" break; case 100: /* expr: expr tEQ expr */ #line 652 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_eq); } -#line 2819 "engines/director/lingo/lingo-gr.cpp" +#line 2824 "engines/director/lingo/lingo-gr.cpp" break; case 101: /* expr: expr tNEQ expr */ #line 653 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_neq); } -#line 2825 "engines/director/lingo/lingo-gr.cpp" +#line 2830 "engines/director/lingo/lingo-gr.cpp" break; case 102: /* expr: expr tGE expr */ #line 654 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_ge); } -#line 2831 "engines/director/lingo/lingo-gr.cpp" +#line 2836 "engines/director/lingo/lingo-gr.cpp" break; case 103: /* expr: expr tLE expr */ #line 655 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_le); } -#line 2837 "engines/director/lingo/lingo-gr.cpp" +#line 2842 "engines/director/lingo/lingo-gr.cpp" break; case 104: /* expr: expr tAND expr */ #line 656 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_and); } -#line 2843 "engines/director/lingo/lingo-gr.cpp" +#line 2848 "engines/director/lingo/lingo-gr.cpp" break; case 105: /* expr: expr tOR expr */ #line 657 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_or); } -#line 2849 "engines/director/lingo/lingo-gr.cpp" +#line 2854 "engines/director/lingo/lingo-gr.cpp" break; case 106: /* expr: expr '&' expr */ #line 658 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_ampersand); } -#line 2855 "engines/director/lingo/lingo-gr.cpp" +#line 2860 "engines/director/lingo/lingo-gr.cpp" break; case 107: /* expr: expr tCONCAT expr */ #line 659 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_concat); } -#line 2861 "engines/director/lingo/lingo-gr.cpp" +#line 2866 "engines/director/lingo/lingo-gr.cpp" break; case 108: /* expr: expr tCONTAINS expr */ #line 660 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_contains); } -#line 2867 "engines/director/lingo/lingo-gr.cpp" +#line 2872 "engines/director/lingo/lingo-gr.cpp" break; case 109: /* expr: expr tSTARTS expr */ #line 661 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_starts); } -#line 2873 "engines/director/lingo/lingo-gr.cpp" +#line 2878 "engines/director/lingo/lingo-gr.cpp" break; case 110: /* chunkexpr: tFIELD simpleexprnoparens */ @@ -2877,7 +2882,7 @@ yyreduce: { Common::String field("field"); g_lingo->codeFunc(&field, 1); } -#line 2881 "engines/director/lingo/lingo-gr.cpp" +#line 2886 "engines/director/lingo/lingo-gr.cpp" break; case 111: /* chunkexpr: tCAST simpleexprnoparens */ @@ -2885,55 +2890,55 @@ yyreduce: { Common::String cast("cast"); g_lingo->codeFunc(&cast, 1); } -#line 2889 "engines/director/lingo/lingo-gr.cpp" +#line 2894 "engines/director/lingo/lingo-gr.cpp" break; case 112: /* chunkexpr: tCHAR expr tOF simpleexpr */ #line 669 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_charOf); } -#line 2895 "engines/director/lingo/lingo-gr.cpp" +#line 2900 "engines/director/lingo/lingo-gr.cpp" break; case 113: /* chunkexpr: tCHAR expr tTO expr tOF simpleexpr */ #line 670 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_charToOf); } -#line 2901 "engines/director/lingo/lingo-gr.cpp" +#line 2906 "engines/director/lingo/lingo-gr.cpp" break; case 114: /* chunkexpr: tITEM expr tOF simpleexpr */ #line 671 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_itemOf); } -#line 2907 "engines/director/lingo/lingo-gr.cpp" +#line 2912 "engines/director/lingo/lingo-gr.cpp" break; case 115: /* chunkexpr: tITEM expr tTO expr tOF simpleexpr */ #line 672 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_itemToOf); } -#line 2913 "engines/director/lingo/lingo-gr.cpp" +#line 2918 "engines/director/lingo/lingo-gr.cpp" break; case 116: /* chunkexpr: tLINE expr tOF simpleexpr */ #line 673 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_lineOf); } -#line 2919 "engines/director/lingo/lingo-gr.cpp" +#line 2924 "engines/director/lingo/lingo-gr.cpp" break; case 117: /* chunkexpr: tLINE expr tTO expr tOF simpleexpr */ #line 674 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_lineToOf); } -#line 2925 "engines/director/lingo/lingo-gr.cpp" +#line 2930 "engines/director/lingo/lingo-gr.cpp" break; case 118: /* chunkexpr: tWORD expr tOF simpleexpr */ #line 675 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_wordOf); } -#line 2931 "engines/director/lingo/lingo-gr.cpp" +#line 2936 "engines/director/lingo/lingo-gr.cpp" break; case 119: /* chunkexpr: tWORD expr tTO expr tOF simpleexpr */ #line 676 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_wordToOf); } -#line 2937 "engines/director/lingo/lingo-gr.cpp" +#line 2942 "engines/director/lingo/lingo-gr.cpp" break; case 121: /* reference: tSCRIPT simpleexprnoparens */ @@ -2941,7 +2946,7 @@ yyreduce: { Common::String script("script"); g_lingo->codeFunc(&script, 1); } -#line 2945 "engines/director/lingo/lingo-gr.cpp" +#line 2950 "engines/director/lingo/lingo-gr.cpp" break; case 122: /* reference: tWINDOW simpleexprnoparens */ @@ -2949,7 +2954,7 @@ yyreduce: { Common::String window("window"); g_lingo->codeFunc(&window, 1); } -#line 2953 "engines/director/lingo/lingo-gr.cpp" +#line 2958 "engines/director/lingo/lingo-gr.cpp" break; case 123: /* proc: tPUT expr */ @@ -2957,7 +2962,7 @@ yyreduce: { Common::String put("put"); g_lingo->codeCmd(&put, 1); } -#line 2961 "engines/director/lingo/lingo-gr.cpp" +#line 2966 "engines/director/lingo/lingo-gr.cpp" break; case 126: /* proc: tEXIT tREPEAT */ @@ -2970,49 +2975,49 @@ yyreduce: } else { warning("# LINGO: exit repeat not inside repeat block"); } } -#line 2974 "engines/director/lingo/lingo-gr.cpp" +#line 2979 "engines/director/lingo/lingo-gr.cpp" break; case 127: /* proc: tEXIT */ #line 699 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_procret); } -#line 2980 "engines/director/lingo/lingo-gr.cpp" +#line 2985 "engines/director/lingo/lingo-gr.cpp" break; case 128: /* $@11: %empty */ #line 700 "engines/director/lingo/lingo-gr.y" { inArgs(); } -#line 2986 "engines/director/lingo/lingo-gr.cpp" +#line 2991 "engines/director/lingo/lingo-gr.cpp" break; case 129: /* proc: tGLOBAL $@11 globallist */ #line 700 "engines/director/lingo/lingo-gr.y" { inLast(); } -#line 2992 "engines/director/lingo/lingo-gr.cpp" +#line 2997 "engines/director/lingo/lingo-gr.cpp" break; case 130: /* $@12: %empty */ #line 701 "engines/director/lingo/lingo-gr.y" { inArgs(); } -#line 2998 "engines/director/lingo/lingo-gr.cpp" +#line 3003 "engines/director/lingo/lingo-gr.cpp" break; case 131: /* proc: tPROPERTY $@12 propertylist */ #line 701 "engines/director/lingo/lingo-gr.y" { inLast(); } -#line 3004 "engines/director/lingo/lingo-gr.cpp" +#line 3009 "engines/director/lingo/lingo-gr.cpp" break; case 132: /* $@13: %empty */ #line 702 "engines/director/lingo/lingo-gr.y" { inArgs(); } -#line 3010 "engines/director/lingo/lingo-gr.cpp" +#line 3015 "engines/director/lingo/lingo-gr.cpp" break; case 133: /* proc: tINSTANCE $@13 instancelist */ #line 702 "engines/director/lingo/lingo-gr.y" { inLast(); } -#line 3016 "engines/director/lingo/lingo-gr.cpp" +#line 3021 "engines/director/lingo/lingo-gr.cpp" break; case 134: /* proc: tOPEN expr tWITH expr */ @@ -3020,7 +3025,7 @@ yyreduce: { Common::String open("open"); g_lingo->codeCmd(&open, 2); } -#line 3024 "engines/director/lingo/lingo-gr.cpp" +#line 3029 "engines/director/lingo/lingo-gr.cpp" break; case 135: /* proc: tOPEN expr */ @@ -3028,7 +3033,7 @@ yyreduce: { Common::String open("open"); g_lingo->codeCmd(&open, 1); } -#line 3032 "engines/director/lingo/lingo-gr.cpp" +#line 3037 "engines/director/lingo/lingo-gr.cpp" break; case 136: /* proc: ID '(' ID ')' */ @@ -3039,13 +3044,13 @@ yyreduce: g_lingo->codeCmd((yyvsp[-3].s), 1); delete (yyvsp[-3].s); delete (yyvsp[-1].s); } -#line 3043 "engines/director/lingo/lingo-gr.cpp" +#line 3048 "engines/director/lingo/lingo-gr.cpp" break; case 137: /* $@14: %empty */ #line 715 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_varpush); g_lingo->codeString((yyvsp[-1].s)->c_str()); } -#line 3049 "engines/director/lingo/lingo-gr.cpp" +#line 3054 "engines/director/lingo/lingo-gr.cpp" break; case 138: /* proc: ID '(' ID ',' $@14 nonemptyarglist ')' */ @@ -3054,7 +3059,7 @@ yyreduce: g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1); delete (yyvsp[-6].s); delete (yyvsp[-4].s); } -#line 3058 "engines/director/lingo/lingo-gr.cpp" +#line 3063 "engines/director/lingo/lingo-gr.cpp" break; case 139: /* proc: ID '(' arglist ')' */ @@ -3062,7 +3067,7 @@ yyreduce: { g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg)); delete (yyvsp[-3].s); } -#line 3066 "engines/director/lingo/lingo-gr.cpp" +#line 3071 "engines/director/lingo/lingo-gr.cpp" break; case 140: /* proc: ID arglist */ @@ -3070,7 +3075,7 @@ yyreduce: { g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg)); delete (yyvsp[-1].s); } -#line 3074 "engines/director/lingo/lingo-gr.cpp" +#line 3079 "engines/director/lingo/lingo-gr.cpp" break; case 142: /* globallist: ID */ @@ -3078,7 +3083,7 @@ yyreduce: { mVar((yyvsp[0].s), kVarGlobal); delete (yyvsp[0].s); } -#line 3082 "engines/director/lingo/lingo-gr.cpp" +#line 3087 "engines/director/lingo/lingo-gr.cpp" break; case 143: /* globallist: ID ',' globallist */ @@ -3086,7 +3091,7 @@ yyreduce: { mVar((yyvsp[-2].s), kVarGlobal); delete (yyvsp[-2].s); } -#line 3090 "engines/director/lingo/lingo-gr.cpp" +#line 3095 "engines/director/lingo/lingo-gr.cpp" break; case 145: /* propertylist: ID */ @@ -3094,7 +3099,7 @@ yyreduce: { mVar((yyvsp[0].s), kVarProperty); delete (yyvsp[0].s); } -#line 3098 "engines/director/lingo/lingo-gr.cpp" +#line 3103 "engines/director/lingo/lingo-gr.cpp" break; case 146: /* propertylist: ID ',' propertylist */ @@ -3102,7 +3107,7 @@ yyreduce: { mVar((yyvsp[-2].s), kVarProperty); delete (yyvsp[-2].s); } -#line 3106 "engines/director/lingo/lingo-gr.cpp" +#line 3111 "engines/director/lingo/lingo-gr.cpp" break; case 148: /* instancelist: ID */ @@ -3110,7 +3115,7 @@ yyreduce: { mVar((yyvsp[0].s), kVarInstance); delete (yyvsp[0].s); } -#line 3114 "engines/director/lingo/lingo-gr.cpp" +#line 3119 "engines/director/lingo/lingo-gr.cpp" break; case 149: /* instancelist: ID ',' instancelist */ @@ -3118,25 +3123,25 @@ yyreduce: { mVar((yyvsp[-2].s), kVarInstance); delete (yyvsp[-2].s); } -#line 3122 "engines/director/lingo/lingo-gr.cpp" +#line 3127 "engines/director/lingo/lingo-gr.cpp" break; case 150: /* gotofunc: tGOLOOP */ #line 758 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_gotoloop); } -#line 3128 "engines/director/lingo/lingo-gr.cpp" +#line 3133 "engines/director/lingo/lingo-gr.cpp" break; case 151: /* gotofunc: tGO tNEXT */ #line 759 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_gotonext); } -#line 3134 "engines/director/lingo/lingo-gr.cpp" +#line 3139 "engines/director/lingo/lingo-gr.cpp" break; case 152: /* gotofunc: tGO tPREVIOUS */ #line 760 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(LC::c_gotoprevious); } -#line 3140 "engines/director/lingo/lingo-gr.cpp" +#line 3145 "engines/director/lingo/lingo-gr.cpp" break; case 153: /* gotofunc: tGO expr */ @@ -3145,7 +3150,7 @@ yyreduce: g_lingo->code1(LC::c_intpush); g_lingo->codeInt(1); g_lingo->code1(LC::c_goto); } -#line 3149 "engines/director/lingo/lingo-gr.cpp" +#line 3154 "engines/director/lingo/lingo-gr.cpp" break; case 154: /* gotofunc: tGO expr gotomovie */ @@ -3154,7 +3159,7 @@ yyreduce: g_lingo->code1(LC::c_intpush); g_lingo->codeInt(3); g_lingo->code1(LC::c_goto); } -#line 3158 "engines/director/lingo/lingo-gr.cpp" +#line 3163 "engines/director/lingo/lingo-gr.cpp" break; case 155: /* gotofunc: tGO gotomovie */ @@ -3163,7 +3168,7 @@ yyreduce: g_lingo->code1(LC::c_intpush); g_lingo->codeInt(2); g_lingo->code1(LC::c_goto); } -#line 3167 "engines/director/lingo/lingo-gr.cpp" +#line 3172 "engines/director/lingo/lingo-gr.cpp" break; case 158: /* playfunc: tPLAY expr */ @@ -3172,7 +3177,7 @@ yyreduce: g_lingo->code1(LC::c_intpush); g_lingo->codeInt(1); g_lingo->code1(LC::c_play); } -#line 3176 "engines/director/lingo/lingo-gr.cpp" +#line 3181 "engines/director/lingo/lingo-gr.cpp" break; case 159: /* playfunc: tPLAY expr gotomovie */ @@ -3181,7 +3186,7 @@ yyreduce: g_lingo->code1(LC::c_intpush); g_lingo->codeInt(3); g_lingo->code1(LC::c_play); } -#line 3185 "engines/director/lingo/lingo-gr.cpp" +#line 3190 "engines/director/lingo/lingo-gr.cpp" break; case 160: /* playfunc: tPLAY gotomovie */ @@ -3190,13 +3195,13 @@ yyreduce: g_lingo->code1(LC::c_intpush); g_lingo->codeInt(2); g_lingo->code1(LC::c_play); } -#line 3194 "engines/director/lingo/lingo-gr.cpp" +#line 3199 "engines/director/lingo/lingo-gr.cpp" break; case 161: /* $@15: %empty */ #line 789 "engines/director/lingo/lingo-gr.y" { g_lingo->codeSetImmediate(true); } -#line 3200 "engines/director/lingo/lingo-gr.cpp" +#line 3205 "engines/director/lingo/lingo-gr.cpp" break; case 162: /* playfunc: tPLAYACCEL $@15 arglist */ @@ -3205,13 +3210,13 @@ yyreduce: g_lingo->codeSetImmediate(false); g_lingo->codeCmd((yyvsp[-2].s), (yyvsp[0].narg)); delete (yyvsp[-2].s); } -#line 3209 "engines/director/lingo/lingo-gr.cpp" +#line 3214 "engines/director/lingo/lingo-gr.cpp" break; case 163: /* $@16: %empty */ #line 819 "engines/director/lingo/lingo-gr.y" { startDef(); } -#line 3215 "engines/director/lingo/lingo-gr.cpp" +#line 3220 "engines/director/lingo/lingo-gr.cpp" break; case 164: /* defn: tMACRO $@16 ID lbl argdef '\n' argstore stmtlist */ @@ -3221,13 +3226,13 @@ yyreduce: g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg)); endDef(); delete (yyvsp[-5].s); } -#line 3225 "engines/director/lingo/lingo-gr.cpp" +#line 3230 "engines/director/lingo/lingo-gr.cpp" break; case 165: /* defn: tFACTORY ID */ #line 825 "engines/director/lingo/lingo-gr.y" { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); } -#line 3231 "engines/director/lingo/lingo-gr.cpp" +#line 3236 "engines/director/lingo/lingo-gr.cpp" break; case 166: /* $@17: %empty */ @@ -3238,7 +3243,7 @@ yyreduce: g_lingo->codeArg(&me); mVar(&me, kVarArgument); } -#line 3242 "engines/director/lingo/lingo-gr.cpp" +#line 3247 "engines/director/lingo/lingo-gr.cpp" break; case 167: /* defn: tMETHOD $@17 lbl argdef '\n' argstore stmtlist */ @@ -3248,7 +3253,7 @@ yyreduce: g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1); endDef(); delete (yyvsp[-6].s); } -#line 3252 "engines/director/lingo/lingo-gr.cpp" +#line 3257 "engines/director/lingo/lingo-gr.cpp" break; case 168: /* defn: on lbl argdef '\n' argstore stmtlist ENDCLAUSE endargdef */ @@ -3261,7 +3266,7 @@ yyreduce: checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false); delete (yyvsp[-7].s); delete (yyvsp[-1].s); } -#line 3265 "engines/director/lingo/lingo-gr.cpp" +#line 3270 "engines/director/lingo/lingo-gr.cpp" break; case 169: /* defn: on lbl argdef '\n' argstore stmtlist */ @@ -3271,151 +3276,151 @@ yyreduce: g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg)); endDef(); delete (yyvsp[-5].s); } -#line 3275 "engines/director/lingo/lingo-gr.cpp" +#line 3280 "engines/director/lingo/lingo-gr.cpp" break; case 170: /* $@18: %empty */ #line 850 "engines/director/lingo/lingo-gr.y" { startDef(); } -#line 3281 "engines/director/lingo/lingo-gr.cpp" +#line 3286 "engines/director/lingo/lingo-gr.cpp" break; case 171: /* on: tON $@18 ID */ #line 850 "engines/director/lingo/lingo-gr.y" { (yyval.s) = (yyvsp[0].s); } -#line 3287 "engines/director/lingo/lingo-gr.cpp" +#line 3292 "engines/director/lingo/lingo-gr.cpp" break; case 172: /* argname: ID */ #line 852 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); delete (yyvsp[0].s); } -#line 3293 "engines/director/lingo/lingo-gr.cpp" +#line 3298 "engines/director/lingo/lingo-gr.cpp" break; case 173: /* argdef: %empty */ #line 854 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; } -#line 3299 "engines/director/lingo/lingo-gr.cpp" +#line 3304 "engines/director/lingo/lingo-gr.cpp" break; case 174: /* argdef: argname */ #line 855 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; } -#line 3305 "engines/director/lingo/lingo-gr.cpp" +#line 3310 "engines/director/lingo/lingo-gr.cpp" break; case 175: /* argdef: argname ',' argdef */ #line 856 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[0].narg) + 1; } -#line 3311 "engines/director/lingo/lingo-gr.cpp" +#line 3316 "engines/director/lingo/lingo-gr.cpp" break; case 177: /* endargdef: ID */ #line 859 "engines/director/lingo/lingo-gr.y" { delete (yyvsp[0].s); } -#line 3317 "engines/director/lingo/lingo-gr.cpp" +#line 3322 "engines/director/lingo/lingo-gr.cpp" break; case 178: /* endargdef: endargdef ',' ID */ #line 860 "engines/director/lingo/lingo-gr.y" { delete (yyvsp[0].s); } -#line 3323 "engines/director/lingo/lingo-gr.cpp" +#line 3328 "engines/director/lingo/lingo-gr.cpp" break; case 179: /* argstore: %empty */ #line 862 "engines/director/lingo/lingo-gr.y" { inDef(); } -#line 3329 "engines/director/lingo/lingo-gr.cpp" +#line 3334 "engines/director/lingo/lingo-gr.cpp" break; case 180: /* arglist: %empty */ #line 864 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; } -#line 3335 "engines/director/lingo/lingo-gr.cpp" +#line 3340 "engines/director/lingo/lingo-gr.cpp" break; case 181: /* arglist: expr */ #line 865 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; } -#line 3341 "engines/director/lingo/lingo-gr.cpp" +#line 3346 "engines/director/lingo/lingo-gr.cpp" break; case 182: /* arglist: expr ',' arglist */ #line 866 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[0].narg) + 1; } -#line 3347 "engines/director/lingo/lingo-gr.cpp" +#line 3352 "engines/director/lingo/lingo-gr.cpp" break; case 183: /* nonemptyarglist: expr */ #line 868 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; } -#line 3353 "engines/director/lingo/lingo-gr.cpp" +#line 3358 "engines/director/lingo/lingo-gr.cpp" break; case 184: /* nonemptyarglist: expr ',' */ #line 869 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; } -#line 3359 "engines/director/lingo/lingo-gr.cpp" +#line 3364 "engines/director/lingo/lingo-gr.cpp" break; case 185: /* nonemptyarglist: expr ',' nonemptyarglist */ #line 870 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[0].narg) + 1; } -#line 3365 "engines/director/lingo/lingo-gr.cpp" +#line 3370 "engines/director/lingo/lingo-gr.cpp" break; case 186: /* list: '[' valuelist ']' */ #line 872 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[-1].code); } -#line 3371 "engines/director/lingo/lingo-gr.cpp" +#line 3376 "engines/director/lingo/lingo-gr.cpp" break; case 187: /* valuelist: %empty */ #line 874 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); } -#line 3377 "engines/director/lingo/lingo-gr.cpp" +#line 3382 "engines/director/lingo/lingo-gr.cpp" break; case 188: /* valuelist: ':' */ #line 875 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); } -#line 3383 "engines/director/lingo/lingo-gr.cpp" +#line 3388 "engines/director/lingo/lingo-gr.cpp" break; case 189: /* valuelist: proplist */ #line 876 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); } -#line 3389 "engines/director/lingo/lingo-gr.cpp" +#line 3394 "engines/director/lingo/lingo-gr.cpp" break; case 190: /* valuelist: linearlist */ #line 877 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); } -#line 3395 "engines/director/lingo/lingo-gr.cpp" +#line 3400 "engines/director/lingo/lingo-gr.cpp" break; case 191: /* linearlist: expr */ #line 879 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; } -#line 3401 "engines/director/lingo/lingo-gr.cpp" +#line 3406 "engines/director/lingo/lingo-gr.cpp" break; case 192: /* linearlist: linearlist ',' expr */ #line 880 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[-2].narg) + 1; } -#line 3407 "engines/director/lingo/lingo-gr.cpp" +#line 3412 "engines/director/lingo/lingo-gr.cpp" break; case 193: /* proplist: proppair */ #line 882 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; } -#line 3413 "engines/director/lingo/lingo-gr.cpp" +#line 3418 "engines/director/lingo/lingo-gr.cpp" break; case 194: /* proplist: proplist ',' proppair */ #line 883 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[-2].narg) + 1; } -#line 3419 "engines/director/lingo/lingo-gr.cpp" +#line 3424 "engines/director/lingo/lingo-gr.cpp" break; case 195: /* proppair: SYMBOL ':' expr */ @@ -3424,7 +3429,7 @@ yyreduce: g_lingo->code1(LC::c_symbolpush); g_lingo->codeString((yyvsp[-2].s)->c_str()); delete (yyvsp[-2].s); } -#line 3428 "engines/director/lingo/lingo-gr.cpp" +#line 3433 "engines/director/lingo/lingo-gr.cpp" break; case 196: /* proppair: STRING ':' expr */ @@ -3433,7 +3438,7 @@ yyreduce: g_lingo->code1(LC::c_stringpush); g_lingo->codeString((yyvsp[-2].s)->c_str()); delete (yyvsp[-2].s); } -#line 3437 "engines/director/lingo/lingo-gr.cpp" +#line 3442 "engines/director/lingo/lingo-gr.cpp" break; case 197: /* proppair: ID ':' expr */ @@ -3442,11 +3447,11 @@ yyreduce: g_lingo->code1(LC::c_stringpush); g_lingo->codeString((yyvsp[-2].s)->c_str()); delete (yyvsp[-2].s); } -#line 3446 "engines/director/lingo/lingo-gr.cpp" +#line 3451 "engines/director/lingo/lingo-gr.cpp" break; -#line 3450 "engines/director/lingo/lingo-gr.cpp" +#line 3455 "engines/director/lingo/lingo-gr.cpp" default: break; } diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h index b5d69d4d898..73b6a236b5b 100644 --- a/engines/director/lingo/lingo-gr.h +++ b/engines/director/lingo/lingo-gr.h @@ -65,81 +65,82 @@ extern int yydebug; PARRAY = 266, /* PARRAY */ CASTREF = 267, /* CASTREF */ FIELDREF = 268, /* FIELDREF */ - INT = 269, /* INT */ - ARGC = 270, /* ARGC */ - ARGCNORET = 271, /* ARGCNORET */ - THEENTITY = 272, /* THEENTITY */ - THEENTITYWITHID = 273, /* THEENTITYWITHID */ - THEMENUITEMENTITY = 274, /* THEMENUITEMENTITY */ - THEMENUITEMSENTITY = 275, /* THEMENUITEMSENTITY */ - FLOAT = 276, /* FLOAT */ - THEFUNC = 277, /* THEFUNC */ - THEFUNCINOF = 278, /* THEFUNCINOF */ - VARID = 279, /* VARID */ - STRING = 280, /* STRING */ - SYMBOL = 281, /* SYMBOL */ - ENDCLAUSE = 282, /* ENDCLAUSE */ - tPLAYACCEL = 283, /* tPLAYACCEL */ - tMETHOD = 284, /* tMETHOD */ - THEOBJECTPROP = 285, /* THEOBJECTPROP */ - tCAST = 286, /* tCAST */ - tFIELD = 287, /* tFIELD */ - tSCRIPT = 288, /* tSCRIPT */ - tWINDOW = 289, /* tWINDOW */ - tDOWN = 290, /* tDOWN */ - tELSE = 291, /* tELSE */ - tELSIF = 292, /* tELSIF */ - tEXIT = 293, /* tEXIT */ - tGLOBAL = 294, /* tGLOBAL */ - tGO = 295, /* tGO */ - tGOLOOP = 296, /* tGOLOOP */ - tIF = 297, /* tIF */ - tIN = 298, /* tIN */ - tINTO = 299, /* tINTO */ - tMACRO = 300, /* tMACRO */ - tMOVIE = 301, /* tMOVIE */ - tNEXT = 302, /* tNEXT */ - tOF = 303, /* tOF */ - tPREVIOUS = 304, /* tPREVIOUS */ - tPUT = 305, /* tPUT */ - tREPEAT = 306, /* tREPEAT */ - tSET = 307, /* tSET */ - tTHEN = 308, /* tTHEN */ - tTO = 309, /* tTO */ - tWHEN = 310, /* tWHEN */ - tWITH = 311, /* tWITH */ - tWHILE = 312, /* tWHILE */ - tFACTORY = 313, /* tFACTORY */ - tOPEN = 314, /* tOPEN */ - tPLAY = 315, /* tPLAY */ - tINSTANCE = 316, /* tINSTANCE */ - tGE = 317, /* tGE */ - tLE = 318, /* tLE */ - tEQ = 319, /* tEQ */ - tNEQ = 320, /* tNEQ */ - tAND = 321, /* tAND */ - tOR = 322, /* tOR */ - tNOT = 323, /* tNOT */ - tMOD = 324, /* tMOD */ - tAFTER = 325, /* tAFTER */ - tBEFORE = 326, /* tBEFORE */ - tCONCAT = 327, /* tCONCAT */ - tCONTAINS = 328, /* tCONTAINS */ - tSTARTS = 329, /* tSTARTS */ - tCHAR = 330, /* tCHAR */ - tITEM = 331, /* tITEM */ - tLINE = 332, /* tLINE */ - tWORD = 333, /* tWORD */ - tSPRITE = 334, /* tSPRITE */ - tINTERSECTS = 335, /* tINTERSECTS */ - tWITHIN = 336, /* tWITHIN */ - tTELL = 337, /* tTELL */ - tPROPERTY = 338, /* tPROPERTY */ - tON = 339, /* tON */ - tENDIF = 340, /* tENDIF */ - tENDREPEAT = 341, /* tENDREPEAT */ - tENDTELL = 342, /* tENDTELL */ - tASSERTERROR = 343 /* tASSERTERROR */ + CHUNKREF = 269, /* CHUNKREF */ + INT = 270, /* INT */ + ARGC = 271, /* ARGC */ + ARGCNORET = 272, /* ARGCNORET */ + THEENTITY = 273, /* THEENTITY */ + THEENTITYWITHID = 274, /* THEENTITYWITHID */ + THEMENUITEMENTITY = 275, /* THEMENUITEMENTITY */ + THEMENUITEMSENTITY = 276, /* THEMENUITEMSENTITY */ + FLOAT = 277, /* FLOAT */ + THEFUNC = 278, /* THEFUNC */ + THEFUNCINOF = 279, /* THEFUNCINOF */ + VARID = 280, /* VARID */ + STRING = 281, /* STRING */ + SYMBOL = 282, /* SYMBOL */ + ENDCLAUSE = 283, /* ENDCLAUSE */ + tPLAYACCEL = 284, /* tPLAYACCEL */ + tMETHOD = 285, /* tMETHOD */ + THEOBJECTPROP = 286, /* THEOBJECTPROP */ + tCAST = 287, /* tCAST */ + tFIELD = 288, /* tFIELD */ + tSCRIPT = 289, /* tSCRIPT */ + tWINDOW = 290, /* tWINDOW */ + tDOWN = 291, /* tDOWN */ + tELSE = 292, /* tELSE */ + tELSIF = 293, /* tELSIF */ + tEXIT = 294, /* tEXIT */ + tGLOBAL = 295, /* tGLOBAL */ + tGO = 296, /* tGO */ + tGOLOOP = 297, /* tGOLOOP */ + tIF = 298, /* tIF */ + tIN = 299, /* tIN */ + tINTO = 300, /* tINTO */ + tMACRO = 301, /* tMACRO */ + tMOVIE = 302, /* tMOVIE */ + tNEXT = 303, /* tNEXT */ + tOF = 304, /* tOF */ + tPREVIOUS = 305, /* tPREVIOUS */ + tPUT = 306, /* tPUT */ + tREPEAT = 307, /* tREPEAT */ + tSET = 308, /* tSET */ + tTHEN = 309, /* tTHEN */ + tTO = 310, /* tTO */ + tWHEN = 311, /* tWHEN */ + tWITH = 312, /* tWITH */ + tWHILE = 313, /* tWHILE */ + tFACTORY = 314, /* tFACTORY */ + tOPEN = 315, /* tOPEN */ + tPLAY = 316, /* tPLAY */ + tINSTANCE = 317, /* tINSTANCE */ + tGE = 318, /* tGE */ + tLE = 319, /* tLE */ + tEQ = 320, /* tEQ */ + tNEQ = 321, /* tNEQ */ + tAND = 322, /* tAND */ + tOR = 323, /* tOR */ + tNOT = 324, /* tNOT */ + tMOD = 325, /* tMOD */ + tAFTER = 326, /* tAFTER */ + tBEFORE = 327, /* tBEFORE */ + tCONCAT = 328, /* tCONCAT */ + tCONTAINS = 329, /* tCONTAINS */ + tSTARTS = 330, /* tSTARTS */ + tCHAR = 331, /* tCHAR */ + tITEM = 332, /* tITEM */ + tLINE = 333, /* tLINE */ + tWORD = 334, /* tWORD */ + tSPRITE = 335, /* tSPRITE */ + tINTERSECTS = 336, /* tINTERSECTS */ + tWITHIN = 337, /* tWITHIN */ + tTELL = 338, /* tTELL */ + tPROPERTY = 339, /* tPROPERTY */ + tON = 340, /* tON */ + tENDIF = 341, /* tENDIF */ + tENDREPEAT = 342, /* tENDREPEAT */ + tENDTELL = 343, /* tENDTELL */ + tASSERTERROR = 344 /* tASSERTERROR */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -163,7 +164,7 @@ union YYSTYPE Common::String *prop; } objectprop; -#line 167 "engines/director/lingo/lingo-gr.h" +#line 168 "engines/director/lingo/lingo-gr.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index c85ab28623b..c7cc35725a7 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -196,7 +196,7 @@ static void mVar(Common::String *s, VarType type) { // Datum types %token VOID VAR POINT RECT ARRAY OBJECT LEXERROR PARRAY -%token CASTREF FIELDREF +%token CASTREF FIELDREF CHUNKREF %token<i> INT ARGC ARGCNORET %token<e> THEENTITY THEENTITYWITHID THEMENUITEMENTITY THEMENUITEMSENTITY diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp index 28ff1ef2f41..10b39a66013 100644 --- a/engines/director/lingo/lingo.cpp +++ b/engines/director/lingo/lingo.cpp @@ -838,6 +838,9 @@ void Datum::reset() { delete u.obj; } break; + case CHUNKREF: + delete u.cref; + break; default: break; } @@ -848,7 +851,7 @@ void Datum::reset() { } Datum Datum::eval() { - if (type == VAR || type == FIELDREF) { + if (type == VAR || type == FIELDREF || type == CHUNKREF) { return g_lingo->varFetch(*this); } @@ -982,6 +985,12 @@ Common::String Datum::asString(bool printonly) const { s = Common::String::format("field: \"%s\"", ((TextCastMember *)member)->getText().c_str()); } break; + case CHUNKREF: + { + Common::String src = u.cref->source.asString(true); + s = Common::String::format("chunk: char %d to %d of %s", u.cref->start, u.cref->end, src.c_str()); + } + break; case POINT: s = "point:"; // fallthrough @@ -1076,6 +1085,8 @@ const char *Datum::type2str(bool isk) const { return isk ? "#object" : "OBJECT"; case FIELDREF: return "FIELDREF"; + case CHUNKREF: + return "CHUNKREF"; case VAR: return isk ? "#var" : "VAR"; default: @@ -1360,6 +1371,10 @@ Datum Lingo::varFetch(Datum &var, bool global, DatumHash *localvars, bool silent warning("varFetch: Unhandled cast type %d", member->_type); break; } + } else if (var.type == CHUNKREF) { + Common::String src = var.u.cref->source.eval().asString(); + result.type = STRING; + result.u.s = new Common::String(src.substr(var.u.cref->start, var.u.cref->end - var.u.cref->start)); } else { warning("varFetch: fetch from non-variable"); } diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 1b6f2894786..a0de86fe83a 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -37,6 +37,7 @@ class SeekableReadStreamEndian; namespace Director { +struct ChunkReference; struct TheEntity; struct TheEntityField; struct LingoArchive; @@ -116,7 +117,8 @@ struct Datum { /* interpreter stack type */ Common::String *s; /* STRING, VAR, OBJECT */ DatumArray *farr; /* ARRAY, POINT, RECT */ PropertyArray *parr; /* PARRAY */ - AbstractObject *obj; + AbstractObject *obj; /* OBJECT */ + ChunkReference *cref; /* CHUNKREF */ } u; int *refCount; @@ -146,6 +148,14 @@ struct Datum { /* interpreter stack type */ int compareTo(Datum &d, bool ignoreCase = false) const; }; +struct ChunkReference { + Datum source; + int start; + int end; + + ChunkReference(const Datum &src, uint s, uint e) : source(src), start(s), end(e) {} +}; + struct PCell { Datum p; Datum v; diff --git a/engines/director/types.h b/engines/director/types.h index fcdcbd598ad..6114b3e8b4e 100644 --- a/engines/director/types.h +++ b/engines/director/types.h @@ -307,6 +307,13 @@ enum SymbolType { HANDLER // user-defined handler }; +enum ChunkType { + kChunkChar, + kChunkWord, + kChunkItem, + kChunkLine +}; + struct Datum; struct PCell; typedef Common::Array<Datum> DatumArray;