We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

so simple dollar

From Esolang
Jump to navigation Jump to search

so simple dollar is among the simplest programming languages. It only uses $ but the amount of the symbol determines the command.

Architecture

The program memory, resembles brainfuck's model, being defined as a composition of an infinite tally of cells, each storing a single signed integer of unbounded magnitude. Starting at the incipient member, a cell pointer marks at any instant the current active cell, amenable to queries and modifications.

Syntax

The following Extended Backus-Naur Form description (EBNF) applies to the so simple dollar programming language:

program      := whitespaces
             ,  startProgram
             ,  sepiment
             ,  { statement , sepiment }
             ,  endProgram
             ,  whitespaces
             ;
statement    := printBlock
             |  takeInput
             |  storeInput
             |  moveLeft
             |  moveRight
             ;

startProgram := "$" ;
endProgram   := "$$" ;
printBlock   := startPrint , { printCommand } , endPrint ;
startPrint   := "$$$" ;
endPrint     := "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;
printCommand := printLetterA
             |  printLetterB
             |  printLetterC
             |  printLetterD
             |  printLetterE
             |  printLetterF
             |  printLetterG
             |  printLetterH
             |  printLetterI
             |  printLetterJ
             |  printLetterK
             |  printLetterL
             |  printLetterM
             |  printLetterN
             |  printLetterO
             |  printLetterP
             |  printLetterQ
             |  printLetterR
             |  printLetterS
             |  printLetterT
             |  printLetterU
             |  printLetterV
             |  printLetterW
             |  printLetterX
             |  printLetterY
             |  printLetterZ
             |  printCell
             ;
printLetterA := "$$$$" ;
printLetterB := "$$$$$" ;
printLetterC := "$$$$$$" ;
printLetterD := "$$$$$$$" ;
printLetterE := "$$$$$$$$" ;
printLetterF := "$$$$$$$$$" ;
printLetterG := "$$$$$$$$$$" ;
printLetterH := "$$$$$$$$$$$" ;
printLetterI := "$$$$$$$$$$$$" ;
printLetterJ := "$$$$$$$$$$$$$" ;
printLetterK := "$$$$$$$$$$$$$$" ;
printLetterL := "$$$$$$$$$$$$$$$" ;
printLetterM := "$$$$$$$$$$$$$$$$" ;
printLetterN := "$$$$$$$$$$$$$$$$$" ;
printLetterO := "$$$$$$$$$$$$$$$$$$" ;
printLetterP := "$$$$$$$$$$$$$$$$$$$" ;
printLetterQ := "$$$$$$$$$$$$$$$$$$$$" ;
printLetterR := "$$$$$$$$$$$$$$$$$$$$$" ;
printLetterS := "$$$$$$$$$$$$$$$$$$$$$$" ;
printLetterT := "$$$$$$$$$$$$$$$$$$$$$$$" ;
printLetterU := "$$$$$$$$$$$$$$$$$$$$$$$$" ;
printLetterV := "$$$$$$$$$$$$$$$$$$$$$$$$$" ;
printLetterW := "$$$$$$$$$$$$$$$$$$$$$$$$$$" ;
printLetterX := "$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;
printLetterY := "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;
printLetterZ := "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;
printCell    := "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;

takeInput    := "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;
storeInput   := "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;
moveRight    := "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;
moveLeft     := "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;

sepiment     := whitespace , whitspaces ;
whitespaces  := { whitespace } ;
whitespace   := " " | "\t" | "\n" ;

Commands

Command Description
$ Begin the program.
$$ End the program.
$$$ Begin printing a message.
$$$$ Print a letter (add one $ to indicate the letter; e.g.: $$$$$ = b).
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ End the printing.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Take a user input.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Store the user input to a memory cell (like brainfuck).
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Switch to the right cell.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Switch to the left cell.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Print the character associated with the current cell's value (like brainfuck).

Examples

Hello, world!

This program outputs the text "helloworld":

$
$$$
$$$$$$$$$$$
$$$$$$$$
$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$
$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$

Cat program

A one-time cat program is implemented below:

$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$

Interpreter

  • Common Lisp implementation of the so simple dollar programming language.