From 1ea16740ebcb838c57187daafc42b635ef2bee05 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Fri, 9 Dec 2022 09:08:37 +0300 Subject: [PATCH] add connection to container block --- grammar.js | 2 +- src/grammar.json | 4 ++++ src/parser.c | Bin 101295 -> 101671 bytes test/corpus/connection.txt | 26 ++++++++++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/grammar.js b/grammar.js index c4ad86d..196bbc8 100644 --- a/grammar.js +++ b/grammar.js @@ -111,7 +111,7 @@ module.exports = grammar({ _new_container_block_definition: ($) => prec( PREC.CONTAINER, - choice($._eol, seq(choice($.shape, $.container), $._end)) + choice($._eol, seq(choice($.shape, $.container, $.connection), $._end)) ), // -------------------------------------------- diff --git a/src/grammar.json b/src/grammar.json index ad1a7f4..eff3577 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -428,6 +428,10 @@ { "type": "SYMBOL", "name": "container" + }, + { + "type": "SYMBOL", + "name": "connection" } ] }, diff --git a/src/parser.c b/src/parser.c index bc35e889d4a348fceedb756cdaa0b5354c28a60e..e023a529b7af655f7c7608d16ac5355baddec98e 100644 GIT binary patch delta 4568 zcmb7IX>3&271nuU#vU6m#(2R7Gk{m@fqDCT#Mm={6Tmju#ccqaecz2uQ?uHvr4#}Y z5=Uy&gjS8(ibOyvVO3QEk+dQf@A${>zgg_CYbt=0pKyk}0l~4wg@*9}st!;^K!Tl&>J}m(U#Y zIa*33@@Q~=DZLyHn>7OTQZlz--13fOM^m+FshvA@rCDmnHo0yFMakmU88ihyJ7!RQ zh3-i?5b8a!d+plIdv~pl&Woln(ntKu9aNh0$N@i?L58OLgB3GrH<8WlI!N7`OIP{& zEb#5Gpz(Y@2CEV=8q2x06y~cHRLP-sn#g-=u{TtWJ--cdd%AGrrE02x*XGqyR0C7J zk~Z;=YU$^|{#PY6X|~Si%jpw7Rt1z-DyZ&>P~|C%*?g^v#_*;}(qVA-GAiJ!m9z~1 zmY}{PKpQo~=3^C9o|#Lpsg)9GW%T;q{eJ ze10}{BRNtrRsIa=p0xcF5j!86K1ZB}ovS(e6Eqm6&dAkUnj@W8z}+@Y;y0QR@vc^i z@5|4GtoF!E?K5PrW1eRiG) z-#*66(=`MBSVAi`9a;TFNDnQgI?c31+AJiUuea0okR$qrfJeU=zlbhsmML^&?a7o0 zyM9ew)Zqt9ptx%h&DU%%fVKb)BA&u?ZSDs@G!xk%P)TT@%@h_j{;Gjk6t_^3sGh0Z zxq_NPj&F(_y2WocBSlbd>q0IZnkF3M|F+V*8VWSM^H0rkmB-FKO*=#GBYbA^pSn63N=|GQ%*T5&qpLWnG;W8}V5f)0MGhc#)BW;+^ku|D07I6Kuh=rR{&;{E?oyZFx zK8uA&Vv!nuSV0Rze%ux-RKLr2*3be?w}cK!rHI?A;Z*s0{beP6Rb&Rvq^enba}`bC zyH5-iaw8*ims3@`ofG(-;+ipH6Mh<8>RcazKfR&*Vj^Yh8{;37M_EYB^!*`l11FWrR(S!QH(0VWg+-uI`uemU0mVm z>*;Ia`F?dh6_+~FepH30F$sISJhL)Cs~F+dxG=x_dxG zk4qWT9OXz?M`+teHqd0x8AZfYBAyonw&am$w7? zp-}~o6g3A07~2H5*g?Y#MapsQz-?186b zX{+0O1D?w^l_4$~PINQa`a!m)@-7-rkcl$HLmS$M+oA)V!>?-vJ!UD=o*hh3OOeJz z_10#*2=_KqrsoEgS&F#lxd9%Qvcf~Vn!SaJH9sz)$`x~84%j)3<^eIzb*B&#hZ2vtD$8Ah=?!$Bm#5 zY(-mihrtV5=@3zzbGFl=2<(wS$nzfT4Q!{(h@INPh`OEZi2BCq#1kWyd~r8rq5I}- zCnwu5lqlkO;{Zm5Tia+H&hG8NoO!XArbg7)P$vd`oIBjsEk06qQE^y)is8lBMVqqG zDxVIp;!-6)zX!u;>rTo= z{Ypd(U1=UQd~FYn!Q2VBhGEI^*=gmN{zslZ^IMY$xWR(!>$iUQvSqyD}6n%k0PKbeLK`cnOW&`35Sz+_u;Rh19(AOg{#sr z3~QJ=*7m5g9LCjLekB#(Fu&M?55xz3^b`*~M-#~tWU6`KIOS>v8eDH0az`&7qMN;l z+iShJ@sD1WAYnwfem^{m2p0+EIUL_l`538y<3tQsnd}couadj_@WuVoek#jM9rA;d zX&=h7vM(cC=}@NRu~!yJr)QjR99Dr&qu~_U_}+6Q_$I$Xf7CDw)bwF#^SAnF0k<8* zC+PhHG=*CaAnoq=QN1uYM=TfeP#;aehc7%<&#?o@*WCwUW5GdsL6|h*(#Iv3X@zY! z4+38%?immD_wgah=COy;T;$&3op>Trp}~Br_u&-IDa&@0D|BS7ieVp!TsVZF;(sAf zOv2x*4ufk;4^15W{$W~A;FNuo`bi%=dzA3U;dA};(_v$B$JRyD1&Q|;AXOrA5$--l zQwD!FK<|(k?p`=f&-3vUm`m$V(9=9k{Ojctw2iNy!dT>-L^wu7Z*00!Fl$?a>7ZZO*&{*96gB{?d(Y!FQ%>Ar(hzwNm#>MTXGr;nJ6NO a@oBv3G;Hn|ph^rj(i3wAe|MTb$oL;qp|-sM delta 4635 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 VKlcx#`kxM```R8Uy+}Dz{|mLV*FgXP diff --git a/test/corpus/connection.txt b/test/corpus/connection.txt index f1d8b64..50ef980 100644 --- a/test/corpus/connection.txt +++ b/test/corpus/connection.txt @@ -196,3 +196,29 @@ foo.biz.baz -> bar.baz.biz: Label (label) ) ) + +================================================================================ +Connection of shapes inside a block of container +================================================================================ +foo.baz: { + foo -> biz: Label +} + +-------------------------------------------------------------------------------- + +(source_file + (container + (container_key) (dot) + (container + (container_key) + (block + (connection + (shape_key) + (arrow) + (shape_key) + (label) + ) + ) + ) + ) +)