Follow these three steps on your computer to get started
git clone https://github.com/JVerbruggen/JurjenLang.git
py -m pip install antlr4-python3-runtime
start input.bat
orpy project.py .\input.jur
The repository includes a java folder, which is exclusively used for the antlr4 testrig. I wont be implementing any logic there.
If you made changes to the language or anything else, and the python files (and java classes for testrig) have to be regenerated, use the following steps:
- Make sure you are in the root folder of the repository
- Install ANTLR4 on windows
start .\generate_python.bat
should renew all files
To use the antlr4 testrig (which generates a parse tree), use the following tutorial:
- Renew java files
start .\generate_java.bat
- Navigate to the java/ file
cd java
start .\testrig.bat
should open a command window and eventually open up the testrig
somevariable = 3
another = .2f
thirdvar = "some random text"
fourthboolean = true
Currently, only four types are allowed; integer, float, string and boolean. Why would you ever want more? ...Right?
func myfunction a b{
return a + b
}
result = myfunction(1,2) # will be 3
In JurjenLang, variables have no type definition or hinting. This can either make your life easy or difficult, depending on who you ask. Either way, I don't really care.
func printstringone {
print "one"
}
func printstringtwo {
print "two"
}
func printspec printfunction {
printfunction()
}
printspec(printstringone) # prints 'one'
printspec(printstringtwo) # prints 'one'
In JurjenLang, you can pass a reference to a function as a parameter. This reference can then be executed as if it is a function itself.
a = 2
b = 3
thisbooleanwillbefalse = a == b
thisbooleanwillbetrue = a != b
thisonewillalsobetrue = a < b
JurjenLang supports a couple of expression operators; <, <=, >, >=, ==, !=
thiswillbetrue = true and true
thiswillbetrue = true or false
thiswillbefalse = not true
JurjenLang supports three boolean expressions; and, or, not
a = 3 * 4 # multiplication
b = 12 / 3 # division
c = 5! # factorial
d = 5 + 4 - 1 # addition and subtraction
e = 2^6 # pow
JurjenLang supports the numerical operators that can be seen above.
print "i like to print stuff"
print 3*2
In JurjenLang you can print all variables.
Dangerous feature that I won't remove because its kind of useful but also the reason why this language should never be used in production
printscope
In JurjenLang you can print all variables on the scope with the printscope
keyword
mystring = "wohoo"*2
reversed = mystring*-2
print mystring # Will be "wohoowohoo"
print reversed # Will be "oohowoohowoohowoohow"
In JurjenLang you can multiply strings by an integer, both positive and negative.