14 using System.Collections.Generic;
24 this.ErrorAlias = errorAlias;
30 this.SetFlag(TermFlags.IsPunctuation);
31 OutputTerminal =
this;
35 #region fields and properties
46 public Terminal OutputTerminal {
get;
private set; }
53 #region virtual methods: GetFirsts(), TryMatch, Init, TokenToString
67 return token.ValueString;
75 #region Events: ValidateToken
77 protected internal virtual void InvokeValidateToken(
ParsingContext context) {
78 if (ValidateToken != null)
79 ValidateToken(
this, context.SharedParsingEventArgs);
83 #region static comparison methods
85 return string.Compare(x.ToString(), y.
ToString());
96 #region Miscellaneous: SetOutputTerminal
98 OutputTerminal = outputTerminal;
99 grammar.NonGrammarTerminals.Add(
this);
104 public const int LowestPriority = -1000;
105 public const int HighestPriority = 1000;
106 public const int ReservedWordsPriority = 900;
109 var sb =
new StringBuilder();
110 foreach (var term
in terminals) {
111 sb.Append(term.ToString());
112 sb.Append(separator);
114 return sb.ToString().Trim();
121 return Terminal.TerminalsToString(
this,
" ");
128 if (!Contains(terminal))
132 foreach(var terminal
in terminals)
136 return Terminal.TerminalsToString(
this,
" ");
TokenCategory
Token category.
new void Add(Terminal terminal)
static int ByName(Terminal x, Terminal y)
virtual Token TryMatch(ParsingContext context, ISourceStream source)
Terminal(string name, TokenCategory category, TermFlags flags)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ DXGI_FORMAT _In_ DWORD flags
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float size_t y
static string TerminalsToString(IEnumerable< Terminal > terminals, string separator)
override string ToString()
string Text
Gets the text associated with this token.
Terminal(string name, string errorAlias, TokenCategory category, TermFlags flags)
Interface for Terminals to access the source stream and produce tokens.
string ValueString
Gets the value as a string.
override string ToString()
void SetOutputTerminal(Grammar grammar, Terminal outputTerminal)
TokenEditorInfo EditorInfo
EventHandler< ParsingEventArgs > ValidateToken
static int ByPriorityReverse(Terminal x, Terminal y)
virtual IList< string > GetFirsts()
Terminal(string name, TokenCategory category)
Tokens are produced by scanner and fed to parser, optionally passing through Token filters in between...
override string ToString()
virtual string TokenToString(Token token)
new void AddRange(IEnumerable< Terminal > terminals)