From 2871ceb71853b0786d6cc925a6e5d5131578a488 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Wed, 7 Dec 2022 23:14:25 +0300 Subject: [PATCH] add support of shape path --- examples/all.d2 | 2 +- grammar.js | 54 +++++++---- queries/highlights.scm | 3 +- src/grammar.json | 183 +++++++++++++++++++++---------------- src/node-types.json | 57 +++++------- src/parser.c | Bin 179372 -> 178154 bytes test/corpus/attributes.txt | 44 ++++----- test/corpus/connection.txt | 80 +++++++++------- test/corpus/shape.txt | 80 +++++++++------- test/highlight/keyword.d2 | 2 +- test/highlight/shape.d2 | 2 - tree-sitter-d2.wasm | Bin 32025 -> 31898 bytes 12 files changed, 277 insertions(+), 230 deletions(-) diff --git a/examples/all.d2 b/examples/all.d2 index 191aaf6..f7936c0 100644 --- a/examples/all.d2 +++ b/examples/all.d2 @@ -1,2 +1,2 @@ -a.shape: oval +'a'.'B'.shape: oval b diff --git a/grammar.js b/grammar.js index b9bf2e1..7bf3b5e 100644 --- a/grammar.js +++ b/grammar.js @@ -8,9 +8,10 @@ module.exports = grammar({ word: ($) => $._word, conflicts: ($) => [ - [$.identifier], + [$.shape_key], [$.arrow], - [$._identifier], + [$._shape_path], + [$._shape_key], [$._shape_block], [$._shape_block_definition], [$._style_attr_block], @@ -19,25 +20,29 @@ module.exports = grammar({ ], rules: { - source_file: ($) => repeat($._definition), + source_file: ($) => repeat($._root_definition), - _definition: ($) => - choice($._emptyline, $._root_attribute, $.connection, $.shape), + _root_definition: ($) => + choice( + $._emptyline, + $._root_attribute, + $.connection, + $._shape_definition + ), connection: ($) => seq( - $._identifier, - repeat1(seq($._arrow, $._identifier)), + $._shape_path, + repeat1(seq($._arrow, $._shape_path)), optional( choice(seq($.dot, $._connection_attribute), seq($._colon, $.label)) ), $._end ), - shape: ($) => + _shape_definition: ($) => seq( - $._identifier, - repeat(seq($.dot, $._identifier)), + $._shape_path, optional( choice( seq($.dot, $._shape_attribute), @@ -50,6 +55,12 @@ module.exports = grammar({ $._end ), + _shape_path: ($) => + choice( + $._shape_key, + seq($._shape_key, repeat1(seq($.dot, $._shape_key))) + ), + label: ($) => choice($.string, $._unquoted_string), attr_value: ($) => seq(spaces, choice($.string, $._unquoted_string)), @@ -80,7 +91,7 @@ module.exports = grammar({ ), _shape_block_definition: ($) => - choice($.connection, $.shape, $._shape_attribute), + choice($.connection, $._shape_definition, $._shape_attribute), _shape_attribute: ($) => choice( @@ -146,16 +157,19 @@ module.exports = grammar({ _connection_attr_key: ($) => choice("source-arrowhead", "target-arrowhead"), - _identifier: ($) => seq(spaces, $.identifier), + _shape_key: ($) => seq(spaces, $.shape_key), - identifier: ($) => - seq( - optional($._dash), - choice( - $._word, - repeat1(seq($._word, choice(spaces, $._dash), $._word)) - ), - optional($._dash) + shape_key: ($) => + choice( + $.string, + seq( + optional($._dash), + choice( + $._word, + repeat1(seq($._word, choice(repeat1(" "), $._dash), $._word)) + ), + optional($._dash) + ) ), _colon: ($) => seq(spaces, ":"), diff --git a/queries/highlights.scm b/queries/highlights.scm index fd3236d..6072566 100644 --- a/queries/highlights.scm +++ b/queries/highlights.scm @@ -5,7 +5,7 @@ (invalid (_) @error) ;------------------------------------------------------------------------------- -(identifier) @variable +(shape_key) @variable (attr_key) @keyword ; Literals @@ -26,7 +26,6 @@ (arrow) @operator [ - (dot) ":" ";" ] @punctuation.delimiter diff --git a/src/grammar.json b/src/grammar.json index ad55347..b312705 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -6,10 +6,10 @@ "type": "REPEAT", "content": { "type": "SYMBOL", - "name": "_definition" + "name": "_root_definition" } }, - "_definition": { + "_root_definition": { "type": "CHOICE", "members": [ { @@ -26,7 +26,7 @@ }, { "type": "SYMBOL", - "name": "shape" + "name": "_shape_definition" } ] }, @@ -35,7 +35,7 @@ "members": [ { "type": "SYMBOL", - "name": "_identifier" + "name": "_shape_path" }, { "type": "REPEAT1", @@ -48,7 +48,7 @@ }, { "type": "SYMBOL", - "name": "_identifier" + "name": "_shape_path" } ] } @@ -98,28 +98,12 @@ } ] }, - "shape": { + "_shape_definition": { "type": "SEQ", "members": [ { "type": "SYMBOL", - "name": "_identifier" - }, - { - "type": "REPEAT", - "content": { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "dot" - }, - { - "type": "SYMBOL", - "name": "_identifier" - } - ] - } + "name": "_shape_path" }, { "type": "CHOICE", @@ -204,6 +188,40 @@ } ] }, + "_shape_path": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_shape_key" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_shape_key" + }, + { + "type": "REPEAT1", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "dot" + }, + { + "type": "SYMBOL", + "name": "_shape_key" + } + ] + } + } + ] + } + ] + }, "label": { "type": "CHOICE", "members": [ @@ -428,7 +446,7 @@ }, { "type": "SYMBOL", - "name": "shape" + "name": "_shape_definition" }, { "type": "SYMBOL", @@ -791,7 +809,7 @@ } ] }, - "_identifier": { + "_shape_key": { "type": "SEQ", "members": [ { @@ -812,84 +830,84 @@ }, { "type": "SYMBOL", - "name": "identifier" + "name": "shape_key" } ] }, - "identifier": { - "type": "SEQ", + "shape_key": { + "type": "CHOICE", "members": [ { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_dash" - }, - { - "type": "BLANK" - } - ] + "type": "SYMBOL", + "name": "string" }, { - "type": "CHOICE", + "type": "SEQ", "members": [ { - "type": "SYMBOL", - "name": "_word" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_dash" + }, + { + "type": "BLANK" + } + ] }, { - "type": "REPEAT1", - "content": { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_word" - }, - { - "type": "CHOICE", + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_word" + }, + { + "type": "REPEAT1", + "content": { + "type": "SEQ", "members": [ { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - { + "type": "SYMBOL", + "name": "_word" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "REPEAT1", + "content": { "type": "STRING", "value": " " - }, - { - "type": "STRING", - "value": "\t" } - ] - } + }, + { + "type": "SYMBOL", + "name": "_dash" + } + ] }, { "type": "SYMBOL", - "name": "_dash" + "name": "_word" } ] - }, - { - "type": "SYMBOL", - "name": "_word" } - ] - } - } - ] - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_dash" + } + ] }, { - "type": "BLANK" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_dash" + }, + { + "type": "BLANK" + } + ] } ] } @@ -1214,13 +1232,16 @@ ], "conflicts": [ [ - "identifier" + "shape_key" ], [ "arrow" ], [ - "_identifier" + "_shape_path" + ], + [ + "_shape_key" ], [ "_shape_block" diff --git a/src/node-types.json b/src/node-types.json index 76ba27c..5576e31 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -53,7 +53,11 @@ "named": true }, { - "type": "shape", + "type": "label", + "named": true + }, + { + "type": "shape_key", "named": true } ] @@ -84,21 +88,16 @@ "named": true }, { - "type": "identifier", + "type": "label", "named": true }, { - "type": "label", + "type": "shape_key", "named": true } ] } }, - { - "type": "identifier", - "named": true, - "fields": {} - }, { "type": "invalid", "named": true, @@ -142,35 +141,15 @@ } }, { - "type": "shape", + "type": "shape_key", "named": true, "fields": {}, "children": { - "multiple": true, - "required": true, + "multiple": false, + "required": false, "types": [ { - "type": "attr_key", - "named": true - }, - { - "type": "attr_value", - "named": true - }, - { - "type": "block", - "named": true - }, - { - "type": "dot", - "named": true - }, - { - "type": "identifier", - "named": true - }, - { - "type": "label", + "type": "string", "named": true } ] @@ -192,16 +171,28 @@ "type": "attr_value", "named": true }, + { + "type": "block", + "named": true + }, { "type": "connection", "named": true }, + { + "type": "dot", + "named": true + }, { "type": "invalid", "named": true }, { - "type": "shape", + "type": "label", + "named": true + }, + { + "type": "shape_key", "named": true } ] diff --git a/src/parser.c b/src/parser.c index f7a11ca429716c6987e7d2572bf317f60eacac8a..b256edfa2b005b512ae3f84792fbf8b1be6f6278 100644 GIT binary patch literal 178154 zcmeIbZF5|=ktqCp)~}fBRK@ZwJI~;pGjE&CRw)YYxUMW`EqZVEPPS%8;>emZMQX`m zY~QT^`)zasjkgBQ8%a?VQ%;R|05lqnMx(pYX#8e>_UiQNWH&5fUl2!^X_8% z!`toTtEW#VC;ROWXXlrP{j15ltIIdJvOQF~*quy1`Qm@S-Cthr&wlvg^?rAH^2Ppa zf7owN_y2cyarw!k-|Ws#_OAgOLS^#o$@8zifAZDQ=HHIKd-3(R&nK$kvKPlsj*m7^ zzy1FC@uZqg`TMgc-$8?*l*?ZH`!|35_L*t4ob&f5&%S>0!hBZz_4wQWb@bePZ5I6b z=|-#vfwY~z=^{=fYC=-Ho4EBE!ACx6{gFE5V%_4}jePmeawj-G#Y{O8G%0srN@ zZ~yfD(__cJ+4hk4KZq*Usu7`SLbJ!hl}n0>;Oe-8kFs!P=5^v_|yL6@J4?Qhxul=|KSY+ z!J#re&fjfc?GJjODjezS{i#Mrg#!g-&VSU%t9YdP`{qwiUi_I6h(?VqvBt^v5-|)3 z@DiqLcYzfywkP|mOWjLIjo0UA2dwbw{Pg?+%Bzqfmv6Qw=RfK1Ax++1ogVh@a4M>h zEZejF+wB3C8?*@tQ{%UgCa3$eA9YQn33AI}_jAB4RYaEatBY4emhHvG`A=_lTLc@D z=CHl^VMhZCYK8Q9`t37V*3f%M6HRiY2^7^KIi4MJK}e6Uj&TE zThVBRRu!~r!U6x$wrXg+LaSQ0!jbFYz=ZBLug>4T-QfajLKb-TrLG*Z0QMTLi5ExT ze61_uxHZ&Ensrz~dZjctZsZn}Ehw--l;h%UaM-#K7W3KemHmvP#x}sy?{=G@(F{lJ zmA>2JlAqzI^>-^wW;{}qXn)_HUTKtOZiZRh?O$FUu#D$=LtVc-J%6RSe�KD~K>- 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 diff --git a/test/corpus/attributes.txt b/test/corpus/attributes.txt index e0b2f09..19f2777 100644 --- a/test/corpus/attributes.txt +++ b/test/corpus/attributes.txt @@ -23,12 +23,14 @@ foo: { -------------------------------------------------------------------------------- (source_file - (shape (identifier) (block + (shape_key) + (block (attr_key) (attr_value) - (shape (identifier) (dot) (identifier) (dot) (identifier) (block + (shape_key) (dot) (shape_key) (dot) (shape_key) + (block (attr_key) (attr_value) - )) - )) + ) + ) ) @@ -41,8 +43,8 @@ foo.bar.baz.shape: oval -------------------------------------------------------------------------------- (source_file - (shape (identifier) (dot) (attr_key) (attr_value)) - (shape (identifier) (dot) (identifier) (dot) (identifier) (dot) (attr_key) (attr_value)) + (shape_key) (dot) (attr_key) (attr_value) + (shape_key) (dot) (shape_key) (dot) (shape_key) (dot) (attr_key) (attr_value) ) ================================================================================ @@ -53,7 +55,7 @@ foo.style.opacity: 5 -------------------------------------------------------------------------------- (source_file - (shape (identifier) (dot) (attr_key) (dot) (attr_key) (attr_value)) + (shape_key) (dot) (attr_key) (dot) (attr_key) (attr_value) ) ================================================================================ @@ -68,12 +70,10 @@ foo.style: { -------------------------------------------------------------------------------- (source_file - (shape - (identifier) (dot) (attr_key) - (block - (attr_key) (attr_value) - (attr_key) (attr_value) - ) + (shape_key) (dot) (attr_key) + (block + (attr_key) (attr_value) + (attr_key) (attr_value) ) ) @@ -86,18 +86,14 @@ foo.style: { opacity: 5 } -------------------------------------------------------------------------------- (source_file - (shape - (identifier) (dot) (attr_key) - (block - (attr_key) (attr_value) - (attr_key) (attr_value) - ) + (shape_key) (dot) (attr_key) + (block + (attr_key) (attr_value) + (attr_key) (attr_value) ) - (shape - (identifier) (dot) (attr_key) - (block - (attr_key) (attr_value) - ) + (shape_key) (dot) (attr_key) + (block + (attr_key) (attr_value) ) ) diff --git a/test/corpus/connection.txt b/test/corpus/connection.txt index 9368c63..e79a12d 100644 --- a/test/corpus/connection.txt +++ b/test/corpus/connection.txt @@ -10,24 +10,24 @@ biz<-baz (source_file (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) ) @@ -43,24 +43,24 @@ biz <- baz (source_file (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) ) @@ -75,14 +75,14 @@ Foo Bar -- Biz Baz (source_file (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) ) @@ -95,13 +95,13 @@ foo--bar->biz->baz (source_file (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) ) @@ -114,14 +114,14 @@ foo--bar;biz->baz (source_file (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) ) ) @@ -135,15 +135,31 @@ bar -> baz: Yes (source_file (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) (label) ) (connection - (identifier) + (shape_key) (arrow) - (identifier) + (shape_key) + (label) + ) +) + +================================================================================ +Connection using shape path +================================================================================ +foo.biz.baz -> bar.baz.biz: Label + +-------------------------------------------------------------------------------- + +(source_file + (connection + (shape_key) (dot) (shape_key) (dot) (shape_key) + (arrow) + (shape_key) (dot) (shape_key) (dot) (shape_key) (label) ) ) diff --git a/test/corpus/shape.txt b/test/corpus/shape.txt index a10a67f..c814671 100644 --- a/test/corpus/shape.txt +++ b/test/corpus/shape.txt @@ -7,8 +7,8 @@ bar -------------------------------------------------------------------------------- (source_file - (shape (identifier)) - (shape (identifier)) + (shape_key) + (shape_key) ) ================================================================================ @@ -20,37 +20,43 @@ Complex identifier -------------------------------------------------------------------------------- (source_file - (shape (identifier)) - (shape (identifier)) + (shape_key) + (shape_key) ) ================================================================================ -Inline shapes +Declare a shape inside a container ================================================================================ foo.baz -------------------------------------------------------------------------------- (source_file - (shape - (identifier) - (dot) - (identifier) - ) + (shape_key) (dot) (shape_key) ) +================================================================================ +Use quoted string as a shape key +================================================================================ +'foo'.'baz' + +-------------------------------------------------------------------------------- + +(source_file + (shape_key (string)) (dot) (shape_key (string)) +) ================================================================================ -Many shapes inline +Define multiple shapes using semicolons ================================================================================ a;b;c -------------------------------------------------------------------------------- (source_file - (shape (identifier)) - (shape (identifier)) - (shape (identifier)) + (shape_key) + (shape_key) + (shape_key) ) ================================================================================ @@ -62,9 +68,9 @@ a: Foo Bar; b: Biz Baz -------------------------------------------------------------------------------- (source_file - (shape (identifier) (label)) - (shape (identifier) (label)) - (shape (identifier) (label)) + (shape_key) (label) + (shape_key) (label) + (shape_key) (label) ) ================================================================================ @@ -78,9 +84,9 @@ bar : Foo Bar; baz -------------------------------------------------------------------------------- (source_file - (shape (identifier)) - (shape (identifier) (label)) - (shape (identifier)) + (shape_key) + (shape_key) (label) + (shape_key) ) ================================================================================ @@ -98,13 +104,16 @@ foo: { -------------------------------------------------------------------------------- (source_file - (shape (identifier) (block - (shape (identifier) (block - (shape (identifier) (block - (shape (identifier)) - )) - )) - )) + (shape_key) + (block + (shape_key) + (block + (shape_key) + (block + (shape_key) + ) + ) + ) ) ================================================================================ @@ -122,12 +131,15 @@ foo: Foo { -------------------------------------------------------------------------------- (source_file - (shape (identifier) (label) (block - (shape (identifier) (label) (block - (shape (identifier) (label) (block - (shape (identifier) (label)) - )) - )) - )) + (shape_key) (label) + (block + (shape_key) (label) + (block + (shape_key) (label) + (block + (shape_key) (label) + ) + ) + ) ) diff --git a/test/highlight/keyword.d2 b/test/highlight/keyword.d2 index 98273d0..98c3151 100644 --- a/test/highlight/keyword.d2 +++ b/test/highlight/keyword.d2 @@ -4,7 +4,7 @@ direction: right; # ^ string # ^ punctuation.delimiter -shape: oval; +shape: oval # <- error # ^ error diff --git a/test/highlight/shape.d2 b/test/highlight/shape.d2 index 2043f77..daba794 100644 --- a/test/highlight/shape.d2 +++ b/test/highlight/shape.d2 @@ -1,8 +1,6 @@ foo.baz.biz # <- variable -# ^ punctuation.delimiter # ^ variable -# ^ punctuation.delimiter # ^ variable foo: Foo Bar diff --git a/tree-sitter-d2.wasm b/tree-sitter-d2.wasm index de14719c7006c0587bb2c888a382eba3fdbb570b..b5be90e1614659c3d3fed5b4e958567b9869d98f 100755 GIT binary patch literal 31898 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 bkl!FXAnPI1A=g8`ft(NN59tp19clg-V$Ht^ literal 32025 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