Mercurial > pub > ImplabNet
diff Implab/Formats/Grammar.cs @ 228:6fa235c5a760 v2
Rewritten JsonScanner, JsonParser, fixed naming style
author | cin |
---|---|
date | Tue, 12 Sep 2017 01:19:12 +0300 |
parents | d5c5db0335ee |
children | 302ca905c19e |
line wrap: on
line diff
--- a/Implab/Formats/Grammar.cs Sat Sep 09 03:53:13 2017 +0300 +++ b/Implab/Formats/Grammar.cs Tue Sep 12 01:19:12 2017 +0300 @@ -67,32 +67,6 @@ return Token.New( Enumerable.Range(0, AlphabetBuilder.Count).Except(TranslateOrDie(symbols)).ToArray() ); } - - protected abstract IndexedAlphabetBase<TSymbol> CreateAlphabet(); - - protected ScannerContext<TTag> BuildScannerContext<TTag>(Token regexp) { - - var dfa = new RegularDFA<TSymbol, TTag>(AlphabetBuilder); - - var visitor = new RegularExpressionVisitor<TTag>(dfa); - regexp.Accept(visitor); - visitor.BuildDFA(); - - if (dfa.IsFinalState(dfa.InitialState)) - throw new ApplicationException("The specified language contains empty token"); - - var ab = CreateAlphabet(); - var optimal = dfa.Optimize(ab); - - return new ScannerContext<TTag>( - optimal.CreateTransitionTable(), - optimal.CreateFinalStateTable(), - optimal.CreateTagTable(), - optimal.InitialState, - ab.GetTranslationMap() - ); - } - }