[parse](https://www.rdocumentation.org/packages/base/versions/3.6.0/topics/parse) actually provides span data via [getParseData](https://www.rdocumentation.org/packages/utils/versions/3.6.1/topics/getParseData). Maybe this will simplify the parser. Additional docs: http://adv-r.had.co.nz/Expressions.html#pairlists