All Projects → lambdacasserole → uwuscript

lambdacasserole / uwuscript

Licence: MIT license
World's first uwu-oriented language.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to uwuscript

vbf
A brainfuck interpreter/compiler written in V.
Stars: ✭ 17 (-77.33%)
Mutual labels:  interpreter, brainfuck
esoo
Like the Programming Languages Zoo but with esoteric languages.
Stars: ✭ 18 (-76%)
Mutual labels:  interpreter, brainfuck
bfloader
🧠 Brainfuck IDE and interpreter in 512 bytes. (boot sector)
Stars: ✭ 41 (-45.33%)
Mutual labels:  interpreter, brainfuck
bfpile
Optimizing Brainfuck compiler, transpiler and interpreter
Stars: ✭ 19 (-74.67%)
Mutual labels:  interpreter, brainfuck
asmbf
The only true brainfuck-targetting assembler.
Stars: ✭ 81 (+8%)
Mutual labels:  brainfuck
monkey
The Monkey Programming Language & Interpreter written in PHP.
Stars: ✭ 21 (-72%)
Mutual labels:  interpreter
fastbasic
FastBasic - Fast BASIC interpreter for the Atari 8-bit computers
Stars: ✭ 108 (+44%)
Mutual labels:  interpreter
roda
Röda: A stream-oriented scripting language
Stars: ✭ 43 (-42.67%)
Mutual labels:  interpreter
cidk
interpreter devkit
Stars: ✭ 23 (-69.33%)
Mutual labels:  interpreter
AlchemyVM
WebAssembly Virtual Machine Built In Elixir
Stars: ✭ 184 (+145.33%)
Mutual labels:  interpreter
quickjs-build
Build for QuickJS JavaScript Engine
Stars: ✭ 25 (-66.67%)
Mutual labels:  interpreter
foxscheme
An R5RS Scheme in JavaScript.
Stars: ✭ 15 (-80%)
Mutual labels:  interpreter
PDDL.jl
Julia parser, interpreter and compiler interface for the Planning Domain Definition Language (PDDL). Planners not included.
Stars: ✭ 52 (-30.67%)
Mutual labels:  interpreter
JSchemeMin
A small scheme implementation in java
Stars: ✭ 22 (-70.67%)
Mutual labels:  interpreter
blade
A simple, fast, clean, and dynamic language that allows you to develop applications quickly.
Stars: ✭ 113 (+50.67%)
Mutual labels:  interpreter
types-and-programming-languages
C++ Implementations of programming languages and type systems studied in "Types and Programming Languages" by Benjamin C. Pierce..
Stars: ✭ 32 (-57.33%)
Mutual labels:  interpreter
BF-it
A C-like language to Brainfuck compiler, written in Python
Stars: ✭ 101 (+34.67%)
Mutual labels:  brainfuck
HaxeVM
Prototype compiler/virtual machine in Haxe for Haxe
Stars: ✭ 24 (-68%)
Mutual labels:  interpreter
jsish
Jsi is a small, C-embeddable javascript interpreter with tightly woven Web and DB support.
Stars: ✭ 32 (-57.33%)
Mutual labels:  interpreter
pyccolo
Declarative instrumentation for Python.
Stars: ✭ 70 (-6.67%)
Mutual labels:  interpreter

UwuScript

World's first uwu-oriented language.

Logo

Saw a tweet from Uwy and thought it'd be a tasty little meme morsel to actually build with a tokenizer I have lying around. It's basically Brainfuck but with a special token for single-line comments. If you're looking for the plain old Brainfuck interpreter I wrote in C#, it's called ByteRibbon.

Here's a hello world program in UwuScript:

uwu uwu uwu uwu uwu uwu uwu uwu uwu uwu ow< >w> uwu uwu uwu uwu uwu uwu uwu >w> *w* Comment!
uwu uwu uwu uwu uwu uwu uwu uwu uwu uwu >w> uwu uwu uwu >w> uwu <w< <w< <w< <w< 
nwn >wo >w> uwu uwu owo >w> uwu owo uwu uwu uwu uwu uwu uwu uwu owo owo uwu uwu 
uwu owo >w> uwu uwu owo <w< <w< uwu uwu uwu uwu uwu uwu uwu uwu uwu uwu uwu uwu 
uwu uwu uwu owo >w> owo uwu uwu uwu owo nwn nwn nwn nwn nwn nwn owo nwn nwn nwn 
nwn nwn nwn nwn nwn owo >w> uwu owo >w> owo *w* Hello world!

The following table is straight from Wikipedia's table of Brainfuck commands, but modified to show each command's UwuScript equivalent:

UwuScript Brainfuck Meaning
>w> > Increment the data pointer (to point to the next cell to the right).
<w< < Decrement the data pointer (to point to the next cell to the left).
uwu + Increment (increase by one) the byte at the data pointer.
nwn - Decrement (decrease by one) the byte at the data pointer.
owo . Output the byte at the data pointer.
-w- , Accept one byte of input, storing its value in the byte at the data pointer.
ow< [ If the byte at the data pointer is zero, then instead of moving the instruction pointer forward to the next command, jump it forward to the command after the matching ] command.
>wo ] If the byte at the data pointer is nonzero, then instead of moving the instruction pointer forward to the next command, jump it back to the command after the matching [ command.
*w* N/A Denotes a single-line comment.

You're essentially manipulating a Turing machine to produce output. Anything written in Brainfuck is obviously trivial to port over.

Usage

Compile the project in Visual Studio, run it like this:

UwuScript.exe "examples/hello.uwu"

Limitations

Largely untested and very unoptimized, the Turing machine underlying the language is a very hasty port from the PHP version in my ancient Brainfony repository. It's gonna be buggy and slow.

Also, random inline text will break the tokenizer, that's why the single-line comment token was added. It's easy to change this so you can stick non-instructions wherever you like (like I believe Urban Muller's original Brainfuck implementation does) by changing the regular expressions that the tokenizer is initialized with.

Contributing

If you find a bug and would really like to contribute for whatever reason, feel free to fork and submit a pull request.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].