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); }
private static void DefineFile(NamespaceDef namespaceDef, String fileName) { FileDef fileDef = new FileDef(namespaceDef, $"{fileName}.lux"); DefineTypes(fileDef, fileName); }