Giter Site home page Giter Site logo

cisp's Introduction

Cisp

A Common Lisp Interpreter Built in COBOL.

Overview

Purpose

This is a small project built by a student at the Recurse Center to express a love for COBOL and better understand it.

Due to COBOL's lack of functions and recursion, the recursion required for Lisp is built from the ground up using file processing. Also, due to the lack of a widely supported debugger, a system logger was also implemented.

Compatibility

Please note that Cisp is currently only actively developed for Windows. *Nix users may experience issues.

Functionality

All features are currently in development. This is a list of what is to come.

  • Representation of Symbols and Numbers Ongoing Development
  • Basic Arithmetic Ongoing Development
  • Flow-Control Statements Not Currently in Development
  • Lists Not Currently in Development

Notes

The README much like the entire project is in current development.

Running Cisp

Hello World

  1. Make a subdirectory for your lisp file.
mkdir test\helloworld
  1. Create a new file helloworld.lisp in your subdirectory containing the following:
(print "HelloWorld!")
  1. To run Cisp cd into the bin (Note that you must cd in)
cd bin
  1. Run Cisp
cisp.exe ..\test\helloworld\helloworld.lisp

Project Structure

Currently the COBOL source files are located in the root directory.

Directories

  • bin - Contains all necessary *.dll's (windows users) for those who want to play with CISP without changing the code. This is due to the fact that so few people have COBOL compilers.
  • logs - Contains the log file generated by the system.
  • test - Contains all test files organized by subject.

COBOL Files

  • cisp.cbl - The main COBOL program.
  • cisp-error.cbl - The Error System in the program. It will "throw" errors when called.
  • lisp.cbl - Responsible for executing the lisp program.
  • logger.cbl - The Logging System in the program. It will log events in the system when called.
  • recursion.cbl - Handles recursion as requested from lisp.cbl.
  • tokenizer.cbl - Responsible for tokenizing the lisp file given to execute.

Compiling

The easiest way I have found to compile COBOL is GNU's COBOL compilier. For those who prefer IDE's I have found Open COBOL IDE to be very helpful.

Running Tests

Windows

To run all tests in the project, double click bin\cisp.bat

To run a single test: cd bin

cisp.exe ..\test\test_subdirectory\test_name.lisp

Create your own Lisp Files for Testing

  1. Create a directory in test\ to create another test category.
  2. In your subdirectory create a lisp file.
  3. cd bin
  4. cisp.exe ..\test\test_subdirectory\test_name.lisp

Linux

Instructions yet to come. The author is a window's user, and *nix systems are not currently supported.

A high level overview is to compile the project and run the executable in the bin folder.

Developing Cisp

How Cisp Works

Log to Log File

Coming soon.

Throw an Error

Coming soon.

cisp's People

Contributors

lauryndbrown avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cisp's Issues

code docs! :)

Hey! We are generating a product to automate the generation of docs. We want to contribute to the community, this is the first iteration of the product and would love to receive feedback as to what could be enhanced to make them valuable for the community.

I’ve generated this docs for the repo.

They are generated with AI so it will always be up to date and a Changelog is fed with changes.

Motivation
contribute to the community!

We have a LinkedIn page here :) We recently made a post about your repo!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.