<!doctype d -- element decls for a, b ... -->
<!doctype e -- element decls for a, x ... -->
<(d|e)a>
<(d)b>bla bla <(e)x>bla </(d)b> bla</(e)x>
</(d|e)a>
where the third "bla" span is marked up with overlap.Basically, in case you've ever wondered, SGML CONCUR is the only reason that the element name in end-element tags needs to be specified. In strictly nested markup (XML) it always must refer to the most recently opened start-element tag hence it's redundant. SGML actually has "</>" but it didn't make it into XML.
Basically you can, with my lib, define the tokens `*` and `_` (or anything else) to resp. make text go bold and italic, and use it as such:
This text is *bold _and* italic_!
[0] https://github.com/Frizlab/XibLoc (Readme is lacking…)Traffic signs repeat after every intersection, similarly.
It's a great help in recovering the "parser state" in my mind.
[0]: https://en.wikipedia.org/wiki/Quotation_marks_in_English#Quo...
text <b>bold <i>bold-italic</b> italic</i> text <b>bold <i>bold-italic</i></b><i> italic</i>There are also non-contiguous examples. Smack in the middle of Wagner's Tristan und Isolde you hear the final theme that signals they are about to win the main boss battle. Then one of the NPCs screams right before the final chord. The audience instead hears the danger signal and realizes it was a fake boss and there's another two hours of game play. Only when Isolde beats the final boss at the end do we get the final chord.
A simple example is a slur. It crosses bar lines. <bar1> ... <slur> ... </bar1> ... </slur> <bar2> uhoh!
In fact there are many mutually incompatible hierarchies in music engraving.
It's funny though MusicXML is a popular interchange format, but internally looks nothing like what one would naively expect.