как создать парсер для TEX? - PullRequest
4 голосов
/ 28 сентября 2010

Я хочу разработать синтаксический анализатор TEX, теперь проблема в том, что нет контекстно-свободной грамматики, и не может быть таковой, потому что это неконтекстно-свободный язык, я слышал, что это своего рода макроязык и который основан на его владеть.

Так что теперь мне нужно указать, какую грамматику имеет этот макроязык и как строить что-либо в c #.

Я напишу токенизатор и парсер, но мне нужны некоторые правила макросов в TEX, которые довольно сложно найти, везде есть документация по использованию макросов TEX.

Ответы [ 2 ]

7 голосов
/ 28 сентября 2010

TeX как язык программирования, пожалуй, самый сложный (неэзотерический) язык, когда-либо созданный с огромным количеством «зарезервированных слов».Вы можете переназначить значение каждого символа в том виде, в котором он читается процессором, и вообще делать то, с чем вы обычно не сталкиваетесь при синтаксическом анализе языка.

Если вы действительно хотите создать свой собственный анализатор TeX, у вас будетпостроить на оригинальном TeX.Исходный код не только доступен, но он написан как грамотная программа с использованием оригинального WEB-инструмента Кнута.

Чтобы еще больше усложнить ситуацию, вы всегда используете макропакет с TeX.Пакетом по умолчанию является Plain, а наиболее известным является LaTeX.Пакет макросов содержит нетривиальный объем кода, который вы должны будете включить, чтобы иметь возможность анализировать определенный «диалект» TeX, который вы хотите анализировать.

3 голосов
/ 14 января 2011

Это зависит от того, сколько TeX вы на самом деле хотите реализовать. LaTeX2HTML - это проект на Perl, который конвертирует LaTex в HTML.Также есть MathJax , который конвертирует математику TeX в HTML или MathML.Если вы хотите увидеть, как некоторые не-TeX программы анализируют TeX, посмотрите на них.

...