示例#1
0
        public override void ExitFun([NotNull] ClojureObrParser.FunContext context)
        {
            //
            int            childsCount = context.children.Count;
            List <SymNode> paramNodes  = new List <SymNode>();

            for (int i = 3; i < childsCount - 3; i++)
            {
                paramNodes.Add((SymNode)TypedNodes.Get(context.children[i]));
            }
            var exprNodes = (ExpressionsNode)TypedNodes.Get(context.children[childsCount - 2]);
            int exprCount = exprNodes.expressions.Count;
            var lastExpr  = exprNodes.expressions[exprCount - 1];
            var exprMid   = exprNodes.expressions.SkipLast(1).ToList();

            FunNode node = new FunNode(paramNodes, lastExpr, exprMid);

            TypedNodes.Put(context, node);
        }
示例#2
0
 public override void EnterFun([NotNull] ClojureObrParser.FunContext context)
 {
     //
     ExprSymTypes.Put(context, SymType.Fun);
 }