// This code fetches the symbol with a given name. SymbolTable { traversal allSymbolNames (SearchSymbolTableVisitor) { to Ident; } public Symbol findSymbol (String name) = allSymbolNames(SearchSymbolTableVisitor); } SearchSymbolTableVisitor { {{ Symbol currentSymbol; Symbol found; }} public Symbol get_return_val() {{ // Returns the (last) matching Symbol, or null if none found return found; }} init {{ found = null; }} before Symbol {{ currentSymbol = host; }} before Varname {{ String str = host.get_v().toString(); if (name.equals(str)) { found = currentSymbol; } }} }