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); }
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); }
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(""); } }