public void run() {
        List<String> codeByLine = new ArrayList<String>();

        /*
            Read all lines of code from the file and merge them into one string.
         */
        Scanner scanner = new Scanner(inputStream);
        while(scanner.hasNext()) {
            String c = scanner.nextLine();
            codeByLine.add(c);
        }

        // Removes line comments.
        codeByLine = CommentRemover.removeLineComments(codeByLine);

        // String representing all the code in the file
        String completeCode = "";

        /*
            Convert all lines into one string representing the entire file..
         */
        for(String line : codeByLine) {
            completeCode += line;
        }

        completeCode = CommentRemover.removeBlockComments(completeCode);

        completeCode = removeBlocks(completeCode);

        // Create array for the lines of code.
        List<String> allCodeLines = new ArrayList<String>();

        // Add all lines of code, line endings defined by semicolons.
        allCodeLines.addAll(Arrays.asList(completeCode.split("\\;")));

        saveCode(allCodeLines, "lines.kawmpile");

        // Create new main function.
        mainFunction = new HFunction(allCodeLines, this);

        // Add function to stack.
        depthStack.push(mainFunction);

        // Run main function.
        depthStack.peek().run(new String[]{});
    }