Laiyes

Laiyes is an esoteric programming language based around the idea of doing operation to a value just by typing them rather than first declaring to what variable. It also makes use of mostly single character commands to make programs shorter.
==Overview==
Laiyes makes use of one value which most instructions modify called the working value.
All code is written on one line, but multiple lines can be used to make code look nicer.
===Variables===
Laiyes has 26 variables all initiated to 0, labeled a to z.
Variables are either numbers (floating point) or strings.
Command	Name 	Description 	Argument
a...z 	Store 	Assing the working value to one of the 26 variables	
~ 	Recall	Assign one of the 26 variables to the working value	Variable
\ 	Reset 	Reset working value to 0 	
'...' 	String	Assign a string to the working value 	
===I/O===
Command	Name 	Description 	Argument
, 	Output 	Print the working value 	
_ 	Output variable	Print a variable 	Variable
? 	Input 	Prompt user for input (input is a string of n length	
"..." 	Print 	Print a string 	
===Operators===
Laiyes treats strings containing a properly formatted number as numbers.
 '1'+'1',
Will output 2, not 11.
Command	Name 	Description 	Argument
+ 	Add 	Add to working value, if string concatenates the working value and argument as strings 	Number, String, Variable, Input
- 	Subtract 	Subtract from the working value 	Number, Variable, Input
* 	Multiply 	Multiply working value 	Number, Variable, Input
/ 	Divide 	Divide the working value 	Number, Variable, Input
% 	Modulo 	Take the modulus of the working value 	Number, Variable, Input
^ 	Power 	Take working value to the power of n (supports decimals) 	Number, Variable, Input
& 	Concatenate	Concatenate working value as string with argument 	Number, String, Variable, Input
` 	Take 	Take the nth element of a string (treats numbers as strings) (start indexing at 1) will return an empty string if index out of range	Number, Variable, Input
===Logic===
All logic opererators must be ended with a : to indicate what code should be run if the condition is met.
Logic operators consisting of multiple characters can have their characters appear in any order.
Command	Name 	Description 	Argument
: 	End 	Marks the end of a logic statement 	
 	Else 	Marks a section to execute if condition isn't met (placed after an End and must also be ended by it)	
= 	Equal 	Executes code if working value is equal to argument 	Number, String, Variable, Input
!= / =!	Not Equal 	Executes code if working value is not equal to argument 	Number, String, Variable, Input
> 	Greater Than 	Executes code if working value is more than argument 	Number, Variable, Input
>= / =>	Greater Than or Equal	Executes code if working value is more or equal to argument 	Number, Variable, Input
< 	Less Than 	Executes code if working value is less than argument 	Number, Variable, Input
<= / =<	Less Than or Equal 	Executes code if working value is less or equal to working value 	Number, Variable, Input
===Flow===
Command	Name 	Description 	Argument
; 	Terminate	Stop the program 	
(...) 	Loop 	Repeat code inside (you can use a conditional to escape from the loop by placing the end outside the bracket)	
{...} 	While 0 	Repeat code inside unless wokring value is equal to 0 	
===Special===
The command $ is used for special commands, its behaviour changes depending on the working value
'open:' and 'exe:' are optional inclusions for a full interpreter
Working value	Description
'' 	Clear output
'~' 	Clear variables
'256' 	Set working value to a sting of 256 unique characters
'open:' 	Open file (name after the :)
'exe:' 	Execute system command (command after the :)
==Example programs==
===Hello, World!===
 "Hello, World!"
===Truth-machine===
 ?{,},
===Fibonacci sequence===
 +1xy,(,+xz~yx~zy)
===Factorial===
 +1y?x{~y*xy~x-1x}_y
===FizzBuzz===
 (y~x+1x%3=0'Fizz'y:~x%5=0~y&'Buzz'y:~y=~x:,)
===Prime numbers generator===
 +2,-1x(~x+2x+3/2z{~z-1z~x%z}~z=1_x:)
===99 bottles of beer===
 +99x(&x&' bottles of beer on the wall, '&x&' bottles of beer',~x-1x'Take one down, pass it around, '&x&' bottles of beer on the wall',~x=!1):
"1 bottle of beer on the wall, 1 bottle of beer""Take it down, pass it around, no more bottles of beer on the wall""No more bottles of beer on the wall, go to the store and buy some more""99 bottles of beer on the wall, 99 bottles of beer"
=== Turing completeness===
====Game of Life====
 k"X"?y"Y"?z"Seed"?x~y*zv(~x*28763678276382+29839784974867%278374678323x`1%2=1~k+"X"k:|~k+" "k:~w+1w%v=!0):(\ac(~a+1a~k`ab~c+bc~a%y=0_cc:~b=!""):"--------------------"$
m\a(~a+1a\b~a+1c~k`c="X"~a%y=!0~b+1b::~a+1+yc~k`c="X"~a%y=!0~b+1b::~a+1-yc~k`c="X"~a%y=!0~b+1b::~a-1c~k`c="X"~a+y-1%y=!0~b+1b::~a-1+yc~k`c="X"~a+y-1%y=!0~b+1b::~a-1-yc~k`c
="X"~a+y-1%y=!0~b+1b::~a+yc~k`c="X"~b+1b:~a-yc~k`c="X"~b+1b:~k`a="X"\c~b=3\+1c~m+"X"m:=2\+1c~m+"X"m:~c=0~m+" "m::|~b=3~m+"X"m:|~m+" "m::~a=!v):~mk)
With a small alteration the program can be made to allow the user to input any starting state to simulate.
====brainfuck intreperter====
 '256'$`1q'256'$`11j'256'$k\+1r"Memory size:"?xm{~m&qm~x-1x}"Code:"?co$(~p+1p~c`pi=""~o=!"",:;:=">"~r+1r>q;::="<"~r-1r<1;::="["~m`r=q\y(~p+1p~c`p="]"~y-1y:="["~y+1y:~y=!-1):::="]"~m`r=!q\y(~p-1p~c`p
="["~y-1y:="]"~y+1y:~y=!-1):::="."~m`rx=j_oo:|~o&xo::="+"~m`ry\x(~x+1x~k`x=!y):~x+1x=256\+1x:~k`xyn\x(~x+1x=r~n&yn:|~m`xz~n&zn:~m`x=!):~nm:="-"~m`ry\x(~x+1x~k`x=!y):
~x-1x=0\+256x:~k`xyn\x(~x+1x=r~n&yn:|~m`xz~n&zn:~m`x=!):~nm:=","?yn\x(~x+1x=r~n&yn:|~m`xz~n&zn:~m`x=!):~nm:)
Due to the lack of support for lists, a string is used, making the intreperter very slow, to compensate the user must set the size of the memory.
Due to the usage of $ this intreperter only works in revision 1.2 or higher
==Implementation==
Laiyes rev 1.2 intreperter, zipped, includes brainfuck intrepreter.
Category:Turing completeCategory:ImplementedCategory:Low-levelCategory:2021