public static UnifiedProgram CreateProgram(ProduireFile rdr)
        {
            var program = UnifiedProgram.Create(UnifiedBlock.Create());

            ParseClass(rdr.Global, program.Body);
            foreach (var construct in rdr.GetConstructs())
            {
                program.Body.Add(CreateClassDefinition(construct));
            }
            return(program);
        }
예제 #2
0
        public UnifiedProgram Generate(string code)
        {
            if (string.IsNullOrWhiteSpace(code))
            {
                return(UnifiedProgram.Create(UnifiedBlock.Create()));
            }
            var model = GenerateWithoutNormalizing(code);

            model.Normalize();
            return(model);
        }
예제 #3
0
        public UnifiedElement VisitSyntaxTree(SyntaxTree syntaxTree, object data)
        {
            var prog = UnifiedProgram.Create(UnifiedBlock.Create());

            foreach (var child in syntaxTree.Children)
            {
                var elem = child.TryAcceptForExpression(this);
                if (elem != null)
                {
                    prog.Body.Add(elem);
                }
            }
            return(prog);
        }
예제 #4
0
        public static UnifiedProgram CreateTranslationUnit(XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "translation_unit");

            /*
             * translation_unit: external_declaration+ ;
             */
            var program     = UnifiedProgram.Create(UnifiedBlock.Create());
            var expressions = program.Body;

            foreach (var e in node.Elements("external_declaration"))
            {
                expressions.Add(CreateExternalDeclaration(e));
            }

            return(program);
        }
 public static UnifiedProgram CreateProgram(XElement node)
 {
     Contract.Requires(node != null);
     return(UnifiedProgram.Create(CreateSmartBlock(node)));
 }