示例#1
0
        public override ASTNode VisitCase([NotNull] CoolParser.CaseContext context)
        {
            CaseNode node = new CaseNode(context)
            {
                ExpressionCase = Visit(context.expression(0)) as ExpressionNode
            };

            var formals     = context.formal().Select(x => Visit(x)).ToList();
            var expressions = context.expression().Skip(1).Select(x => Visit(x)).ToList();

            for (int i = 0; i < formals.Count; ++i)
            {
                node.Branches.Add((formals[i] as FormalNode, expressions[i] as ExpressionNode));
            }

            return(node);
        }