public virtual string Walk(IParseTreeListener listener, IParseTree t) { counter++; if (t is IErrorNode) { listener.VisitErrorNode((IErrorNode)t); txt = txt + t.ToString(); return(txt); } else { if (t is ITerminalNode) { listener.VisitTerminal((ITerminalNode)t); return(txt); } } IRuleNode r = (IRuleNode)t; string parentname = r.GetText(); //Console.WriteLine("##### PARENT " + counter + "####" + parentname + "#####"); EnterRule(listener, r); int n = r.ChildCount; for (int i = 0; i < n; i++) { Walk(listener, r.GetChild(i)); Console.WriteLine("##### CHILD " + i + " of " + parentname + "####" + r.GetChild(i).GetText() + "#####"); } ExitRule(listener, r); return(txt); }
private Tuple <String, String> CleanRefs(RecycleParser.GameContext g1, RecycleParser.GameContext g2, IParseTree t1, IParseTree t2) { //TODO // check for vars and locs // if vars or locs don't exist in rest of context, then switch to something of same type that does exist // if that fails, create a definition based on usage in other game return(new Tuple <String, String>(t1.ToString(), t2.ToString())); }