TEX2HTML
Эндрю только что завершил написание своей диссертации. Это была масштабная работа, и теперь он хочет получить отзывы от своих друзей. Эндрю считает, что лучший способ поделиться своей работой — это опубликовать её в своём блоге. Он написал диссертацию в формате TEX и теперь нуждается в её преобразовании в HTML. Пожалуйста, помогите Эндрю создать ключевую часть конвертера — преобразователь математических формул.
Формулы Эндрю всегда заключены в знаки доллара ($). Они содержат латинские буквы, цифры, скобки, пробелы, бинарные операторы (+-*/), а также верхние и нижние индексы. Все пробелы следует игнорировать.
Верхние индексы обозначаются с помощью символа каретки (^) и фигурных скобок ({}). Часть формулы внутри фигурных скобок является самим верхним индексом. Можно предположить, что за символом каретки следует только один непустой символ. Если верхний индекс состоит из одного символа, фигурные скобки могут быть опущены. Верхний индекс не будет следовать за другим верхним или нижним индексом. Например, a^2 означает a^2
, а 2^{2 + 2} означает 2^(2+2)
.
Нижние индексы обозначаются с помощью символа подчеркивания (_) и фигурных скобок ({}). Часть формулы внутри фигурных скобок является самим нижним индексом. Можно предположить, что за символом подчеркивания следует только один непустой символ. Если нижний индекс состоит из одного символа, фигурные скобки могут быть опущены. Нижний индекс не будет следовать за другим нижним или верхним индексом. Например, x _ i означает x[i]
, а P _ {n+1-i} означает P[n+1-i]
.
Ваша программа должна выводить результат в HTML-подобном формате, используя следующие правила. Каждая буква должна быть выделена курсивом с использованием открывающего тега < i > и закрывающего тега < /i >. Эти теги должны охватывать каждую максимальную последовательность букв (не забывайте игнорировать пробелы). Каждый бинарный оператор должен быть окружен неразрывными пробелами (& nbsp;). Верхние индексы должны быть заключены в теги < sup > и < /sup >. Нижние индексы должны быть заключены в теги < sub > и < /sub >.
Можно предположить, что ввод содержит корректную математическую формулу только с бинарными операторами.
Ввод
Содержит несколько тестов. Каждый тест — это строка с двумя знаками доллара и формулой между ними. На строке не будет лишних символов.
Вывод
Выведите HTML-версию каждой формулы на отдельной строке.