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");
        }
Exemplo n.º 2
0
 public void ToEPL(TextWriter writer, PatternExpressionPrecedenceEnum parentPrecedence)
 {
     if (Precedence.GetLevel() < parentPrecedence.GetLevel())
     {
         writer.Write("(");
         ToPrecedenceFreeEPL(writer);
         writer.Write(")");
     }
     else
     {
         ToPrecedenceFreeEPL(writer);
     }
 }
Exemplo n.º 3
0
 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 + " ";
     }
 }