Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Révision | e00e5501080725f929380109f63d0c4978b7fc2c (tree) |
---|---|
l'heure | 2023-11-04 21:39:06 |
Auteur | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
refacored DocParts (notes & designs)
@@ -1,139 +0,0 @@ | ||
1 | -OLD-Peg Diagram | |
2 | -=============== | |
3 | - | |
4 | -This anayse/design(?) date from around 2021/2022 | |
5 | - | |
6 | -.. UML:: | |
7 | - | |
8 | - @startuml | |
9 | - | |
10 | - package _base { | |
11 | - | |
12 | - abstract AST_BASE { | |
13 | - -_parse_tree | |
14 | - +position() | |
15 | - +position_end() | |
16 | - ~serialize() | |
17 | - } | |
18 | - | |
19 | - class ID { | |
20 | - +name | |
21 | - #validate_or_raise() | |
22 | - } | |
23 | - | |
24 | - ID =|> AST_BASE | |
25 | - } | |
26 | - | |
27 | - package MixIns #Gray { | |
28 | - | |
29 | - class MixIn_value_attribute<MixIn> { | |
30 | - _value | |
31 | - value() | |
32 | - } | |
33 | - | |
34 | - class MixIn_expr_attribute<MixIn> { | |
35 | - _expr | |
36 | - expr() | |
37 | - } | |
38 | - | |
39 | - class MixIn_children_tuple<MixIn> { | |
40 | - _children :Tuple | |
41 | - __len__() | |
42 | - __getitem__() | |
43 | - __iter__() | |
44 | - } | |
45 | - } | |
46 | - | |
47 | - package Peg #0077ff { | |
48 | - | |
49 | - abstract PEG | |
50 | - AST_BASE <|== PEG | |
51 | - | |
52 | - | |
53 | - | |
54 | - abstract Terminal | |
55 | - PEG <|== Terminal | |
56 | - MixIn_value_attribute <|... Terminal | |
57 | - Terminal <|== StrTerm | |
58 | - Terminal <|== RexExpTerm | |
59 | - Terminal <|== Number | |
60 | - | |
61 | - abstract Markers #Orange | |
62 | - annotation EOF #Orange | |
63 | - PEG <|== Markers | |
64 | - Markers <|== EOF | |
65 | - | |
66 | - abstract NonTerminal | |
67 | - PEG <|== NonTerminal | |
68 | - abstract Expression | |
69 | - NonTerminal <|== Expression | |
70 | - | |
71 | - class Setting { | |
72 | - name : ID | |
73 | - value | |
74 | - } | |
75 | - PEG <|== Setting | |
76 | - | |
77 | - class Rule { | |
78 | - name :ID | |
79 | - expr :[] Expression | |
80 | - } | |
81 | - NonTerminal <|== Rule | |
82 | - | |
83 | - interface Rules | |
84 | - PEG <|== Rules | |
85 | - MixIn_children_tuple <|... Rules | |
86 | - Rules <|== ParseRules | |
87 | - Rules <|== Settings | |
88 | - | |
89 | - class Grammar { | |
90 | - +all_rules :Rules | |
91 | - -parse_rules :ParseRules | |
92 | - -settings :Settings | |
93 | - } | |
94 | - NonTerminal <|== Grammar | |
95 | - | |
96 | - | |
97 | - abstract Group | |
98 | - Expression <|== Group | |
99 | - Group <|== UnorderedGroup | |
100 | - MixIn_expr_attribute <|... UnorderedGroup | |
101 | - abstract Quantity | |
102 | - Group <|== Quantity | |
103 | - MixIn_expr_attribute <|... Quantity | |
104 | - Expression <|== Sequence | |
105 | - MixIn_children_tuple <|... Sequence | |
106 | - | |
107 | - Expression <|== OrderedChoice | |
108 | - MixIn_children_tuple <|... OrderedChoice | |
109 | - | |
110 | - class Optional << (?, #0077ff) >> | |
111 | - Quantity <|== Optional | |
112 | - class ZeroOrMore << (*, #0077ff) >> | |
113 | - Quantity <|== ZeroOrMore | |
114 | - class OneOrMore << (+, #0077ff) >> | |
115 | - Quantity <|== OneOrMore | |
116 | - | |
117 | - abstract Predicate | |
118 | - Expression <|== Predicate | |
119 | - MixIn_expr_attribute <|... Predicate | |
120 | - class AndPredicate << (&, #0077ff) notconsuming >> | |
121 | - Predicate <|== AndPredicate | |
122 | - class NotPredicate << (! ,#0077ff) not consuming >> | |
123 | - Predicate <|== NotPredicate | |
124 | - | |
125 | - } | |
126 | - @enduml | |
127 | - | |
128 | - | |
129 | - | |
130 | - | |
131 | - | |
132 | - | |
133 | - | |
134 | - | |
135 | - | |
136 | - | |
137 | - | |
138 | - | |
139 | - |
@@ -1,34 +0,0 @@ | ||
1 | -analyse_imports (220122) | |
2 | -======================== | |
3 | - | |
4 | -.. UML:: | |
5 | - | |
6 | - @startuml | |
7 | - skinparam ArrowColor green | |
8 | - | |
9 | - skinparam component { | |
10 | - BackgroundColor #0077ff | |
11 | - BorderColor black | |
12 | - } | |
13 | - skinparam folder { | |
14 | - BackgroundColor lightblue | |
15 | - BorderColor black | |
16 | - } | |
17 | - | |
18 | - cloud "AsIS 2022/Jan/22" #pink { | |
19 | - | |
20 | - folder AST { | |
21 | - folder castle { | |
22 | - [peg] --> [_base] | |
23 | - [_base] | |
24 | - [~__init __] | |
25 | - } | |
26 | - } | |
27 | - | |
28 | - folder Arpeggio { | |
29 | - [grammar] | |
30 | - [vistor] --> [peg] | |
31 | - } | |
32 | - | |
33 | - } | |
34 | - @enduml |
@@ -1,50 +0,0 @@ | ||
1 | -.. -*- plantuml -*- | |
2 | -.. filename: date of start | |
3 | -.. date in title: last version | |
4 | - | |
5 | -AIGR:: ComponentInterface and Protocols (231009) | |
6 | -================================================ | |
7 | - | |
8 | -.. uml:: | |
9 | - | |
10 | - @startuml | |
11 | - | |
12 | - abstract AIGR | |
13 | - class ComponentInterface | |
14 | - class Protocol | |
15 | - class EventProtocol | |
16 | - class Port { | |
17 | - - direction :PortDirection | |
18 | - - type :PortType | |
19 | - } | |
20 | - abstract ProtocolWrapper { | |
21 | - -based_on\n(the Generic Protocol) | |
22 | - } | |
23 | - class Argument <<(S,lightgreen)>> { | |
24 | - +value :Any | |
25 | - +name :Optional[Str] | |
26 | - } | |
27 | - class TypedParameters <<(S,lightgreen)>> { | |
28 | - +name :str | |
29 | - +type :Type | |
30 | - } | |
31 | - class Type <<(T,lightblue)>> | |
32 | - '-------------------- | |
33 | - | |
34 | - ComponentInterface <--- ComponentInterface: based_on | |
35 | - Port "*" -* ComponentInterface | |
36 | - | |
37 | - Protocol <--- Protocol: based_on | |
38 | - Protocol <-- EventProtocol | |
39 | - Protocol <-- ProtocolWrapper | |
40 | - | |
41 | - ProtocolWrapper *- "+"Argument | |
42 | - | |
43 | - EventProtocol *- "*" Event: events | |
44 | - Event *-- "*" TypedParameters : typedParameters | |
45 | - Event o- "?" Type: returns | |
46 | - | |
47 | - Port o. Protocol: type | |
48 | - | |
49 | - @enduml | |
50 | - |
@@ -1,50 +0,0 @@ | ||
1 | -.. -*- plantuml -*- | |
2 | - | |
3 | -TestDoubles/AIGR: The protocols of the Sieve | |
4 | -============================================ | |
5 | - | |
6 | -.. uml:: | |
7 | - | |
8 | - @startuml | |
9 | - | |
10 | - object StartSieve <<EventProtocol>> | |
11 | - object runTo <<Event>>{ | |
12 | - max: int | |
13 | - } | |
14 | - object newMax <<Event>> { | |
15 | - max: int | |
16 | - } | |
17 | - StartSieve *-- runTo | |
18 | - StartSieve *-- newMax | |
19 | - | |
20 | - '--- | |
21 | - | |
22 | - object SlowStart << EventProtocol>> | |
23 | - object queue_max <<TypedParameter>> { | |
24 | - :int | |
25 | - } | |
26 | - object setMax <<Event>> { | |
27 | - setMax :int | |
28 | - } | |
29 | - SlowStart *-- setMax | |
30 | - SlowStart *- queue_max | |
31 | - | |
32 | - '--- | |
33 | - | |
34 | - object "SlowStart(1)" as SlowStart_1 <<ProtocolWrapper>> { | |
35 | - queue_max=1 | |
36 | - } | |
37 | - SlowStart <-- SlowStart_1: based on | |
38 | - | |
39 | - | |
40 | - '--- | |
41 | - | |
42 | - object SimpleSieve <<EventProtocol>> | |
43 | - SlowStart_1 <-- SimpleSieve: based_on | |
44 | - | |
45 | - object input <<Event>> { | |
46 | - try :int | |
47 | - } | |
48 | - SimpleSieve *--input | |
49 | - | |
50 | - @enduml |
@@ -1,26 +0,0 @@ | ||
1 | -.. -*- plantuml -*- | |
2 | - | |
3 | -TestDoubles/AIGR: The interfaces of the SIEVE (BUSY) | |
4 | -==================================================== | |
5 | - | |
6 | -.. uml:: | |
7 | - | |
8 | - @startuml | |
9 | - | |
10 | - object "**Sieve**" as Sieve <<ComponentInterface>> { | |
11 | - + {static} new(onPrime:int) | |
12 | - } | |
13 | - note right of Sieve: alt-name: **SieveMoat** | |
14 | - object try <<Port>>{ | |
15 | - In: PortDirection | |
16 | - SimpleSieve: type | |
17 | - } | |
18 | - object corprime <<Port>> { | |
19 | - Out: PortDirection | |
20 | - SimpleSieve: type | |
21 | - } | |
22 | - | |
23 | - Sieve *-- try | |
24 | - Sieve *-- corprime | |
25 | - | |
26 | - @enduml |
@@ -1,79 +0,0 @@ | ||
1 | -Namespace & protocols | |
2 | -********************* | |
3 | - | |
4 | -.. uml:: | |
5 | - | |
6 | - @startuml | |
7 | - | |
8 | - package "Protocols in ‘TheSieve’" as P1 <<Node>> { | |
9 | - | |
10 | - package start_sieve as P1A { | |
11 | - object start_sieve <<Source_NS>> #LightSkyBlue { | |
12 | - file: 'start_sieve.Castle' | |
13 | - } | |
14 | - object " " as P1A_d <<dict>> #lightcyan { | |
15 | - StartSieve | |
16 | - base :NS | |
17 | - } | |
18 | - object StartSieve <<EventProtocol>> | |
19 | - | |
20 | - start_sieve o-- P1A_d | |
21 | - start_sieve <-- StartSieve | |
22 | - P1A_d::StartSieve -> StartSieve #DarkMagenta | |
23 | - P1A_d::base --> base #DarkMagenta | |
24 | - } | |
25 | - | |
26 | - package slow_start as P1B { | |
27 | - object slow_start <<Source_NS>> #LightSkyBlue { | |
28 | - file: 'slow_start.Castle' | |
29 | - } | |
30 | - object " " as P1B_d <<dict>> #lightcyan { | |
31 | - SlowStart | |
32 | - base :NS | |
33 | - } | |
34 | - object SlowStart <<EventProtocol>> { | |
35 | - queue_max :int | |
36 | - } | |
37 | - | |
38 | - slow_start o-- P1B_d | |
39 | - slow_start <-- SlowStart | |
40 | - P1B_d::SlowStart -> SlowStart #DarkMagenta | |
41 | - P1B_d::base -> base #DarkMagenta | |
42 | - } | |
43 | - | |
44 | - package simple_sieve as P1C { | |
45 | - object simple_sieve <<Source_NS>> #LightSkyBlue { | |
46 | - file: 'simple_sieve.Castle' | |
47 | - } | |
48 | - object " " as P1C_d <<dict>> #lightcyan { | |
49 | - SlowStart(1) | |
50 | - SimpleSieve | |
51 | - } | |
52 | - object "SlowStart(1)" as SlowStart_1 <<ProtocolWrapper>> { | |
53 | - queue_max=1 | |
54 | - } | |
55 | - object SimpleSieve <<EventProtocol>> | |
56 | - SlowStart_1 <|-- SimpleSieve: based_on | |
57 | - | |
58 | - simple_sieve o-- P1C_d | |
59 | - simple_sieve <-- SlowStart_1 | |
60 | - simple_sieve <--- SimpleSieve | |
61 | - P1C_d::SlowStart_1 -> SlowStart_1 #DarkMagenta | |
62 | - P1C_d::SimpleSieve -> SimpleSieve #DarkMagenta | |
63 | - } | |
64 | - | |
65 | - SlowStart <|---- SlowStart_1 #SkyBlue : based_on | |
66 | - } | |
67 | - | |
68 | - package "Build-in Protocols" as P2 <<Node>> { | |
69 | - package base { | |
70 | - object Protocol <<_RootProtocol>> | |
71 | - } | |
72 | - package buildin { | |
73 | - } | |
74 | - } | |
75 | - | |
76 | - Protocol <|-- StartSieve #SkyBlue : based_on | |
77 | - Protocol <|-- SlowStart #SkyBlue : based_on | |
78 | - | |
79 | - @enduml |
@@ -1,96 +0,0 @@ | ||
1 | -.. -*- plantuml -*- | |
2 | - | |
3 | -============= | |
4 | -AIGR pipeline | |
5 | -============= | |
6 | - | |
7 | -Overview | |
8 | -======== | |
9 | - | |
10 | -.. uml:: | |
11 | - | |
12 | - @startuml | |
13 | - skin rose | |
14 | - !include ../../DocParts/skins.inc | |
15 | - | |
16 | - () "files" as txt1 | |
17 | - | |
18 | - file "*.Castle" as f1 | |
19 | - f1 --> txt1 | |
20 | - file "*.Moat" as f2 | |
21 | - f2 --> txt1 | |
22 | - | |
23 | - package CC{ | |
24 | - txt1 -> CC | |
25 | - | |
26 | - () "AIGR" as a1 | |
27 | - () "AIGR" as a2 | |
28 | - | |
29 | - [Readers] | |
30 | - CC #-> Readers | |
31 | - [Transformers] | |
32 | - Folder Backend { | |
33 | - [Writers] | |
34 | - [Translators] | |
35 | - | |
36 | - Backend #->Writers | |
37 | - | |
38 | - () "files" as txt2 | |
39 | - Writers -( txt2 | |
40 | - txt2 )-> Translators | |
41 | - } | |
42 | - | |
43 | - | |
44 | - | |
45 | - Readers -( a1 | |
46 | - a1 )-> Transformers | |
47 | - Transformers -( a2 | |
48 | - a2 )-> Backend | |
49 | - } | |
50 | - | |
51 | - Translators 0)-> bin | |
52 | - | |
53 | - @enduml | |
54 | - | |
55 | -The Reader(s) | |
56 | -============= | |
57 | - | |
58 | -.. uml:: | |
59 | - | |
60 | - @startuml | |
61 | - skin rose | |
62 | - !include ../../DocParts/skins.inc | |
63 | - | |
64 | - frame "CC” #c0c0c0 { | |
65 | - package Readers #white { | |
66 | - 'portout AIGR | |
67 | - 'portin TXT | |
68 | - | |
69 | - node Reader { | |
70 | - [parser] | |
71 | - [analyse\n(ast)] as ast_ana | |
72 | - [AST 2 AIGR] as AST2AIGR | |
73 | - () "AIGR" as aigr1 | |
74 | - [analyse\n(aigr)] as aigr_ana | |
75 | - () "AIGR" as aigr2 | |
76 | - | |
77 | - parser -> ast_ana : AST | |
78 | - ast_ana -> AST2AIGR : AST | |
79 | - AST2AIGR -> aigr1 | |
80 | - aigr1 -> aigr_ana | |
81 | - aigr_ana -( aigr2 | |
82 | - } | |
83 | - | |
84 | - TXT -> Reader | |
85 | - node mock { | |
86 | - [py_data] | |
87 | - () "AIGR" as aigr3 | |
88 | - | |
89 | - py_data -( aigr3 | |
90 | - } | |
91 | - Reader -[hidden]down-> mock | |
92 | - } | |
93 | - } | |
94 | - | |
95 | - @enduml | |
96 | - |
@@ -0,0 +1,96 @@ | ||
1 | +.. -*- plantuml -*- | |
2 | + | |
3 | +============= | |
4 | +AIGR pipeline | |
5 | +============= | |
6 | + | |
7 | +Overview | |
8 | +======== | |
9 | + | |
10 | +.. uml:: | |
11 | + | |
12 | + @startuml | |
13 | + skin rose | |
14 | + !include ../../DocParts/skins.inc | |
15 | + | |
16 | + () "files" as txt1 | |
17 | + | |
18 | + file "*.Castle" as f1 | |
19 | + f1 --> txt1 | |
20 | + file "*.Moat" as f2 | |
21 | + f2 --> txt1 | |
22 | + | |
23 | + package CC{ | |
24 | + txt1 -> CC | |
25 | + | |
26 | + () "AIGR" as a1 | |
27 | + () "AIGR" as a2 | |
28 | + | |
29 | + [Readers] | |
30 | + CC #-> Readers | |
31 | + [Transformers] | |
32 | + Folder Backend { | |
33 | + [Writers] | |
34 | + [Translators] | |
35 | + | |
36 | + Backend #->Writers | |
37 | + | |
38 | + () "files" as txt2 | |
39 | + Writers -( txt2 | |
40 | + txt2 )-> Translators | |
41 | + } | |
42 | + | |
43 | + | |
44 | + | |
45 | + Readers -( a1 | |
46 | + a1 )-> Transformers | |
47 | + Transformers -( a2 | |
48 | + a2 )-> Backend | |
49 | + } | |
50 | + | |
51 | + Translators 0)-> bin | |
52 | + | |
53 | + @enduml | |
54 | + | |
55 | +The Reader(s) | |
56 | +============= | |
57 | + | |
58 | +.. uml:: | |
59 | + | |
60 | + @startuml | |
61 | + skin rose | |
62 | + !include ../../DocParts/skins.inc | |
63 | + | |
64 | + frame "CC” #c0c0c0 { | |
65 | + package Readers #white { | |
66 | + 'portout AIGR | |
67 | + 'portin TXT | |
68 | + | |
69 | + node Reader { | |
70 | + [parser] | |
71 | + [analyse\n(ast)] as ast_ana | |
72 | + [AST 2 AIGR] as AST2AIGR | |
73 | + () "AIGR" as aigr1 | |
74 | + [analyse\n(aigr)] as aigr_ana | |
75 | + () "AIGR" as aigr2 | |
76 | + | |
77 | + parser -> ast_ana : AST | |
78 | + ast_ana -> AST2AIGR : AST | |
79 | + AST2AIGR -> aigr1 | |
80 | + aigr1 -> aigr_ana | |
81 | + aigr_ana -( aigr2 | |
82 | + } | |
83 | + | |
84 | + TXT -> Reader | |
85 | + node mock { | |
86 | + [py_data] | |
87 | + () "AIGR" as aigr3 | |
88 | + | |
89 | + py_data -( aigr3 | |
90 | + } | |
91 | + Reader -[hidden]down-> mock | |
92 | + } | |
93 | + } | |
94 | + | |
95 | + @enduml | |
96 | + |
@@ -0,0 +1,9 @@ | ||
1 | +Top Level architecture (LOCAL only) | |
2 | +================================== | |
3 | + | |
4 | + | |
5 | +.. toctree:: | |
6 | + :glob: | |
7 | + | |
8 | + * | |
9 | + */index |
@@ -0,0 +1,139 @@ | ||
1 | +OLD-Peg Diagram | |
2 | +=============== | |
3 | + | |
4 | +This anayse/design(?) date from around 2021/2022 | |
5 | + | |
6 | +.. UML:: | |
7 | + | |
8 | + @startuml | |
9 | + | |
10 | + package _base { | |
11 | + | |
12 | + abstract AST_BASE { | |
13 | + -_parse_tree | |
14 | + +position() | |
15 | + +position_end() | |
16 | + ~serialize() | |
17 | + } | |
18 | + | |
19 | + class ID { | |
20 | + +name | |
21 | + #validate_or_raise() | |
22 | + } | |
23 | + | |
24 | + ID =|> AST_BASE | |
25 | + } | |
26 | + | |
27 | + package MixIns #Gray { | |
28 | + | |
29 | + class MixIn_value_attribute<MixIn> { | |
30 | + _value | |
31 | + value() | |
32 | + } | |
33 | + | |
34 | + class MixIn_expr_attribute<MixIn> { | |
35 | + _expr | |
36 | + expr() | |
37 | + } | |
38 | + | |
39 | + class MixIn_children_tuple<MixIn> { | |
40 | + _children :Tuple | |
41 | + __len__() | |
42 | + __getitem__() | |
43 | + __iter__() | |
44 | + } | |
45 | + } | |
46 | + | |
47 | + package Peg #0077ff { | |
48 | + | |
49 | + abstract PEG | |
50 | + AST_BASE <|== PEG | |
51 | + | |
52 | + | |
53 | + | |
54 | + abstract Terminal | |
55 | + PEG <|== Terminal | |
56 | + MixIn_value_attribute <|... Terminal | |
57 | + Terminal <|== StrTerm | |
58 | + Terminal <|== RexExpTerm | |
59 | + Terminal <|== Number | |
60 | + | |
61 | + abstract Markers #Orange | |
62 | + annotation EOF #Orange | |
63 | + PEG <|== Markers | |
64 | + Markers <|== EOF | |
65 | + | |
66 | + abstract NonTerminal | |
67 | + PEG <|== NonTerminal | |
68 | + abstract Expression | |
69 | + NonTerminal <|== Expression | |
70 | + | |
71 | + class Setting { | |
72 | + name : ID | |
73 | + value | |
74 | + } | |
75 | + PEG <|== Setting | |
76 | + | |
77 | + class Rule { | |
78 | + name :ID | |
79 | + expr :[] Expression | |
80 | + } | |
81 | + NonTerminal <|== Rule | |
82 | + | |
83 | + interface Rules | |
84 | + PEG <|== Rules | |
85 | + MixIn_children_tuple <|... Rules | |
86 | + Rules <|== ParseRules | |
87 | + Rules <|== Settings | |
88 | + | |
89 | + class Grammar { | |
90 | + +all_rules :Rules | |
91 | + -parse_rules :ParseRules | |
92 | + -settings :Settings | |
93 | + } | |
94 | + NonTerminal <|== Grammar | |
95 | + | |
96 | + | |
97 | + abstract Group | |
98 | + Expression <|== Group | |
99 | + Group <|== UnorderedGroup | |
100 | + MixIn_expr_attribute <|... UnorderedGroup | |
101 | + abstract Quantity | |
102 | + Group <|== Quantity | |
103 | + MixIn_expr_attribute <|... Quantity | |
104 | + Expression <|== Sequence | |
105 | + MixIn_children_tuple <|... Sequence | |
106 | + | |
107 | + Expression <|== OrderedChoice | |
108 | + MixIn_children_tuple <|... OrderedChoice | |
109 | + | |
110 | + class Optional << (?, #0077ff) >> | |
111 | + Quantity <|== Optional | |
112 | + class ZeroOrMore << (*, #0077ff) >> | |
113 | + Quantity <|== ZeroOrMore | |
114 | + class OneOrMore << (+, #0077ff) >> | |
115 | + Quantity <|== OneOrMore | |
116 | + | |
117 | + abstract Predicate | |
118 | + Expression <|== Predicate | |
119 | + MixIn_expr_attribute <|... Predicate | |
120 | + class AndPredicate << (&, #0077ff) notconsuming >> | |
121 | + Predicate <|== AndPredicate | |
122 | + class NotPredicate << (! ,#0077ff) not consuming >> | |
123 | + Predicate <|== NotPredicate | |
124 | + | |
125 | + } | |
126 | + @enduml | |
127 | + | |
128 | + | |
129 | + | |
130 | + | |
131 | + | |
132 | + | |
133 | + | |
134 | + | |
135 | + | |
136 | + | |
137 | + | |
138 | + | |
139 | + |
@@ -0,0 +1,10 @@ | ||
1 | +Old (design) notes (LOCAL only) | |
2 | +=============================== | |
3 | + | |
4 | +These are outdated, and not maintain | |
5 | + | |
6 | +.. toctree:: | |
7 | + :glob: | |
8 | + | |
9 | + * | |
10 | + */index |
@@ -1,4 +1,4 @@ | ||
1 | -Partial Design Notes (LOCAL only) | |
1 | +All kind of (LOCAL only) Designs | |
2 | 2 | ================================= |
3 | 3 | |
4 | 4 |
@@ -0,0 +1,34 @@ | ||
1 | +analyse_imports (220122) | |
2 | +======================== | |
3 | + | |
4 | +.. UML:: | |
5 | + | |
6 | + @startuml | |
7 | + skinparam ArrowColor green | |
8 | + | |
9 | + skinparam component { | |
10 | + BackgroundColor #0077ff | |
11 | + BorderColor black | |
12 | + } | |
13 | + skinparam folder { | |
14 | + BackgroundColor lightblue | |
15 | + BorderColor black | |
16 | + } | |
17 | + | |
18 | + cloud "AsIS 2022/Jan/22" #pink { | |
19 | + | |
20 | + folder AST { | |
21 | + folder castle { | |
22 | + [peg] --> [_base] | |
23 | + [_base] | |
24 | + [~__init __] | |
25 | + } | |
26 | + } | |
27 | + | |
28 | + folder Arpeggio { | |
29 | + [grammar] | |
30 | + [vistor] --> [peg] | |
31 | + } | |
32 | + | |
33 | + } | |
34 | + @enduml |
@@ -0,0 +1,50 @@ | ||
1 | +.. -*- plantuml -*- | |
2 | +.. filename: date of start | |
3 | +.. date in title: last version | |
4 | + | |
5 | +AIGR:: ComponentInterface and Protocols (231009) | |
6 | +================================================ | |
7 | + | |
8 | +.. uml:: | |
9 | + | |
10 | + @startuml | |
11 | + | |
12 | + abstract AIGR | |
13 | + class ComponentInterface | |
14 | + class Protocol | |
15 | + class EventProtocol | |
16 | + class Port { | |
17 | + - direction :PortDirection | |
18 | + - type :PortType | |
19 | + } | |
20 | + abstract ProtocolWrapper { | |
21 | + -based_on\n(the Generic Protocol) | |
22 | + } | |
23 | + class Argument <<(S,lightgreen)>> { | |
24 | + +value :Any | |
25 | + +name :Optional[Str] | |
26 | + } | |
27 | + class TypedParameters <<(S,lightgreen)>> { | |
28 | + +name :str | |
29 | + +type :Type | |
30 | + } | |
31 | + class Type <<(T,lightblue)>> | |
32 | + '-------------------- | |
33 | + | |
34 | + ComponentInterface <--- ComponentInterface: based_on | |
35 | + Port "*" -* ComponentInterface | |
36 | + | |
37 | + Protocol <--- Protocol: based_on | |
38 | + Protocol <-- EventProtocol | |
39 | + Protocol <-- ProtocolWrapper | |
40 | + | |
41 | + ProtocolWrapper *- "+"Argument | |
42 | + | |
43 | + EventProtocol *- "*" Event: events | |
44 | + Event *-- "*" TypedParameters : typedParameters | |
45 | + Event o- "?" Type: returns | |
46 | + | |
47 | + Port o. Protocol: type | |
48 | + | |
49 | + @enduml | |
50 | + |
@@ -0,0 +1,50 @@ | ||
1 | +.. -*- plantuml -*- | |
2 | + | |
3 | +TestDoubles/AIGR: The protocols of the Sieve | |
4 | +============================================ | |
5 | + | |
6 | +.. uml:: | |
7 | + | |
8 | + @startuml | |
9 | + | |
10 | + object StartSieve <<EventProtocol>> | |
11 | + object runTo <<Event>>{ | |
12 | + max: int | |
13 | + } | |
14 | + object newMax <<Event>> { | |
15 | + max: int | |
16 | + } | |
17 | + StartSieve *-- runTo | |
18 | + StartSieve *-- newMax | |
19 | + | |
20 | + '--- | |
21 | + | |
22 | + object SlowStart << EventProtocol>> | |
23 | + object queue_max <<TypedParameter>> { | |
24 | + :int | |
25 | + } | |
26 | + object setMax <<Event>> { | |
27 | + setMax :int | |
28 | + } | |
29 | + SlowStart *-- setMax | |
30 | + SlowStart *- queue_max | |
31 | + | |
32 | + '--- | |
33 | + | |
34 | + object "SlowStart(1)" as SlowStart_1 <<ProtocolWrapper>> { | |
35 | + queue_max=1 | |
36 | + } | |
37 | + SlowStart <-- SlowStart_1: based on | |
38 | + | |
39 | + | |
40 | + '--- | |
41 | + | |
42 | + object SimpleSieve <<EventProtocol>> | |
43 | + SlowStart_1 <-- SimpleSieve: based_on | |
44 | + | |
45 | + object input <<Event>> { | |
46 | + try :int | |
47 | + } | |
48 | + SimpleSieve *--input | |
49 | + | |
50 | + @enduml |
@@ -0,0 +1,26 @@ | ||
1 | +.. -*- plantuml -*- | |
2 | + | |
3 | +TestDoubles/AIGR: The interfaces of the SIEVE (BUSY) | |
4 | +==================================================== | |
5 | + | |
6 | +.. uml:: | |
7 | + | |
8 | + @startuml | |
9 | + | |
10 | + object "**Sieve**" as Sieve <<ComponentInterface>> { | |
11 | + + {static} new(onPrime:int) | |
12 | + } | |
13 | + note right of Sieve: alt-name: **SieveMoat** | |
14 | + object try <<Port>>{ | |
15 | + In: PortDirection | |
16 | + SimpleSieve: type | |
17 | + } | |
18 | + object corprime <<Port>> { | |
19 | + Out: PortDirection | |
20 | + SimpleSieve: type | |
21 | + } | |
22 | + | |
23 | + Sieve *-- try | |
24 | + Sieve *-- corprime | |
25 | + | |
26 | + @enduml |
@@ -0,0 +1,79 @@ | ||
1 | +Namespace & protocols | |
2 | +********************* | |
3 | + | |
4 | +.. uml:: | |
5 | + | |
6 | + @startuml | |
7 | + | |
8 | + package "Protocols in ‘TheSieve’" as P1 <<Node>> { | |
9 | + | |
10 | + package start_sieve as P1A { | |
11 | + object start_sieve <<Source_NS>> #LightSkyBlue { | |
12 | + file: 'start_sieve.Castle' | |
13 | + } | |
14 | + object " " as P1A_d <<dict>> #lightcyan { | |
15 | + StartSieve | |
16 | + base :NS | |
17 | + } | |
18 | + object StartSieve <<EventProtocol>> | |
19 | + | |
20 | + start_sieve o-- P1A_d | |
21 | + start_sieve <-- StartSieve | |
22 | + P1A_d::StartSieve -> StartSieve #DarkMagenta | |
23 | + P1A_d::base --> base #DarkMagenta | |
24 | + } | |
25 | + | |
26 | + package slow_start as P1B { | |
27 | + object slow_start <<Source_NS>> #LightSkyBlue { | |
28 | + file: 'slow_start.Castle' | |
29 | + } | |
30 | + object " " as P1B_d <<dict>> #lightcyan { | |
31 | + SlowStart | |
32 | + base :NS | |
33 | + } | |
34 | + object SlowStart <<EventProtocol>> { | |
35 | + queue_max :int | |
36 | + } | |
37 | + | |
38 | + slow_start o-- P1B_d | |
39 | + slow_start <-- SlowStart | |
40 | + P1B_d::SlowStart -> SlowStart #DarkMagenta | |
41 | + P1B_d::base -> base #DarkMagenta | |
42 | + } | |
43 | + | |
44 | + package simple_sieve as P1C { | |
45 | + object simple_sieve <<Source_NS>> #LightSkyBlue { | |
46 | + file: 'simple_sieve.Castle' | |
47 | + } | |
48 | + object " " as P1C_d <<dict>> #lightcyan { | |
49 | + SlowStart(1) | |
50 | + SimpleSieve | |
51 | + } | |
52 | + object "SlowStart(1)" as SlowStart_1 <<ProtocolWrapper>> { | |
53 | + queue_max=1 | |
54 | + } | |
55 | + object SimpleSieve <<EventProtocol>> | |
56 | + SlowStart_1 <|-- SimpleSieve: based_on | |
57 | + | |
58 | + simple_sieve o-- P1C_d | |
59 | + simple_sieve <-- SlowStart_1 | |
60 | + simple_sieve <--- SimpleSieve | |
61 | + P1C_d::SlowStart_1 -> SlowStart_1 #DarkMagenta | |
62 | + P1C_d::SimpleSieve -> SimpleSieve #DarkMagenta | |
63 | + } | |
64 | + | |
65 | + SlowStart <|---- SlowStart_1 #SkyBlue : based_on | |
66 | + } | |
67 | + | |
68 | + package "Build-in Protocols" as P2 <<Node>> { | |
69 | + package base { | |
70 | + object Protocol <<_RootProtocol>> | |
71 | + } | |
72 | + package buildin { | |
73 | + } | |
74 | + } | |
75 | + | |
76 | + Protocol <|-- StartSieve #SkyBlue : based_on | |
77 | + Protocol <|-- SlowStart #SkyBlue : based_on | |
78 | + | |
79 | + @enduml |
@@ -0,0 +1,15 @@ | ||
1 | +Some (LOCAL only) Design Notes | |
2 | +============================== | |
3 | + | |
4 | +This are “quick and dirty” design diagrams. That where useful when created (see file-name), but may be less relevant | |
5 | +later. | |
6 | + | |
7 | +* Sound designs, are typically worked out (adding text & view), and move to a stable, to-be-maintained, location | |
8 | +* Outdated one are (will be) moved to :doc:`/../archived/index.rst` (and will never be maintained | |
9 | +* the one here, a undecided, may or may-not be maintained. | |
10 | + | |
11 | +.. toctree:: | |
12 | + :glob: | |
13 | + | |
14 | + * | |
15 | + */index |