Exemplo n.º 1
0
 public IBNode GetBNode(char type)
 {
     IBNode node = null;
     switch (type)
     {
         case 'l': // listitem node
             node = new ListItemNode();
             break;
         case 'd': // dict node
             node = new DictNode();
             break;
         case 'k': // key value node
             node = new KeyValueNode();
             break;
     }
     _bNodeList.Add(node);
     return node;
 }
Exemplo n.º 2
0
        private void AnalyseList(IBNode parent)
        {
            // 列表一定是l开始的
            if (GetCurrentCharMove() != 'l')
            {
                return;
            }

            int count = 0;

            // 循环读入列表项
            do
            {
                ListItemNode listItemNode = _bNodeFactory.GetBNode('l') as ListItemNode;
                switch (GetCurrentChar())
                {
                case 'i':     // 数字
                    listItemNode.SetValue(AnalyseInteger());
                    listItemNode.ValueType = 'i';
                    break;

                case 'd':     // 字典
                    AnalyseDictionary(listItemNode);
                    listItemNode.ValueType = 'd';
                    break;

                case 'l':     // 列表
                    AnalyseList(listItemNode);
                    listItemNode.ValueType = 'l';
                    break;

                default:
                    listItemNode.SetValue(AnalyseString());
                    listItemNode.ValueType = 's';
                    break;
                }
                listItemNode.ListIndex = count++;
                parent.Child.Add(listItemNode);
            } while (GetCurrentChar() != 'e');
            GetCurrentCharMove();
        }
Exemplo n.º 3
0
        public IBNode GetBNode(char type)
        {
            IBNode node = null;

            switch (type)
            {
            case 'l':     // listitem node
                node = new ListItemNode();
                break;

            case 'd':     // dict node
                node = new DictNode();
                break;

            case 'k':     // key value node
                node = new KeyValueNode();
                break;
            }
            _bNodeList.Add(node);
            return(node);
        }