コード例 #1
0
        public void BuildIdfObjectList()
        {
            TextReader reader = new StreamReader("/home/mitch/EnergyPlus/idd/V9-2-0-Energy+.idd");

            AntlrInputStream input = new AntlrInputStream(reader);

            IddLexer          lexer  = new IddLexer(input);
            CommonTokenStream tokens = new CommonTokenStream(lexer);

            IddParser parser = new IddParser(tokens);
            var       tree   = parser.idd();

            IddListener     listener = new IddListener();
            ParseTreeWalker walker   = new ParseTreeWalker();

            walker.Walk(listener, tree);

            // BuildMyString.com generated code. Please enjoy your string responsibly.

            StringBuilder sb = new StringBuilder();

            sb.Append("using System;\n");
            sb.Append("using System.Collections.Generic;\n");
            sb.Append("namespace dotnet\n");
            sb.Append("{\n");
            sb.Append("    public static class IdfObjectList\n");
            sb.Append("    {\n");
            sb.Append("        public static bool ContainsKey(string key) => Objects.ContainsKey(key);\n");
            sb.Append("        private static readonly Dictionary<string, IdfObject> CachedDictionary = new Dictionary<string, IdfObject>(StringComparer.OrdinalIgnoreCase);\n");
            sb.Append("        public static IdfObject GetIdfObject(string name)\n");
            sb.Append("        {\n");
            sb.Append("            bool inCache = CachedDictionary.TryGetValue(name, out IdfObject idfObject);\n");
            sb.Append("            if (inCache) return idfObject;\n");
            sb.Append("            if (Objects.ContainsKey(name)) {\n");
            sb.Append("                idfObject = Objects[name]();\n");
            sb.Append("                CachedDictionary[name] = idfObject;\n");
            sb.Append("            }\n");
            sb.Append("            else {\n");
            sb.Append("                throw new ArgumentException();\n");
            sb.Append("            }\n");
            sb.Append("            return idfObject;\n");
            sb.Append("        }\n");
            sb.Append("        private static Dictionary<string, Func<IdfObject>> Objects = new Dictionary<string, Func<IdfObject>>(StringComparer.OrdinalIgnoreCase)\n");
            sb.Append("        {\n");
            sb.Append(listener.Builder.ToString());
            sb.Append("        };\n");
            sb.Append("    }\n");
            sb.Append("}\n");

            File.WriteAllText("/home/mitch/repos/idf-lint/app/IdfObjectList.cs", sb.ToString());
        }
コード例 #2
0
        public void BuildDefaultFiles()
        {
            IddParser.IddContext tree   = IddTree.Tree();
            ParseTreeWalker      walker = new ParseTreeWalker();

            IddListener listener = new IddListener();

            walker.Walk(listener, tree);

            string directory = "/home/mitch/tmp/ep_94";

            foreach (var obj in listener.allObjects)
            {
                string filepath = $"{directory}/{obj.Name}.idf";
                File.WriteAllText(filepath, obj.PrintDefaultObject());
            }
        }