Beispiel #1
0
        void ParseKey(Key parent)
        {
            char ch = SkipWhitespace();

            if (ch == '}')
            {
                return;
            }

            Key    key  = new Key();
            string name = ParseIdentifier("{=");

            if (name == "val")
            {
                // this is not a sub key, it is just value in the parent key.
                string id    = ParseIdentifier("=");
                object value = ParseValue();
                parent.AddValue(id, value);
                return;
            }
            if (name == "NoRemove")
            {
                key.Removal = Removal.NoRemove;
                name        = ParseIdentifier("{=");
            }
            else if (name == "ForceRemove")
            {
                key.Removal = Removal.ForceRemove;
                name        = ParseIdentifier("{=");
            }
            key.Name = name;
            ch       = SkipWhitespace();
            if (ch == '=')
            {
                object def = ParseValue();
                key.DefaultValue = def;
                ch = SkipWhitespace();
            }
            if (ch == '{')
            {
                ch = NextChar();
                while (!EOF && ch != '}')
                {
                    ParseKey(key);
                    ch = SkipWhitespace();
                }
                if (ch != '}')
                {
                    Error("Expected '{0}'", "}");
                }
                NextChar(); // consume closing brace
            }
            parent.AddChild(key);
        }
Beispiel #2
0
    void ParseKey(Key parent) {
      char ch = SkipWhitespace();
      if (ch == '}') 
        return;

      Key key = new Key();
      string name = ParseIdentifier("{=");
      if (name == "val") {
        // this is not a sub key, it is just value in the parent key.
        string id = ParseIdentifier("=");
        object value = ParseValue();
        parent.AddValue(id, value);
        return;
      } 
      if (name == "NoRemove") {
        key.Removal = Removal.NoRemove;
        name = ParseIdentifier("{=");
      } else if (name == "ForceRemove") {
        key.Removal = Removal.ForceRemove;
        name = ParseIdentifier("{=");
      }
      key.Name = name;
      ch = SkipWhitespace();
      if (ch == '=') {
        object def = ParseValue();
        key.DefaultValue = def;
        ch = SkipWhitespace();
      }
      if (ch == '{') {
        ch = NextChar();    
        while (!EOF && ch != '}') {
          ParseKey(key);
          ch = SkipWhitespace();
        }
        if (ch != '}') {
          Error("Expected '{0}'", "}");
        }
        NextChar(); // consume closing brace
      }
      parent.AddChild(key);
    }