Basis

Execution 
Interactive Shell
jmo
Run program
jmo file.jmo
call arguments
The magic constant _ARGS contains a List with the arguments
_ARGS.length
_ARGS.get(1).print
_ARGS[1].print
Conventions 
source code encoding
always UTF-8 like Java
Types
first char is upcase A-Z, then 'A-Za-z0-9_'
CamelCase
Functions
first char is lowercase a-z, then 'A-Za-z0-9_'
.mixedCamelCase
Variables
first char is lowercase a-z, then 'A-Za-z0-9_'
varNr1 = 1
Constants
first char only A-Z, then A-Z0-9_
PI = 3.14
Block-Levels
Indent through tab
3.times
%.print
Statement separator
newline or ;
newlines are not separators inside [], and after ','

"foo".print; "bar".print
Comments
Line comment
# comment
Block comment
/* comment
*/
Output to shell
With Newline
"Hello".print
Without Newline
"Hello".echo
Function arguments
Within (), comma separated
"Hello".cut(2,3) #cuts from 2, 3 chars = ell
Groups
With ()
((5+4)*2).print
current Object (this)
_THIS.print
Or short term:
°.print
Really short:
°print
Argument for block
Grab the current Block-Object with the constant _IT
3.times
_IT.print
Shortcut with %
3.times
%.print
Multi-Call
°test(3.times..., 2)
Or
l=[5,9,8,7]; [].add(l...).print
Blocks and streams
Every function may have an block and/or a stream-function
(true).do #!!!
"Is true".print
.print
auto-block-functions
Some Types have a auto-block-function, if an object is called directly with an block.
So, a group calles automaticly the if-function
(5==5)
"Yes".print
This is equal to:
(5==5).if
"Yes".print
Priority
  1. .abc
  2. ++ --
  3. * / %
  4. + -
  5. << >>
  6. < <= > >=
  7. == !=
  8. &
  9. ^
  10. |
Stop parsing the Script
#**#
Text-Block
""""
Put this Text
completely
to a Str
"""".print
Exit
_APP.exit
With Return-Value
_APP.exit(1)
arrays / lists 
Literal
a = [1, 2, 3, 4]
size
a.length
a.len
For each
[1,2,3].each.print
.each is called as Auto-Block-Function
[1,2,3]
%.print
min/max
[1,2,3].min
[1,2,3].max
Ranges 
Definition
1..5
Range(3,6).each.print
Create List
[1..5].each.print
[2..10, 2, 1..3].each.print
Counter
{1..5}.each.print
Range of chars
['a'..'h']
%.echo
['a'..'z'].set(4,'-').print
Numbers
[2..9].each.print
Variables and expressions 
creation & assignment
1. From right to left
v = 1
2. Inline
4.mem(w)
3. From left to right
5 => x
Type inference
Generally a Variable can hold only the first assigned type
a = 2
a = 'a' Results in an Error
nilable/nullable
Append an '?' to the variable-name
v? = 1
v? = nil
v?.print
Type-unsave variables
v?? = 1
v?? = "Hello"
v?? = nil
v??.print
test nil
v? == nil
v?.isNil.print
undefined variable
not allowed
Var-Changed-Event
a:@varChanged
("Changed to "+%).print
a=2
Constants 
define
PI = 3.14
PI.print
if then else 
if then
(5==5).if.print
(5==5).if
"Yes".print
Use the Auto-Block-Function of a Group, that calls automaticly .if
(true)
"yes".print
else
(false)
"Useless line".print
.else
"Yes, it's false".print
ifDo
[3,8,7,1,6,9,3].each.ifDo($ > 6).print
loops and repetitions 
Simple counting
With a Int
5.times
%.print
With a Counter
{5}
%.print
Counter
(from, to, stepping)
Counter(5,9,2).each.print
Short term
{5,9,2}.each.print
With Block
{5,9,2}.each
%.print
Use the Auto-Block-Function, that calls .each
{5,9,2}
%.print
from to
{5,9}
%.print
from to stepping
{5,9,2}
%.print
with Chars
{'a', 'z'}.each.print
{'a', 'z', 3}.each.print
with decimal
{1.23, 5.67, 0.78}.each.print
while
d = true
{d}.each
d.print
d = false
Continue
Long term
_LOOP.continue
Or we use the Control-Helper: §
§continue
Or very short
§>
Break
_LOOP.break
§break
§>>
Regular Expression 
create Object
Regex("^[a-z]+$")
hort version
?"^[a-z]+$"
Match
?"^[a-z]+$".match("abc").print
Or with Str.match
"Hello".match(?"H[a-z]+").print
Replace
?"\s".replace("Hello JM°", "-").print
Or with Str.replace
Backslash
In Regex the backslash is directly used!
"case \foo".replace(?"^case\s*\", "-").print
Condition 
definition
Pars are (condition, then, else)
Condition(true, 1, 2).print
Short version
?(true, 1, 2).print
Streams 
Direct stream
1.toStr.add("23").mul(3).print
Process
1.toStr.proc
a = %+"abc"
a = a.replace('b', 'x')
$< a
.print
Tee
"bla".tee
(% * 3).print
.print
execution control 
try & catch
°try
5/0
.catch
%.print
or:
5.try
(%/0).print
.catch
%.print
%.getMessage.print
%.getSource.print
%.getCall.print
%.getDetail.print
threads 
synchronized
10.sync.times.print
thread
10.async.times.print
System-Command 
simple call
`ls -la`
result-value
`ls -la`.result.print
`ls -la`.exec.print
output
`ls -la`.output.print
`ls -la`.out.print
`ls -la`.lines.each.print