2009-12-17 15 views

Répondre

3

La norme Stack ressources pour dépassement de capacité d'apprendre à écrire des compilateurs et des interprètes est Learning to write a compiler

2

Pas différent de toute autre langue, vraiment. La différence entre les langues interprétées et compilées est principalement dans le backend, pas dans le frontend. Les langues spécifiques peuvent avoir des exigences d'analyse spécifiques, mais vous ne pouvez pas faire de comparaison significative dans les technologies d'analyse syntaxique entre les deux classes de langues.

1

Vous ne répertorie pas une exigence de langue pour votre analyseur, donc si C ou C++ est une possibilité, vous devriez commencer par regarder yacc:

Yacc génère un analyseur C pour votre syntaxe spécifique. Commencer avec cela pourrait être un peu plus de travail, mais une fois que vous avez commencé à rouler, il devrait être plus facile à maintenir. Clause de non-responsabilité: J'ai seulement utilisé yacc dans un projet et il y a 10+ ans, donc votre kilométrage peut varier.

+1

O'Reilly vient de publier un livre sur flex et bison, les équivalents GNU pour lex et yacc (ISBN 978-0596155971). Flex et bison sont beaucoup plus faciles à gérer que lex et yacc. –

3

Voici quelques explications sur abstract syntax trees (AST) du projet LLVM.

Teaser:

L'AST pour un programme capture son comportement de telle sorte qu'il est facile pour les étapes ultérieures du compilateur (par exemple de génération de code) à interpréter. Nous voulons fondamentalement un objet pour chaque construction dans la langue, et l'AST devrait modeler étroitement la langue.