Git Product home page Git Product logo

basic-interpreter's Introduction

A simplified BASIC interpreter for your terminal!

To run:

$ git submodule update --init # see Project Structure
$ make
$ ./bin/interpreter.bin

Once the program is running, enter "HELP" to see a help function.

The following BASIC keywords are supported: REM LET PRINT INPUT GOTO IF END

Project Structure

This project includes one submodule (CSON), a simple string-string hashmap I implemented to keep track of variable values during interpretation.

The important files are as follows:

interpreter.c reads user input and handles top-level commands (RUN, LIST, CLEAR, HELP, AND QUIT).

scanner/scanner.c is called when the RUN command is entered. It scans the program as entered into tokens of four possible types: o (operand: +, -, *, /), k (keyword: listed above), n (number), v (variable name). It then returns all these tokens as an array. Note that tokens are essentially just strings with an assigned type.

parser/parser.c is called next. It parses an array of tokens into an array of statements. Note that statements store the following information: the type of statement (basically, what keyword is being called - REM, LET, PRINT, INPUT, GOTO, IF, or END) and the corresponding arguments.

parser/evals.c is called next. It evaluates an array of statements and is responsible for actually "running" the program. Not that this file calls CSON/hashmapLite.c, which is the aforementioned string-string hashmap.

basic-interpreter's People

Contributors

g10ria 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.