From ba9db26bfad60e46a15e516be1d23f13dcac7c7d Mon Sep 17 00:00:00 2001 From: omkarht Date: Tue, 22 Jul 2025 19:25:27 +0530 Subject: [PATCH] Lexing : Added Support for new arrow types through lexing on-behalf-of: @Mermaid-Chart --- .../sequence/parser/sequenceDiagram.jison | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison b/packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison index 873cee10d..2685a5d50 100644 --- a/packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison +++ b/packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison @@ -73,7 +73,7 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili "off" return 'off'; "," return ','; ";" return 'NEWLINE'; -[^\+\<->\->:\n,;]+((?!(\-x|\-\-x|\-\)|\-\-\)))[\-]*[^\+\<->\->:\n,;]+)* { yytext = yytext.trim(); return 'ACTOR'; } +[^\/\\\+\<->\->:\n,;]+((?!(\-x|\-\-x|\-\)|\-\-\)|\-\|\\|\-\\|\-\/|\-\/\/|\-\|\/|\/\|\-|\\\|\-|\/\/\-|\\\\\-|\/\|\-|\-\-\|\\|\-\-))[\-]*[^\+\<->\->:\n,;]+)* { yytext = yytext.trim(); return 'ACTOR'; } //final_4.11 "->>" return 'SOLID_ARROW'; "<<->>" return 'BIDIRECTIONAL_SOLID_ARROW'; "-->>" return 'DOTTED_ARROW'; @@ -84,14 +84,35 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili \-\-[x] return 'DOTTED_CROSS'; \-[\)] return 'SOLID_POINT'; \-\-[\)] return 'DOTTED_POINT'; + +//normal-dotted +\-\-\|\\ return 'SOLID_ARROW_TOP_DOTTED'; +\-\-\|\/ return 'SOLID_ARROW_BOTTOM_DOTTED'; +\-\-\\\\ return 'STICK_ARROW_TOP_DOTTED'; +\-\-\/\/ return 'STICK_ARROW_BOTTOM_DOTTED'; + +//reverse-dotted +\/\|\-\- return 'SOLID_ARROW_TOP_REVERSE_DOTTED'; +\\\|\-\- return 'SOLID_ARROW_BOTTOM_REVERSE_DOTTED'; +\/\/\-\- return 'STICK_ARROW_TOP_REVERSE_DOTTED'; +\\\\\-\- return 'STICK_ARROW_BOTTOM_REVERSE_DOTTED'; + +//normal +\-\|\\ return 'SOLID_ARROW_TOP'; +\-\|\/ return 'SOLID_ARROW_BOTTOM'; +\-\\\\ return 'STICK_ARROW_TOP'; +\-\/\/ return 'STICK_ARROW_BOTTOM'; + +//reverse +\/\|\- return 'SOLID_ARROW_TOP_REVERSE'; +\\\|\- return 'SOLID_ARROW_BOTTOM_REVERSE'; +\/\/\- return 'STICK_ARROW_TOP_REVERSE'; +\\\\\- return 'STICK_ARROW_BOTTOM_REVERSE'; + ":"(?:(?:no)?wrap:)?[^#\n;]* return 'TXT'; ":" return 'TXT'; "+" return '+'; "-" return '-'; -"=>" return 'SOLID_ARROW_TOP'; -"==>" return 'SOLID_ARROW_BOTTOM'; -"=->" return 'STICK_ARROW_TOP'; -"==->" return 'STICK_ARROW_BOTTOM'; <> return 'NEWLINE'; . return 'INVALID'; @@ -317,10 +338,27 @@ signaltype : SOLID_OPEN_ARROW { $$ = yy.LINETYPE.SOLID_OPEN; } | DOTTED_OPEN_ARROW { $$ = yy.LINETYPE.DOTTED_OPEN; } | SOLID_ARROW { $$ = yy.LINETYPE.SOLID; } + | SOLID_ARROW_TOP { $$ = yy.LINETYPE.SOLID_TOP; } | SOLID_ARROW_BOTTOM { $$ = yy.LINETYPE.SOLID_BOTTOM; } | STICK_ARROW_TOP { $$ = yy.LINETYPE.STICK_TOP; } | STICK_ARROW_BOTTOM { $$ = yy.LINETYPE.STICK_BOTTOM; } + + | SOLID_ARROW_TOP_DOTTED { $$ = yy.LINETYPE.SOLID_TOP_DOTTED; } + | SOLID_ARROW_BOTTOM_DOTTED { $$ = yy.LINETYPE.SOLID_BOTTOM_DOTTED; } + | STICK_ARROW_TOP_DOTTED { $$ = yy.LINETYPE.STICK_TOP_DOTTED; } + | STICK_ARROW_BOTTOM_DOTTED { $$ = yy.LINETYPE.STICK_BOTTOM_DOTTED; } + + | SOLID_ARROW_TOP_REVERSE { $$ = yy.LINETYPE.SOLID_ARROW_TOP_REVERSE; } + | SOLID_ARROW_BOTTOM_REVERSE { $$ = yy.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE; } + | STICK_ARROW_TOP_REVERSE { $$ = yy.LINETYPE.STICK_ARROW_TOP_REVERSE; } + | STICK_ARROW_BOTTOM_REVERSE { $$ = yy.LINETYPE.STICK_ARROW_BOTTOM_REVERSE; } + + | SOLID_ARROW_TOP_REVERSE_DOTTED { $$ = yy.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED; } + | SOLID_ARROW_BOTTOM_REVERSE_DOTTED { $$ = yy.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED; } + | STICK_ARROW_TOP_REVERSE_DOTTED { $$ = yy.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED; } + | STICK_ARROW_BOTTOM_REVERSE_DOTTED { $$ = yy.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED; } + | BIDIRECTIONAL_SOLID_ARROW { $$ = yy.LINETYPE.BIDIRECTIONAL_SOLID; } | DOTTED_ARROW { $$ = yy.LINETYPE.DOTTED; } | BIDIRECTIONAL_DOTTED_ARROW { $$ = yy.LINETYPE.BIDIRECTIONAL_DOTTED; }