2008-09-15 11 views
3

Ich entwickle ein Compiler-Framework für .NET und möchte eine flexible Möglichkeit zur Definition von Pipelines. Ich habe die folgenden Optionen in Betracht gezogen:Flexible Compiler-Pipeline-Definitionen

  • WWF
  • Benutzerdefinierte XML Pipeline Beschreibung
  • Individuelle Pipeline Beschreibung in Code (Nemerle der Makros mit Syntax für sie definieren)
  • Weitere Code-basierte Beschreibung

Anforderungen:

  • Nur in den späteren Versionen von .NET (3+) darf die Funktionalität nicht von der Funktionalität abhängen, da sie plattformübergreifend ist und zusätzlich zu verwalteten Kerneln verwendet werden soll, was eine eingeschränkte .NET-Funktionalität bedeutet.
  • Muss die konditionelle Erstellung von Pipelines zulassen, sodass Sie festlegen können, dass bestimmte Befehlszeilenoptionen bestimmten Elementen und Aufträgen entsprechen.

WWF wäre nett, aber erfüllt nicht die erste Anforderung. Die anderen würden funktionieren, sind aber aufgrund der damit verbundenen Arbeit nicht optimal.

Kennt jemand eine Lösung, die diese Ziele mit wenig oder gar keiner Änderung erreicht?

Antwort

1

Wenn Sie Ruby dann wissen, ist eine Lösung, eine einfache interne DSL zu schreiben, die alle Pipeline-Datentypen und Leser/Schreiber-Code, den Sie benötigen, generieren kann. Das Generieren von XML ist ein schneller Weg, um loszulegen. Sie können die DSL jederzeit ändern, um später bei Bedarf ein anderes Format zu generieren.

Sie können auch das Projekt Microsoft Phoenix compiler zur Inspiration betrachten.

+0

Dies ähnelt der Verwendung von Nemerle-Makros, um die Syntax für solche Pipelines zu definieren, außer dass die Makros alles zur Kompilierungszeit übersetzen würden. Aus Usability-Sicht ist das eine nette Lösung, aber es erfordert viel Arbeit, um es zusammenzusetzen. –

0

Ich weiß, Boo lassen Sie Spaß mit dem Compiler, nicht sicher, ob es in der Art und Weise Sie wollen.