1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/LaomoBK-ail

Клонировать/Скачать
statements.md 4.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 19:57 864373e

Определение и семантика синтаксических конструкций

with с with_item [; with_item] block

with_item := [assign_tuple =] expression.

Если есть несколько with_item, семантически это эквивалентно вложенным операторам with:

with a = A(); b = B() {
    // ...
}
// равносильно...
with a = A() {
    with b = B() {
        // ...
    }
}

Определение операторов и присваивание значений

  • Присваивание значений.

Assign_tuple = expression;

Оператор присваивания значений относится к явным определениям. Оператор присваивания не может использоваться как выражение. Часть assign_tuple является особым выражением, которое в определённом смысле становится левым значением выражения. Часть assign может быть выражением нижнего индекса, выражением члена или специальным кортежем assign.

Элементы кортежа assign должны быть левыми значениями выражения. Когда правая часть выражения присваивания является распаковываемым объектом, результаты распаковки будут присвоены элементам кортежа по очереди:

a, b, c = c, b, a;

  • Определение функции.

func [ ( NAME ) ] NAME (param [, param]* [, *param] [, **param]) { statements }.

Определение функции также относится к явным определениям. Конкретная структура выглядит следующим образом:

func [bind] name param_list { statements }.

Bind является необязательным. Если bind определено, это означает, что функция является связанной функцией соответствующей структуры. Следует отметить, что связанная функция — это не выражение, а имя.

  • Определение класса.

class NAME [: expression] [extends expression [, expression]] { statements }.

Конкретная структура определения класса выглядит следующим образом:

class name [:meta_class] [extends super_class...]

Если meta_class не указан, по умолчанию используется type, если super_class не указано, по умолчанию используется object.

  • Определение структуры.

struct NAME { [[protected NAME;] | [NAME;]]* }.

Определения структуры также относятся к явным определениям. В структуре можно определить защищённые члены, которые нельзя изменить вне связанной функции.

  • Определение пространства имён.

namespace NAME { statements }

Определение пространства имён также относится к явным определениям.

  • ShadowAssign оператор.

NAME ':=' expression ';'

  • Операторы загрузки и импорта.

  • import оператор.

import [NAME] STRING [(NAME [, NAME]*)];

Различные структуры import оператора следующие:

import [alias] module_path [(mumber...)];

Импорт оператора будет импортировать модуль в local. Если указан alias, имя модуля будет изменено на указанное псевдоним. Если указаны member, будут импортированы соответствующие члены модуля. При одновременном указании alias и member возникнет синтаксическая ошибка.

Например:

import 'a' (a, b);

import x 'a';

  • load оператор.

load STRING;

Load оператор используется для импорта всех экспортированных членов модуля в local.

  • Python встраиваемый код.

#py_statement

Встраиваемый код Python будет напрямую скомпилирован в соответствующее дерево синтаксиса Python.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/LaomoBK-ail.git
git@api.gitlife.ru:oschina-mirror/LaomoBK-ail.git
oschina-mirror
LaomoBK-ail
LaomoBK-ail
3.0