14 using System.Collections.Generic;
24 #region Constants and Fields
30 private IEnumerator<Token> filteredTokens;
36 #region Constructors and Destructors
47 #region Public Properties
73 return Parser.Context;
87 #region Public Methods
94 Context.Status = ParserStatus.Previewing;
95 previewTokens.Clear();
96 previewStartLocation = Location;
109 if (keepPreviewTokens)
112 while (previewTokens.Count > 0)
114 bufferedTokens.Push(previewTokens.Pop());
119 Context.SetSourceLocation(previewStartLocation);
122 previewTokens.Clear();
123 Context.Status = ParserStatus.Parsing;
135 if (!filteredTokens.MoveNext())
140 var token = filteredTokens.Current;
143 previewTokens.Push(token);
147 Context.CurrentParseTree.Tokens.Add(token);
162 Grammar = parser.Language.Grammar;
167 var tokenStream = GetUnfilteredTokens();
170 Context.TokenFilters.Clear();
171 Grammar.CreateTokenFilters(Parser.Language, Context.TokenFilters);
172 foreach (var filter
in Context.TokenFilters)
174 tokenStream = filter.BeginFiltering(Context, tokenStream);
177 filteredTokens = tokenStream.GetEnumerator();
191 public abstract void SetSourceText(
string sourceText,
string sourceFileName);
210 Context.PreviousToken = Context.CurrentToken;
211 Context.CurrentToken = null;
213 if (bufferedTokens.Count > 0)
215 Context.CurrentToken = bufferedTokens.Pop();
222 Context.OnTokenCreated();
225 yield
return Context.CurrentToken;
232 protected abstract void NextToken();
237 protected abstract void PrepareInput();
virtual void Reset()
Resets this instance.
Scanner()
Initializes a new instance of the Scanner class.
Token GetToken()
Gets the next token.
Scanner base class. The Scanner's function is to transform a stream of characters into aggregates/wor...
virtual void EndPreview(bool keepPreviewTokens)
Ends the preview.
IEnumerable< Token > GetUnfilteredTokens()
Gets the unfiltered tokens.
virtual void BeginPreview()
Begins the preview.
Tokens are produced by scanner and fed to parser, optionally passing through Token filters in between...
void Initialize(Parser parser)
Initializes this instance.