private void ReadXMLArg(string line) { if (ReaderHelper.GetNextBlackChar(line, 0) != '<') { return; } if (line.IndexOf("/>") == -1) // start arg { int argStartIndex = line.IndexOf('<') + 1; int argEndIndex = line.IndexOf(' ', argStartIndex); string argName = line.Substring(argStartIndex, argEndIndex - argStartIndex); List <XMLAttribute> atts = new List <XMLAttribute>(); int attEquals = 0; while (true) { attEquals = line.IndexOf('=', attEquals + 1); if (attEquals == -1) { break; } int attNameStart = line.LastIndexOf(' ', attEquals) + 1; string attName = line.Substring(attNameStart, attEquals - attNameStart); int attValueEnd = line.IndexOf('"', attEquals + 2); string attValue = line.Substring(attEquals + 2, attValueEnd - (attEquals + 2)); atts.Add(new XMLAttribute(attName, attValue)); } LIST_XMLArgs.Add(new XMLArg(argName, atts)); } else { int argStartIndex = line.IndexOf('<') + 1; int argEndIndex = line.IndexOf("/>", argStartIndex); string argName = line.Substring(argStartIndex, argEndIndex - argStartIndex); int argIndex = LIST_XMLArgs.FindLastIndex(a => a.Name == argName); LIST_XMLArgs.RemoveAt(argIndex); } }
private void ScriptReader() { P_LinePrev = ""; P_Line = ReaderHelper.GetLine(C_SourceStr, 0); P_LineNext = ReaderHelper.GetNextLine(C_SourceStr, 0, P_Line); while (true) { if (P_CharI == C_SourceStr.Length) { break; } if (P_CharI != 0) { P_CharPrev = C_SourceStr[P_CharI - 1]; } P_Char = C_SourceStr[P_CharI]; if (P_CharI + 1 != C_SourceStr.Length) { P_CharNext = C_SourceStr[P_CharI + 1]; } else { P_CharNext = 0; } P_CharNextBlack = ReaderHelper.GetNextBlackChar(C_SourceStr, P_CharI + 1); if (P_Char == '\n') { P_LinePrev = P_Line; P_LineI++; P_Line = ReaderHelper.GetLine(C_SourceStr, P_CharI + 1); P_LineNext = ReaderHelper.GetNextLine(C_SourceStr, P_CharI + 1, P_Line); } Program.DEBUG_Line = P_Line; Program.DEBUG_LineI = P_LineI; if (ARG_GoToEnd == 0) { ReadString(); } if (ARG_GoToEnd == 0) { ReadComments(); } if (ARG_GoToEnd == 0) { CheckXMLArgs(); } if (ARG_GoToEnd == 0) { ReadControlSymbols(); } if (ARG_GoToEnd == 0) { ReadPreCompileArgs(); } if (ARG_GoToEnd == 0) { ReadFunctionDefinitions(); } if (ARG_GoToEnd == 0) { ReplaceConstants(); } if (ARG_GoToEnd == 0) { ReadControlArgs(); } if (ARG_GoToEnd == 0) { ReadDoWhile(); } if (ARG_GoToEnd == 0) { ComprimeCode(); } if (ARG_IgnoreChar == 0) { C_FinalStr += ((char)P_Char).ToString(); charsInLine++; } if (ARG_IgnoreChar > 0) { ARG_IgnoreChar--; } if (ARG_GoToEnd > 0) { ARG_GoToEnd--; } P_CharI++; } ReplaceReplaces(); //LIST_Functions.ToString(); LIST_Constants.ToString(); LIST_Replaces.ToString(); LIST_Includes.ToString(); }