public static Result VisitTerminalInContext <E, Result>(this AbstractParseTreeVisitor <Result> t, ParserRuleContext tokenParent, IToken node, Stack <E> s, E context) where E : System.Enum { s.Push(context); Result res = t.Visit(GetTerminalNode <Result>(t, tokenParent, node)); s.Pop(); return(res); }
public static Result VisitElementInContext <E, Result>(this AbstractParseTreeVisitor <Result> t, ParserRuleContext node, Stack <E> s, E context) where E : System.Enum { s.Push(context); Result res = t.Visit(node); s.Pop(); return(res); }
public void Extend(IParseTree tree, AbstractParseTreeVisitor <ASTNode> visitor, int index) { FileNode fileNode = (FileNode)visitor.Visit(tree); fileNode.Content = FilesContents[index]; RootNodes.Add(fileNode); ReferenceNodes.AddRange(((ICommonDaedalusParseTreeVisitor)visitor).ReferenceNodes); }
public static Result VisitElementsInContext <E, Result>(this AbstractParseTreeVisitor <Result> t, IEnumerable <IParseTree> nodeset, Stack <E> s, E context) where E : Enum { Result res = default(Result); s.Push(context); foreach (IParseTree node in nodeset) { res = t.Visit(node); } s.Pop(); return(res); }
private static ITerminalNode GetTerminalNode <Result>(this AbstractParseTreeVisitor <Result> t, ParserRuleContext node, IToken terminal) { for (int i = 0; i < node.ChildCount; i++) { ITerminalNode child = node.GetChild(i) as ITerminalNode; if (child != null) { if (child.Symbol == terminal) { return(child); } } } return(null); }