public ArrayList<Token> tokenizeLine(String line) {
        // Remove tokens from previous iteration
        tokens.clear();
        String aLine = line;
        int j = 0;
        
        // Remove any comments
        if ((j = aLine.indexOf(";")) != -1) {
            aLine = aLine.substring(0,j);
        }
        
        // Add spaces for split
        aLine = aLine.replaceAll("\\(", "( ").replaceAll("\\)", " )").replaceAll("'", "' ");
        
        String[] stringTokens = aLine.split("\\s+");
        if (stringTokens.length != 0) {
            ArrayList<String> parsedString = 
                    new ArrayList<String>(Arrays.asList(stringTokens));
            int length = parsedString.size();
            
            // Remove any empty strings that may have resulted from split
            for(int i = 0; i < length; i++) {
                if(parsedString.get(i).equals("")) {
                    parsedString.remove(i);
                    length--;
                }
            }
            
            String word = "";
            
            for(int i = 0; i < length; i++) {
                word = parsedString.get(i);
                if (isKeyword(word)) {
                    continue;
                } else if (isSpecialSymbol(word)) {
                    continue;
                } else if (isDelimiter(word)) {
                    continue;
                } else if (isNumber(word)) {
                    continue;
                } else {
                    tokens.add(new Token(word, "SYMBOL"));
                }
            }
        }
        
        this.printParsedLine(line.trim(), tokens.size());

        return tokens;
    }