public override ASTN VisitCase([NotNull] CaseContext context)
        {
            CaseNode node = new CaseNode(context)
            {
                CaseBase = VisitExpr(context.case_expr) as ExprNode
            };

            var list = context.expr().Skip(1);
            var zip  = list.Zip(context.formal(), (x, y) => (x, y));

            foreach (var(expr, formal) in zip)
            {
                node.Branchs.Add((VisitFormal(formal) as FormalNode, VisitExpr(expr) as ExprNode));
            }

            return(node);
        }