Created
October 12, 2014 19:53
-
-
Save LaylBongers/64632d7b6b5b828368d3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public IEnumerable<TOutData> Process(IEnumerable<TInData> inData) | |
| { | |
| // Verify function call requirements | |
| if (inData == null) | |
| { | |
| throw new ArgumentNullException("inData"); | |
| } | |
| // Set up the metadata class | |
| var data = new TMetaData(); | |
| // Set up the helper class to walk over our data | |
| var walker = new DataWalker<TInData>(inData); | |
| walker.Moved += (s, e) => InputMove(this, new ParseStagePipeEventArgs<TInData, TMetaData>(walker, data)); | |
| // Create our output stream | |
| var outData = new List<TOutData>(); | |
| // Actually perform the lexing | |
| walker.Next(); | |
| while (!walker.AtEnd) | |
| { | |
| Func<DataWalker<TInData>, TMetaData, TOutData> handler; | |
| var lexeme = Handlers.TryGetValue(SelectLookupKey(walker.Current), out handler) | |
| ? handler(walker, data) | |
| : DefaultHandler(walker, data); | |
| outData.Add(lexeme); | |
| } | |
| return outData; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment