14 using System.Collections.Generic;
48 public delegate
bool HintPredicate(
GrammarHint hint);
50 foreach(var hint
in this)
51 if (match(hint))
return hint;
64 public readonly
object Data;
83 public int MaxPreviewTokens {
get; set; }
84 private string FirstString {
get; set; }
86 private Terminal FirstTerminal {
get; set; }
90 FirstString = String.Empty;
91 OtherStrings =
new HashSet<string>();
102 FirstTerminal = first;
106 Array.ForEach(others, term => OtherStrings.Add(term));
111 Array.ForEach(others, term => OtherTerminals.Add(term));
116 MaxPreviewTokens = max;
121 base.Init(grammarData);
123 FirstTerminal = FirstTerminal ?? Grammar.ToTerm(FirstString);
124 if (OtherTerminals.Count == 0 && OtherStrings.Count > 0)
125 Array.ForEach(OtherStrings.Select(
s => Grammar.ToTerm(
s)).ToArray(), term => OtherTerminals.Add(term));
130 args.Scanner.BeginPreview();
133 var token = args.Scanner.GetToken();
135 if (token.Terminal == FirstTerminal)
137 args.Result = Action;
140 if (OtherTerminals.Contains(token.Terminal))
142 if (++count > MaxPreviewTokens && MaxPreviewTokens > 0)
144 token = args.Scanner.GetToken();
149 args.Scanner.EndPreview(
true);
readonly HintType HintType
Instruction to resolve the conflict using special code in grammar in OnResolvingConflict method...
override void Init(GrammarData grammarData)
TokenPreviewHint ComesBefore(params string[] others)
CustomGrammarHint(ParserActionType action)
TokenPreviewHint(ParserActionType action, string first)
Currently ignored by Parser, may be used in the future to set specific precedence value of the follow...
The class provides arguments for custom conflict resolution grammar method.
TokenPreviewHint(ParserActionType action, Terminal first)
readonly ParsingContext Context
TokenPreviewHint SetMaxPreview(int max)
Instruction to resolve conflict to shift
Instruction to resolve conflict to reduce
TokenPreviewHint ComesBefore(params Terminal[] others)
GrammarHint(HintType hintType, object data)
readonly LanguageData Language
override bool Match(ConflictResolutionArgs args)
Grammar Grammar
The linked Grammar