public void VisitPathExpression(PathExpression pathExpr) { // Side effect: After exiting this method, the symbol_table field will be set to // the type table corresponding to the most descendant type the path represents. if(pathExpr.Items.Count == 1){ pathExpr.AsIdentifier.AcceptWalker(this); }else{ while(symbol_table.Parent != null) symbol_table = symbol_table.Parent; foreach(var ident in pathExpr.Items){ ident.AcceptWalker(this); symbol_table = symbol_table.GetTypeTable(ident.Name); } } }