private void ExecuteConflictAction(ParserAction action) { var args = new ConflictResolutionArgs(_context, action); _grammar.OnResolvingConflict(args); switch (args.Result) { case ParserActionType.Reduce: ExecuteReduce(args.ReduceProduction); break; case ParserActionType.Operator: ExecuteOperatorAction(action.NewState, args.ReduceProduction); break; case ParserActionType.Shift: default: ExecuteShift(action.NewState); break; } }
/// <summary> /// Override this method to provide custom conflict resolution; for example, custom code may decide proper shift or reduce /// action based on preview of tokens ahead. /// </summary> public virtual void OnResolvingConflict(ConflictResolutionArgs args) { //args.Result is Shift by default }