docs added
This commit is contained in:
parent
c86ad6e5ac
commit
7df1b2745e
3 changed files with 2134 additions and 3 deletions
2017
docs/file.pdf
Normal file
2017
docs/file.pdf
Normal file
File diff suppressed because it is too large
Load diff
112
docs/file.typ
Normal file
112
docs/file.typ
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
#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,9 +1,11 @@
|
||||||
{ pkgs ? import <nixpkgs> {} }:
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
buildInputs = [
|
buildInputs = with pkgs; [
|
||||||
pkgs.rustc
|
rustc
|
||||||
pkgs.cargo
|
cargo
|
||||||
|
typst
|
||||||
|
typstPackages.diagraph
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue