public override bool SyntaxError(lr_parser parser, StackList <Symbol> stack, Symbol curToken)
        {
            LastMismatchedSymbol = null;
            bool bResult = base.SyntaxError(parser, stack, curToken);

            ((CobolWordsTokenizer)parser.getScanner()).EnterStopScanningMode();
            ((CobolWordsTokenizer)parser.getScanner()).RevertLastToken(LastMismatchedSymbol);
            return(bResult);
        }
        /// <summary>
        /// Create a new parser using a clone.
        /// </summary>
        /// <param name="parser">The parser to be cloned</param>
        /// <param name="start">The start entry point to use</param>
        /// <param name="firstSymbol">The First Symbol</param>
        /// <param name="trial">If we are creating atrial parser, fals eo therwise</param>
        /// <returns>The new parser</returns>
        public lr_parser CloneParser(lr_parser parser, int start, CodeElement firstSymbol, bool trial)
        {
            TypeCobolProgramParser tcpParser = parser as TypeCobolProgramParser;
            ProgramClassBuilder    builder   = tcpParser.Builder as ProgramClassBuilder;
            var errorReporter = tcpParser.ErrorReporter;
            var tokenizer     = parser.getScanner() as CodeElementTokenizer;
            CodeElementTokenizer   newTokenizer = new CodeElementTokenizer(start, firstSymbol);
            TypeCobolProgramParser newParser    = new TypeCobolProgramParser(newTokenizer);

            newParser.Builder       = builder;
            newParser.ErrorReporter = errorReporter;
            newParser.IsTrial       = trial;
            return(newParser);
        }