public StylesheetTask Process(StylesheetTask input) { QLSParser parser = SetupParser(input.StylesheetText); var visitor = new ParseTreeVisitor(); input.Ast = visitor.Visit(parser.stylesheet()); return(input); }
public ParsingTask Process(ParsingTask input) { if (string.IsNullOrEmpty(input.ParsingInput)) { input.Errors.Add("Input string is empty"); _canContinue = false; return(input); } QLParser parser = SetupParser(input.ParsingInput); var errorListener = new ErrorListener(); parser.AddErrorListener(errorListener); var visitor = new ParseTreeVisitor(new OperatorFactory(new ValueFactory())); input.Ast = visitor.Visit(parser.form()); errorListener.Errors.ForEach(x => input.Errors.Add(x)); _canContinue = !errorListener.Errors.Any(); return(input); }
/// <summary>Accepts a <paramref name="visitor"/> which can be used to generate output from the parse tree.</summary> /// <param name="visitor">The visitor used to traverse the parse tree.</param> /// <exception cref="System.NullReferenceException">Thrown when <paramref name="visitor"/> is <c>null</c>.</exception> public override void Accept(ParseTreeVisitor visitor) => visitor.Visit(this);
/// <summary>Accepts a <paramref name="visitor"/> which can be used to generate output from the parse tree.</summary> /// <param name="visitor">The visitor used to traverse the parse tree.</param> /// <exception cref="System.NullReferenceException">Thrown when <paramref name="visitor"/> is <c>null</c>.</exception> public abstract void Accept(ParseTreeVisitor visitor);
/// <summary>Accepts a <paramref name="visitor"/> which can be used to generate output from the parse tree.</summary> /// <typeparam name="TResult">The result type that the <paramref name="visitor"/> generates.</typeparam> /// <param name="visitor">The visitor used to traverse the parse tree.</param> /// <returns>Returns the result generated by the <paramref name="visitor"/>.</returns> /// <exception cref="System.NullReferenceException">Thrown when <paramref name="visitor"/> is <c>null</c>.</exception> public TResult Accept <TResult>(ParseTreeVisitor <TResult> visitor) { Accept((ParseTreeVisitor)visitor); return(visitor.GetResult()); }