/// <summary> /// Parse the given line. /// </summary> /// <param name="line">The line to parse.</param> /// <returns>The parsed probability.</returns> public ParsedProbability Parse(String line) { ParsedProbability result = new ParsedProbability(); SimpleParser parser = new SimpleParser(line); parser.EatWhiteSpace(); if (!parser.LookAhead("P(", true)) { throw new EncogError("Bayes table lines must start with P("); } parser.Advance(2); // handle base AddEvents(parser, result.BaseEvents, "|,)=[]"); // handle conditions if (parser.Peek() == '|') { parser.Advance(); AddEvents(parser, result.GivenEvents, ",)=[]"); } if (parser.Peek() != ')') { throw new BayesianError("Probability not properly terminated."); } return(result); }
/// <summary> /// Parse a probability list. /// </summary> /// <param name="network">The network to parse for.</param> /// <param name="line">The line to parse.</param> /// <returns>The parsed list.</returns> public static IList <ParsedProbability> ParseProbabilityList(BayesianNetwork network, String line) { IList <ParsedProbability> result = new List <ParsedProbability>(); StringBuilder prob = new StringBuilder(); for (int i = 0; i < line.Length; i++) { char ch = line[i]; if (ch == ')') { prob.Append(ch); ParseProbability parse = new ParseProbability(network); ParsedProbability parsedProbability = parse.Parse(prob.ToString()); result.Add(parsedProbability); prob.Length = 0; } else { prob.Append(ch); } } return(result); }
/// <summary> /// Parse the given line. /// </summary> /// <param name="line">The line to parse.</param> /// <returns>The parsed probability.</returns> public ParsedProbability Parse(String line) { ParsedProbability result = new ParsedProbability(); SimpleParser parser = new SimpleParser(line); parser.EatWhiteSpace(); if (!parser.LookAhead("P(", true)) { throw new EncogError("Bayes table lines must start with P("); } parser.Advance(2); // handle base AddEvents(parser, result.BaseEvents, "|,)=[]"); // handle conditions if (parser.Peek() == '|') { parser.Advance(); AddEvents(parser, result.GivenEvents, ",)=[]"); } if (parser.Peek() != ')') { throw new BayesianError("Probability not properly terminated."); } return result; }