00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 namespace Antlr.Runtime.Tree
00037 {
00038 using System;
00039 using IToken = Antlr.Runtime.IToken;
00040
00048 public class CommonTree : BaseTree
00049 {
00050 public CommonTree()
00051 {
00052 }
00053
00054 public CommonTree(CommonTree node)
00055 : base(node)
00056 {
00057 this.token = node.token;
00058 this.startIndex = node.startIndex;
00059 this.stopIndex = node.stopIndex;
00060 }
00061
00062 public CommonTree(IToken t)
00063 {
00064 this.token = t;
00065 }
00066
00067 virtual public IToken Token
00068 {
00069 get { return token; }
00070 }
00071
00072 override public bool IsNil
00073 {
00074 get { return token == null; }
00075 }
00076
00077 override public int Type
00078 {
00079 get
00080 {
00081 if (token == null)
00082 {
00083 return Runtime.Token.INVALID_TOKEN_TYPE;
00084 }
00085 return token.Type;
00086 }
00087 }
00088
00089 override public string Text
00090 {
00091 get
00092 {
00093 if (token == null)
00094 {
00095 return null;
00096 }
00097 return token.Text;
00098 }
00099 }
00100
00101 override public int Line
00102 {
00103 get
00104 {
00105 if (token == null || token.Line == 0)
00106 {
00107 if (ChildCount > 0)
00108 {
00109 return GetChild(0).Line;
00110 }
00111 return 0;
00112 }
00113 return token.Line;
00114 }
00115 }
00116
00117 override public int CharPositionInLine
00118 {
00119 get
00120 {
00121 if (token == null || token.CharPositionInLine == - 1)
00122 {
00123 if (ChildCount > 0)
00124 {
00125 return GetChild(0).CharPositionInLine;
00126 }
00127 return 0;
00128 }
00129 return token.CharPositionInLine;
00130 }
00131 }
00132
00133 override public int TokenStartIndex
00134 {
00135 get
00136 {
00137 if ( (startIndex == -1) && (token != null) )
00138 {
00139 return token.TokenIndex;
00140 }
00141 return startIndex;
00142 }
00143
00144 set { startIndex = value; }
00145 }
00146
00147 override public int TokenStopIndex
00148 {
00149 get
00150 {
00151 if ( (stopIndex == -1) && (token != null) )
00152 {
00153 return token.TokenIndex;
00154 }
00155 return stopIndex;
00156 }
00157
00158 set { stopIndex = value; }
00159 }
00160
00161 override public int ChildIndex
00162 {
00163 get { return childIndex; }
00164 set { childIndex = value; }
00165 }
00166
00167 override public ITree Parent
00168 {
00169 get { return parent; }
00170 set { parent = (CommonTree)value; }
00171 }
00172
00177 public int startIndex = -1, stopIndex = -1;
00178
00180 protected IToken token;
00181
00183 public CommonTree parent;
00184
00186 public int childIndex = -1;
00187
00188 public override ITree DupNode()
00189 {
00190 return new CommonTree(this);
00191 }
00192
00193 public override string ToString()
00194 {
00195 if (IsNil)
00196 {
00197 return "nil";
00198 }
00199 if ( Type == Runtime.Token.INVALID_TOKEN_TYPE ) {
00200 return "<errornode>";
00201 }
00202 if (token == null) {
00203 return null;
00204 }
00205 return token.Text;
00206 }
00207 }
00208 }