libamxo  4.3.4
Object Definition Language (ODL) parsing
function_rr.py
Go to the documentation of this file.
1 # https://pypi.org/project/railroad-diagrams/
2 # https://jakearchibald.github.io/svgomg/
3 
4 from railroad import *
5 
6 css_rr = """svg.railroad-diagram {
7  background-color:hsl(30,20%,95%);
8 }
9 svg.railroad-diagram path {
10  stroke-width:3;
11  stroke:black;
12  fill:rgba(0,0,0,0);
13 }
14 svg.railroad-diagram text {
15  font:bold 14px monospace;
16  text-anchor:middle;
17 }
18 svg.railroad-diagram text.label{
19  text-anchor:start;
20 }
21 svg.railroad-diagram text.comment{
22  font:italic 12px monospace;
23 }
24 svg.railroad-diagram rect{
25  stroke-width:3;
26  stroke:black;
27  fill:hsl(120,100%,90%);
28 }
29 svg.railroad-diagram g.non-terminal rect{
30  stroke: black;
31  fill: white;
32 )
33 svg.railroad-diagram rect.group-box {
34  stroke: gray;
35  stroke-dasharray: 10 5;
36  fill: none;
37 }"""
38 
39 d = Diagram(
40  Sequence(
41  Optional(
42  Choice(0,
43  Terminal("%protected"),
44  Terminal("%private")
45  ),"skip"
46  ),
47  ZeroOrMore(
48  Choice(0,
49  Terminal("%template"),
50  Terminal("%instance"),
51  Terminal("%async"),
52  ),"","skip"
53  ),
54  Choice(0,
55  Terminal("string"),
56  Terminal("csv_string"),
57  Terminal("ssv_string"),
58  Terminal("int8"),
59  Terminal("int16"),
60  Terminal("int32"),
61  Terminal("int64"),
62  Terminal("uint8"),
63  Terminal("uint16"),
64  Terminal("uint32"),
65  Terminal("uint64"),
66  Terminal("bool"),
67  Terminal("datetime"),
68  Terminal("list"),
69  Terminal("htable"),
70  Terminal("void"),
71  Terminal("variant")
72  ),
73  Choice(0,
74  Terminal("<NAME>"),
75  Terminal("'<NAME>'"),
76  Terminal('"<NAME>"')
77  ),
78  Terminal("("),
79  ZeroOrMore(
80  NonTerminal("ARGUMENT"), ","
81  ),
82  Terminal(")"),
83  Stack(
84  Optional(
85  Sequence(
86  NonTerminal("RESOLVER"),
87  ), "skip"
88  ),
89  Choice(0,
90  Terminal(";"),
91  Sequence(
92  Terminal("{"),
93  ZeroOrMore(
94  NonTerminal("USERFLAGS"), ","
95  ),
96  Terminal("}")
97  )
98  )
99  )
100  )
101 )
102 
103 d.writeStandalone(sys.stdout.write, css=css_rr)