public static ReadTokens ( string input ) : List |
||
input | string | |
Результат | List |
private bool ReadTranslation(object context, TextReader reader, string line, ref int lineNumber) { if (line == "}") { return(false); } if (string.IsNullOrEmpty(line)) { return(true); } List <string> tokens = ProjectSerializer.ReadTokens(line); int translatepos = tokens.IndexOf("=>"); if (translatepos == -1) { Project.Warnings.Add(string.Format("Line {0}: Missing => in Translate directive.", lineNumber)); } else if (translatepos == 0) { Project.Warnings.Add(string.Format("Line {0}: Missing source tokens in Translate directive.", lineNumber)); } else { _stringmapping.Add(tokens.GetRange(0, translatepos).ToArray(), tokens.GetRange(translatepos + 1, tokens.Count - translatepos - 1).ToArray()); } return(true); }
public override void LoadCommand(Project project, System.IO.TextReader reader, string line, ref int lineNumber) { base.LoadCommand(project, reader, line, ref lineNumber); List <string> parts = ProjectSerializer.ReadTokens(line); if (parts[parts.Count - 1] != "{") { project.Warnings.Add(string.Format("Line {0}: The Random command requires a {{ at the end of the line.", lineNumber)); } else { parts.RemoveAt(0); parts.RemoveAt(parts.Count - 1); if (parts.Count == 0) { if (ProjectSerializer.ReadLines(new object[] { project, Commands }, reader, ProjectSerializer.ParseWeightedCommands, ref lineNumber)) { project.Warnings.Add(string.Format("Line {0}: The Random command is not closed correctly.", lineNumber)); } } else { project.Warnings.Add(string.Format("Line {0}: The Random command must have no arguments.", lineNumber)); } } }
public override void LoadCommand(Project project, System.IO.TextReader reader, string line, ref int lineNumber) { base.LoadCommand(project, reader, line, ref lineNumber); List <string> parts = ProjectSerializer.ReadTokens(line); if (parts.Count == 2) { if (!int.TryParse(parts[1], out _StartIndex)) { project.Warnings.Add(string.Format("Line {0}: Substring command requires an integer as its first argument.", m_lineNumber)); } } else if (parts.Count == 3) { if (!int.TryParse(parts[1], out _StartIndex)) { project.Warnings.Add(string.Format("Line {0}: Substring command requires an integer as its first argument.", m_lineNumber)); } if (!int.TryParse(parts[2], out _EndIndex)) { project.Warnings.Add(string.Format("Line {0}: Substring command requires an integer as its second argument.", m_lineNumber)); } } else { project.Warnings.Add(string.Format("Line {0}: Substring command requires one or two integer arguments.", m_lineNumber)); } }
public override void LoadCommand(Project project, System.IO.TextReader reader, string line, ref int lineNumber) { base.LoadCommand(project, reader, line, ref lineNumber); List <string> parts = ProjectSerializer.ReadTokens(line); if (parts.Count != 2) { project.Warnings.Add(string.Format("Line {0}: The PreLit command requires 1 argument.", lineNumber)); } else { _Literal = parts[1]; } }
public override void LoadCommand(Project project, System.IO.TextReader reader, string line, ref int lineNumber) { base.LoadCommand(project, reader, line, ref lineNumber); List <string> parts = ProjectSerializer.ReadTokens(line); if (parts.Count == 1) { _Amount = 1; } else if (parts.Count == 2) { if (!int.TryParse(parts[1], out _Amount)) { project.Warnings.Add(string.Format("Line {0}: Drop command requires a positive integer as its second argument.", m_lineNumber)); } } }
public override void LoadCommand(Project project, System.IO.TextReader reader, string line, ref int lineNumber) { base.LoadCommand(project, reader, line, ref lineNumber); List <string> parts = ProjectSerializer.ReadTokens(line); if (parts.Count == 2 && parts[1] == "{") { if (ProjectSerializer.ReadLines(project, reader, ReadTranslation, ref lineNumber)) { project.Warnings.Add(string.Format("Line {0}: The Translate command is not closed correctly.", lineNumber)); } } else { project.Warnings.Add(string.Format("Line {0}: The Translate command requires a {{} at the end of the line.", lineNumber)); } }
public override void LoadCommand(Project project, System.IO.TextReader reader, string line, ref int lineNumber) { base.LoadCommand(project, reader, line, ref lineNumber); List <string> parts = ProjectSerializer.ReadTokens(line); if (parts[parts.Count - 1] != "{") { project.Warnings.Add(string.Format("Line {0}: The Loop command requires a {{ at the end of the line.", lineNumber)); } else { parts.RemoveAt(0); parts.RemoveAt(parts.Count - 1); if (parts.Count > 0) { int reps; foreach (string rep in parts) { if (int.TryParse(rep, out reps)) { Repetitions.Add(reps); } else { project.Warnings.Add(string.Format("Line {0}: The loop command requires all arguments to be numeric. '{1}' is not.", lineNumber, rep)); } } if (ProjectSerializer.ReadLines(new object[] { project, Commands }, reader, ProjectSerializer.ParseCommands, ref lineNumber)) { project.Warnings.Add(string.Format("Line {0}: The loop command is not closed correctly.", lineNumber)); } } else { project.Warnings.Add(string.Format("Line {0}: The loop command must have one or more numeric arguments.", lineNumber)); } } }
public override void LoadCommand(Project project, System.IO.TextReader reader, string line, ref int lineNumber) { base.LoadCommand(project, reader, line, ref lineNumber); List <string> parts = ProjectSerializer.ReadTokens(line); if (parts.Count == 1) { _Index = -1; } else if (parts.Count == 2) { if (!int.TryParse(parts[1], out _Index)) { project.Warnings.Add(string.Format("Line {0}: The capitalize command requires the first argument to be an integer.", lineNumber)); } } else { project.Warnings.Add(string.Format("Line {0}: The capitalize command requires zero or one argument.", lineNumber)); } }
private string ExpandReplacement(string[] destination, Match m) { List <string> result = new List <string>(); foreach (string token in destination) { int tokenId; if (token.StartsWith("\\") && int.TryParse(token.Substring(1), out tokenId)) { result.Add(m.Groups[tokenId].Value); } else if (token.StartsWith("$")) { result.Add(Project.TokenSets.FindByName(token.Substring(1)).GetToken()); } else if (token.StartsWith("[")) { List <string> tokens = ProjectSerializer.ReadTokens(token.Substring(1, token.Length - 2)); TokenSet ts = Project.CreateTokenSet(); foreach (string t in tokens) { ts.Tokens.AddRange(ExpandTokenSet(t, true).Split('|')); } result.Add(ts.GetToken()); } else { result.Add(token); } } return("|" + string.Join("|", result.ToArray()) + "|"); }
private Regex MakeRegex(string[] sourceOrig) { string[] source; System.Text.StringBuilder sb = new System.Text.StringBuilder(); if (sourceOrig[0] == "#") { sb.Append("^"); source = new string[sourceOrig.Length - 2]; Array.Copy(sourceOrig, 1, source, 0, sourceOrig.Length - 1); } else { source = sourceOrig; } sb.Append("\\|"); // bool ingroup = false; foreach (string tokeniter in source) { bool bPickup = false; string token = tokeniter; if (token.StartsWith("(") && token.EndsWith(")")) { bPickup = true; token = token.Substring(1, token.Length - 2); sb.Append("("); } if (token.StartsWith("[")) { sb.Append("(?:"); foreach (string tk in ProjectSerializer.ReadTokens(token.Substring(1, token.Length - 2))) { sb.Append(ExpandTokenSet(tk, true)); sb.Append("|"); } sb.Remove(sb.Length - 1, 1); sb.Append(")"); } else if (token == "#") { //sb.Remove(sb.Length - 2, 2) sb.Append("$"); return(new Regex(sb.ToString())); } else { sb.Append(ExpandTokenSet(token, false)); } if (bPickup) { sb.Append(")"); } sb.Append("\\|"); } //If sb.Length > 2 Then // sb.Remove(sb.Length - 2, 2) //End If Debug.WriteLine(sb.ToString()); return(new Regex(sb.ToString())); }