Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/int-index/kalium
Translate Pascal into Haskell
https://github.com/int-index/kalium
Last synced: 2 months ago
JSON representation
Translate Pascal into Haskell
- Host: GitHub
- URL: https://github.com/int-index/kalium
- Owner: int-index
- License: bsd-3-clause
- Created: 2014-04-24T00:43:28.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2019-07-24T16:55:13.000Z (over 5 years ago)
- Last Synced: 2024-10-11T23:53:19.638Z (3 months ago)
- Language: Haskell
- Homepage: https://int-index.github.io/kalium/
- Size: 819 KB
- Stars: 51
- Watchers: 14
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kalium
[![Build status](https://secure.travis-ci.org/int-index/kalium.svg)](http://travis-ci.org/int-index/kalium)
This is a Pascal to Haskell translator. The ultimate goal is to generate
idiomatic functional code from imperative code. The project is under heavy
development, so nothing is documented.## Building
You need the following programs to build Kalium:
* ghc (7.10.2 or higher)
* cabal-install (1.22 or higher)
* happy (1.19.5 or higher)Download the source (using `git clone`) and issue the following commands in the
project root directory to initialize the building environment:* `cabal sandbox init`
* `cabal --require-sandbox install --dependencies-only --enable-tests`You can safely omit `--enable-tests` if you don't want to use the testing
system. If something goes wrong, you can always `cabal sandbox delete` and then
repeat the steps above. Now you can build the project itself with `cabal build`.## Testing
Run the regression tests with `cabal test`. Python 3.4 or higher is needed.
Tests are stored in `testing/tests/`, one per directory. Each test consists of a
Pascal source file `program.pas` and a scenario file `scenarios`. The latter is
simply a whitespace separated list of scenarios, against which the translated
program will be tested.Scenarios are stored in `testing/scenarios/`, one per file. Each scenario is a
script that takes the path to the translated program through `STDIN` and outputs
a message to `STDOUT` if something is wrong.## Structure
Kalium consists of a library that contains all the functionality and an
extremely small command-line tool. There are three parts of the library:* Front-end: `Kalium.Pascal`
* Core: `Kalium.Nucleus`
* Back-end: `Kalium.Haskell`The distinction between these parts is kept clear to allow front/back-ends for
other languages in the future. The command-line tool isn't ready for use yet,
and for now it's suitable for debug purposes only.## Contributing
Contact me if you feel adventurous and want to contribute. My email address can
be found in commits.