En partant d'un simple (le plus simple peut-être) compilateur C?

Je suis tombé sur ceci: L'écriture d'un compilateur à l'aide de Turbo Pascal

Je suis curieux de savoir si il existe des tutoriels ou des références expliquant comment créer un simple compilateur C. Je veux dire, c'est suffisant si il me met au niveau d'en faire comprendre les opérations arithmétiques. Je me suis vraiment curieux après la lecture de cet article par Ken Thompson. L'idée d'écrire quelque chose qui se comprend elle-même semble passionnant.

Pourquoi ai-je mis cette question au lieu de demander à Google? J'ai essayé Google et le Pascal était le premier lien. Le reste n'a pas de semblent pertinents et ajouté à ça... je ne suis pas un CS majeur (donc j'ai encore besoin d'apprendre ce que tous ces outils comme yacc faire) et je tiens à l'apprendre par le faire et je suis en espérant que les gens avec plus d'expérience, c'est toujours mieux à ces choses que Google. Je veux lire l'article écrit dans le même esprit que celui que j'ai énumérés ci-dessus, mais qui met en lumière au moins de la phase de phases de la construction d'un simple compilateur C.

Aussi, je ne sais pas la meilleure façon d'apprendre. Dois-je commencer la construction d'un compilateur C en C ou en une autre langue? Dois-je écrire un compilateur C ou une autre langue? Je sens ce genre de questions sont mieux répondu une fois, j'ai quelques pistes à explorer. Des suggestions?

Des suggestions?

  • bien d'essayer de créer un C (et même un sous-ensemble) de compilateur avec le débutant drapeau est un peu surprenant. Vous devriez d'abord essayer à quelque chose de plus simple en premier.
  • La rédaction de votre propre compilateur peut être beaucoup de plaisir. Mais songez que le CS degré premier. Faut avoir les armes pour tuer le dragon.
  • Débutant dans le domaine des compilateurs 🙂 Avez quelques années d'expérience de la programmation en tant que tel... mais tout le temps que j'ai été faire les choses sans savoir comment ils ont fait "travailler". @nobugz: Son sur ma liste 🙂 Juste que rien de vraiment m'empêche de le faire sur mon propre premier.
  • L'canonique compilateur références question est stackoverflow.com/questions/1669/learning-to-write-a-compiler . BTW, je suis un grand fan de la Crenshaw compilateur comme une première introduction. Il n'est pas un problème pour traduire pascal en c, donc sentez-vous libre de le travailler. Si vous allez coller avec les compilateurs vous aurez envie d'une référence plus complète très bientôt, cependant.
  • Oui on dirait que je vais commencer par Crenshaw d'abord, puis reportez-vous à la bête lien ici DONC..
  • Vous n'avez pas besoin d'un CS mesure, afin d'être capable de programmeur. Je ne dis pas que les classes ne pas aider à bien 😉
  • Une fois, j'ai écrit un guide (en Python) pour la visualisation de votre arbre d'analyse et de génération d'instructions (un compilateur cours de conception dans lequel nous étions en train de créer une langue qui était un tout petit sous-ensemble de C, mais la boîte à outils n'est pas limitée à ce minilanguage en quelque sorte). Téléchargé sur le site de sourceforge sous le nom de DTCT (Duff Jouet Compilateur Outils). Je suis sûr qu'ils ont pris vers le bas après plusieurs années d'inactivité (c'est presque une dizaine d'années maintenant), mais pourrait être disponible quelque part.
  • Voir aussi mon SmallerC, qui n'est pas Petit C, mais similaires dans leur esprit.
  • Cela fait partie de la Imagistedu répondre. Parsers and compilers are two separate problems. For example I might write a compiler in C, but I would never write a parser in C (I would use a parser generator). For very simple parsers where speed isn't a high priority, I might hand-code the parser in Perl or Python, which have good text-manipulation facilities.

InformationsquelleAutor Legend | 2010-02-28