> пока не найду закрывающий таг, а если не найду надо вернуть этот токен ([tag) как простой текст, и парсить дальше с этого места, но ведь позиция уже будет в самом конце.
Восстановление при ошибках — сложный момент, из-за которого приходится отходить от стройной и красивой схемы. Можно сначала сделать без него.
В твоем случае, можно в функции парсинга сохранять начальную позицию:
> пока не найду закрывающий таг, а если не найду надо вернуть этот токен ([tag) как простой текст, и парсить дальше с этого места, но ведь позиция уже будет в самом конце.
Восстановление при ошибках — сложный момент, из-за которого приходится отходить от стройной и красивой схемы. Можно сначала сделать без него.
В твоем случае, можно в функции парсинга сохранять начальную позицию:
парситьПарныйТег() {
запомнить текущую позицию();
.....
если (что-то не так) {
получитьТокеныОтНачальнойДоТекущейПозиции();
создать и вернуть текствоый узел;
}
....
}
Но ты можешь для начала без этого сделать.