Case-insensitive PUSH / PEEK / POP
For certain grammars, it would be helpful if PUSH(), PEEK, and POP all had case-insensitive variants. The HTML grammar used by the html_parser crate is one example; it does not properly parse sequences such as <BODY></body> and there is no "easy" fix -- this is partially a side-effect of the grammar being written to accept arbitrary tags (rather than limiting to only the well-defined HTML tags such as), so it does not explicitly list all of the valid tag tokens. Instead, it uses PUSH() and POP to find matching opening / closing tags.
I'm sure there are other cases where this would be handy. It doesn't look like a major effort either, as there is already a case-insensitive comparison method Position::match_insensitive() that could be used in place of the existing Position::match_string()
Would you want case-insensitive variants for all the functions, or would it be enough to just have it on PUSH? If just having it on PUSH is enough, that'd be a smaller footprint in terms of the grammar rules people have to learn: otherwise we'd need variants of PEEK, PEEK_ALL, POP, and POP_ALL -- which isn't a ton, but not nothing.
Basically, I'm wondering if it'd be enough to have PUSH_I that semantically pushes a case-insensitive string; have the insensitivity be an attribute of the string being matched, not on the rule that matches it.