The Coding Language official browser Javascript interpreter and specs. Made in response to this r/ProgrammerHumor post.
As of now, the interpreter only works in browsers with ES6 support. Legacy Javascript support will come soon.
Hello world:
(Hello, world!) S
A fancier Hello world:
>div
(height:100%;display:flex;justify-content:center;align-items:center)@style
(Hello, world!)>h1
#h
(color:red;font-family:"Comic Sans MS")@style
(h.style.color='blue')@onmouseenter
(h.style.color='red')@onmouseleave
*e
Quine:
(: a S S): a S S
Coding
is essentially Underload optimized for HTML -- "stack-based HTML." As of now, the standard library pretty much consists of only the essential functions needed for Turing-completeness and basic markup; expansion will come with time.
Coding
has 2 stacks, one for strings and another for HTML output. Parentheses push to the string stack; for example, (asdf)
would push asdf
to the string stack. Trailing parentheses are optional, but be sure to escape parentheses with \
when necessary.
(asdf)
(Hey (it's me!\))
The standard library has a function S
that can push from the string stack to the output stack. In addition, there are several pseudo-functions:
-
>
: Pops top string stack element, wraps with a tag name, and pushes to output stack. The tag must match the regex[A-Za-z][-_A-Za-z0-9]*
. Example:(asdf) >h1
-
.
: Adds a class to the top output stack element. The class must match the regex"-"?[_a-zA-Z]+[_a-zA-Z0-9-]*
. Example:(asdf) >h1 .xyz
-
#
: Adds an ID to the top output stack element. The ID must match the regex[A-Za-z][-_A-Za-z0-9]*
. Example:(asdf) >h1 #xyz
-
@
: Adds an attribute to the top output stack element using the popped top string stack element. The attribute name must match the regex[A-Za-z][-_A-Za-z0-9]*
. Example:(asdf) >h1 (color:red)@style
Functions are anything matched by the regex [^ \n()""@#.]+
.
You may need to whitespace-separate for parser clarity.
~
: SWAP. Appende
to the command to perform on the output stack.:
: DUP. Appende
to the command to perform on the output stack.!
: DROP. Appende
to the command to perform on the output stack.S
: Push the top string stack element to the output stack in text form.Se
: Push the HTML string form of the top output stack element to the string stack.*
: Concatenate. Appende
to perform on the output stack.a
: Wrap parentheses around the top string stack element.^
: Evaluate the top string stack element.