Skip to content

BASIC interpreter adhering to the ECMA-55 minimal BASIC standard.

License

Notifications You must be signed in to change notification settings

tim-day-387/dummyc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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!

About

BASIC interpreter adhering to the ECMA-55 minimal BASIC standard.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages