Commit 33613b6a authored by Fredrik Wieczerkowski's avatar Fredrik Wieczerkowski

Update build instructions

parent 6d0080c2
# Curry Frontend # Curry Frontend
The Curry frontend parses source files (`.curry`), emits errors and The Curry frontend parses source files (`.curry`), emits errors and
warnings, performs various checks and transformations 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 The project originated from a modified version of the
Münster-Curry-Compiler (MCC) for use as a frontend in PAKCS. Münster-Curry-Compiler (MCC) for use as a frontend in PAKCS.
## 1 Installation ## Requirements
### 1.1 Installation der Binary-Distribution
Die Binary-Distribution befindet sich in einem tar-Archiv und wird * `cabal-install`
durch folgendes Kommando entpackt: * A recent version of the `curry-base` package, installed locally
tar zxvf <Distribution>.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 <Distribution>.tar.gz To run the project, you can use
kann der Compiler durch Aufruf von 'make' im Verzeichnis 'mcc' installiert > cabal v1-run
werden. Bei Recompilierung (z.B. nach Änderungen in der Quelldateien)
wird empfohlen vor einer erneuten Installation 'make clean' auszuführen.
Nach erfolgreicher Installation befindet sich in beiden Fällen im Verzeichnis Alternatively, you can launch the built executable manually from `dist/build/curry-frontend`.
'mcc/bin/' folgende ausführbare Datei:
cymake - der Curry-Programm-Builder ## Usage
Dieses Tool übersetzt Curry-Programme unter Berücksichtigung der Import- For a detailed overview of the available options, you can use:
abhängigkeiten.
## 2 Kommandoübersicht > curry-frontend --help
In der folgenden Tabelle sind die Optionen zur Generierung der jeweiligen ### Available Formats
Darstellungen für das Kommando 'cymake' aufgelistet:
--flat : Erzeugt FlatCurry- und FlatInterface-Datei ```
--xml : Erzeugt FlatXML-Datei --flat : Generate a FlatCurry and FlatInterface file
--acy : Erzeugt (typinferierte) AbstractCurry-Datei --xml : Generate a FlatXML file
--uacy : Erzeugt ungetypte AbstractCurry-Datei --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 Die Übersetzung eines Curry-Programms 'file.curry', sowie sämtlicher
importierter Module nach FlatCurry bzw. FlatInterface, bewirkt folgendes importierter Module nach FlatCurry bzw. FlatInterface, bewirkt folgendes
...@@ -64,7 +60,7 @@ Kommando: ...@@ -64,7 +60,7 @@ Kommando:
Die hierdurch generierte Flat-XML-Datei hat die Endung '_flat.xml'. 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) Die Übersetzung eines Curry-Programms 'file.curry' nach (typgeprüftem)
AbstractCurry bewirkt folgendes Kommando: AbstractCurry bewirkt folgendes Kommando:
...@@ -93,7 +89,7 @@ entsprechenden Interfaces für die Typinferenz (nur im Fall der getypten ...@@ -93,7 +89,7 @@ entsprechenden Interfaces für die Typinferenz (nur im Fall der getypten
AbstractCurry-Generierung) und die statisch-semantische Analyse benötigt AbstractCurry-Generierung) und die statisch-semantische Analyse benötigt
werden. werden.
## 5 Anmerkungen ## Remarks
- Um die PAKCS-Bibliotheken (insbesondere die Prelude) für Übersetzungen - Um die PAKCS-Bibliotheken (insbesondere die Prelude) für Übersetzungen
nutzen zu können muß die Umgebungsvariable 'PAKCS_LIB' auf die nutzen zu können muß die Umgebungsvariable 'PAKCS_LIB' auf die
...@@ -110,7 +106,7 @@ werden. ...@@ -110,7 +106,7 @@ werden.
data T _ = C data T _ = C
## Bekannte Probleme ## Known Issues
- Lambda-, do-, if-, case-, oder let-Ausdrücke, die in Argumenten von - Lambda-, do-, if-, case-, oder let-Ausdrücke, die in Argumenten von
Funktionsaufrufen verwendet werden, müssen immer geklammert werden. Funktionsaufrufen verwendet werden, müssen immer geklammert werden.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment