internal Lexer(ILanguageDefinition languageDefinition) { LanguageDefinition = languageDefinition; _Delegates = new TryReadDelegate[] { TryReadCharacterLiteral, TryReadStringLiteral, TryReadNumericLiteral, TryReadWhiteSpace, TryReadOperator, TryReadIdentifier, TryReadSingleChar, }; _Operators = languageDefinition.Operators.ToDictionary(operatorDef => operatorDef.Text.ToCharArray()); _LookaheadCount = (byte)Math.Max(_Operators.Keys.Max(arr => arr.Length), _MIN_LOOKAHEAD_COUNT); }
internal static T ReadOrThrow <T>(this AsnReader reader, Asn1Tag?tag, TryReadDelegate <T> tryRead) { return(tryRead(out var value, tag) ? value : throw new AsnContentException()); }