|
1 | 1 | digraph G { |
2 | | - label="Darglint Parsing\n "; |
3 | | - labelloc="top"; |
4 | | - |
5 | | - /* ============= GRAMMAR GENERATION =========================== */ |
6 | | - node [shape="rect", style="filled", fillcolor="#f5f5f5"]; |
7 | | - bnf_to_cnf [shape="none", fontcolor="#9f0000", style=""]; |
8 | | - subgraph bnf_cluster { |
9 | | - google_arguments_section [shape="tab", label=< |
10 | | - <table border="0" cellborder="0" cellspacing="0"> |
11 | | - <tr><td>google_arguments_grammar.bnf</td></tr> |
12 | | - <tr><td border="1" bgcolor="#ffffff">ArgumentsGrammar</td></tr> |
13 | | - </table>>]; |
14 | | - |
15 | | - sphinx_arguments_section [shape="tab", label=< |
16 | | - <table border="0" cellborder="0" cellspacing="0"> |
17 | | - <tr><td>sphinx_arguments_grammar.bnf</td></tr> |
18 | | - <tr><td border="1" bgcolor="#ffffff">ArgumentsGrammar</td></tr> |
19 | | - </table>>]; |
20 | | - |
21 | | - dots [style="", label="...", shape="none", height="0.1", width="0.1"]; |
22 | | - } |
23 | | - subgraph cnf_cluster { |
24 | | - google_arguments_section1 [shape="tab", label=< |
25 | | - <table border="0" cellborder="0" cellspacing="0"> |
26 | | - <tr><td>google_arguments_grammar.py</td></tr> |
27 | | - <tr><td border="1" bgcolor="#ffffff">ArgumentsGrammar</td></tr> |
28 | | - </table>>]; |
29 | | - |
30 | | - sphinx_arguments_section1 [shape="tab", label=< |
31 | | - <table border="0" cellborder="0" cellspacing="0"> |
32 | | - <tr><td>sphinx_arguments_grammar.py</td></tr> |
33 | | - <tr><td border="1" bgcolor="#ffffff">ArgumentsGrammar</td></tr> |
34 | | - </table>>]; |
35 | | - |
36 | | - dots1 [style="", label="...", shape="none", height="0.1", width="0.1"]; |
37 | | - } |
38 | | - |
39 | | - /* ============= LEXING ======================================= */ |
40 | | - node [fillcolor="#ffffff"]; |
41 | | - source [shape="tab", label="source.py"]; |
42 | | - lex [shape="none", label="lex()"]; |
43 | | - condense [shape="none", label="condense()"]; |
44 | | - |
45 | | - /* ============= PARSING ====================================== */ |
46 | | - parse [shape="none", label="parse()"]; |
47 | | - |
48 | | - BaseGrammar; |
49 | | - Identifier; |
50 | | - Token; |
51 | | - CykNode; |
52 | | - |
53 | | - // Input-Output |
54 | | - edge [style="dashed", arrowhead="vee"]; |
55 | | - { BaseGrammar, Token } -> parse -> CykNode; |
56 | | - |
57 | | - _blank0 [shape="none", label="", width="0.1", height="0.1"]; |
58 | | - { google_arguments_section, sphinx_arguments_section, dots } -> _blank0 [arrowhead="none"]; |
59 | | - _blank0 -> bnf_to_cnf; |
60 | | - |
61 | | - _blank1 [shape="none", label="", width="0.1", height="0.1"]; |
62 | | - bnf_to_cnf -> _blank1 [arrowhead="none"]; |
63 | | - _blank1 -> {google_arguments_section1, sphinx_arguments_section1, dots1}; |
64 | | - |
65 | | - source -> lex -> condense -> Token; |
66 | | - |
67 | | - // Is-a |
68 | | - edge [style="solid", arrowhead="onormal"]; |
69 | | - { dots1, google_arguments_section1, sphinx_arguments_section1 } -> BaseGrammar; |
70 | | - // Has-a |
71 | | - edge [dir="both", arrowhead="none", arrowtail="odiamond"]; |
72 | | - BaseGrammar -> Identifier; |
73 | | - |
74 | | - // Association |
75 | | - edge [style="dotted", arrowhead="none", arrowtail="none"]; |
76 | | - Identifier -> CykNode; |
77 | | - |
78 | | - // Misc Shaping. (Delete after every addition/removal above.) |
79 | | - |
80 | | - { |
81 | | - rank="same"; |
82 | | - node [label="", shape="none"]; |
83 | | - edge [color="white"]; |
84 | | - // Force token to be in line with the source, lex, condense chain. |
85 | | - Token -> empty0 -> empty1 -> empty2 -> empty3 -> BaseGrammar; |
86 | | - } |
| 2 | + node [shape="rect"]; |
| 3 | + source [label="source", shape="tab"]; |
| 4 | + parse [label="Parse", shape="oval"]; |
| 5 | + CykNode; |
| 6 | + Identifier; |
| 7 | + DarglintError; |
| 8 | + IntegrityChecker [shape="plaintext", label=< |
| 9 | + <table border="0" cellborder="1" cellspacing="0"> |
| 10 | + <tr><td colspan="2">IntegrityChecker</td></tr> |
| 11 | + <tr> |
| 12 | + <td> |
| 13 | + <table border="0" cellborder="0" cellspacing="0"> |
| 14 | + <tr> |
| 15 | + <td align="left">schedule(function: FunctionDescription):</td> |
| 16 | + <td></td> |
| 17 | + </tr> |
| 18 | + <tr> |
| 19 | + <td align="left">run_checks(function: FunctionDescription): </td> |
| 20 | + <td></td> |
| 21 | + </tr> |
| 22 | + <tr> |
| 23 | + <td align="left">get_error_report(verbosity: int, filename: str, message_template: str):</td> |
| 24 | + <td>ErrorReport</td> |
| 25 | + </tr> |
| 26 | + </table> |
| 27 | + </td> |
| 28 | + </tr> |
| 29 | + </table> |
| 30 | + >]; |
| 31 | + BaseDocstring; |
| 32 | + ErrorReport; |
| 33 | + FunctionDefinition; |
| 34 | + |
| 35 | + // Input/Output |
| 36 | + edge [style="dashed", arrowhead="vee"]; |
| 37 | + source -> { parse, FunctionDefinition }; |
| 38 | + parse -> CykNode; |
| 39 | + { BaseDocstring, FunctionDefinition } -> IntegrityChecker -> ErrorReport; |
| 40 | + |
| 41 | + |
| 42 | + // Is-A |
| 43 | + edge [style="solid", arrowhead="onormal"]; |
| 44 | + |
| 45 | + // Has-A |
| 46 | + edge [dir="both", arrowhead="none", arrowtail="odiamond"]; |
| 47 | + CykNode -> { Identifier, DarglintError }; |
| 48 | + BaseDocstring -> CykNode; |
87 | 49 | } |
0 commit comments