public void Visit(DotNode node) { node.Root.Accept(this); node.Expression.Accept(this); node.Accept(_visitor); //var self = node; //var theMostInner = self; //while (!(self is null)) //{ // theMostInner = self; // self = self.Root as DotNode; //} //var ident = (IdentifierNode) theMostInner.Root; //if (node == theMostInner && Scope.ScopeSymbolTable.SymbolIsOfType<TableSymbol>(ident.Name)) //{ // if (theMostInner.Expression is DotNode dotNode) // { // var col = (IdentifierNode) dotNode.Root; // Visit(new AccessColumnNode(col.Name, ident.Name, TextSpan.Empty)); // } // else // { // var col = (IdentifierNode) theMostInner.Expression; // Visit(new AccessColumnNode(col.Name, ident.Name, TextSpan.Empty)); // } // return; //} //self = node; //while (!(self is null)) //{ // self.Root.Accept(this); // self.Expression.Accept(this); // self.Accept(_visitor); // self = self.Expression as DotNode; //} }
public void Visit(DotNode node) { var self = node; var theMostInner = self; while (!(self is null)) { theMostInner = self; self = self.Root as DotNode; } var ident = (IdentifierNode)theMostInner.Root; if (node == theMostInner && Scope.ScopeSymbolTable.SymbolIsOfType <TableSymbol>(ident.Name)) { if (theMostInner.Expression is DotNode dotNode) { var col = (IdentifierNode)dotNode.Root; Visit(new AccessColumnNode(col.Name, ident.Name, TextSpan.Empty)); } else { var col = (IdentifierNode)theMostInner.Expression; Visit(new AccessColumnNode(col.Name, ident.Name, TextSpan.Empty)); } return; } self = node; while (!(self is null)) { self.Root.Accept(this); self.Expression.Accept(this); self.Accept(_visitor); self = self.Expression as DotNode; } }
public virtual void Visit(DotNode node) { node.Root.Accept(this); node.Expression.Accept(this); node.Accept(Visitor); }
public void Visit(DotNode node) { //node.Root.Accept(this); //node.Expression.Accept(this); node.Accept(_visitor); }