Morse
An estoric programming language consisting of only . and _.
Example
The following program takes the input of two numbers from the user and adds them. It asks for the input again in case the result is zero.
____
____
_...
_....
__._
_._.. _
Build
Download the source code and build it by running:
make
Usage
You can run your programs by:
./morse [filename]
Syntax
The execution environment maintains only 2 stacks, one for integers and other for characters.
Stack Manipulation
Operations on the integer stack:
-
.- Push an integer to the stack [parameter: positive integer]. -
_- Duplicate the top most integer in the stack. -
_.- Swap two topmost integers in the stack. -
__- Pop topmost integer from the stack.
Operations on the character stack:
-
_..- Push a character to the stack [parameter: character]. -
_._- Duplicate the top most character in the stack. -
__.- Swap two topmost characters in the stack. -
___- Pop topmost character from the stack.
Arithmetic Operations
-
_...- Add top most integers and replace them with the result. -
_.._- Subtract top most integers and replace them with the result. -
_._.- Multiply top most integers and replace them with the result. -
_.__- Divide top most integers and replace them with the result. -
__..- Take modulus of top most integers and replace them with the result.
Input/Output
-
__._- Print topmost integer on the stack. -
___.- Print topmost character on the stack. -
____- Take an input of an integer from the user. -
_....- Take an input of a character from the user.
Flow Control
-
_..._- Jump to a line number. [parameter: line number] -
_.._.- Jump to a line number if topmost integer is positive. [parameter: line number] -
_..__- Jump to a line number if topmost integer is negative. [parameter: line number] -
_._..- Jump to a line number if topmost integer is zero. [parameter: line number]
Representing literals
Numbers can be represented in their binary form, with the 0s being . and 1s being _. Characters can be represented as the corresponding binary format of their ASCII code.
Note: You can only represent positive integers right now.
For example:
- 2 is
_. - 20 is
_._.. - A is
_....._(binary representation of 65)
License
MIT
Contact
This was made out of sheer joblessness by Sankha. Follow him @sankha93 on Twitter.