diff --git a/README.md b/README.md index 44dd9a6b887c2febde8fd20850a3f5237625ae17..80314334d6cb4cf0f866495d65b446a71bbd3143 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,47 @@ # Curry Frontend + The Curry frontend parses source files (`.curry`), emits errors and warnings, performs various checks and transformations and -generates FlatCurry (`.fcy`, `.fint`) or AbstractCurry (`.acy`, `.uacy`). +generates FlatCurry (`.fcy`, `.fint`) or AbstractCurry (`.acy`, `.uacy`) amonst other formats. The project originated from a modified version of the Münster-Curry-Compiler (MCC) for use as a frontend in PAKCS. -## 1 Installation - -### 1.1 Installation der Binary-Distribution +## Requirements -Die Binary-Distribution befindet sich in einem tar-Archiv und wird -durch folgendes Kommando entpackt: +* `cabal-install` +* A recent version of the `curry-base` package, installed locally - tar zxvf .tar.gz +## Building -Danach steht der Compiler im Verzeichnis 'mcc' zur Verfügung. +To build the project, run -### 1.2 Installation der Source-Distribution +> cabal v1-build -Nach dem Entpacken des tar-Archivs mittels +## Running - tar zxvf .tar.gz +To run the project, you can use -kann der Compiler durch Aufruf von 'make' im Verzeichnis 'mcc' installiert -werden. Bei Recompilierung (z.B. nach Änderungen in der Quelldateien) -wird empfohlen vor einer erneuten Installation 'make clean' auszuführen. +> cabal v1-run -Nach erfolgreicher Installation befindet sich in beiden Fällen im Verzeichnis -'mcc/bin/' folgende ausführbare Datei: +Alternatively, you can launch the built executable manually from `dist/build/curry-frontend`. - cymake - der Curry-Programm-Builder +## Usage -Dieses Tool übersetzt Curry-Programme unter Berücksichtigung der Import- -abhängigkeiten. +For a detailed overview of the available options, you can use: -## 2 Kommandoübersicht +> curry-frontend --help -In der folgenden Tabelle sind die Optionen zur Generierung der jeweiligen -Darstellungen für das Kommando 'cymake' aufgelistet: +### Available Formats - --flat : Erzeugt FlatCurry- und FlatInterface-Datei - --xml : Erzeugt FlatXML-Datei - --acy : Erzeugt (typinferierte) AbstractCurry-Datei - --uacy : Erzeugt ungetypte AbstractCurry-Datei +``` +--flat : Generate a FlatCurry and FlatInterface file +--xml : Generate a FlatXML file +--acy : Generate a (type-inferred) AbstractCurry file +--uacy : Generate an untyped AbstractCurry file +``` -## 3 Erzeugung von FlatCurry- und FlatXML-Programmen +#### Generation of FlatCurry and FlatXML files Die Übersetzung eines Curry-Programms 'file.curry', sowie sämtlicher importierter Module nach FlatCurry bzw. FlatInterface, bewirkt folgendes @@ -64,7 +60,7 @@ Kommando: Die hierdurch generierte Flat-XML-Datei hat die Endung '_flat.xml'. -## 4 Erzeugung von AbstractCurry-Programmen +#### Generation of AbstractCurry files Die Übersetzung eines Curry-Programms 'file.curry' nach (typgeprüftem) AbstractCurry bewirkt folgendes Kommando: @@ -93,7 +89,7 @@ entsprechenden Interfaces für die Typinferenz (nur im Fall der getypten AbstractCurry-Generierung) und die statisch-semantische Analyse benötigt werden. -## 5 Anmerkungen +## Remarks - Um die PAKCS-Bibliotheken (insbesondere die Prelude) für Übersetzungen nutzen zu können muß die Umgebungsvariable 'PAKCS_LIB' auf die @@ -110,7 +106,7 @@ werden. data T _ = C -## Bekannte Probleme +## Known Issues - Lambda-, do-, if-, case-, oder let-Ausdrücke, die in Argumenten von Funktionsaufrufen verwendet werden, müssen immer geklammert werden.