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

OSCHINA-MIRROR/junruoyu-zheng-ligral

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
syntax.md 3.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 02:01 6be31cf

В Китае для решения проблемы выразительности и сохранения лаконичности синтаксиса было введено понятие «пустого узла». Пустой узел фактически представляет собой модуль, который напрямую пересылает входные данные на выход. Это позволяет пользователям ставить метки в любом месте линейного соединения и ссылаться на них в другом (или даже в том же самом) выражении. Например, для представления цикла:

╭───╮           ┌─────┐          ╭───╮
│ u ├───►(x)───►│ 1/s ├────┬────►│ x │
╰───╯     ▲-    └─────┘    │     ╰───╯
            │    ┌───┐       │
            └────┤ k │◄──────┘
                └───┘   

С помощью пустых узлов можно легко выразить это с помощью Ligral:

u-k*x -> Integrator -> x;

Пустые узлы широко используются в Ligral, поэтому мы упростили синтаксис объявления пустых узлов. Полное объявление должно быть Node[x], но в интерпретаторе все идентификаторы, которые не были объявлены, автоматически обрабатываются как пустые узлы. Однако это может вызвать проблему, если пользователь случайно неправильно напишет имя идентификатора или должен был объявить идентификатор, но не сделал этого. В этом случае идентификатор будет распознан как новый пустой узел, что приведет к неожиданной ошибке (обычно это сообщение о том, что узел не подключен). Эту проблему необходимо решить, но пока нет хорошего способа ее решения.

Синтаксис построения матриц

В Simulink построение матрицы из скаляра осуществляется с помощью модуля Mux; наоборот, преобразование матрицы в скаляр выполняется через модуль DeMux. Соответствующие модули в Ligral — это серии Stack и Split (Ligral различает направления строк и столбцов). На данный момент последний шаг использует Split, а не VSplit, потому что скаляры и матрицы еще не унифицированы, и данные после разложения VSplit по-прежнему являются матрицей, а не скаляром.

(1, 2) -> HStack -> row1; (3, 4) -> HStack -> row2; (row1, row2) -> VStack -> mat;

mat -> HSplit -> (col1, col2); col1 -> Split -> (item11, item21); col2 -> Split -> (item12, item22);

Однако в текстовом языке операции с матрицами можно упростить еще больше.

[1, 2; 3, 4] -> mat -> [item11, item12; item21, item22];

Это больше соответствует привычкам пользователей текстовых языков.

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

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

1
https://api.gitlife.ru/oschina-mirror/junruoyu-zheng-ligral.git
git@api.gitlife.ru:oschina-mirror/junruoyu-zheng-ligral.git
oschina-mirror
junruoyu-zheng-ligral
junruoyu-zheng-ligral
dev