解析中にそれらを「スタック」に置く必要があります。開始タグがある場合はスタックにプッシュし、終了タグが発生した場合は逆の順序で削除します。close-tag <> open タグ タイプの場合はエラーです。
解析中に行を数え、不一致が発生した場合は、現在の行番号を出力します。改行をカウントして行番号をカウントします (Windows/Linux では 10 文字、Mac では 13 文字を使用)。
終了タグを比較する"/" + opening-tag
スタック (「力学」を示すための疑似表現):
Parser res Current stack
---------- -------------
Found TR -> TR
Found TD -> TR-TD
Found /TD -> TR (it matched last tag on stack)
Found TD -> TR-TD
Found /TD -> TR (it matched last tag on stack)
Found /TR -> (it matched last tag on stack - stack is empty, all ok)
Found TR -> TR
Found TD -> TR-TD
Found /TD -> TR (it matched last tag on stack)
Found TD -> TR-TD
Found /TD -> TR (it matched last tag on stack)
Found TR -> TR (mismatch! /+TR <> TR as expected), print error + line number