Smileyface

:) is an esolang created by User:Martsadas that only uses smileys
Valid tokens are :), :P, :], :>, :D, and :O.
=== Valid instructions: ===
All instructions start with an instruction modification parameter kinda like Whitespace.
 Instruction modification parameters
:)	I/O
:P	Cells
:]	Arithmetic
:>	Repeat same IMP as last instruction
:D	Flow control
 I/O
:)	:) [c]	Prints cell [c] as an ASCII character
:P	:P [c]	Prints cell [c] as a number
:]	:] [c]	Asks the user to input a number and stores it into cell [c]
:>	:> [c]	Prints constant [c] as an ASCII character
:D	:D [c]	Asks the user to input a character and stores its ASCII value into cell [c]
 Cells
:)	:) [c] :> [n]	Sets cell [c] to value [n]
:P	:P [a] :> [b]	Sets cell [a] to the value of cell [b]
:]	:] 	Moves the cell pointer left
:>	:> 	Moves the cell pointer right
:D	:D [c] 	Sets cell [c] to the cell pointer's position
 Arithmetic
:)	:) [a] :> [b] :> [c]	Sets cell [c] to cell [a] + cell [b]
:P	:P [a] :> [b] :> [c]	Sets cell [c] to cell [a] - cell [b]
:]	:] [a] :> [b] :> [c]	Sets cell [c] to cell [a] * cell [b]
:>	:> [a] :> [b] :> [c]	Sets cell [c] to cell [a] / cell [b]
:D	:D [a] :> [b] :> [c]	Sets cell [c] to cell [a] % cell [b]
 Flow control
