mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-30 13:46:43 +02:00
88 lines
1.8 KiB
Plaintext
88 lines
1.8 KiB
Plaintext
grammar GitGraph
|
|
|
|
interface Common {
|
|
accDescr?: string;
|
|
accTitle?: string;
|
|
title?: string;
|
|
}
|
|
|
|
fragment TitleAndAccessibilities:
|
|
((accDescr=ACC_DESCR | accTitle=ACC_TITLE | title=TITLE) EOL)+
|
|
;
|
|
|
|
fragment EOL returns string:
|
|
NEWLINE+ | EOF
|
|
;
|
|
|
|
terminal NEWLINE: /\r?\n/;
|
|
terminal ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/;
|
|
terminal ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/;
|
|
terminal TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/;
|
|
|
|
hidden terminal WHITESPACE: /[\t ]+/;
|
|
hidden terminal YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/;
|
|
hidden terminal DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/;
|
|
hidden terminal SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/;
|
|
|
|
entry GitGraph:
|
|
NEWLINE*
|
|
('gitGraph' | 'gitGraph' ':' | 'gitGraph:' | ('gitGraph' Direction ':'))
|
|
NEWLINE*
|
|
(
|
|
NEWLINE*
|
|
(TitleAndAccessibilities |
|
|
statements+=Statement |
|
|
NEWLINE)*
|
|
)
|
|
;
|
|
|
|
Statement
|
|
: Commit
|
|
| Branch
|
|
| Merge
|
|
| Checkout
|
|
| CherryPicking
|
|
;
|
|
|
|
Direction:
|
|
dir=('LR' | 'TB' | 'BT');
|
|
|
|
Commit:
|
|
'commit'
|
|
(
|
|
'id:' id=STRING
|
|
|'msg:'? message=STRING
|
|
|'tag:' tags+=STRING
|
|
|'type:' type=('NORMAL' | 'REVERSE' | 'HIGHLIGHT')
|
|
)* EOL;
|
|
Branch:
|
|
'branch' name=(ID|STRING)
|
|
('order:' order=INT)?
|
|
EOL;
|
|
|
|
Merge:
|
|
'merge' branch=(ID|STRING)
|
|
(
|
|
'id:' id=STRING
|
|
|'tag:' tags+=STRING
|
|
|'type:' type=('NORMAL' | 'REVERSE' | 'HIGHLIGHT')
|
|
)* EOL;
|
|
|
|
Checkout:
|
|
('checkout'|'switch') branch=(ID|STRING) EOL;
|
|
|
|
CherryPicking:
|
|
'cherry-pick'
|
|
(
|
|
'id:' id=STRING
|
|
|'tag:' tags+=STRING
|
|
|'parent:' parent=STRING
|
|
)* EOL;
|
|
|
|
|
|
|
|
terminal INT returns number: /[0-9]+(?=\s)/;
|
|
terminal ID returns string: /\w([-\./\w]*[-\w])?/;
|
|
terminal STRING: /"[^"]*"|'[^']*'/;
|
|
|