2010-09-28 2 views
4

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

Так что теперь мне нужно руководство какой грамматикой этот макроязык и как построить что-нибудь на C#.

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

+2

Вы имеете в виду ["TeX"] (http://en.wikipedia.org/wiki/TeX)? Если да, то исходный код доступен для перевода. Кроме того, код полностью документирован томом B [Компьютеры и набор шрифтов] (http://en.wikipedia.org/wiki/Computers_and_Typesetting). – Richard

ответ

7

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

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

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

+0

Спасибо, ну его довольно сложно понять, но я попробую, я просто хочу, чтобы небольшое количество TeX было реализовано, например, написание небольшого насыщенного текста жирным курсивом и символами и т. Д. Так же, как wiki по сравнению с html, я предпочитаю TeX, потому что он может представлять математику очень хорошо. –

3

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

+0

Меня интересуют только математические уравнения, но я не получаю полную грамматику, чтобы реализовать ее, например, x^2 является квадратом x, где else (x + 2)^2 является квадратом x + 2, но x^24 является 24-й степенью x, где else x^2 4 разделяется пространством, которое делает x^2 и 4 в виде отдельных выражений. Поэтому у меня нет конкретных правил того, что все использовать в качестве токенов и выражений. –

Смежные вопросы