Skip to content

ar9v/lonnrot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lonnrot

report/lonnrot-logo.png

Lonnrot is a Racket implementation of a subset of Scheme for Linux. It follows, among many tutorials and references, CMSC 430 (Design and Implementation of Programming Languages), Abdulaziz Ghuloum’s writings on incremental compiler construction and Kent Dybvig’s ideas on the same topic.

Installation

Dependencies

Make sure to have gcc and nasm. Likewise, you should have Racket installed with megaparsack and a86:

raco pkg install 'https://github.com/cmsc430/www.git?path=langs#main'
raco pkg install megaparsack

Install script

Once you have met the required dependencies, clone the repository and run ./install.sh.

git clone https://github.com/argvniyx/lonnrot.git
cd lonnrot && ./install.sh

./install.sh will simply probe for ~/bin and will make a symlink to the CLI tool compass found in the src/cli directory. You can run compass without arguments to check its usage, but it basically is a utility to compile or interpret Lonnrot Scheme programs.

If ~/bin does not exist, the script will try to symlink in /usr/bin/ by using sudo. You can either C-c and create ~/bin or write your password. A bit rough on the edges, but it gets the job done.

Contents

  • Sources, in src/, are Racket files that contain the implementation of Lonnrot.
  • Tests, in test/, which are simply Lonnrot programs that demonstrate features.
  • A written report, in report/, which is a \LaTeX{} document, a bibliography file and its output pdf. This will be updated over the course of the semester. Acknowledgements and citations are found in this report.