private void buildTable() {
        tableContents = new HashMap<String, Map<String, Integer>>();
        
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(new File(fileName)));
        } catch (final FileNotFoundException e) {
            System.out.println("Could not locate " + fileName + ". Unable to continue. Please locate this file.");
        }
        String nextLine = "";
        try {
            nextLine = reader.readLine();
        } catch (final IOException e) {
            e.printStackTrace();
        }
        
        while (nextLine != null) {
            String nonterminal = "";
            String terminal = "";
            Integer ruleIndex = 0;
            
            final String[] lineParts = nextLine.split(NON_TERMINAL_DELIMITER);
            final String[] terminalParts = lineParts[1].split(TERMINAL_DELIMITER);
            nonterminal = lineParts[0];
            
            for (final String terminalIndexPair : terminalParts) {
                final String[] term = terminalIndexPair.split(RULE_DELIMITER);
                terminal = term[0];
                ruleIndex = Integer.parseInt(term[1]);
                try {
                    addToTable(nonterminal, terminal, ruleIndex);
                } catch (final Exception e) {
                    e.printStackTrace();
                }
            }
            
            try {
                nextLine = reader.readLine();
            } catch (final IOException e) {
                e.printStackTrace();
            }
        }
    }