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); }
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); })); }