2010-09-28 34 views
4

Je cherche à développer un analyseur TEX, maintenant le problème est qu'il n'y a pas de Grammaire Contextuelle et il n'y en a pas, parce que ce n'est pas un langage sans contexte, j'ai entendu dire que c'est une sorte de langage macro . Donc maintenant j'ai besoin de direction de quel genre de grammaire a ce langage macro et comment construire quoi que ce soit sur in C#. Je vais écrire le tokenizer et l'analyseur, mais j'ai besoin de quelques règles de macro dans TEX qui sont assez difficiles à trouver, partout ailleurs il y a de la documentation sur l'utilisation des macros TEX.comment créer un analyseur pour TEX?

+2

Voulez-vous dire ["TeX"] (http://en.wikipedia.org/wiki/TeX)? Si vous le faites, le code source est disponible pour traduction. De plus, le code est complètement documenté par le volume B de [Ordinateurs et composition] (http://en.wikipedia.org/wiki/Computers_and_Typesetting). – Richard

Répondre

7

TeX en tant que langage de programmation est peut-être le langage le plus complexe (non ésotérique) jamais créé avec une énorme quantité de "mots réservés". Vous pouvez remapper la signification de chaque caractère tel qu'il est lu par le processeur et, en général, faire des choses que vous ne rencontrez pas normalement lors de l'analyse d'une langue.

Si vous voulez vraiment créer votre propre analyseur TeX, vous devrez construire sur le TeX original. Le code source est non seulement disponible, mais il est écrit comme literate program en utilisant l'outil WEB ingénieux de Knuth. Pour compliquer encore plus les choses, vous utilisez toujours un paquet de macros avec TeX. Le paquet par défaut est Plain et le plus connu est LaTeX. Le paquet de macros contient une quantité non-triviale de code que vous devrez incorporer pour être capable d'analyser le "dialecte" particulier de TeX que vous voulez analyser.

+0

Merci, c'est assez compliqué pour moi de comprendre mais je vais essayer, je veux juste un peu de TeX à implémenter, comme écrire du texte riche en italique gras et des symboles etc. Tout comme le wiki par rapport au HTML, je préfère TeX car cela peut très bien représenter les mathématiques. –

3

Cela dépend de la quantité de TeX que vous souhaitez implémenter. LaTeX2HTML est un projet Perl qui convertit LaTex en HTML. Il y a aussi MathJax qui convertit les maths TeX en HTML ou en MathML. Si vous voulez voir comment certains programmes non-TeX analysent TeX, regardez-les.

+0

Je ne m'intéresse qu'aux équations mathématiques, mais je n'ai pas de grammaire complète pour implémenter une par exemple x^2 est carré de x, où else (x + 2)^2 est carré de x + 2, mais x^24 est la 24ème puissance de x, où autrement x^2 4 est séparé par un espace qui fait de x^2 et 4 des expressions séparées. Donc, je n'ai pas de règles concrètes sur ce que tout à utiliser comme des jetons et des expressions. –