Metadata-Version: 2.0
Name: flang
Version: 0.0.0
Summary: A simple stack-based language for teaching programming concepts.
Home-page: https://gitlab.com/shakna-israel/flang
Author: James Milne
Author-email: james.milne@protonmail.com
License: MIT
Keywords: stack programming teach
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Education
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Education
Classifier: Programming Language :: Python :: 3

# 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] 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] Read-Eval-Print-Loop
- [X] Ability to execute a file
- [X] Comments. Can be nested.
- [ ] User functions.
- [ ] String Library for working with strings.

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.


