示例#1
0
        private static void DefineNamespace(ProjectDef projectDef)
        {
            NamespaceDef namespaceDef = new NamespaceDef(projectDef, "Test");

            DefineFile(namespaceDef, "A");
            DefineFile(namespaceDef, "B");
        }
        private List <StatementBlock> GetStatementBlocksRecursive(StatementBlock block)
        {
            List <StatementBlock> blocks = new List <StatementBlock>();

            foreach (Statement statement in block.statements)
            {
                if (statement.IsTypeOf <NamespaceDef>())
                {
                    NamespaceDef ns = (NamespaceDef)statement;
                    blocks.AddRange(GetStatementBlocksRecursive(ns.statementBlock));
                    blocks.Add(ns.statementBlock);
                }
                if (statement.IsTypeOf <TypeDef>())
                {
                    TypeDef t = (TypeDef)statement;
                    blocks.AddRange(GetStatementBlocksRecursive(t.statementBlock));
                    blocks.Add(t.statementBlock);
                }
                if (statement.IsTypeOf <StatementBlock>())
                {
                    StatementBlock sb = (StatementBlock)statement;
                    blocks.AddRange(GetStatementBlocksRecursive(sb));
                    blocks.Add(sb);
                }
                if (statement.IsTypeOf <MethodDef>())
                {
                    MethodDef m = (MethodDef)statement;
                    blocks.AddRange(GetStatementBlocksRecursive(m.statementBlock));
                    blocks.Add(m.statementBlock);
                }
                if (statement.IsTypeOf <PropertyDef>())
                {
                    PropertyDef p = (PropertyDef)statement;
                    blocks.AddRange(GetStatementBlocksRecursive(p.statementBlock));
                    blocks.Add(p.statementBlock);
                }
                if (statement.IsTypeOf <ForDef>())
                {
                    ForDef f = (ForDef)statement;
                    blocks.AddRange(GetStatementBlocksRecursive(f.statementBlock));
                    blocks.Add(f.statementBlock);
                }
                if (statement.IsTypeOf <ForEachDef>())
                {
                    ForEachDef f = (ForEachDef)statement;
                    blocks.AddRange(GetStatementBlocksRecursive(f.statementBlock));
                    blocks.Add(f.statementBlock);
                }
            }
            return(blocks);
        }
示例#3
0
        private static void DefineFile(NamespaceDef namespaceDef, String fileName)
        {
            FileDef fileDef = new FileDef(namespaceDef, $"{fileName}.lux");

            DefineTypes(fileDef, fileName);
        }