I use Ruby, so I can&#x27;t help you re: tooling. But if you are parsing a regular grammar with regular expressions, how much tooling do you need? The regexp does all the work. All you have to do is ensure that your data format is sane, that your delimiters can never appear in the data.<p>With stuff like your problem, I can never be sure the data is clean, so I always default to a format like CSV or JSON and use standard library tools. I would shudder to have to work with that kind of data in C &#x2F; C++ for the very reason you&#x27;re asking these questions in this thread. It&#x27;s low-level code for a high-level task. You&#x27;re bound to fuck it up eventually and not foresee an edge case.<p>But it would depend on what you want to do with the data. If you&#x27;re walking trees, then you&#x27;re going to want to store them in memory as trees. Whichever memory structure would be the most efficient in the algorithm you&#x27;ve got planned.<p>Personally, since it&#x27;s relational, I wouldn&#x27;t bother with file storage at all and just dump it into a relational database, even if it&#x27;s just SQLite. That would give you the most flexibility.