public ParserSchemaFile LoadParser(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            if (this._Paths.ContainsKey(name) == false)
            {
                throw new ArgumentException("no such parser", "name");
            }

            if (this._LoadedParsers.ContainsKey(name) == true)
            {
                return(this._LoadedParsers[name]);
            }

            var parser = ParserSchemaFile.LoadFile(this._Paths[name]);

            this._LoadedParsers.Add(name, parser);

            ResolveParser(parser.Table);

            return(parser);
        }
        public ParserLoader(string path)
        {
            this._Paths         = new Dictionary <string, string>();
            this._LoadedParsers = new Dictionary <string, ParserSchemaFile>();

            foreach (var inputPath in Directory.GetFiles(path, "*.schema.xml", SearchOption.AllDirectories))
            {
                var name = ParserSchemaFile.GetNameFromFile(inputPath);
                if (name == "ReferenceEArrayTemplate")
                {
                    continue;
                }

                this._Paths.Add(name, inputPath);
            }
        }