1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
using Antlr4.Runtime.Misc;
namespace Antlr4.Runtime.Tree
{
public class TerminalNodeImpl : ITerminalNode
{
private IToken _symbol;
private IRuleNode _parent;
public TerminalNodeImpl(IToken symbol)
{
this._symbol = symbol;
}
public virtual IParseTree GetChild(int i)
{
return null;
}
ITree ITree.GetChild(int i)
{
return GetChild(i);
}
public virtual IToken Symbol
{
get
{
return _symbol;
}
}
public virtual IRuleNode Parent
{
get
{
return _parent;
}
set
{
_parent = value;
}
}
IParseTree IParseTree.Parent
{
get
{
return Parent;
}
}
ITree ITree.Parent
{
get
{
return Parent;
}
}
public virtual IToken Payload
{
get
{
return Symbol;
}
}
object ITree.Payload
{
get
{
return Payload;
}
}
public virtual Interval SourceInterval
{
get
{
if (Symbol != null)
{
int tokenIndex = Symbol.TokenIndex;
return new Interval(tokenIndex, tokenIndex);
}
return Interval.Invalid;
}
}
public virtual int ChildCount
{
get
{
return 0;
}
}
public virtual T Accept<T>(IParseTreeVisitor<T> visitor)
{
return visitor.VisitTerminal(this);
}
public virtual string GetText()
{
if (Symbol != null)
{
return Symbol.Text;
}
return null;
}
public virtual string ToStringTree(Parser parser)
{
return ToString();
}
public override string ToString()
{
if (Symbol != null)
{
if (Symbol.Type == TokenConstants.EOF)
{
return "<EOF>";
}
return Symbol.Text;
}
else
{
return "<null>";
}
}
public virtual string ToStringTree()
{
return ToString();
}
}
}