Пример #1
0
 public static BoolExpr Make(ref List <Token> .Enumerator polishNotationTokensEnumerator, AGDSModel agdsModel)
 {
     if (polishNotationTokensEnumerator.Current.type == Token.TokenType.LITERAL)
     {
         BoolExpr lit = BoolExpr.CreateBoolVar(agdsModel.GetItemsByExpr(polishNotationTokensEnumerator.Current.value));
         polishNotationTokensEnumerator.MoveNext();
         return(lit);
     }
     else
     {
         if (polishNotationTokensEnumerator.Current.value == "AND")
         {
             polishNotationTokensEnumerator.MoveNext();
             BoolExpr left  = Make(ref polishNotationTokensEnumerator, agdsModel);
             BoolExpr right = Make(ref polishNotationTokensEnumerator, agdsModel);
             return(BoolExpr.CreateAnd(left, right));
         }
         else if (polishNotationTokensEnumerator.Current.value == "OR")
         {
             polishNotationTokensEnumerator.MoveNext();
             BoolExpr left  = Make(ref polishNotationTokensEnumerator, agdsModel);
             BoolExpr right = Make(ref polishNotationTokensEnumerator, agdsModel);
             return(BoolExpr.CreateOr(left, right));
         }
     }
     return(null);
 }