From acf249ef24583e36afa730af824bfe33f136fbc2 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Mon, 5 Dec 2022 10:37:04 +0300 Subject: [PATCH] add connection attributes --- grammar.js | 12 ++++++--- src/grammar.json | 64 +++++++++++++++++++++++++++++++++----------- src/node-types.json | 12 +++++++++ src/parser.c | Bin 104920 -> 110173 bytes 4 files changed, 68 insertions(+), 20 deletions(-) diff --git a/grammar.js b/grammar.js index da69a22..3dff64a 100644 --- a/grammar.js +++ b/grammar.js @@ -13,7 +13,9 @@ module.exports = grammar({ seq( $.identifier, repeat1(seq($.arrow, $.identifier)), - optional(seq($._colon, $.label)), + optional( + choice(seq($.dot, $._connection_attribute), seq($._colon, $.label)) + ), $._end ), @@ -21,9 +23,8 @@ module.exports = grammar({ seq( $.identifier, repeat(seq($.dot, $.identifier)), - choice( - optional(seq($.dot, $._shape_attribute)), - optional(seq($._colon, $.label)) + optional( + choice(seq($.dot, $._shape_attribute), seq($._colon, $.label)) ), $._end ), @@ -54,6 +55,9 @@ module.exports = grammar({ $._style_attribute ), + _connection_attribute: ($) => + seq(alias($._connection_attr_key, $.attr_key), $._colon, $.attr_value), + _shape_attr_key: ($) => choice( "shape", diff --git a/src/grammar.json b/src/grammar.json index 2c275d2..5bc6424 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -53,15 +53,33 @@ "type": "CHOICE", "members": [ { - "type": "SEQ", + "type": "CHOICE", "members": [ { - "type": "SYMBOL", - "name": "_colon" + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "dot" + }, + { + "type": "SYMBOL", + "name": "_connection_attribute" + } + ] }, { - "type": "SYMBOL", - "name": "label" + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_colon" + }, + { + "type": "SYMBOL", + "name": "label" + } + ] } ] }, @@ -118,14 +136,6 @@ } ] }, - { - "type": "BLANK" - } - ] - }, - { - "type": "CHOICE", - "members": [ { "type": "SEQ", "members": [ @@ -138,11 +148,11 @@ "name": "label" } ] - }, - { - "type": "BLANK" } ] + }, + { + "type": "BLANK" } ] }, @@ -278,6 +288,28 @@ } ] }, + "_connection_attribute": { + "type": "SEQ", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_connection_attr_key" + }, + "named": true, + "value": "attr_key" + }, + { + "type": "SYMBOL", + "name": "_colon" + }, + { + "type": "SYMBOL", + "name": "attr_value" + } + ] + }, "_shape_attr_key": { "type": "CHOICE", "members": [ diff --git a/src/node-types.json b/src/node-types.json index 6e7a087..384dc18 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -36,6 +36,18 @@ "type": "arrow", "named": true }, + { + "type": "attr_key", + "named": true + }, + { + "type": "attr_value", + "named": true + }, + { + "type": "dot", + "named": true + }, { "type": "identifier", "named": true diff --git a/src/parser.c b/src/parser.c index e221615bb2185f12c49fdbb9d5df55c5a8aa60bf..d6ef1fd22f6ad7dd0df2fb2b7c51dc31166262f5 100644 GIT binary patch literal 110173 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%0A(tg9txr$5@WFJlJPYiC;j)?&7wDgK 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 rm($hHT9xM)8s6ZuVhg^g(^<`c-?HK literal 104920 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 nlQ!k$g@!jsR${>y^?I8M7VGars$t(STlsNXf