Пример #1
0
void Identifier::addToLineNumberList(LineNumberList *listItem)
{
	    LineNumberList *tmp = getLineNumberList();
    
    if (tmp == NULL)
    {
        list = listItem;
    }
    else
    {
        while (tmp->getNextLineNumber() != NULL)
        {
            tmp = tmp->getNextLineNumber();
        }
        tmp->setNextLineNumber(listItem);
	}
}
Пример #2
0
Identifier::~Identifier()
{

    LineNumberList *root = getLineNumberList();
    LineNumberList *tmp = root;
    
    while (root != NULL)
    {
        tmp = tmp->getNextLineNumber();
        delete root;
        root = tmp;
    }
}
Пример #3
0
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;
    }
}
Пример #4
0
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);
    }
}
Пример #5
0
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());
	}
}