public SingleDFAEngineBuilder(GrammarSource grammar,LALR1DFA dfa,GLRParseTable builtParseTable,CompilerLogger logger)
	{
		this.grammar = grammar;
		this.builtParseTable = builtParseTable;
		this.logger = logger;
		this.regexes = new Hashtable<Symbol,RegexInfo>();
		
		for(int i = 0;i < PARSER_STATE_COUNT;i++)
		{
			shiftableSets[i] = SingleDFAEngine.newBitVec(TERMINAL_COUNT);
			layoutSets[i] = SingleDFAEngine.newBitVec(TERMINAL_COUNT);
			prefixSets[i] = SingleDFAEngine.newBitVec(TERMINAL_COUNT);
			for(int j = 0;j < TERMINAL_COUNT;j++)
			{
				layoutMaps[i][j] = SingleDFAEngine.newBitVec(TERMINAL_COUNT);
				prefixMaps[i][j] = SingleDFAEngine.newBitVec(TERMINAL_COUNT);
			}
		}
		for(int i = 0;i < SCANNER_STATE_COUNT;i++)
		{
			acceptSets[i] = SingleDFAEngine.newBitVec(TERMINAL_COUNT);
			rejectSets[i] = SingleDFAEngine.newBitVec(TERMINAL_COUNT);
			possibleSets[i] = SingleDFAEngine.newBitVec(TERMINAL_COUNT);
		}
		for(int i = 0;i < TERMINAL_COUNT;i++)
		{
			terminalUses[i] = SingleDFAEngine.TERMINAL_UNUSED;
		}
	}