mermaid-ast 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/types/class.d.ts +64 -0
- package/dist/types/class.d.ts.map +1 -0
- package/dist/types/class.js +17 -0
- package/dist/vendored/VERSION +1 -0
- package/dist/vendored/grammars/class.jison +429 -0
- package/dist/vendored/grammars/flowchart.jison +631 -0
- package/dist/vendored/grammars/sequence.jison +329 -0
- package/dist/vendored/parsers/class.js +942 -0
- package/dist/vendored/parsers/flowchart.js +1089 -0
- package/dist/vendored/parsers/sequence.js +914 -0
- package/dist/vendored/sync-info.json +13 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# mermaid-ast
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/mermaid-ast)
|
|
3
4
|
[](https://randomlabs.ai)
|
|
4
5
|
|
|
5
6
|
Parse and render Mermaid diagrams to/from AST (Abstract Syntax Tree).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class Diagram AST Types
|
|
3
|
+
*/
|
|
4
|
+
export type ClassDirection = "TB" | "BT" | "LR" | "RL";
|
|
5
|
+
export type RelationType = "aggregation" | "extension" | "composition" | "dependency" | "lollipop" | "none";
|
|
6
|
+
export type LineType = "solid" | "dotted";
|
|
7
|
+
export interface ClassRelation {
|
|
8
|
+
id1: string;
|
|
9
|
+
id2: string;
|
|
10
|
+
relation: {
|
|
11
|
+
type1: RelationType;
|
|
12
|
+
type2: RelationType;
|
|
13
|
+
lineType: LineType;
|
|
14
|
+
};
|
|
15
|
+
relationTitle1?: string;
|
|
16
|
+
relationTitle2?: string;
|
|
17
|
+
title?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ClassMember {
|
|
20
|
+
text: string;
|
|
21
|
+
visibility?: "+" | "-" | "#" | "~";
|
|
22
|
+
type?: "method" | "attribute";
|
|
23
|
+
}
|
|
24
|
+
export interface ClassDefinition {
|
|
25
|
+
id: string;
|
|
26
|
+
label?: string;
|
|
27
|
+
members: ClassMember[];
|
|
28
|
+
annotations: string[];
|
|
29
|
+
cssClasses: string[];
|
|
30
|
+
styles: string[];
|
|
31
|
+
link?: string;
|
|
32
|
+
linkTarget?: string;
|
|
33
|
+
tooltip?: string;
|
|
34
|
+
callback?: string;
|
|
35
|
+
callbackArgs?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ClassNote {
|
|
38
|
+
text: string;
|
|
39
|
+
forClass?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface Namespace {
|
|
42
|
+
name: string;
|
|
43
|
+
classes: string[];
|
|
44
|
+
}
|
|
45
|
+
export interface ClassDefStyle {
|
|
46
|
+
name: string;
|
|
47
|
+
styles: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface ClassDiagramAST {
|
|
50
|
+
type: "classDiagram";
|
|
51
|
+
direction: ClassDirection;
|
|
52
|
+
classes: Map<string, ClassDefinition>;
|
|
53
|
+
relations: ClassRelation[];
|
|
54
|
+
namespaces: Map<string, Namespace>;
|
|
55
|
+
notes: ClassNote[];
|
|
56
|
+
classDefs: Map<string, ClassDefStyle>;
|
|
57
|
+
accTitle?: string;
|
|
58
|
+
accDescription?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create an empty ClassDiagramAST
|
|
62
|
+
*/
|
|
63
|
+
export declare function createClassDiagramAST(): ClassDiagramAST;
|
|
64
|
+
//# sourceMappingURL=class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/types/class.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvD,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,WAAW,GACX,aAAa,GACb,YAAY,GACZ,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE;QACR,KAAK,EAAE,YAAY,CAAC;QACpB,KAAK,EAAE,YAAY,CAAC;QACpB,QAAQ,EAAE,QAAQ,CAAC;KACpB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACnC,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtC,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAUvD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class Diagram AST Types
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Create an empty ClassDiagramAST
|
|
6
|
+
*/
|
|
7
|
+
export function createClassDiagramAST() {
|
|
8
|
+
return {
|
|
9
|
+
type: "classDiagram",
|
|
10
|
+
direction: "TB",
|
|
11
|
+
classes: new Map(),
|
|
12
|
+
relations: [],
|
|
13
|
+
namespaces: new Map(),
|
|
14
|
+
notes: [],
|
|
15
|
+
classDefs: new Map(),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
mermaid@11.12.2
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
/** mermaid
|
|
2
|
+
* https://mermaidjs.github.io/
|
|
3
|
+
* (c) 2015 Knut Sveidqvist
|
|
4
|
+
* MIT license.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* lexical grammar */
|
|
8
|
+
%lex
|
|
9
|
+
%x string
|
|
10
|
+
%x bqstring
|
|
11
|
+
%x generic
|
|
12
|
+
%x struct
|
|
13
|
+
%x href
|
|
14
|
+
%x callback_name
|
|
15
|
+
%x callback_args
|
|
16
|
+
%x acc_title
|
|
17
|
+
%x acc_descr
|
|
18
|
+
%x acc_descr_multiline
|
|
19
|
+
%x class
|
|
20
|
+
%x class-body
|
|
21
|
+
%x namespace
|
|
22
|
+
%x namespace-body
|
|
23
|
+
%%
|
|
24
|
+
.*direction\s+TB[^\n]* return 'direction_tb';
|
|
25
|
+
.*direction\s+BT[^\n]* return 'direction_bt';
|
|
26
|
+
.*direction\s+RL[^\n]* return 'direction_rl';
|
|
27
|
+
.*direction\s+LR[^\n]* return 'direction_lr';
|
|
28
|
+
\%\%(?!\{)*[^\n]*(\r?\n?)+ /* skip comments */
|
|
29
|
+
\%\%[^\n]*(\r?\n)* /* skip comments */
|
|
30
|
+
accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; }
|
|
31
|
+
<acc_title>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; }
|
|
32
|
+
accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; }
|
|
33
|
+
<acc_descr>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; }
|
|
34
|
+
accDescr\s*"{"\s* { this.begin("acc_descr_multiline");}
|
|
35
|
+
<acc_descr_multiline>[\}] { this.popState(); }
|
|
36
|
+
<acc_descr_multiline>[^\}]* return "acc_descr_multiline_value";
|
|
37
|
+
|
|
38
|
+
\s*(\r?\n)+ return 'NEWLINE';
|
|
39
|
+
\s+ /* skip whitespace */
|
|
40
|
+
|
|
41
|
+
"classDiagram-v2" return 'CLASS_DIAGRAM';
|
|
42
|
+
"classDiagram" return 'CLASS_DIAGRAM';
|
|
43
|
+
"[*]" return 'EDGE_STATE';
|
|
44
|
+
|
|
45
|
+
/*
|
|
46
|
+
---interactivity command---
|
|
47
|
+
'call' adds a callback to the specified node. 'call' can only be specified when
|
|
48
|
+
the line was introduced with 'click'.
|
|
49
|
+
'call <callback_name>(<callback_args>)' attaches the function 'callback_name' with the specified
|
|
50
|
+
arguments to the node that was specified by 'click'.
|
|
51
|
+
Function arguments are optional: 'call <callback_name>()' simply executes 'callback_name' without any arguments.
|
|
52
|
+
*/
|
|
53
|
+
<INITIAL>"call"[\s]+ this.begin("callback_name");
|
|
54
|
+
<callback_name>\([\s]*\) this.popState();
|
|
55
|
+
<callback_name>\( this.popState(); this.begin("callback_args");
|
|
56
|
+
<callback_name>[^(]* return 'CALLBACK_NAME';
|
|
57
|
+
<callback_args>\) this.popState();
|
|
58
|
+
<callback_args>[^)]* return 'CALLBACK_ARGS';
|
|
59
|
+
|
|
60
|
+
<string>["] this.popState();
|
|
61
|
+
<string>[^"]* return "STR";
|
|
62
|
+
<*>["] this.begin("string");
|
|
63
|
+
"style" return 'STYLE';
|
|
64
|
+
"classDef" return 'CLASSDEF';
|
|
65
|
+
|
|
66
|
+
<INITIAL,namespace>"namespace" { this.begin('namespace'); return 'NAMESPACE'; }
|
|
67
|
+
<namespace>\s*(\r?\n)+ { this.popState(); return 'NEWLINE'; }
|
|
68
|
+
<namespace>\s+ /* skip whitespace */
|
|
69
|
+
<namespace>[{] { this.begin("namespace-body"); return 'STRUCT_START';}
|
|
70
|
+
<namespace-body>[}] { this.popState(); return 'STRUCT_STOP'; }
|
|
71
|
+
<namespace-body><<EOF>> return "EOF_IN_STRUCT";
|
|
72
|
+
<namespace-body>\s*(\r?\n)+ return 'NEWLINE';
|
|
73
|
+
<namespace-body>\s+ /* skip whitespace */
|
|
74
|
+
<namespace-body>"[*]" return 'EDGE_STATE';
|
|
75
|
+
|
|
76
|
+
<INITIAL,namespace-body>"class" { this.begin('class'); return 'CLASS';}
|
|
77
|
+
<class>\s*(\r?\n)+ { this.popState(); return 'NEWLINE'; }
|
|
78
|
+
<class>\s+ /* skip whitespace */
|
|
79
|
+
<class>[}] { this.popState(); this.popState(); return 'STRUCT_STOP';}
|
|
80
|
+
<class>[{] { this.begin("class-body"); return 'STRUCT_START';}
|
|
81
|
+
<class-body>[}] { this.popState(); return 'STRUCT_STOP'; }
|
|
82
|
+
<class-body><<EOF>> return "EOF_IN_STRUCT";
|
|
83
|
+
<class-body>"[*]" { return 'EDGE_STATE';}
|
|
84
|
+
<class-body>[{] return "OPEN_IN_STRUCT";
|
|
85
|
+
<class-body>[\n] /* nothing */
|
|
86
|
+
<class-body>[^{}\n]* { return "MEMBER";}
|
|
87
|
+
|
|
88
|
+
<*>"cssClass" return 'CSSCLASS';
|
|
89
|
+
<*>"callback" return 'CALLBACK';
|
|
90
|
+
<*>"link" return 'LINK';
|
|
91
|
+
<*>"click" return 'CLICK';
|
|
92
|
+
<*>"note for" return 'NOTE_FOR';
|
|
93
|
+
<*>"note" return 'NOTE';
|
|
94
|
+
<*>"<<" return 'ANNOTATION_START';
|
|
95
|
+
<*>">>" return 'ANNOTATION_END';
|
|
96
|
+
|
|
97
|
+
/*
|
|
98
|
+
---interactivity command---
|
|
99
|
+
'href' adds a link to the specified node. 'href' can only be specified when the
|
|
100
|
+
line was introduced with 'click'.
|
|
101
|
+
'href "<link>"' attaches the specified link to the node that was specified by 'click'.
|
|
102
|
+
*/
|
|
103
|
+
<*>"href" return 'HREF';
|
|
104
|
+
|
|
105
|
+
<generic>[~] this.popState();
|
|
106
|
+
<generic>[^~]* return "GENERICTYPE";
|
|
107
|
+
<*>"~" this.begin("generic");
|
|
108
|
+
|
|
109
|
+
<bqstring>[`] this.popState();
|
|
110
|
+
<bqstring>[^`]+ return "BQUOTE_STR";
|
|
111
|
+
<*>[`] this.begin("bqstring");
|
|
112
|
+
|
|
113
|
+
<*>"_self" return 'LINK_TARGET';
|
|
114
|
+
<*>"_blank" return 'LINK_TARGET';
|
|
115
|
+
<*>"_parent" return 'LINK_TARGET';
|
|
116
|
+
<*>"_top" return 'LINK_TARGET';
|
|
117
|
+
|
|
118
|
+
<*>\s*\<\| return 'EXTENSION';
|
|
119
|
+
<*>\s*\|\> return 'EXTENSION';
|
|
120
|
+
<*>\s*\> return 'DEPENDENCY';
|
|
121
|
+
<*>\s*\< return 'DEPENDENCY';
|
|
122
|
+
<*>\s*\* return 'COMPOSITION';
|
|
123
|
+
<*>\s*o return 'AGGREGATION';
|
|
124
|
+
<*>\s*\(\) return 'LOLLIPOP';
|
|
125
|
+
<*>\-\- return 'LINE';
|
|
126
|
+
<*>\.\. return 'DOTTED_LINE';
|
|
127
|
+
<*>":"{1}[^:\n;]+ return 'LABEL';
|
|
128
|
+
<*>":"{3} return 'STYLE_SEPARATOR';
|
|
129
|
+
<*>\- return 'MINUS';
|
|
130
|
+
<*>"." return 'DOT';
|
|
131
|
+
<*>\+ return 'PLUS';
|
|
132
|
+
":" return 'COLON';
|
|
133
|
+
"," return 'COMMA';
|
|
134
|
+
\# return 'BRKT';
|
|
135
|
+
"#" return 'BRKT';
|
|
136
|
+
<*>\% return 'PCT';
|
|
137
|
+
<*>"=" return 'EQUALS';
|
|
138
|
+
<*>\= return 'EQUALS';
|
|
139
|
+
<*>\w+ return 'ALPHA';
|
|
140
|
+
<*>"[" return 'SQS';
|
|
141
|
+
<*>"]" return 'SQE';
|
|
142
|
+
<*>[!"#$%&'*+,-.`?\\/] return 'PUNCTUATION';
|
|
143
|
+
<*>[0-9]+ return 'NUM';
|
|
144
|
+
<*>[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|
|
|
145
|
+
[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|
|
|
146
|
+
[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|
|
|
147
|
+
[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|
|
|
148
|
+
[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|
|
|
149
|
+
[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|
|
|
150
|
+
[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|
|
|
151
|
+
[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|
|
|
152
|
+
[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|
|
|
153
|
+
[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|
|
|
154
|
+
[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|
|
|
155
|
+
[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|
|
|
156
|
+
[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|
|
|
157
|
+
[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|
|
|
158
|
+
[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|
|
|
159
|
+
[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|
|
|
160
|
+
[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|
|
|
161
|
+
[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|
|
|
162
|
+
[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|
|
|
163
|
+
[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|
|
|
164
|
+
[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|
|
|
165
|
+
[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|
|
|
166
|
+
[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|
|
|
167
|
+
[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|
|
|
168
|
+
[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|
|
|
169
|
+
[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|
|
|
170
|
+
[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|
|
|
171
|
+
[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|
|
|
172
|
+
[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|
|
|
173
|
+
[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|
|
|
174
|
+
[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|
|
|
175
|
+
[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|
|
|
176
|
+
[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|
|
|
177
|
+
[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|
|
|
178
|
+
[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|
|
|
179
|
+
[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|
|
|
180
|
+
[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|
|
|
181
|
+
[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|
|
|
182
|
+
[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|
|
|
183
|
+
[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|
|
|
184
|
+
[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|
|
|
185
|
+
[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|
|
|
186
|
+
[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|
|
|
187
|
+
[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|
|
|
188
|
+
[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|
|
|
189
|
+
[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|
|
|
190
|
+
[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|
|
|
191
|
+
[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|
|
|
192
|
+
[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|
|
|
193
|
+
[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|
|
|
194
|
+
[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|
|
|
195
|
+
[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|
|
|
196
|
+
[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|
|
|
197
|
+
[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|
|
|
198
|
+
[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|
|
|
199
|
+
[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|
|
|
200
|
+
[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|
|
|
201
|
+
[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|
|
|
202
|
+
[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|
|
|
203
|
+
[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|
|
|
204
|
+
[\uFFD2-\uFFD7\uFFDA-\uFFDC]
|
|
205
|
+
return 'UNICODE_TEXT';
|
|
206
|
+
<*>\s return 'SPACE';
|
|
207
|
+
\s return 'SPACE';
|
|
208
|
+
<*><<EOF>> return 'EOF';
|
|
209
|
+
|
|
210
|
+
/lex
|
|
211
|
+
|
|
212
|
+
/* operator associations and precedence */
|
|
213
|
+
|
|
214
|
+
%left '^'
|
|
215
|
+
|
|
216
|
+
%start start
|
|
217
|
+
|
|
218
|
+
%% /* language grammar */
|
|
219
|
+
|
|
220
|
+
start
|
|
221
|
+
: mermaidDoc
|
|
222
|
+
| statements
|
|
223
|
+
;
|
|
224
|
+
|
|
225
|
+
mermaidDoc
|
|
226
|
+
: graphConfig
|
|
227
|
+
;
|
|
228
|
+
|
|
229
|
+
graphConfig
|
|
230
|
+
: CLASS_DIAGRAM NEWLINE statements EOF
|
|
231
|
+
;
|
|
232
|
+
|
|
233
|
+
statements
|
|
234
|
+
: statement
|
|
235
|
+
| statement NEWLINE
|
|
236
|
+
| statement NEWLINE statements
|
|
237
|
+
;
|
|
238
|
+
|
|
239
|
+
classLabel
|
|
240
|
+
: SQS STR SQE { $$=$2; }
|
|
241
|
+
;
|
|
242
|
+
|
|
243
|
+
namespaceName
|
|
244
|
+
: alphaNumToken { $$=$1; }
|
|
245
|
+
| classLiteralName { $$=$1; }
|
|
246
|
+
| alphaNumToken DOT namespaceName { $$=$1+'.'+$3; }
|
|
247
|
+
| alphaNumToken namespaceName { $$=$1+$2; }
|
|
248
|
+
;
|
|
249
|
+
|
|
250
|
+
className
|
|
251
|
+
: alphaNumToken { $$=$1; }
|
|
252
|
+
| alphaNumToken DOT className { $$=$1+'.'+$3; }
|
|
253
|
+
| classLiteralName { $$=$1; }
|
|
254
|
+
| alphaNumToken className { $$=$1+$2; }
|
|
255
|
+
| alphaNumToken GENERICTYPE { $$=$1+'~'+$2+'~'; }
|
|
256
|
+
| classLiteralName GENERICTYPE { $$=$1+'~'+$2+'~'; }
|
|
257
|
+
;
|
|
258
|
+
|
|
259
|
+
statement
|
|
260
|
+
: relationStatement { yy.addRelation($1); }
|
|
261
|
+
| relationStatement LABEL { $1.title = yy.cleanupLabel($2); yy.addRelation($1); }
|
|
262
|
+
| namespaceStatement
|
|
263
|
+
| classStatement
|
|
264
|
+
| memberStatement
|
|
265
|
+
| annotationStatement
|
|
266
|
+
| clickStatement
|
|
267
|
+
| styleStatement
|
|
268
|
+
| cssClassStatement
|
|
269
|
+
| noteStatement
|
|
270
|
+
| classDefStatement
|
|
271
|
+
| direction
|
|
272
|
+
| acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }
|
|
273
|
+
| acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }
|
|
274
|
+
| acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); }
|
|
275
|
+
;
|
|
276
|
+
|
|
277
|
+
namespaceStatement
|
|
278
|
+
: namespaceIdentifier STRUCT_START classStatements STRUCT_STOP { yy.addClassesToNamespace($1, $3); }
|
|
279
|
+
| namespaceIdentifier STRUCT_START NEWLINE classStatements STRUCT_STOP { yy.addClassesToNamespace($1, $4); }
|
|
280
|
+
;
|
|
281
|
+
|
|
282
|
+
namespaceIdentifier
|
|
283
|
+
: NAMESPACE namespaceName { $$=$2; yy.addNamespace($2); }
|
|
284
|
+
;
|
|
285
|
+
|
|
286
|
+
classStatements
|
|
287
|
+
: classStatement {$$=[$1]}
|
|
288
|
+
| classStatement NEWLINE {$$=[$1]}
|
|
289
|
+
| classStatement NEWLINE classStatements {$3.unshift($1); $$=$3}
|
|
290
|
+
;
|
|
291
|
+
|
|
292
|
+
classStatement
|
|
293
|
+
: classIdentifier
|
|
294
|
+
| classIdentifier STYLE_SEPARATOR alphaNumToken {yy.setCssClass($1, $3);}
|
|
295
|
+
| classIdentifier STRUCT_START members STRUCT_STOP {yy.addMembers($1,$3);}
|
|
296
|
+
| classIdentifier STRUCT_START STRUCT_STOP {}
|
|
297
|
+
| classIdentifier STYLE_SEPARATOR alphaNumToken STRUCT_START members STRUCT_STOP {yy.setCssClass($1, $3);yy.addMembers($1,$5);}
|
|
298
|
+
;
|
|
299
|
+
|
|
300
|
+
classIdentifier
|
|
301
|
+
: CLASS className {$$=$2; yy.addClass($2);}
|
|
302
|
+
| CLASS className classLabel {$$=$2; yy.addClass($2);yy.setClassLabel($2, $3);}
|
|
303
|
+
;
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
emptyBody
|
|
307
|
+
:
|
|
308
|
+
| SPACE emptyBody
|
|
309
|
+
| NEWLINE emptyBody
|
|
310
|
+
;
|
|
311
|
+
|
|
312
|
+
annotationStatement
|
|
313
|
+
: ANNOTATION_START alphaNumToken ANNOTATION_END className { yy.addAnnotation($4,$2); }
|
|
314
|
+
;
|
|
315
|
+
|
|
316
|
+
members
|
|
317
|
+
: MEMBER { $$ = [$1]; }
|
|
318
|
+
| MEMBER members { $2.push($1);$$=$2;}
|
|
319
|
+
;
|
|
320
|
+
|
|
321
|
+
memberStatement
|
|
322
|
+
: className {/*console.log('Rel found',$1);*/}
|
|
323
|
+
| className LABEL {yy.addMember($1,yy.cleanupLabel($2));}
|
|
324
|
+
| MEMBER {/*console.warn('Member',$1);*/}
|
|
325
|
+
| SEPARATOR {/*console.log('sep found',$1);*/}
|
|
326
|
+
;
|
|
327
|
+
|
|
328
|
+
relationStatement
|
|
329
|
+
: className relation className { $$ = {'id1':$1,'id2':$3, relation:$2, relationTitle1:'none', relationTitle2:'none'}; }
|
|
330
|
+
| className STR relation className { $$ = {id1:$1, id2:$4, relation:$3, relationTitle1:$2, relationTitle2:'none'}}
|
|
331
|
+
| className relation STR className { $$ = {id1:$1, id2:$4, relation:$2, relationTitle1:'none', relationTitle2:$3}; }
|
|
332
|
+
| className STR relation STR className { $$ = {id1:$1, id2:$5, relation:$3, relationTitle1:$2, relationTitle2:$4} }
|
|
333
|
+
;
|
|
334
|
+
|
|
335
|
+
noteStatement
|
|
336
|
+
: NOTE_FOR className noteText { yy.addNote($3, $2); }
|
|
337
|
+
| NOTE noteText { yy.addNote($2); }
|
|
338
|
+
;
|
|
339
|
+
|
|
340
|
+
classDefStatement
|
|
341
|
+
: CLASSDEF classList stylesOpt {$$ = $CLASSDEF;yy.defineClass($classList,$stylesOpt);}
|
|
342
|
+
;
|
|
343
|
+
|
|
344
|
+
classList
|
|
345
|
+
: ALPHA { $$ = [$ALPHA]; }
|
|
346
|
+
| classList COMMA ALPHA = { $$ = $classList.concat([$ALPHA]); }
|
|
347
|
+
;
|
|
348
|
+
|
|
349
|
+
direction
|
|
350
|
+
: direction_tb
|
|
351
|
+
{ yy.setDirection('TB');}
|
|
352
|
+
| direction_bt
|
|
353
|
+
{ yy.setDirection('BT');}
|
|
354
|
+
| direction_rl
|
|
355
|
+
{ yy.setDirection('RL');}
|
|
356
|
+
| direction_lr
|
|
357
|
+
{ yy.setDirection('LR');}
|
|
358
|
+
;
|
|
359
|
+
|
|
360
|
+
relation
|
|
361
|
+
: relationType lineType relationType { $$={type1:$1,type2:$3,lineType:$2}; }
|
|
362
|
+
| lineType relationType { $$={type1:'none',type2:$2,lineType:$1}; }
|
|
363
|
+
| relationType lineType { $$={type1:$1,type2:'none',lineType:$2}; }
|
|
364
|
+
| lineType { $$={type1:'none',type2:'none',lineType:$1}; }
|
|
365
|
+
;
|
|
366
|
+
|
|
367
|
+
relationType
|
|
368
|
+
: AGGREGATION { $$=yy.relationType.AGGREGATION;}
|
|
369
|
+
| EXTENSION { $$=yy.relationType.EXTENSION;}
|
|
370
|
+
| COMPOSITION { $$=yy.relationType.COMPOSITION;}
|
|
371
|
+
| DEPENDENCY { $$=yy.relationType.DEPENDENCY;}
|
|
372
|
+
| LOLLIPOP { $$=yy.relationType.LOLLIPOP;}
|
|
373
|
+
;
|
|
374
|
+
|
|
375
|
+
lineType
|
|
376
|
+
: LINE {$$=yy.lineType.LINE;}
|
|
377
|
+
| DOTTED_LINE {$$=yy.lineType.DOTTED_LINE;}
|
|
378
|
+
;
|
|
379
|
+
|
|
380
|
+
clickStatement
|
|
381
|
+
: CALLBACK className STR {$$ = $1;yy.setClickEvent($2, $3);}
|
|
382
|
+
| CALLBACK className STR STR {$$ = $1;yy.setClickEvent($2, $3);yy.setTooltip($2, $4);}
|
|
383
|
+
| LINK className STR {$$ = $1;yy.setLink($2, $3);}
|
|
384
|
+
| LINK className STR LINK_TARGET {$$ = $1;yy.setLink($2, $3,$4);}
|
|
385
|
+
| LINK className STR STR {$$ = $1;yy.setLink($2, $3);yy.setTooltip($2, $4);}
|
|
386
|
+
| LINK className STR STR LINK_TARGET {$$ = $1;yy.setLink($2, $3, $5);yy.setTooltip($2, $4);}
|
|
387
|
+
| CLICK className CALLBACK_NAME {$$ = $1;yy.setClickEvent($2, $3);}
|
|
388
|
+
| CLICK className CALLBACK_NAME STR {$$ = $1;yy.setClickEvent($2, $3);yy.setTooltip($2, $4);}
|
|
389
|
+
| CLICK className CALLBACK_NAME CALLBACK_ARGS {$$ = $1;yy.setClickEvent($2, $3, $4);}
|
|
390
|
+
| CLICK className CALLBACK_NAME CALLBACK_ARGS STR {$$ = $1;yy.setClickEvent($2, $3, $4);yy.setTooltip($2, $5);}
|
|
391
|
+
| CLICK className HREF STR {$$ = $1;yy.setLink($2, $4);}
|
|
392
|
+
| CLICK className HREF STR LINK_TARGET {$$ = $1;yy.setLink($2, $4, $5);}
|
|
393
|
+
| CLICK className HREF STR STR {$$ = $1;yy.setLink($2, $4);yy.setTooltip($2, $5);}
|
|
394
|
+
| CLICK className HREF STR STR LINK_TARGET {$$ = $1;yy.setLink($2, $4, $6);yy.setTooltip($2, $5);}
|
|
395
|
+
;
|
|
396
|
+
|
|
397
|
+
styleStatement
|
|
398
|
+
:STYLE ALPHA stylesOpt {$$ = $STYLE;yy.setCssStyle($2,$stylesOpt);}
|
|
399
|
+
;
|
|
400
|
+
|
|
401
|
+
cssClassStatement
|
|
402
|
+
: CSSCLASS STR ALPHA {yy.setCssClass($2, $3);}
|
|
403
|
+
;
|
|
404
|
+
|
|
405
|
+
stylesOpt
|
|
406
|
+
: style {$$ = [$style]}
|
|
407
|
+
| stylesOpt COMMA style {$stylesOpt.push($style);$$ = $stylesOpt;}
|
|
408
|
+
;
|
|
409
|
+
|
|
410
|
+
style
|
|
411
|
+
: styleComponent
|
|
412
|
+
| style styleComponent {$$ = $style + $styleComponent;}
|
|
413
|
+
;
|
|
414
|
+
|
|
415
|
+
styleComponent: ALPHA | NUM | COLON | UNIT | SPACE | BRKT | STYLE | PCT | LABEL;
|
|
416
|
+
|
|
417
|
+
commentToken : textToken | graphCodeTokens ;
|
|
418
|
+
|
|
419
|
+
textToken : textNoTagsToken | TAGSTART | TAGEND | '==' | '--' | PCT | DEFAULT;
|
|
420
|
+
|
|
421
|
+
textNoTagsToken: alphaNumToken | SPACE | MINUS | keywords ;
|
|
422
|
+
|
|
423
|
+
alphaNumToken : UNICODE_TEXT | NUM | ALPHA | MINUS;
|
|
424
|
+
|
|
425
|
+
classLiteralName : BQUOTE_STR;
|
|
426
|
+
|
|
427
|
+
noteText : STR;
|
|
428
|
+
|
|
429
|
+
%%
|