| 776 | } |
| 777 | |
| 778 | static std::vector <std::pair <bool, std::string> > parse_list (tl::Extractor &ex) |
| 779 | { |
| 780 | std::vector <std::pair <bool, std::string> > list; |
| 781 | |
| 782 | if (ex.test ("(")) { |
| 783 | |
| 784 | while (! ex.test (")")) { |
| 785 | list.push_back (parse_part (ex)); |
| 786 | if (list.back () == std::pair <bool, std::string> ()) { |
| 787 | list.pop_back (); |
| 788 | ex.expect (")"); |
| 789 | break; |
| 790 | } |
| 791 | } |
| 792 | |
| 793 | } else { |
| 794 | list.push_back (parse_part (ex)); |
| 795 | if (list.back () == std::pair <bool, std::string> ()) { |
| 796 | list.pop_back (); |
| 797 | } |
| 798 | } |
| 799 | |
| 800 | return list; |
| 801 | } |
| 802 | |
| 803 | void CellSelector::parse (tl::Extractor &ex) |
| 804 | { |