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 System.Collections;
00040 using System.Text;
00041 using IToken = Antlr.Runtime.IToken;
00042
00049 public class ParseTree : BaseTree
00050 {
00051 public object payload;
00052 public IList hiddenTokens;
00053
00054 public ParseTree(object label)
00055 {
00056 this.payload = label;
00057 }
00058
00059 override public int Type
00060 {
00061 get { return 0; }
00062 }
00063
00064 override public string Text
00065 {
00066 get { return ToString(); }
00067 }
00068
00069 override public int TokenStartIndex
00070 {
00071 get { return 0; }
00072 set { ; }
00073 }
00074
00075 override public int TokenStopIndex
00076 {
00077 get { return 0; }
00078 set { ; }
00079 }
00080
00081 public override ITree DupNode()
00082 {
00083 return null;
00084 }
00085
00086 public override string ToString()
00087 {
00088 if ( payload is IToken )
00089 {
00090 IToken t = (IToken)payload;
00091 if ( t.Type == Token.EOF )
00092 {
00093 return "<EOF>";
00094 }
00095 return t.Text;
00096 }
00097 return payload.ToString();
00098 }
00099
00103 public string ToStringWithHiddenTokens() {
00104 StringBuilder buf = new StringBuilder();
00105 if ( hiddenTokens!=null ) {
00106 for (int i = 0; i < hiddenTokens.Count; i++) {
00107 IToken hidden = (IToken) hiddenTokens[i];
00108 buf.Append(hidden.Text);
00109 }
00110 }
00111 String nodeText = this.ToString();
00112 if ( nodeText != "<EOF>" ) buf.Append(nodeText);
00113 return buf.ToString();
00114 }
00115
00119 public string ToInputString() {
00120 StringBuilder buf = new StringBuilder();
00121 _ToStringLeaves(buf);
00122 return buf.ToString();
00123 }
00124
00125 public void _ToStringLeaves(StringBuilder buf) {
00126 if ( payload is IToken ) {
00127 buf.Append(this.ToStringWithHiddenTokens());
00128 return;
00129 }
00130 for (int i = 0; children!=null && i < children.Count; i++) {
00131 ParseTree t = (ParseTree)children[i];
00132 t._ToStringLeaves(buf);
00133 }
00134 }
00135 }
00136 }