public void Set(string name, TOKENTYPE type, int num = 0, string str = "") { if (!m_tokenMap.ContainsKey(name)) { m_tokenMap[name] = new TokenInfo(); } m_tokenMap[name].Set(type, num, str); }
/// <summary> /// For things like setting the colour or italics. /// </summary> /// <param name="beg"> Starting line </param> /// <param name="end"> Ending line </param> token(string tokenstr, int beg, int end, int time, int number, TOKENTYPE tok, Vector2Int position, Color colour) { b_line = beg; capturedat = tokenstr; this.colour = colour; dialogue_num = end; this.time = time; this.number = number; tokentype = tok; this.position = position; }
/* * assignment of variable, for example "a = 3.4/2" */ private JongFunction parse_variable_ass() //throws JongError { if (token_type == TOKENTYPE.VARIABLE) { // copy current token (we may have to revert to it) char t_now = t; int t_pos_now = t_pos; TOKENTYPE token_type_now = token_type; String token_now = token; getToken(); if (token.Equals("=")) { // assignment of a variable String var_name = token_now; //.ToUpper(); // check if variable name is legal if (!isLegalVariableName(var_name)) { throw new JongError(303, var_name); } getToken(); return(new JongVariableAssign(variablelist, var_name, parse_conditions())); } // No variable defined. go back to previous token t = t_now; t_pos = t_pos_now; token_type = token_type_now; token = token_now; } return(parse_function_ass()); }
public void Set(TOKENTYPE t, int n, string s) { type = t; num = n; str = s; }
private void GetCHK(BinaryWriter bw, CHKToken cHKToken, TOKENTYPE tOKENTYPE) { byte[] tokenbyte; if (tOKENTYPE == TOKENTYPE.NULL) { tokenbyte = System.Text.Encoding.ASCII.GetBytes(cHKToken.code.PadRight(4, ' ')); } else { tokenbyte = System.Text.Encoding.ASCII.GetBytes(tOKENTYPE.ToString().PadRight(4, ' ')); } //에디터로부터 CHK데이터를 가져오는 함수 switch (tOKENTYPE) { case TOKENTYPE.NULL: bw.Write(cHKToken.bytes); break; case TOKENTYPE.ENCD: bw.Write(tokenbyte); bw.Write((int)4); bw.Write(ENCODING.CodePage); break; case TOKENTYPE.VER: bw.Write(tokenbyte); bw.Write((int)2); bw.Write(VER); break; case TOKENTYPE.TYPE: bw.Write(tokenbyte); bw.Write((int)4); bw.Write(TYPE); break; case TOKENTYPE.IVE2: bw.Write(tokenbyte); bw.Write((int)2); bw.Write(IVE2); break; case TOKENTYPE.VCOD: bw.Write(tokenbyte); bw.Write(VCOD.Length); bw.Write(VCOD); break; case TOKENTYPE.IOWN: bw.Write(tokenbyte); bw.Write(IOWN.Length); bw.Write(IOWN); break; case TOKENTYPE.OWNR: //TODO:스타트로케이션 확인 후 IOWN수정해야됨. OWNR = (byte[])IOWN.Clone(); bool[] pexist = new bool[8]; for (int i = 0; i < UNIT.Count; i++) { if (UNIT[i].unitID == 214) { pexist[UNIT[i].player] = true; } } for (int i = 0; i < 8; i++) { if (!pexist[i]) { OWNR[i] = 0; } } bw.Write(tokenbyte); bw.Write(OWNR.Length); bw.Write(OWNR); break; case TOKENTYPE.SIDE: bw.Write(tokenbyte); bw.Write(SIDE.Length); bw.Write(SIDE); break; case TOKENTYPE.COLR: bw.Write(tokenbyte); bw.Write(COLR.Length); bw.Write(COLR); break; case TOKENTYPE.CRGB: bw.Write(tokenbyte); bw.Write(32); for (int i = 0; i < 8; i++) { bw.Write(CRGB[i].R); bw.Write(CRGB[i].G); bw.Write(CRGB[i].B); } bw.Write(CRGBIND); break; case TOKENTYPE.UNIT: bw.Write(tokenbyte); bw.Write(UNIT.Count * 36); for (int i = 0; i < UNIT.Count; i++) { bw.Write(UNIT[i].unitclass); bw.Write(UNIT[i].X); bw.Write(UNIT[i].Y); bw.Write(UNIT[i].unitID); bw.Write(UNIT[i].linkFlag); bw.Write(UNIT[i].validstatusFlag); bw.Write(UNIT[i].validunitFlag); bw.Write(UNIT[i].player); bw.Write(UNIT[i].hitPoints); bw.Write(UNIT[i].shieldPoints); bw.Write(UNIT[i].energyPoints); bw.Write(UNIT[i].resoruceAmount); bw.Write(UNIT[i].hangar); bw.Write(UNIT[i].stateFlag); bw.Write(UNIT[i].unused); bw.Write(UNIT[i].linkedUnit); } break; case TOKENTYPE.ERA: bw.Write(tokenbyte); bw.Write((int)2); bw.Write((ushort)TILETYPE); break; case TOKENTYPE.DIM: bw.Write(tokenbyte); bw.Write((int)4); bw.Write((ushort)WIDTH); bw.Write((ushort)HEIGHT); break; case TOKENTYPE.TILE: bw.Write(tokenbyte); bw.Write((int)WIDTH * HEIGHT * 2); for (int i = 0; i < WIDTH * HEIGHT; i++) { bw.Write(TILE[i]); } break; case TOKENTYPE.MTXM: bw.Write(tokenbyte); bw.Write((int)WIDTH * HEIGHT * 2); for (int i = 0; i < WIDTH * HEIGHT; i++) { bw.Write(MTXM[i]); } break; case TOKENTYPE.DD2: bw.Write(tokenbyte); bw.Write((int)DD2.Count * 8); for (int i = 0; i < DD2.Count; i++) { bw.Write(DD2[i].ID); bw.Write(DD2[i].X); bw.Write(DD2[i].Y); bw.Write(DD2[i].PLAYER); bw.Write(DD2[i].FLAG); } break; case TOKENTYPE.THG2: bw.Write(tokenbyte); DDDTHG2.AddRange(THG2); bw.Write((int)DDDTHG2.Count * 10); for (int i = 0; i < DDDTHG2.Count; i++) { bw.Write(DDDTHG2[i].ID); bw.Write(DDDTHG2[i].X); bw.Write(DDDTHG2[i].Y); bw.Write(DDDTHG2[i].PLAYER); bw.Write(DDDTHG2[i].UNUSED); bw.Write(DDDTHG2[i].FLAG); } break; case TOKENTYPE.MASK: bw.Write(tokenbyte); bw.Write((int)MASK.Length); bw.Write(MASK); break; case TOKENTYPE.STRx: bw.Write(tokenbyte); { int strptrlen = stringDatas.Count * 4 + 4; MemoryStream memory = new MemoryStream(); BinaryWriter tbw = new BinaryWriter(memory); uint[] strptr = new uint[stringDatas.Count]; for (int i = 0; i < stringDatas.Count; i++) { byte[] bytes = ENCODING.GetBytes(stringDatas[i].CodeString); strptr[i] = (uint)((uint)tbw.BaseStream.Position + strptrlen); tbw.Write(bytes); tbw.Write((byte)0); } bw.Write((uint)(tbw.BaseStream.Length + strptrlen)); bw.Write((uint)stringDatas.Count); for (int i = 0; i < stringDatas.Count; i++) { bw.Write(strptr[i]); } bw.Write(memory.ToArray()); tbw.Close(); memory.Close(); } //long strptrstart = bw.BaseStream.Position; //bw.Write((uint)0); //long ptrpos = bw.BaseStream.Position; //for (int i = 0; i < stringDatas.Count; i++) //{ // bw.Write((uint)0); //} //long endpos = bw.BaseStream.Position; //bw.BaseStream.Position = strptrstart; //bw.Write((uint)endpos - strptrstart); //for (int i = 0; i < stringDatas.Count; i++) //{ // bw.Write(strptr[i]); //} //bw.BaseStream.Position = endpos; break; case TOKENTYPE.SPRP: bw.Write(tokenbyte); bw.Write((int)4); bw.Write((ushort)SCEARIONAME.ResultIndex); bw.Write((ushort)SCEARIODES.ResultIndex); break; case TOKENTYPE.FORC: bw.Write(tokenbyte); bw.Write((int)20); bw.Write(FORCE); bw.Write((ushort)FORCENAME[0].ResultIndex); bw.Write((ushort)FORCENAME[1].ResultIndex); bw.Write((ushort)FORCENAME[2].ResultIndex); bw.Write((ushort)FORCENAME[3].ResultIndex); bw.Write(FORCEFLAG); break; case TOKENTYPE.MRGN: bw.Write(tokenbyte); bw.Write((int)5100); for (int i = 0; i < 255; i++) { LocationData locationData = LocationDatas.SingleOrDefault(x => x.INDEX == (i + 1)); if (locationData == null) { bw.Write(new byte[20]); } else { bw.Write(locationData.L); bw.Write(locationData.T); bw.Write(locationData.R); bw.Write(locationData.B); bw.Write((ushort)locationData.STRING.ResultIndex); bw.Write(locationData.FLAG); } } break; case TOKENTYPE.UPRP: bw.Write(tokenbyte); bw.Write((int)UPRP.Length * 20); for (int i = 0; i < UPRP.Length; i++) { bw.Write(UPRP[i].STATUSVALID); bw.Write(UPRP[i].POINTVALID); bw.Write(UPRP[i].PLAYER); bw.Write(UPRP[i].HITPOINT); bw.Write(UPRP[i].SHIELDPOINT); bw.Write(UPRP[i].ENERGYPOINT); bw.Write(UPRP[i].RESOURCE); bw.Write(UPRP[i].HANGAR); bw.Write(UPRP[i].STATUSFLAG); bw.Write(UPRP[i].UNUSED); } break; case TOKENTYPE.UPUS: bw.Write(tokenbyte); bw.Write((int)UPUS.Length); bw.Write(UPUS); break; case TOKENTYPE.WAV: bw.Write(tokenbyte); bw.Write((int)WAV.Length * 4); for (int i = 0; i < WAV.Length; i++) { bw.Write(WAV[i].ResultIndex); } break; case TOKENTYPE.SWNM: bw.Write(tokenbyte); bw.Write((int)SWNM.Length * 4); for (int i = 0; i < SWNM.Length; i++) { bw.Write(SWNM[i].ResultIndex); } break; case TOKENTYPE.PUNI: bw.Write(tokenbyte); bw.Write((int)5700); for (int i = 0; i < 12; i++) { bw.Write(PUNI.UNITENABLED[i]); } bw.Write(PUNI.DEFAULT); for (int i = 0; i < 12; i++) { bw.Write(PUNI.USEDEFAULT[i]); } break; case TOKENTYPE.PUPx: bw.Write(tokenbyte); bw.Write((int)2318); for (int i = 0; i < 12; i++) { bw.Write(PUPx.MAXLEVEL[i]); } for (int i = 0; i < 12; i++) { bw.Write(PUPx.STARTLEVEL[i]); } bw.Write(PUPx.DEFAULTMAXLEVEL); bw.Write(PUPx.DEFAULTSTARTLEVEL); for (int i = 0; i < 12; i++) { bw.Write(PUPx.USEDEFAULT[i]); } break; case TOKENTYPE.PTEx: bw.Write(tokenbyte); bw.Write((int)1672); for (int i = 0; i < 12; i++) { bw.Write(PTEx.MAXLEVEL[i]); } for (int i = 0; i < 12; i++) { bw.Write(PTEx.STARTLEVEL[i]); } bw.Write(PTEx.DEFAULTMAXLEVEL); bw.Write(PTEx.DEFAULTSTARTLEVEL); for (int i = 0; i < 12; i++) { bw.Write(PTEx.USEDEFAULT[i]); } break; case TOKENTYPE.UNIx: bw.Write(tokenbyte); bw.Write((int)4168); for (int i = 0; i < 228; i++) { bw.Write(UNIx.USEDEFAULT[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.HIT[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.SHIELD[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.ARMOR[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.BUILDTIME[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.MIN[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.GAS[i]); } for (int i = 0; i < 228; i++) { bw.Write((ushort)UNIx.STRING[i].ResultIndex); } for (int i = 0; i < 130; i++) { bw.Write(UNIx.DMG[i]); } for (int i = 0; i < 130; i++) { bw.Write(UNIx.BONUSDMG[i]); } break; case TOKENTYPE.UPGx: bw.Write(tokenbyte); bw.Write((int)794); for (int i = 0; i < 61; i++) { bw.Write(UPGx.USEDEFAULT[i]); } bw.Write((byte)0); for (int i = 0; i < 61; i++) { bw.Write(UPGx.BASEMIN[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BONUSMIN[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BASEGAS[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BONUSGAS[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BASETIME[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BONUSTIME[i]); } break; case TOKENTYPE.TECx: bw.Write(tokenbyte); bw.Write((int)396); for (int i = 0; i < 44; i++) { bw.Write(TECx.USEDEFAULT[i]); } for (int i = 0; i < 44; i++) { bw.Write(TECx.MIN[i]); } for (int i = 0; i < 44; i++) { bw.Write(TECx.GAS[i]); } for (int i = 0; i < 44; i++) { bw.Write(TECx.BASETIME[i]); } for (int i = 0; i < 44; i++) { bw.Write(TECx.ENERGY[i]); } break; case TOKENTYPE.TRIG: bw.Write(tokenbyte); bw.Write((int)2400 * TRIG.Count); for (int i = 0; i < TRIG.Count; i++) { for (int c = 0; c < 16; c++) { bw.Write(TRIG[i].conditions[c].locid); bw.Write(TRIG[i].conditions[c].player); bw.Write(TRIG[i].conditions[c].amount); bw.Write(TRIG[i].conditions[c].unitid); bw.Write(TRIG[i].conditions[c].comparison); bw.Write(TRIG[i].conditions[c].condtype); bw.Write(TRIG[i].conditions[c].restype); bw.Write(TRIG[i].conditions[c].flags); bw.Write(TRIG[i].conditions[c].maskflag); } for (int a = 0; a < 64; a++) { bw.Write(TRIG[i].actions[a].locid1); bw.Write(TRIG[i].actions[a].strid); bw.Write(TRIG[i].actions[a].wavid); bw.Write(TRIG[i].actions[a].time); bw.Write(TRIG[i].actions[a].player1); bw.Write(TRIG[i].actions[a].player2); bw.Write(TRIG[i].actions[a].unitid); bw.Write(TRIG[i].actions[a].acttype); bw.Write(TRIG[i].actions[a].amount); bw.Write(TRIG[i].actions[a].flags); bw.Write(TRIG[i].actions[a].padding); bw.Write(TRIG[i].actions[a].maskflag); } bw.Write(TRIG[i].exeflag); bw.Write(TRIG[i].playerlist); bw.Write(TRIG[i].trigindex); } break; case TOKENTYPE.MBRF: bw.Write(tokenbyte); bw.Write((int)2400 * MBRF.Count); for (int i = 0; i < MBRF.Count; i++) { for (int c = 0; c < 16; c++) { bw.Write(MBRF[i].conditions[c].locid); bw.Write(MBRF[i].conditions[c].player); bw.Write(MBRF[i].conditions[c].amount); bw.Write(MBRF[i].conditions[c].unitid); bw.Write(MBRF[i].conditions[c].comparison); bw.Write(MBRF[i].conditions[c].condtype); bw.Write(MBRF[i].conditions[c].restype); bw.Write(MBRF[i].conditions[c].flags); bw.Write(MBRF[i].conditions[c].maskflag); } for (int a = 0; a < 64; a++) { bw.Write(MBRF[i].actions[a].locid1); bw.Write(MBRF[i].actions[a].strid); bw.Write(MBRF[i].actions[a].wavid); bw.Write(MBRF[i].actions[a].time); bw.Write(MBRF[i].actions[a].player1); bw.Write(MBRF[i].actions[a].player2); bw.Write(MBRF[i].actions[a].unitid); bw.Write(MBRF[i].actions[a].acttype); bw.Write(MBRF[i].actions[a].amount); bw.Write(MBRF[i].actions[a].flags); bw.Write(MBRF[i].actions[a].padding); bw.Write(MBRF[i].actions[a].maskflag); } bw.Write(MBRF[i].exeflag); bw.Write(MBRF[i].playerlist); bw.Write(MBRF[i].trigindex); } break; } }
/* * assignment of variable, for example "a = 3.4/2" */ private JongFunction parse_function_ass() //throws JongError { if (token_type == TOKENTYPE.FUNCTION) { // check for a function assignment like "f(a,b)=a*b" // copy current token (we may have to revert to it) char t_now = t; int t_pos_now = t_pos; TOKENTYPE token_type_now = token_type; String token_now = token; String name = token; //.ToUpper(); getToken(); if (token.Equals("(")) { // possible assignment of a function. // Verify this by checking if it has the form "f(a,b,c,...)=" bool hasCorrectParams = true; localvariablelist = new List <JongLocalVariable>(); while (true) { getToken(); if (token_type != TOKENTYPE.VARIABLE) { // wrong, we would have expected a variable name. // So this is no function assignment. hasCorrectParams = false; break; } // add this variable to the local variable list String var_name = token; //.ToUpper(); localvariablelist.Add(new JongLocalVariable(var_name)); getToken(); if (token.Equals(")")) { // closing parenthesis found hasCorrectParams = true; break; } if (!token.Equals(",")) { // wrong, we would have expected a comma. // So this is no function assignment. hasCorrectParams = false; break; } } if (hasCorrectParams) { getToken(); if (token.Equals("=")) { // we have a function assignment like "f(a,b)=a*b" // assign a new function // note: the localvariablelinks will be copied and owned by // the assigned function. We do not need to delete the links getToken(); JongFunctionAssign function = new JongFunctionAssign(functionlist, name, localvariablelist, parse_conditions()); return(function); } } // Function not assigned. Clear the created local variables localvariablelist.Clear(); // revert to previous token t = t_now; t_pos = t_pos_now; token_type = token_type_now; token = token_now; } } return(parse_conditions()); }
// normal constructor with tokentype, lexeme and line number public Token(Token.TOKENTYPE tok, string inName, int inLine) { m_tokType = tok; m_strName = inName; m_iLineNum = inLine; }
// lexing error, gives lexeme and line number public Token(string inName, int inLine) { m_tokType = Token.TOKENTYPE.ERROR; m_strName = inName; m_iLineNum = inLine; }
public TOKENTYPE m_tokType; /* what token (i.e. class of lexemes) */ #endregion Fields #region Constructors // default constructor, not used public Token() { m_tokType = Token.TOKENTYPE.ERROR; m_strName = "blank token"; m_iLineNum = 0; }