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.mkShell {
|
||||
buildInputs = [
|
||||
pkgs.rustc
|
||||
pkgs.cargo
|
||||
buildInputs = with pkgs; [
|
||||
rustc
|
||||
cargo
|
||||
typst
|
||||
typstPackages.diagraph
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue