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); }