1 /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2 * Use of this file is governed by the BSD 3-clause license that
3 * can be found in the LICENSE.txt file in the project root.
6 #include "misc/Interval.h"
8 #include "RuleContext.h"
9 #include "tree/ParseTreeVisitor.h"
11 #include "tree/TerminalNodeImpl.h"
13 using namespace antlr4;
14 using namespace antlr4::tree;
16 TerminalNodeImpl::TerminalNodeImpl(Token *symbol_) : symbol(symbol_) {
19 Token* TerminalNodeImpl::getSymbol() {
23 void TerminalNodeImpl::setParent(RuleContext *parent_) {
24 this->parent = parent_;
27 misc::Interval TerminalNodeImpl::getSourceInterval() {
28 if (symbol == nullptr) {
29 return misc::Interval::INVALID;
32 size_t tokenIndex = symbol->getTokenIndex();
33 return misc::Interval(tokenIndex, tokenIndex);
36 antlrcpp::Any TerminalNodeImpl::accept(ParseTreeVisitor *visitor) {
37 return visitor->visitTerminal(this);
40 std::string TerminalNodeImpl::getText() {
41 return symbol->getText();
44 std::string TerminalNodeImpl::toStringTree(Parser * /*parser*/, bool /*pretty*/) {
48 std::string TerminalNodeImpl::toString() {
49 if (symbol->getType() == Token::EOF) {
52 return symbol->getText();
55 std::string TerminalNodeImpl::toStringTree(bool /*pretty*/) {