001package gudusoft.gsqlparser.nodes.powerquery; 002 003import gudusoft.gsqlparser.nodes.TParseTreeNode; 004import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 005 006/** 007 * A single M-language step binding: {@code name = expression}. 008 * 009 * <p>The expression is stored as an AST node reference plus the raw token 010 * range so unknown constructs survive round-trip without semantic loss. 011 */ 012public class TPowerQueryStep extends TParseTreeNode { 013 014 private String name; 015 private TParseTreeNode expression; 016 017 /** 018 * Raw M text of the expression. Useful for diagnostics and for steps 019 * that the parser classified as {@code opaque} (unrecognized constructs). 020 */ 021 private String rawExpressionText; 022 023 public String getName() { 024 return name; 025 } 026 027 public void setName(String name) { 028 this.name = name; 029 } 030 031 public TParseTreeNode getExpression() { 032 return expression; 033 } 034 035 public void setExpression(TParseTreeNode expression) { 036 this.expression = expression; 037 } 038 039 public String getRawExpressionText() { 040 return rawExpressionText; 041 } 042 043 public void setRawExpressionText(String rawExpressionText) { 044 this.rawExpressionText = rawExpressionText; 045 } 046 047 @Override 048 public void accept(TParseTreeVisitor v) { 049 v.preVisit(this); 050 v.postVisit(this); 051 } 052 053 @Override 054 public void acceptChildren(TParseTreeVisitor v) { 055 v.preVisit(this); 056 if (expression != null) expression.acceptChildren(v); 057 v.postVisit(this); 058 } 059}