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; }
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(); }
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); }