Noodel
Noodel is a programming language that has the main focus of assisting ASCII Animation code golfing challenges. Noodel has its own 256 character set. There also is an editor designed for Noodel that utilizes its JavaScript parser here.
Since the language is for challenges visit the issues page and post challenges where Noodel was used. This will allow others to learn how to Noodel as well as notice features that could be added to assist with challenges (Learn more). This language is still under construction and since I like to code for Noodel from the online editor things may randomly break in the prototyping editor, features disappear/change, zero comments made on commits, or random issues appear for myself. If there is a need to use an older version of Noodel that was good enough before, visit the release directory for a list of all of the versions.
Introduction
Noodel has three main data types: NUMBER
, STRING
, and ARRAY
. ARRAY
objects are always passed-by-reference, but the others are passed-by-value (…)
A “Hello World” in Noodel is pretty simple: Hello,¤World!
The STRING
literal is created and placed onto the stack which can be done with any of the printable characters. At the very end, whatever is on the top of the stack gets printed. Therein, the Hello,¤World!
gets printed. But what happened to the ¤
? The ¤
is used to represent a space when handling STRING
types. This allows for the space character to act as a NOP to seperate commands. The same was done with the line feed character which is represented by ¶
(…)
The Memory Model
Noodel is a stack-based language with a slight twist. The perspective of the stack can be changed. A simple example of this is if you need to store an object for later but do not want it to be operated on, you can move the top of the stack down. For example: noodelʠsome¤workƥ
The literal noodel
gets pushed onto the stack, then the top of the stack gets moved with the ʠ
command. Then the STRING
literal some¤work
gets pushed onto the stack. The command ƥ
moves the top of the stack back up, therein noodel
is on top and is printed.
Now that is kind of cool, but it gets more interesting when there are arrays involved. Let us take this script: ¤noodel¤ȷçıḷẹḍe
It produces the same output as the script ¤noodel¤ḷçẹḍe
, but takes advantage of the fact that ARRAY
types are pass-by-reference. So, first ¤noodel¤
is pushed onto the stack. Since the stack is merely an ARRAY
, we call the ȷ
command which jumps out of the current stack and into the containing stack. The top of this new stack is the stack with the STRING
literal. So, we print it to the screen using ç
therein the ARRAY
object is sitting in the stdout. Then we call ı
command to jump into the ARRAY
at the top of the stack to make it the current stack. This allows us to now start operating on the STRING
live.
Instead of jumping out, printing, and then jumping back we can use Ð
which pushes the current stack to stdout: ¤noodel¤Ðḷẹḍe