示例#1
0
        public void Visit <T>(int cut, Antlr4.Runtime.Tree.IParseTreeVisitor <T> visitor)
        {
            var script = this.Script();

            script.File = this.File.FullName.Substring(cut).Trim(' ', '\\');

            //if (script.InError)
            //{

            //}
            //else
            //{

            if (script.Content.Length > 0)
            {
                script.Visit <T>(visitor);
            }

            else
            {
            }

            //}
        }
        /// <summary>
        /// Parse all scripts if the filter return true
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="filter"> function return true or false when the script must to be parsed.</param>
        /// <param name="scripts">List of scripts</param>
        /// <param name="visitor">visitor that must parse the script's list</param>
        /// <returns>return count of parsed scripts</returns>
        protected int Process <T>(Func <ScriptFileInfo, bool> filter, List <ScriptFileInfo> scripts, Antlr4.Runtime.Tree.IParseTreeVisitor <T> visitor)
        {
            int count = 0;
            int cut   = this._Current_context._cut;

            List <ScriptFileInfo> _scripts = new List <ScriptFileInfo>();

            foreach (ScriptFileInfo script in scripts)
            {
                if (filter(script))
                {
                    count++;
                    try
                    {
                        script.Visit <T>(cut, visitor);
                        _scripts.Add(script);
                    }
                    catch (Exception e)
                    {
                        if (System.Diagnostics.Debugger.IsAttached)
                        {
                            System.Diagnostics.Debugger.Break();
                        }
                        throw e;
                    }
                }
            }

            return(count);
        }
 /// <summary>
 /// Evaluate all script file in the visitor
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="visitor"></param>
 public abstract void Visit <T>(Antlr4.Runtime.Tree.IParseTreeVisitor <T> visitor);