void Identifier::addToLineNumberList(LineNumberList *listItem) { LineNumberList *tmp = getLineNumberList(); if (tmp == NULL) { list = listItem; } else { while (tmp->getNextLineNumber() != NULL) { tmp = tmp->getNextLineNumber(); } tmp->setNextLineNumber(listItem); } }
Identifier::~Identifier() { LineNumberList *root = getLineNumberList(); LineNumberList *tmp = root; while (root != NULL) { tmp = tmp->getNextLineNumber(); delete root; root = tmp; } }
Identifier::~Identifier() { //What code do I need here to free memory LineNumberList *root = getLineNumberList(); LineNumberList *tmp = root; while (root != NULL) { tmp = tmp->getNextLineNumber(); delete root; root = tmp; } }
Token::~Token() { //What code do I need here to free memory LineNumberList *root = getLineNumberList(); LineNumberList *tmp = root; while (root != NULL) { tmp = tmp->getNextLineNumber(); delete root; root = tmp; } if (this->getType() == STRING_LIT) { free(this->literal.stringLiteral); } }
void Print::printTreeRecursive(Identifier *identifier) { char line[MAX_SOURCE_LINE_LENGTH + 32]; if (identifier->getLeftChild() != NULL) { printTreeRecursive(identifier->getLeftChild()); } sprintf(line, " %-16s %-s", identifier->getTokenString().c_str(), " "); printLine(line); LineNumberList *list = identifier->getLineNumberList(); while (list != NULL) { cout << list->getLineNumber() << "\t"; list = list->getNextLineNumber(); } cout << "\n"; if (identifier->getRightChild() != NULL) { printTreeRecursive(identifier->getRightChild()); } }