From 8921cc8bbcf4e6027e07db6f5e7c4a599fba6368 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Thu, 8 Dec 2022 01:30:23 +0300 Subject: [PATCH] use regex for arrow to fix long arrow bug --- grammar.js | 9 +---- src/grammar.json | 71 +++++-------------------------------- src/node-types.json | 16 --------- src/parser.c | Bin 192276 -> 188039 bytes test/corpus/connection.txt | 33 +++++++++++++++++ 5 files changed, 42 insertions(+), 87 deletions(-) diff --git a/grammar.js b/grammar.js index e7d43fe..d3aa871 100644 --- a/grammar.js +++ b/grammar.js @@ -9,7 +9,6 @@ module.exports = grammar({ conflicts: ($) => [ [$.shape_key], - [$.arrow], [$._shape_path], [$._shape_block], [$._shape_block_definition], @@ -174,13 +173,7 @@ module.exports = grammar({ _arrow: ($) => seq(spaces, $.arrow), - arrow: ($) => - choice( - seq("--", repeat($._dash)), - seq("<-", repeat($._dash)), - seq("<-", repeat($._dash), ">"), - seq(repeat($._dash), "->") - ), + arrow: ($) => choice(/-+>/, /--+/, /<-+/, /<-+>/), _dash: ($) => token.immediate("-"), diff --git a/src/grammar.json b/src/grammar.json index d7e966c..1ae98d3 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -1007,72 +1007,20 @@ "type": "CHOICE", "members": [ { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "--" - }, - { - "type": "REPEAT", - "content": { - "type": "SYMBOL", - "name": "_dash" - } - } - ] + "type": "PATTERN", + "value": "-+>" }, { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "<-" - }, - { - "type": "REPEAT", - "content": { - "type": "SYMBOL", - "name": "_dash" - } - } - ] + "type": "PATTERN", + "value": "--+" }, { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "<-" - }, - { - "type": "REPEAT", - "content": { - "type": "SYMBOL", - "name": "_dash" - } - }, - { - "type": "STRING", - "value": ">" - } - ] + "type": "PATTERN", + "value": "<-+" }, { - "type": "SEQ", - "members": [ - { - "type": "REPEAT", - "content": { - "type": "SYMBOL", - "name": "_dash" - } - }, - { - "type": "STRING", - "value": "->" - } - ] + "type": "PATTERN", + "value": "<-+>" } ] }, @@ -1274,9 +1222,6 @@ [ "shape_key" ], - [ - "arrow" - ], [ "_shape_path" ], diff --git a/src/node-types.json b/src/node-types.json index 0171495..2efdd90 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -254,14 +254,6 @@ "type": "'", "named": false }, - { - "type": "--", - "named": false - }, - { - "type": "->", - "named": false - }, { "type": "3d", "named": false @@ -274,14 +266,6 @@ "type": ";", "named": false }, - { - "type": "<-", - "named": false - }, - { - "type": ">", - "named": false - }, { "type": "`", "named": false diff --git a/src/parser.c b/src/parser.c index 1056ace39d792f6d51330263a8affe3a6b0b075b..3a03490ced7ac48bb7af6d2e8d59b0612668b716 100644 GIT binary patch literal 188039 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Ξ*T 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 literal 192276 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 diff --git a/test/corpus/connection.txt b/test/corpus/connection.txt index ce6397c..f1d8b64 100644 --- a/test/corpus/connection.txt +++ b/test/corpus/connection.txt @@ -64,6 +64,39 @@ biz <- baz ) ) +================================================================================ +Connection with looooong arrow +================================================================================ +foo ----------- bar +biz ----------> baz +biz <---------> baz +biz <---------- baz + +-------------------------------------------------------------------------------- + +(source_file + (connection + (shape_key) + (arrow) + (shape_key) + ) + (connection + (shape_key) + (arrow) + (shape_key) + ) + (connection + (shape_key) + (arrow) + (shape_key) + ) + (connection + (shape_key) + (arrow) + (shape_key) + ) +) + ================================================================================ Complex identifier connection