2010-07-14 6 views
0

J'essaye de concevoir un compilateur pour un langage comme C# dans ANTLR. Mais je ne comprends pas parfaitement le bon ordre des étapes à suivre.ANTLR, ordre des étapes

Voilà comment je vois:

  • D'abord, je définis les jetons Lexer
  • ensuite les règles de grammaire (avec des règles de réécriture pour construire AST) avec des actions qui rassemblent des informations sur les déclarations de classes et méthodes (pour que je peut résoudre les invocations de méthode à l'étape suivante)
  • Enfin, je crée une "grammaire arborescente" qui traverse l'arborescence AST et appelle des règles qui génèrent les opcodes du langage machine (virtuel).

Est-ce correct? La deuxième étape consiste-t-elle à lire les déclarations des méthodes et à construire AST?

Comment puis-je résoudre les déclarations de méthodes surchargées sans construction AST? (backpatching?)

Répondre

2

Jetez un oeil à Language Implementation Patterns il explique comment créer vos propres langues (à la fois interprété et octet-code/VM-like). En ce moment, vos questions sont trop larges, et je ne pense pas que quiconque puisse poster une réponse dans un forum qui explique tous les détails de la façon de créer votre propre langue du début à la fin.

N'hésitez pas à poser des questions plus précises quand vous les avez, bien sûr.

Bonne chance!