Coder Social home page Coder Social logo

dummyc's Introduction

Dummy Interpreter

linux_build windows_build macos_build

About

The Dummy interpreter is a BASIC interpreter written entirely in Rust which is intended to adhere to the ECMA-55 minimal BASIC standard. The goal is to completely implement the standard using simple, elegant code, and hopefully learn a lot about programming languages along the way!

The interpreter diverges from the standard in a few ways. Any divergence from the standard is an addition, not a subtraction. The ECMA standard is the baseline. One notable improvement is the addition of functions in seperate files. The std folder has several examples of this.

Installation and Usage

Scripts are provided to ease the installation process. For Debian, clone the repository and run:

./scripts/debian_package --install

Otherwise, clone the repository and run:

cargo build

The compiler manual pages (once the package is installed) can be seen via the command:

man dummyc

Workflows

Currently, three workflows are run each time code is pushed to the repository. These workflows build and test the interpreter on different platforms. The interpreter is intended to be multiplatform.

While the interpreter supports non-free platforms (such as Windows and MacOS), this is only to provide users of those platforms exposure to free software. Please consider using a platform which respects your freedom, such as GNU/Linux. For more information, see the GNU website.

References and Acknowledgements

John Gatewood Ham's ECMA-55 BASIC compiler provided a source of inspiration (and tests cases).

The Free Software Foundation provided the license, the GNU GPL v3.

John G. Kemeny and Thomas E. Kurtz invented BASIC at Dartmouth College.

Notes

The project originated as a BASIC to Rust transpiler. The last version of the transpiler can be found in the transpiler branch. Most of the transpiler code was reused in the interpreter before being ultimately refactored. A feature is planned that would allow the embedding of a BASIC program in a reduced version of the interpreter. Although the methodology is different, the end result is similar: a Rust program which is equivalent in function to a BASIC program.

Roadmap

The following is a tentative roadmap:

  • Finish implementing the ECMA-55 standard
  • Pass the complete NBS and HAM test cases
  • Implement packaging script for each major platform
  • Run the 101 BASIC Computer Games

The package will only progress to version 1.0.0 once regressions in functionality can be prevented with sufficient test cases.

Contribution

If you use the interpreter and notice bugs or issues, feel free to submit an issue in the issues tab.

Disclaimer

This project is a work in progress and subject to change!

dummyc's People

Contributors

tim-day-387 avatar

Stargazers

 avatar  avatar Backwoods Bob avatar

Watchers

 avatar

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.