private static void ApplyRule(int ruleIndex){
		LA_OutputElement temp = new LA_OutputElement();
		temp.mLine = mCurrentLine;
		temp.mUniformToken = mLexRules.get(ruleIndex).mLexicalTokenName;
		if (mLexRules.get(ruleIndex).mNewLine) ++mCurrentLine;
		if (mLexRules.get(ruleIndex).mGoToState) mCurrentState = mLexRules.get(ruleIndex).mGoToStateId;
		if (mLexRules.get(ruleIndex).mReturn){
			temp.mLexicUint = mInput.substring(mLastProcessedPos + 1, mLastProcessedPos + mLexRules.get(ruleIndex).mReturnAt + 1);
			mLastProcessedPos += mLexRules.get(ruleIndex).mReturnAt;
		}
		else{
			temp.mLexicUint = mInput.substring(mLastProcessedPos + 1, mReaderPos + 1);
			mLastProcessedPos = mReaderPos;
		}
		if (!mLexRules.get(ruleIndex).mDiscardString) mOutput.add(temp);
	}