Hej David!
Unfortunately LEF is anything else than elegant. That's why we wanna switch to ALF. The grammar has grown historically over the year and Cadence defined LEF/DEF on a need-to-have basis and everyone uses it because there is nothing better. I unfortunately can't give any additional input on the topic of parsing LEF files other than there is a reason that my original grammar looked as ugly as it did.
I agree, but doesn't mean, that we should drop support for LEFDEF, since there is already a lot of infrastructure for it, and since ALF is some kind of a LEFDEF superset, working on the subset contributes for both standards, so seems like almost free lunch for me :)
If you wanna have something elegant maybe really focus on ALF, so that we can provide our IP libs in that format instead.
And since there are as much as zero ALF examples, we have to generate them ourself, and for me it sounds the best to convert them from the tones of LEFDEF out there...
Another question. For the datastructures I would have boost geometry on my radar for all the polygon and rect stuff, since its the only lib I have experience with and I dont want to write myself all the polygon90 and geometry stuff. Any opinion about using boost geometry, alternative canidates for that or other geometry related stuff already used in the QTflow repo which I maybe don't know about :?
Cheers! Paul