Ejemplo n.º 1
0
        private static TransitionConditionExpr Translate(this exprItem item, AutomatonParsingContext ctx)
        {
            TransitionConditionExpr expr;

            if (item.identifier != null)
            {
                expr = new TransitionConditionExpr.VarExpr(ctx.Unescape(item.identifier.@string));
            }
            else if (item.exprGroup != null)
            {
                expr = item.exprGroup.exprSeq.TranslateToConditionExpr(ctx);
            }
            else if (item.literal != null)
            {
                expr = new TransitionConditionExpr.ConstExpr(true);
            }
            else
            {
                throw new NotImplementedException();
            }

            if (item.not != null)
            {
                expr = new TransitionConditionExpr.NotExpr(expr);
            }

            return(expr);
        }
 bool ITransitionConditionExprVisitor <bool> .VisitVar(TransitionConditionExpr.VarExpr var)
 {
     return(true);
 }
 VarsCollector ITransitionConditionExprVisitor <VarsCollector> .VisitVar(TransitionConditionExpr.VarExpr var)
 {
     this.Add(var.Name);
     return(this);
 }
 bool ITransitionConditionExprVisitor <bool> .VisitVar(TransitionConditionExpr.VarExpr var)
 {
     return(_varEvaluator(var.Name));
 }