Skip to main content

A simple stack-based language for teaching programming concepts.

Project description

# Flang

A stack-based programming language for teaching basic concepts.

Flang is an overly-simple programming language.

It’s intended for teaching, but isn’t quite complete yet.

For now, this is the feature list.

  • [X] Number type: Int
  • [X] Number type: Float
  • [ ] Number type: Rational
  • [X] Function type
  • [X] String type (UTF-8)
  • [X] Human-readable error messages, designed for beginners.
  • [-] As much parse-time safety as is possible.
  • [ ] Loops? (This may not happen, as we can push functions to the stack)
  • [ ] Conditionals
  • [ ] Swap function, to rearrange the stack
  • [ ] Slice function, to more easily rearrange large parts of the stack
  • [X] Print function, including using special characters inside strings
  • [X] Print/literal function, not including using special characters inside strings
  • [X] Print/stack function, for displaying the stack
  • [X] Exit function
  • [X] Reset function, to set the stack back to nothing
  • [X] Reverse function, to rearrange the stack
  • [X] Push function, for placing typed objects on the stack
  • [X] Add function, for mathematics or combining strings
  • [X] Take function, for mathematics
  • [X] Times function, for mathematics
  • [X] Divide function, for mathematics
  • [X] Pop function, for executing functions on the stack
  • [X] Peek function, for executing functions on the stack
  • [X] Drop function, for not executing functions on the stack
  • [X] Read-Eval-Print-Loop
  • [X] Ability to execute a file
  • [X] Comments. Can be nested.
  • [ ] User functions.
  • [ ] String Library for working with strings.
  • [ ] Help function
  • [ ] Interactive Tutorial function
  • [ ] Documentation

## Decisions to make:

  • [ ] Case insensitivity. Should Flang be case-sensitive or not?
  • [X] Indexing. Flang will be 1-indexed, to make new adoption easier.
  • [ ] User Functions. What kind of shape should these take? How could they be written?
  • [ ] Hash Table Type. Do we need it? How would it be used?
  • [ ] Mini-Stack Type. Do we need it? How would it be used? (Think Linked-List)
  • [ ] A library of tools for strings is needed. But, it needs to be defined.
  • [ ] Semantic Versioning. What API will be covered by semver?

## Install

Don’t.

This is alpha-software, and breaking is going to happen a lot.

The documentation that is vitally needed, isn’t anywhere near ready for the public.

Right… So, if you’re insisting on ignoring all that:

The latest release can be installed via pip:

pip install flang

Or, you can install from the git repository to get all the very latest changes:

git clone https://gitlab.com/shakna-israel/flang.git cd flang python3 setup.py install

## Usage

You can explore Flang in two ways:

If you have a file filled with Flang commands:

flang filename

Or, you can enter the interactive Read-Evaluate-Print Loop:

flang repl

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for flang, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size flang-0.1.1-py3-none-any.whl (7.3 kB) File type Wheel Python version py3 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page