-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrob.ebnf
59 lines (39 loc) · 1.9 KB
/
rob.ebnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* TODO: добавить возможность использовать actor из Uc? */
/* Иструмент: https://bnfplayground.pauliankline.com/ */
/* Общие */
/* ----------------------------------------------------------------------- */
/* элементарные (или встроенные) конструкции */
<whs> ::= " "
<nln> ::= "\n"
/* допустимые значения для типа char, не только: */
<any_char> ::= ([A-Z] | [a-z] | [0-9] | "_")+
/* допустимые для идентификатора значения PlantUML: */
<ids_char> ::= ([A-Z] | [a-z] | [0-9] | "_")+
/* --- */
<string> ::= <any_char>+
<node_id> ::= <ids_char>+
<optwhs> ::= <whs>*
<reqwhs> ::= <whs>+
<end_curly_brace> ::= "}"
/* Rob */
/* ----------------------------------------------------------------------- */
/* стрелка */
<left_arrow_head> ::= "<"
<rght_arrow_head> ::= ">"
<arrow_direction> ::= ("l" | "r" | "d" | "u") | ("left" | "right" | "down" | "up")
<arrow_body> ::= "-"+ <arrow_direction> "-"+
<arrow> ::= <left_arrow_head>? <arrow_body> <rght_arrow_head>?
/* составные конструкции (не используются напрямую) */
<part_whole_node> ::= "\"" <string> "\"" <reqwhs> "as" <reqwhs> <node_id>
<node> ::= <node_id>
/* составные конструкции (то из чего состоит диаграмма/то что вводит пользователь) */
<enduml> ::= "@enduml"
<startuml> ::= "@startuml"
<directive> ::= <startuml> | <enduml>
/* --- */
<whole_node> ::= ("actor" | "boundary" | "entity" | "control") <reqwhs> <part_whole_node>
<short_node> ::= ("actor" | "boundary" | "entity" | "control") <reqwhs> <node_id>
/* --- */
<connection> ::= <node> <reqwhs> <arrow> <reqwhs> <node>
/* --- */
<diagram> ::= <startuml> <nln> ((<whole_node> | <short_node> | <connection>) <nln>)* <enduml>