private void InitializeStaticLexer(IdentifierType idType = IdentifierType.Alpha, params GenericToken[] staticTokens) { FSMBuilder = new FSMLexerBuilder <GenericToken>(); StringCounter = 0; // conf FSMBuilder.IgnoreWS() .WhiteSpace(' ') .WhiteSpace('\t') .IgnoreEOL(); // start machine definition FSMBuilder.Mark(start); if (staticTokens.ToList().Contains(GenericToken.Identifier) || staticTokens.ToList().Contains(GenericToken.KeyWord)) { InitializeIdentifier(idType); } //numeric if (staticTokens.ToList().Contains(GenericToken.Int) || staticTokens.ToList().Contains(GenericToken.Double)) { FSMBuilder = FSMBuilder.GoTo(start) .RangeTransition('0', '9') .Mark(in_int) .RangeTransitionTo('0', '9', in_int) .End(GenericToken.Int); if (staticTokens.ToList().Contains(GenericToken.Double)) { FSMBuilder.Transition('.') .Mark(start_double) .RangeTransition('0', '9') .Mark(in_double) .RangeTransitionTo('0', '9', in_double) .End(GenericToken.Double); } } LexerFsm = FSMBuilder.Fsm; }
private void InitializeStaticLexer(Config config, GenericToken[] staticTokens) { FSMBuilder = new FSMLexerBuilder <GenericToken>(); StringCounter = 0; // conf FSMBuilder .IgnoreWS(config.IgnoreWS) .WhiteSpace(config.WhiteSpace) .IgnoreEOL(config.IgnoreEOL); // start machine definition FSMBuilder.Mark(start); if (staticTokens.Contains(GenericToken.Identifier) || staticTokens.Contains(GenericToken.KeyWord)) { InitializeIdentifier(config); } // numeric if (staticTokens.Contains(GenericToken.Int) || staticTokens.Contains(GenericToken.Double)) { FSMBuilder = FSMBuilder.GoTo(start) .RangeTransition('0', '9') .Mark(in_int) .RangeTransitionTo('0', '9', in_int) .End(GenericToken.Int); if (staticTokens.Contains(GenericToken.Double)) { FSMBuilder.Transition('.') .Mark(start_double) .RangeTransition('0', '9') .Mark(in_double) .RangeTransitionTo('0', '9', in_double) .End(GenericToken.Double); } } LexerFsm = FSMBuilder.Fsm; }