Ejemplo n.º 1
0
        public static void ExecuteQueries(ZMI zmi, string query, long maxLevel = long.MaxValue, bool log = false)
        {
            if (!zmi.Sons.Any())
            {
                return;
            }

            if (maxLevel < 0)
            {
                return;
            }

            foreach (var son in zmi.Sons)
            {
                ExecuteQueries(son, query, maxLevel - 1, log);
            }

            QueryParser.ProgramContext programContext = null;

            try
            {
                programContext = Parse(query);
            }
            catch (Exception e)
            {
                Logger.LogException(e);
            }

            var result = programContext.VisitProgram(zmi);
            var zone   = zmi.PathName;

            foreach (var r in result)
            {
                if (log)
                {
                    Console.WriteLine(zone + ": " + r);
                }
                zmi.Attributes.AddOrChange(r.Name, r.Value);
            }
        }
Ejemplo n.º 2
0
 private static IEnumerable <QueryResult> VisitProgram(this QueryParser.ProgramContext context, ZMI zmi) =>
 VisitProgram(zmi, context);
Ejemplo n.º 3
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="QueryParser.program"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitProgram([NotNull] QueryParser.ProgramContext context)
 {
     return(VisitChildren(context));
 }