klinoff-lang is a huge step in the evolution of programming languages. It is a language that is easy to learn and use, but really powerful.
Klinoff-lang is a interpreted language, one known interpreter is found on this repository.
Your code must be coded with SPACES and is case sensitive with clear difference between words. The code must be written exactly like in this documentation. DONT USE SPACES JUST HERE AND THERE, USE SPACES VERY CAREFULLY.
do this:
oink "Hello World!"not this:
oink"Hello World!"And also Happy to tell youu guys, that klinoff-lang is partnered with EcmaScript, so you HAVE TO leave a empty line at the end of the file.
A NEW revolutionary feature is here, for the non-users who doesn't have access to letter ö in their keyboard, you can use o.
The file extension for klinoff language is
.kln
and just in case for everybodys sanity, if you want some working color syntax highlighting. INTRODUCING THE NEW VS CODE EXTENSION FOR KLINOFF-LANG, WITH THE EXTENSION YOU GET FULL CONTROL OF THE COLOR SYNTAX HIGHLIGHTING!
- Easy to learn
- Easy to use
- Powerful
- Fast
Documentation for klinoff-lang can be found here
klinoff-lang reads the file from top to bottom, and executes the code line by line.
To start a klinoff-lang file, you need to use the nöff keyword. This keyword is used to start the program, and follows the name of your program.
nöff my_programVariables are used to store data. Variables can be created by using the nöf keyword.
nöf variable = valuenöf num1 = 5
nöf word = Hello World!you can also modify variables by using the modify keyword.
nöf num1 = 5
nöf num2 = 6
modify $num1 $num2
# num1 == 6using add, sub, multiply, divide, modulo, and power.
First parameter is the variable you want to modify, and the second parameter is the value you want to modify the variable with.
add $num1 5
sub $num2 $num1
multiply $num3 5
divide $num4 0.5
modulo $num5 5
power $num6 $num1Comments are used to explain the code. Comments are ignored by the compiler. Comments can be created by using the // character.
// This is a comment
oink "Hello World!" // This breaks everything, use in at your own riskPrinting is used to print text to the console. Printing can be done by using the oink keyword.
oink "Hello World!"
# Prints "Hello World!" to the consolenöf num1 = 5
oink "$num1"The future is here so that the oink function will always remove letter § from the output.
nöf money = -5000
oink "I have $money§€ in my bank account"
# Prints "I have -5000§€ in my bank account" to the consolenöf num1 = 5
nöf num2 = 6
oink "$num1$num2"
# this does not work, you need to use spacesYou can create a line receiver by using the pig keyword. Use gip to end the function.
pig possu
oink "Hello World!"
gipYou can jump to the line you want by using the slingshot keyword. It works like a angry bird, you slingshot to the pig. You can jump to the line by providing only number
#jump to pig
slingshot possu
# jumps to line
slingshot 5If statements can be created by using the niff keyword. else if statements can be created by using the nilf keyword. klinoff-lang is so advanced that it doesnt need the else statements.
After make the statemt in given line, you can use slingshot keyword to jump to the line you want.
nöf num1 = 1
nöf num2 = 1
niff $num1 > $num2 : slingshot possu1
nilf $num1 < $num2 : slingshot possu2
nilf $num1 == $num2 : slingshot possu3
For loops can be created by using the snort keyword. Second parameter is for the loop name. and the third parameter is the times the loop will run. Use pork to end the loop.
Be careful, you cannot use the same loop name twice.
nöf times = 5
snort oink $times
oink "oinking $times times"
pork
You can create infinite loop adding infinite as the third parameter.
snort oink infinite
oink "oinking infinite times"
porkUse pop to break the loop.
snort oink infinite
oink "oinking one time"
pop
pork
nöf num = 1
snort loop infinite
add $num 1
oink "number is $num"
nilf $num >= 100.0 : pop
pork
oink "There is $num"
The input will be saved to the variable you give to the input function. last parameter is the question you want to ask.
nöf name = pig
input $name "why is your name $name§? Change it to: "
oink "Hello $name§!"string- text
nöffnöff- return the program name not working yet
==- equal to!=- not equal to>- greater than<- less than>=- greater than or equal to<=- less than or equal to
nöff- start of programnöf- create variableoink- printniff- if statementnilf- else if statement
snort- start for looppork- end for looppop- break for loop
slingshot- jump to line or functionpig- create functiongip- end function
input- input
modifyaddsub- subtractmultiplydividemodulopower
To install the interpreter, you need to have python3 installed. You can install python3 from here.
After installing python3, you need to install the interpreter. by cloning this repository.
python interpeter/interpret.py example.klnyou can you the --debug or -d flag to see the debug information.
python interpeter/interpret.py example.kln -dnöff cubic_root_example
nöf num1 = 16
nöf num2 = 2
slingshot cubic_root_num1
// function to cubic root the num1
pig cubic_root_num1
multiply $num1 $num2
power $num1 0.333
oink "$num1"
gip
nöff if_example
nöf num1 = 16
nöf num2 = 2
niff $num1 > $num2 : slingshot possu1
nilf $num1 < $num2 : slingshot possu2
nilf $num1 == $num2 : slingshot possu3
pig possu1
oink "$num1 is bigger than $num2"
gip
pig possu2
oink "$num1 is smaller than $num2"
gip
pig possu3
oink "$num1 is equal to $num2"
gip
nöff loop_example
nöf num = 5
snort oink 5
sub $num 1
oink "oinking $num times"
pork
nöff input_example
nöf name = pig
input $name "why is your name $name§? Change it to: "
oink "Hello $name§!"
nöff infi_loop_example
nöf num = 1
// infinite loop
snort loop infinite
add $num 1
oink "number is $num"
nilf $num >= 100.0 : pop
pork
oink "There is $num§1"
As the klinoff-lang has evolved so has the complexity of the codebase. The interpreter is written in python3 with reveals the true power of the language. no more cmake or makefiles, just python3, the language of the future.
Using the power of Count Code Lines VsCode Extension, we can see that the interpreter has 805 lines of code.
