14 using System.Collections.Generic;
26 using Irony.Parsing.Construction;
39 public readonly
string Name;
51 internal ParserStateData BuilderData;
63 return Name.GetHashCode();
85 private Action<ConflictResolutionArgs> ConflictResolver {
get;set;}
87 internal ParserAction(
ParserActionType actionType, ParserState newState, Production reduceProduction) {
88 this.ActionType = actionType;
89 this.NewState = newState;
90 this.ReduceProduction = reduceProduction;
91 this.ConflictResolver = null;
94 internal ParserAction(ParserState newState, Production reduceProduction, Action<ConflictResolutionArgs> conflictResolver)
96 ConflictResolver = conflictResolver;
99 internal void ChangeToOperatorAction(Production reduceProduction) {
100 ActionType = ParserActionType.Operator;
101 ReduceProduction = reduceProduction;
107 var resolver = ConflictResolver ?? grammar.OnResolvingConflict;
113 switch (this.ActionType) {
116 case ParserActionType.Operator:
return string.Format(
Resources.LabelActionOp, NewState.Name, ReduceProduction.ToStringQuoted());
139 internal readonly Construction.LR0ItemList LR0Items =
new Construction.LR0ItemList();
146 return (
Flags & flag) != ProductionFlags.None;
150 return "'" + ToString() +
"'";
153 return ProductionToString(
this, -1);
156 char dotChar =
'\u00B7';
157 StringBuilder bld =
new StringBuilder();
158 bld.Append(production.LValue.Name);
160 for (
int i = 0; i < production.RValues.Count; i++) {
161 if (i == dotPosition)
163 bld.Append(production.RValues[i].Name);
166 if (dotPosition == production.
RValues.Count)
168 return bld.ToString();
188 Scanner = Context.Parser.Scanner;
189 NewShiftState = conflictAction.NewState;
190 ReduceProduction = conflictAction.ReduceProduction;
191 Result = ParserActionType.Shift;
static string LabelActionShift
Looks up a localized string similar to Shift to {0}.
readonly NonTerminal LValue
Production ReduceProduction
Production(NonTerminal lvalue)
override string ToString()
Scanner base class. The Scanner's function is to transform a stream of characters into aggregates/wor...
Flags
Enumeration of the new Assimp's flags.
The class provides arguments for custom conflict resolution grammar method.
virtual ConflictResolutionArgs ResolveConflict(Grammar grammar, ParsingContext context)
readonly ParsingContext Context
ParserAction DefaultAction
StringSet ReportedExpectedSet
ParserData(LanguageData language)
static string LabelActionUnknown
Looks up a localized string similar to (Unknown action type).
readonly ParserState NewShiftState
bool IsSet(ProductionFlags flag)
static string LabelActionOp
Looks up a localized string similar to Operator, shift to {0}/reduce on {1}..
static string LabelActionAccept
Looks up a localized string similar to Accept.
readonly BnfTermList RValues
override int GetHashCode()
static string LabelActionReduce
Looks up a localized string similar to Reduce on {0}.
override string ToString()
readonly LanguageData Language
static string ProductionToString(Production production, int dotPosition)
override string ToString()