예제 #1
0
        public static Boundaries?RecognizeBrackets(IBracketing bracketing, char @char)
        {
            foreach (Boundaries boundary in Enum.GetValues(typeof(Boundaries)))
            {
                if (@char == bracketing.At(boundary))
                {
                    return(boundary);
                }
            }

            return(null);
        }
예제 #2
0
        public static IParser <char, Boundaries> Bracket(IBracketing bracketing)
        {
            return(Parsers.Take <char>().Continue <char, char, Boundaries>(
                       generate: @char =>
            {
                var boundary = RecognizeBrackets(bracketing, @char);

                if (boundary == null)
                {
                    return Parsers.Fails <char, Boundaries>("Character is not a bracket: " + @char);
                }

                return Parsers.Returns <char, Boundaries>(boundary.Value);
            }));
        }