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_program
Variables are used to store data. Variables can be created by using the nöf
keyword.
nöf variable = value
nö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 == 6
using 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 $num1
Comments 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 risk
Printing 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 console
nö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 console
nöf num1 = 5
nöf num2 = 6
oink "$num1$num2"
# this does not work, you need to use spaces
You can create a line receiver by using the pig
keyword. Use gip
to end the function.
pig possu
oink "Hello World!"
gip
You 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 5
If 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"
pork
Use 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
modify
add
sub
- subtractmultiply
divide
modulo
power
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.kln
you can you the --debug
or -d
flag to see the debug information.
python interpeter/interpret.py example.kln -d
nö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.