コード例 #1
0
 public ConfigCollection(string name, ConfigCollection parent = null)
 {
     Name      = name;
     Parent    = parent;
     Variables = new Dictionary <string, string>();
     KeyBinds  = new Dictionary <string, string>();
     Data      = new Dictionary <string, string>();
     Modes     = new Dictionary <string, ConfigCollection>();
 }
コード例 #2
0
        public FileParser(IParseInstructionBuilder instructionBuilder)
        {
            this.instructionBuilder = instructionBuilder;
            _blocks = 0;
            //_dblQuotes = 0;
            //_quotes = 0;
            _lineNumber = 0;
            Data        = new ConfigCollection("Default");
            _data       = Data;
            Errors      = new List <Tuple <int, string> >();

            _parseInstruction = instructionBuilder.Build(new AddErrorDelegate(AddError));
        }
コード例 #3
0
        public void Parse(Stream stream)
        {
            _sr = new StreamReader(stream);

            string line     = "";
            var    prevName = "";

            while ((line = NextLine(line)) != null)
            {
                var result = ParseLine(line);
                if (result?.Status == FileParserStateResult.OpenBracket)
                {
                    _blocks++;
                    var modeName = result?.Instruction?.Instruction ?? prevName;
                    var old      = _data;
                    _data = new ConfigCollection(modeName, old);
                    old.Modes.Add(modeName, _data);
                }
                else if (result?.Status == FileParserStateResult.CloseBracket)
                {
                    _blocks--;
                    _data = _data.Parent;
                }

                prevName = result?.Instruction?.Instruction ?? "";
                line     = result?.Remaining ?? "";
            }

            if (_blocks != 0)
            {
                AddError("Missing closing Brackets", false);
            }
            else if (_data.Name != "Default")
            {
                AddError($"Unknown error. ended up in mode \"{_data.Name}\" but it should be \"Default\".", false);
            }
        }