public static int GetLevel(this PatternExpressionPrecedenceEnum value) { switch (value) { case PatternExpressionPrecedenceEnum.MINIMUM: return(int.MinValue); case PatternExpressionPrecedenceEnum.FOLLOWEDBY: return(1); case PatternExpressionPrecedenceEnum.OR: return(2); case PatternExpressionPrecedenceEnum.AND: return(3); case PatternExpressionPrecedenceEnum.REPEAT_UNTIL: return(4); case PatternExpressionPrecedenceEnum.UNARY: return(5); case PatternExpressionPrecedenceEnum.GUARD_POSTFIX: return(6); case PatternExpressionPrecedenceEnum.ATOM: return(int.MaxValue); } throw new ArgumentException("invalid value"); }
public void ToEPL(TextWriter writer, PatternExpressionPrecedenceEnum parentPrecedence) { if (Precedence.GetLevel() < parentPrecedence.GetLevel()) { writer.Write("("); ToPrecedenceFreeEPL(writer); writer.Write(")"); } else { ToPrecedenceFreeEPL(writer); } }
public static void ToPrecedenceFreeEPL( TextWriter writer, string delimiterText, IList<EvalForgeNode> childNodes, PatternExpressionPrecedenceEnum precedence) { var delimiter = ""; foreach (var child in childNodes) { writer.Write(delimiter); child.ToEPL(writer, precedence); delimiter = " " + delimiterText + " "; } }