Langur statement termination syntax follows the Go idiom. Statements may be terminated with a semicolon, but it is almost always unnecessary. As I see it, most statements are on a single line, so why should a semicolon be necessary on every statement? (They are added internally, as needed.)
By default, an end of a line is an end of a statement.
The following tokens as the last token on a line do not end a statement.
: ( [ { , = ~ |
+ - x / \ // rem mod ^ ^/ |
div ndiv div? ndiv? |
< <= > >= == != |
<? <=? >? >=? ==? !=? |
and and? or or? |
nand nand? nor nor? |
xor xor? nxor nxor? |
: ( [ { , = ~ |
+ - x / \ // |
rem mod ^ ^/ |
div ndiv |
div? ndiv? |
< <= > >= |
== != |
<? <=? >? >=? |
==? !=? |
and and? |
or or? |
nand nand? |
nor nor? |
xor xor? |
nxor nxor? |
A comma at the end of a line terminates all unbounded argument lists (function calls not using parentheses), just as the end-of-line would do. This allows you to use unbounded lists within bounded lists over multiple lines.