コード例 #1
0
ファイル: Lexer.cs プロジェクト: binarycow/Obsidian
        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);
        }
コード例 #2
0
 internal static T ReadOrThrow <T>(this AsnReader reader, Asn1Tag?tag, TryReadDelegate <T> tryRead)
 {
     return(tryRead(out var value, tag)
         ? value
         : throw new AsnContentException());
 }