ReadTokens() публичный статический Метод

public static ReadTokens ( string input ) : List
input string
Результат List
Пример #1
0
        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);
        }
Пример #2
0
    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));
            }
        }
    }
Пример #3
0
    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));
        }
    }
Пример #4
0
    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];
        }
    }
Пример #5
0
    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));
            }
        }
    }
Пример #6
0
        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));
            }
        }
Пример #7
0
        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));
                }
            }
        }
Пример #8
0
    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));
        }
    }
Пример #9
0
        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()) + "|");
        }
Пример #10
0
        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()));
        }