Compare commits
No commits in common. "master" and "ast-to-dsl" have entirely different histories.
master
...
ast-to-dsl
3 changed files with 3 additions and 2134 deletions
2017
docs/file.pdf
2017
docs/file.pdf
File diff suppressed because it is too large
Load diff
112
docs/file.typ
112
docs/file.typ
|
|
@ -1,112 +0,0 @@
|
||||||
#import "@preview/diagraph:0.3.6": render, raw-render
|
|
||||||
|
|
||||||
== "Дорожная карта" (план развития) языка plcc
|
|
||||||
|
|
||||||
=== Ограничения, накладываемые на разработку языка
|
|
||||||
|
|
||||||
В основе языка plcc предусмотрены принципы и ограничения:
|
|
||||||
|
|
||||||
1. Выполнения в условиях реального времени.
|
|
||||||
|
|
||||||
2. Принципах продвинутого статического анализа кода, в частности...
|
|
||||||
|
|
||||||
3. контент-адресуемости (если формулы эквивалентны, то считаются равными; возможно отслеживание изменений на уровне абстрактного синтаксического дерева)
|
|
||||||
|
|
||||||
4. Ориентации на исполнение на ПЛК.
|
|
||||||
|
|
||||||
5. Ориентации на возможность распределенного исполнения программ.
|
|
||||||
|
|
||||||
=== Перспективы
|
|
||||||
|
|
||||||
1. Поддержка распределенного исполнения
|
|
||||||
|
|
||||||
2. Поддержка трехзначной и Null Convention логики
|
|
||||||
|
|
||||||
3. "Стимулирование" использования чистых функций вместо функциональных блоков, сокращение количества внутренних переменных
|
|
||||||
|
|
||||||
== Пример АСД
|
|
||||||
|
|
||||||
=== Пример построения полной формы АСД языка plcc
|
|
||||||
|
|
||||||
Полная форма АСД включает в себя управляющие узлы и примитивные функции:
|
|
||||||
|
|
||||||
|
|
||||||
#render("
|
|
||||||
digraph {
|
|
||||||
none -> C0
|
|
||||||
C0 -> sin
|
|
||||||
C0 -> C1
|
|
||||||
C1 -> \"+\";
|
|
||||||
C1 -> ┴;
|
|
||||||
┴ -> C2
|
|
||||||
C2 -> cos;
|
|
||||||
C2 -> x1;
|
|
||||||
┴ -> C3
|
|
||||||
C3 -> \"3*\";
|
|
||||||
C3 -> x2;
|
|
||||||
none [label=\"\", shape=none]
|
|
||||||
x1 [label=x, shape=block];
|
|
||||||
x2 [label=x, shape=block];
|
|
||||||
sin [shape=block]
|
|
||||||
\"+\" [shape=block]
|
|
||||||
cos [shape=block]
|
|
||||||
\"3*\" [shape=block]
|
|
||||||
}
|
|
||||||
")
|
|
||||||
|
|
||||||
=== Пример построения краткой формы АСД языка plcc
|
|
||||||
|
|
||||||
Краткая форма АСД состоит в сокрытии композиционного управляющего узла с под одноместными функциями:
|
|
||||||
|
|
||||||
#render("
|
|
||||||
digraph {
|
|
||||||
none -> sin
|
|
||||||
sin -> \"+\";
|
|
||||||
\"+\" -> ┴;
|
|
||||||
┴ -> cos;
|
|
||||||
cos -> x1;
|
|
||||||
┴ -> \"3*\";
|
|
||||||
\"3*\" -> x2;
|
|
||||||
x1 [label=x];
|
|
||||||
x2 [label=x];
|
|
||||||
none [label=\"\", shape=none]
|
|
||||||
}
|
|
||||||
")
|
|
||||||
|
|
||||||
== Пример равенства АСД
|
|
||||||
|
|
||||||
За счет свойства коммутативности операции сложения для чисел $a + b = b + a$, одно поддерево плюс другое равно те же самые деревья, но сложенные в обратном порядке:
|
|
||||||
|
|
||||||
#render("
|
|
||||||
digraph {
|
|
||||||
none -> sin
|
|
||||||
sin -> \"+\";
|
|
||||||
\"+\" -> ┴;
|
|
||||||
┴ -> cos;
|
|
||||||
cos -> x1;
|
|
||||||
┴ -> \"3*\";
|
|
||||||
\"3*\" -> x2;
|
|
||||||
x1 [label=x];
|
|
||||||
x2 [label=x];
|
|
||||||
|
|
||||||
|
|
||||||
nonen -> sinn
|
|
||||||
sinn -> plusn;
|
|
||||||
plusn -> ┴n [color=red];
|
|
||||||
┴n -> triple [color=red];
|
|
||||||
triple -> x2n;
|
|
||||||
┴n -> cosn [color=red];
|
|
||||||
cosn -> x1n;
|
|
||||||
|
|
||||||
x1n [label=x];
|
|
||||||
x2n [label=x];
|
|
||||||
|
|
||||||
|
|
||||||
none, nonen [label=\"\", shape=none]
|
|
||||||
sinn [label=sin]
|
|
||||||
plusn [label=\"+\", color=red]
|
|
||||||
cosn [label=cos]
|
|
||||||
┴n [label=┴, color=red]
|
|
||||||
triple [label=\"3*\"]
|
|
||||||
}
|
|
||||||
")
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
{ pkgs ? import <nixpkgs> {} }:
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
buildInputs = with pkgs; [
|
buildInputs = [
|
||||||
rustc
|
pkgs.rustc
|
||||||
cargo
|
pkgs.cargo
|
||||||
typst
|
|
||||||
typstPackages.diagraph
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue