OOLANG - an esoteric stack-based programming language where all instructions/commands are differnet unicode O characters

Overview

OOLANG

GitHub Workflow Status (branch) GitHub Crates.io Crates.io

OOLANG is an esoteric stack-based programming language where all instructions/commands are differnet unicode O characters

Usage

We have a custom Web IDE at https://oolang.tech, for experimenting in the browser.

oorun, a command line runner, is available on crates.io, and can be installed with Cargo:

cargo install oolang

OOLANG files end in .oo, and consist of a number of commands specified each by a single unicode glyph. Any other character is ignored. Comments are supported using the # character, which comments out up to the end of the line.

oorun file.oo will execute your OOLANG program. stdin functionality is currently broken as of the latest release, but output will be written to stdout.

Language Specification

OOLANG emulates a stack machine, not dissimilar to how the JVM or Python's bytecode interpreter works.

The virtual machine consists of a stack of bytes, and 256 bytes of addressable memory. A valid OOLANG program may consist of any combination of the the following 10 commands:

Command Unicode Character Name Command Name Description
O Latin Capital Letter O PUSH Push the value 1 onto the top of the stack
0 Digit Zero POP Pop the value from the top of the stack, discarding it
Ǿ Latin Capital Letter O with Stroke and Acute INC Pop the top stack value, increment it, push the result
Cherokee Letter Wi DEC Pop the top stack value, decrement it, push the result
Heavy Large Circle ADD Pop the top two stack values, add them, push the result
𐍉 Gothic Letter Othal JNZ Jump to the address at the top of the stack, if the 2nd-top value is non-zero
Latin Capital Letter O with Loop JZ Jump to the address at the top of the stack, if the 2nd-top value is zero
Bullseye LOAD Pop from the stack, and push the value at the memory address specified
Large Circle STORE Pop the top two values from the stack, storing the 2nd at the address specified by the 1st
Parenthesized Latin Small Letter O READ Read the next byte from stdin, pushing it to the top of the stack, or 0 if stdin is empty
Latin Subscript Small Letter O WRITE Pop from the stack and write the value to stdin as an ascii character

Architecture

The language and interpreter are written in Rust. The compiled binary executable acts as a command line program, but the interpreter crate also exposes a public API. When compiled to webassembly, this API is used to provide functionality for the Web IDE within the browser.

You might also like...
📱️🚫️🌝️💾️ 3FakeIM is a joke program meant to imitate various fictional characters, and the
📱️🚫️🌝️💾️ 3FakeIM is a joke program meant to imitate various fictional characters, and the "[CHARACTER] CALLED ME AT 3:00 AM" clickbait trend, while poking fun.

3FakeIM 📱️🚫️🌝️💾️ 3FakeIM is a joke program meant to imitate various fictional characters, and the "[CHARACTER] CALLED ME AT 3:00 AM" clickbait tre

Rust Programming Fundamentals - one course to rule them all, one course to find them...

Ultimate Rust Crash Course This is the companion repository for the Ultimate Rust Crash Course published online, presented live at O'Reilly virtual ev

An MVP stack based bytecode VM

TinyVM An MVP stack-based bytecode VM This VM runs a simplistic, Turing complete instruction set. In ~250 LOC with extensive comments, it's meant to b

A repository for showcasing my knowledge of the Rust programming language, and continuing to learn the language.

Learning Rust I started learning the Rust programming language before using GitHub, but increased its usage afterwards. I have found it to be a fast a

Nyah is a programming language runtime built for high performance and comes with a scripting language.

🐱 Nyah ( Unfinished ) Nyah is a programming language runtime built for high performance and comes with a scripting language. 🎖️ Status Nyah is not c

A simplistic functional programming language based around Lisp syntax.

Orchid A simplistic functional programming language based around Lisp syntax. Short taste # function to return the larger list (fn larger-list (as bs)

TUI (Text User Interface) - Get Instant feedback for your sh commands
TUI (Text User Interface) - Get Instant feedback for your sh commands

Bashtastic Visualizer TUI (Text User Interface) - Get Instant feedback for your sh commands. Explore and play with your queries 🚀. The idea of this p

Stack heap flexible string designed to improve performance for Rust

flexible-string A stack heap flexible string designed to improve performance. FlexibleString was first implemented in spdlog-rs crate, which improved

How to be a full stack Rust Developer
How to be a full stack Rust Developer

How to be a full stack Rust Developer Read Rust API guideline. Test code here and refer to the Rust blog posts at Steadylearner. If you need or know s

Releases(v0.1.1)
Owner
RNM Enterprises
A local Leamington Spa-based startup specialising in really dumb shit. Send all business enquiries to /dev/null.
RNM Enterprises
A stack based interpreted programming language.

Nightmare Nightmare is a dynamically-typed, procedural programming language that aims to be fast & simple. let user = input() as Int; print("You were

&potato 4 Nov 12, 2021
Stack-based programming language which emulates the look and feel of the 60s

Cauchemar Cauchemar is a stack-based programming language inspired by FORTH but more arcane. Emulates the look and feel of a programming language from

Yuki Langley 4 Dec 29, 2022
HackWasm Workshop Starter, Checkpoints and Instructions

Osmosis Swaprouter Worskhop This is a workshop for building an Osmosis Swap Router CosmWasm contract. The original contract repository is located here

Roman 6 Oct 3, 2022
The Devils' Programming Language (Quantum Programming Language)

devilslang has roots in Scheme and ML-flavored languages: it's the culmination of everything I expect from a programming language, including the desire to keep everything as minimalistic and concise as possible. At its core, devilslang is lambda-calculus with pattern-matching, structural types, fiber-based concurrency, and syntactic extension.

Devils' Language 2 Aug 26, 2022
Like wc, but unicode-aware, and with per-line mode

Like wc, but unicode-aware, and with per-line mode

Skyler Hawthorne 34 May 24, 2022
UNIC: Unicode and Internationalization Crates for Rust

UNIC: Unicode and Internationalization Crates for Rust https://github.com/open-i18n/rust-unic UNIC is a project to develop components for the Rust pro

open-i18n — Open Internationalization Initiative 219 Nov 12, 2022
A crate for converting an ASCII text string or file to a single unicode character

A crate for converting an ASCII text string or file to a single unicode character. Also provides a macro to embed encoded source code into a Rust source file. Can also do the same to Python code while still letting the code run as before by wrapping it in a decoder.

Johanna Sörngård 17 Dec 31, 2022
Determine the Unicode class of a mathematical character in Rust.

unicode-math-class Determine the Unicode class of a mathematical character in Rust. Example use unicode_math_class::{class, MathClass}; assert_eq!(cl

Typst 3 Jan 10, 2023
A stack based, virtual machine language written in Rust

Stackyy A stack based, virtual machine language written in Rust Description: Stackyy is a stack based, virtual machine language inspired by Forth and

FlawlessCode 2 May 2, 2022
lelang programming language is a toy language based on LLVM.

lelang leang是一门使用Rust编写,基于LLVM(inkwell llvm safe binding library)实现的编程语言,起初作为课程实验项目,现在为个人长期维护项目。 Target Features 支持8至64位的整形类型和32/64位浮点 基本的函数定义,调用,声明外部

Aya0wind 5 Sep 4, 2022