disclaimer требования к заданию описаны не полностью и должны уточняться по ходу работы (git pull request, комментарии к коммитам, тестам и т.п.)
40 баллов
LaTeX - продвинутая система компьютерной верстки текста, основанная на TeX
Задача
- Реализовать парсер ограниченного подмножества языка (набора команд) LaTeX
- Реализовать визитор по синтаксическому дереву, который бы выводил исходный документ в формате Markdown (том же, на котором написана эта вики)
Набросок грамматики языка:
document -> documentclass title author date document_body
documentclass -> article | paper
document_body -> begin text end
text -> plain_text | text command text | eps
command -> textbf | it | section | subsection | itemise
it -> \it{text}
section -> \section{plain_text}
subsection -> \subsection{plain_text}
itemize -> begin_itemize items end_itemize
Пример:
\documentclass{article}
\title{Cartesian closed categories and the price of eggs}
\author{Jane Doe}
\date{September 1994}
\begin{document}
\maketitle
\it{Hello} \textbf{world}!
\begin{itemize}
\item one
\item two
\end{itemize}
\end{document}
это нужно преобразовать в:
# Cartesian closed categories and the price of eggs #
by Jane Doe
September 1994
***
_Hello_ **world**!
- one
- two
что превращается в:
Cartesian closed categories and the price of eggs
by Jane Doe
September 1994
Hello world!
- one
- two