public static Parse <int> DigitValue() { return(value => { ParseResult <char> whiteSpaceResult = IsWhitespace()(value); if (!whiteSpaceResult.Succeeded) { ParseResult <char> result = Match(char.IsDigit)(value); int resultValue = 0; if (result.Succeeded) { resultValue = System.Convert.ToInt32(result.Result.ToString()); return new ParseResult <int>(resultValue, result.RemainingInput, true); } else { return new ParseResult <int>(resultValue, value, false); } } else { ParseResult <int> result = DigitValue()(whiteSpaceResult.RemainingInput); return result; } }); }
public static Parse <string> BoolStringHelper(string boolValue) { return(value => { ParseResult <char> whiteSpaceResult = IsWhitespace()(value); if (!whiteSpaceResult.Succeeded) { ParseResult <char> parseResult = LetterOrDigit()(value); if (parseResult.Succeeded) { var stringVal = StringValue(boolValue + parseResult.Result.ToString()); ParseResult <string> result = stringVal(parseResult.RemainingInput); if (result.Result.ToLower() == "true") { return new ParseResult <string>("true", parseResult.RemainingInput, true); } else { return new ParseResult <string>("false", parseResult.RemainingInput, true); } } if (string.IsNullOrEmpty(boolValue)) { return new ParseResult <string>("false", value, false); } return new ParseResult <string>("false", value, true); } else { var stringVal = StringValue(boolValue); ParseResult <string> result = stringVal(whiteSpaceResult.RemainingInput); if (result.Result.ToLower() == "true") { return new ParseResult <string>("true", result.RemainingInput, true); } else { return new ParseResult <string>("false", result.RemainingInput, true); } } }); }
private static Parse <string> StringValue(string str) { return(value => { ParseResult <char> whiteSpaceResult = IsWhitespace()(value); if (!whiteSpaceResult.Succeeded) { //ParseResult<char> singleQuotationResult = IsSingleQuotation()(value); //if (!singleQuotationResult.Succeeded) //{ ParseResult <char> parseResult = LetterOrDigitOrPoint()(value); if (parseResult.Succeeded) { var stringVal = StringValue(str + parseResult.Result.ToString()); ParseResult <string> result = stringVal(parseResult.RemainingInput); return result; } if (string.IsNullOrEmpty(str)) { return new ParseResult <string>(str, value, false); } return new ParseResult <string>(str, value, true); //} //else //{ // var stringVal = StringValue(str); // ParseResult<string> result = stringVal(singleQuotationResult.RemainingInput); // return result; //} } else { var stringVal = StringValue(str); ParseResult <string> result = stringVal(whiteSpaceResult.RemainingInput); return result; } }); }