コード例 #1
0
        public FrontendMapAbstractionBuilder RecordTypes(Program p)
        {
            mapBuilder = new FrontendMapAbstractionBuilder();
            Visit(p);

            return(mapBuilder.UniqueAbstractionBuilder());
        }
コード例 #2
0
        public Program Desugar(Program p, FrontendMapAbstractionBuilder mapAbstractionBuilder)
        {
            _mapAbstractionBuilder = mapAbstractionBuilder;
            var desugaredProg = VisitProgram(p);

            foreach (var f in _mapAbstractionBuilder.AllSelectAndStoreFunctions())
            {
                p.AddTopLevelDeclaration(f);
            }

            int tcErrorCount = desugaredProg.Typecheck();

            if (tcErrorCount != 0)
            {
                throw new Exception("Type check failed after desugaring program");
            }

            return(desugaredProg);
        }