In this problem, you are asked to determine if a given document satisfies the syntax of an XML-like language.
A simple XML-like document can be parsed as a sequence of the following:
1. Plain text---ASCII codes between 32 and 127 (inclusive), with none of the following symbols: <, >, &
2. The sequences:
* <
* >
* &
These encode a <, >, or & respectively.
3. &xHEX; HEX must be any even (positive) number of upper or lower case hexadecimal digits, and this represents the bytes given.
4. <tag> Tag can be any lowercase alphanumeric string. This tag is pushed onto the context stack.
5. <tag/> This tag is not pushed onto the context stack (there is no closing context).
6. </tag> This tag removes the <tag> context from the stack, which must be topmost on the stack.
By the time the entire document is parsed, the context stack is empty for a valid document. We should also note that the empty string is considered valid.