Exemplo n.º 1
0
        public override Func <Context, ITerm> VisitTerm_letrec([NotNull] FullSimpleParser.Term_letrecContext context)
        {
            var info   = context.GetFileInfo();
            var v      = context.LCID().GetText();
            var type   = _typeVisitor.Visit(context.type());
            var terms  = context.term();
            var eqTerm = Visit(terms[0]);
            var inTerm = Visit(terms[1]);

            return(ctx =>
            {
                var abs = new Abs(info, v, type(ctx), eqTerm(ctx.AddName(v)));
                var fix = new Fix(info, abs);
                return new Let(info, v, fix, inTerm(ctx.AddName(v)));
            });
        }
Exemplo n.º 2
0
 /// <summary>
 /// Visit a parse tree produced by the <c>term_letrec</c>
 /// labeled alternative in <see cref="FullSimpleParser.term"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitTerm_letrec([NotNull] FullSimpleParser.Term_letrecContext context)
 {
     return(VisitChildren(context));
 }