Точка с запятой



Использовать точку с запятой для обозначения конца утверждений в 11l не требуется {}. Утверждения всегда завершаются посредством символа новой строки при условии что автоматическое объединение строк (см. ниже) не сработало.


Автоматическое объединение строк



Вместо непонятных вещей вроде Automatic Semicolon Insertion со сложными правилами (которое, к тому же, иногда работает некорректно {}) в 11l используются в основном лишь 3 простых правила, которые легко понятны и программисту и лексическому анализатору:
  1. Если строка оканчивается на бинарный оператор, то она объединяется со следующей строкой:
    I условие1 | // эта строка будет объединена со следующей, так как она оканчивается на бинарный оператор `|`
      условие2
       some_func()
    
  2. Если строка начинается на бинарный оператор, то она объединяется с предыдущей строкой: {}
    some_variable = 2
                  + 3 // эта строка будет объединена с предыдущей, так как она начинается на бинарный оператор `+`
    
  3. И также как в Python для выражений в круглых и квадратных скобках символ новой строки игнорируется: [{}]
    some_func( // так как в этой строке не закрыта скобка, все последующие строки будут объединяться до тех пор,
       argument1,                                                                \\ пока скобка не будет закрыта
       argument2)
    

Примечание: точка (
.
) не считается бинарным оператором, так как она также используется в качестве префикса переменных (смотри Префиксы переменных), и если требуется перенести вызов метода на следующую строку, тогда добавьте перед точкой обратный слэш:
result = obj.method1()
           \.method2()