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);
        }
Пример #2
0
        private static TlaExpr Translate(this exprItem item, AutomatonParsingContext ctx)
        {
            TlaExpr expr;

            if (item.identifier != null)
            {
                bool constValue;

                if (bool.TryParse(item.identifier.@string, out constValue))
                {
                    expr = new TlaExpr.Const(constValue);
                }
                else
                {
                    expr = new TlaExpr.Var(ctx.Unescape(item.identifier.@string));
                }
            }
            else if (item.exprGroup != null)
            {
                expr = item.exprGroup.exprSeq.TranslateToTlaExpr(ctx);
            }
            else
            {
                throw new NotImplementedException();
            }

            if (item.not != null)
            {
                expr = new TlaExpr.Not(expr);
            }

            return(expr);
        }
Пример #3
0
 private static ParsingExpression TranslateSeqItem(exprItem seq)
 {
     if (seq.alternatives != null)
     {
         return(new ParsingExpression.Alternatives(seq.alternatives.altItems.Select(it => TranslateAltItem(it)).ToArray()));
     }
     else if (seq.number != null)
     {
         return(TranslateNumber(seq.number));
     }
     else if (seq.trivial != null)
     {
         return(TranslateTrivial(seq.trivial));
     }
     else
     {
         throw new NotImplementedException("");
     }
 }