:)	:) [n] 	Creates a new label [n]
:P	:P [n] 	Goes to label [n]
:]	:] [n] :> [a] :> [b]	Goes to label [n] if cell [a] and cell [b] are equal
:>	:> [n] :> [a] :> [b]	Goes to label [n] if cell [a] is greater than cell [b]
:D	:D 	Halts the program
=== Numbers: ===
Numbers in :) are stored in base 4.
:)	0
:P	1
:]	2
:D	3
=== Notes: ===
The cell pointer
* You can access the cell that the cell pointer points to by accessing cell 0.
* The cell pointer can't move left when it's at 1.
Comments
You can write a comment by using ; which will make a single-line comment.
=== Example programs: ===
====Hello, World!:====
:) :> :P :) :] :) :O ; H
:) :> :P :] :P :P :O ; e
:) :> :P :] :D :) :O ; l
:) :> :P :] :D :) :O ; l
:) :> :P :] :D :D :O ; o
:) :> :] :D :) :O ; ,
:) :> :] :) :) :O ; [space]
:) :> :P :P :P :D :O ; W
:) :> :P :] :D :D :O ; o
:) :> :P :D :) :] :O ; r
:) :> :P :] :D :) :O ; l
:) :> :P :] :P :) :O ; d
:) :> :] :) :P :O ; !
====Truth-machine:====
:) :] :D :O ; Get input
:P :) :P :> :P :O ; Set another cell to 1
:D :) :] :O ; Make a new label
:) :P :D :O ; Print the input
:D :] :] :> :D :> :P :O ; Jump to the label if the input is equal to 1
:D :D :O ; Halt the program
====99 bottles of beer:====
:P :) :P :> :P :] :) :D :O
:P :) :] :> :P :O
:D :) :] :O
:) :P :P :O
; Print ' bottles of beer on the wall'
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :D :D :O
:) :> :P :D :P :) :O
:) :> :P :D :P :) :O
:) :> :P :] :D :) :O
:) :> :P :] :P :P :O
:) :> :P :D :) :D :O
:) :> :] :) :) :O
:) :> :P :] :D :D :O
:) :> :P :] :P :] :O
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :P :P :O
:) :> :P :] :P :P :O
:) :> :P :D :) :] :O
:) :> :] :) :) :O
:) :> :P :] :D :D :O
:) :> :P :] :D :] :O
:) :> :] :) :) :O
:) :> :P :D :P :) :O
:) :> :P :] :] :) :O
:) :> :P :] :P :P :O
:) :> :] :) :) :O
:) :> :P :D :P :D :O
:) :> :P :] :) :P :O
:) :> :P :] :D :) :O
:) :> :P :] :D :) :O
:) :> :] :] :O
:) :P :P :O
; Print ' bottles of beer'
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :D :D :O
:) :> :P :D :P :) :O
:) :> :P :D :P :) :O
:) :> :P :] :D :) :O
:) :> :P :] :P :P :O
:) :> :P :D :) :D :O
:) :> :] :) :) :O
:) :> :P :] :D :D :O
:) :> :P :] :P :] :O
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :P :P :O
:) :> :P :] :P :P :O
:) :> :P :D :) :] :O
:) :> :] :] :O
; Print 'take 1 down'
:) :> :P :D :P :) :O
:) :> :P :] :) :P :O
:) :> :P :] :] :D :O
:) :> :P :] :P :P :O
:) :> :] :) :) :O
:) :> :D :) :P :O
:) :> :] :) :) :O
:) :> :P :] :P :) :O
:) :> :P :] :D :D :O
:) :> :P :D :P :D :O
:) :> :P :] :D :] :O
:) :> :] :] :O
; Print 'pass it around'
:) :> :P :D :) :) :O
:) :> :P :] :) :P :O
:) :> :P :D :) :D :O
:) :> :P :D :) :D :O
:) :> :] :) :) :O
:) :> :P :] :] :P :O
:) :> :P :D :P :) :O
:) :> :] :) :) :O
:) :> :P :] :) :P :O
:) :> :P :D :) :] :O
:) :> :P :] :D :D :O
:) :> :P :D :P :P :O
:) :> :P :] :D :] :O
:) :> :P :] :P :) :O
:) :> :] :] :O
:) :> :] :] :O
:] :P :P :> :] :> :P :O
:D :> :] :> :P :> :] :O
; Print '1 bottle of beer on the wall
; 1 bottle of beer
; take 1 down
; pass it around'
:) :> :D :) :P :O
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :D :D :O
:) :> :P :D :P :) :O
:) :> :P :D :P :) :O
:) :> :P :] :D :) :O
:) :> :P :] :P :P :O
:) :> :] :) :) :O
:) :> :P :] :D :D :O
:) :> :P :] :P :] :O
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :P :P :O
:) :> :P :] :P :P :O
:) :> :P :D :) :] :O
:) :> :] :) :) :O
:) :> :P :] :D :D :O
:) :> :P :] :D :] :O
:) :> :] :) :) :O
:) :> :P :D :P :) :O
:) :> :P :] :] :) :O
:) :> :P :] :P :P :O
:) :> :] :) :) :O
:) :> :P :D :P :D :O
:) :> :P :] :) :P :O
:) :> :P :] :D :) :O
:) :> :P :] :D :) :O
:) :> :] :] :O
:) :> :D :) :P :O
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :D :D :O
:) :> :P :D :P :) :O
:) :> :P :D :P :) :O
:) :> :P :] :D :) :O
:) :> :P :] :P :P :O
:) :> :] :) :) :O
:) :> :P :] :D :D :O
:) :> :P :] :P :] :O
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :P :P :O
:) :> :P :] :P :P :O
:) :> :P :D :) :] :O
:) :> :] :] :O
:) :> :P :D :P :) :O
:) :> :P :] :) :P :O
:) :> :P :] :] :D :O
:) :> :P :] :P :P :O
:) :> :] :) :) :O
:) :> :D :) :P :O
:) :> :] :) :) :O
:) :> :P :] :P :) :O
:) :> :P :] :D :D :O
:) :> :P :D :P :D :O
:) :> :P :] :D :] :O
:) :> :] :] :O
:) :> :P :D :) :) :O
:) :> :P :] :) :P :O
:) :> :P :D :) :D :O
:) :> :P :D :) :D :O
:) :> :] :) :) :O
:) :> :P :] :] :P :O
:) :> :P :D :P :) :O
:) :> :] :) :) :O
:) :> :P :] :) :P :O
:) :> :P :D :) :] :O
:) :> :P :] :D :D :O
:) :> :P :D :P :P :O
:) :> :P :] :D :] :O
:) :> :P :] :P :) :O
:) :> :] :] :O
:) :> :] :] :O
:) :> :D :) :) :O
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :D :D :O
:) :> :P :D :P :) :O
:) :> :P :D :P :) :O
:) :> :P :] :D :) :O
:) :> :P :] :P :P :O
:) :> :P :D :) :D :O
:) :> :] :) :) :O
:) :> :P :] :D :D :O
:) :> :P :] :P :] :O
:) :> :] :) :) :O
:) :> :P :] :) :] :O
:) :> :P :] :P :P :O
:) :> :P :] :P :P :O
:) :> :P :D :) :] :O
:) :> :] :) :) :O
:) :> :P :] :D :D :O
:) :> :P :] :D :] :O
:) :> :] :) :) :O
:) :> :P :D :P :) :O
:) :> :P :] :] :) :O
:) :> :P :] :P :P :O
:) :> :] :) :) :O
:) :> :P :D :P :D :O
:) :> :P :] :) :P :O
:) :> :P :] :D :) :O
:) :> :P :] :D :) :O
; Halt
:D :D :O
==Interpreter==
* Common Lisp implementation of the :) programming language.
Category:LanguagesCategory:ImplementedCategory:Cell-based