From fc3754658c94daab5d26c96970b86ea1d714a8c6 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Sun, 11 Dec 2022 14:16:23 +0300 Subject: [PATCH] remove escape sequence for single quoted string --- grammar.js | 9 ++------- src/grammar.json | 26 +++++++------------------- src/parser.c | Bin 137074 -> 135976 bytes test/corpus/shape.txt | 27 +++++++++++++++++++++++---- tree-sitter-d2.wasm | Bin 38133 -> 37903 bytes 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/grammar.js b/grammar.js index 234e513..3a5f5bd 100644 --- a/grammar.js +++ b/grammar.js @@ -286,12 +286,7 @@ module.exports = grammar({ choice( seq( "'", - repeat( - choice( - alias($._unescaped_single_string_fragment, $.string_fragment), - $.escape_sequence - ) - ), + alias($._unescaped_single_string_fragment, $.string_fragment), "'" ), seq( @@ -306,7 +301,7 @@ module.exports = grammar({ ) ), - _unescaped_single_string_fragment: ($) => token.immediate(/[^'\\\n]+/), + _unescaped_single_string_fragment: ($) => token.immediate(/[^'\n]+/), _unescaped_double_string_fragment: ($) => token.immediate(/[^"\\\n]+/), diff --git a/src/grammar.json b/src/grammar.json index 7f29429..df716d9 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -1213,25 +1213,13 @@ "value": "'" }, { - "type": "REPEAT", + "type": "ALIAS", "content": { - "type": "CHOICE", - "members": [ - { - "type": "ALIAS", - "content": { - "type": "SYMBOL", - "name": "_unescaped_single_string_fragment" - }, - "named": true, - "value": "string_fragment" - }, - { - "type": "SYMBOL", - "name": "escape_sequence" - } - ] - } + "type": "SYMBOL", + "name": "_unescaped_single_string_fragment" + }, + "named": true, + "value": "string_fragment" }, { "type": "STRING", @@ -1279,7 +1267,7 @@ "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", - "value": "[^'\\\\\\n]+" + "value": "[^'\\n]+" } }, "_unescaped_double_string_fragment": { diff --git a/src/parser.c b/src/parser.c index 5fa5ff97e8076fd42baa4583701d78d313ffc971..a33d6fdb684e35deb306328a8a8358e6addad0e6 100644 GIT binary patch delta 9853 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 diff --git a/test/corpus/shape.txt b/test/corpus/shape.txt index d7f751e..0011321 100644 --- a/test/corpus/shape.txt +++ b/test/corpus/shape.txt @@ -57,6 +57,25 @@ Use quoted string as a shape key (shape (shape_key (string (string_fragment)))) ) +================================================================================ +Use escape sequence in quoted string as a shape key +================================================================================ +'\# hello \# world' + +"\# hello \# world" + +-------------------------------------------------------------------------------- + +(source_file + (shape (shape_key (string (string_fragment)))) + (shape (shape_key (string + (escape_sequence) + (string_fragment) + (escape_sequence) + (string_fragment) + ))) +) + ================================================================================ Define multiple shapes using semicolons ================================================================================ @@ -159,9 +178,9 @@ foo: |go ) ================================================================================ -Text block with quotes (d2-vim style) +Text block with quotes (custom escape characters) ================================================================================ -foo: |`go +foo: |$$$go awsSession := From(c.Request.Context()) @@ -171,7 +190,7 @@ foo: |`go ctx, cancelFn := context.WithTimeout(c.Request.Context(), AWS_TIMEOUT) defer cancelFn() -`| +$$$| -------------------------------------------------------------------------------- @@ -190,7 +209,7 @@ Online text block ================================================================================ foo: | helo world | -bar: |%%md ## hello world %%| +bar: |##md ## hello world ##| -------------------------------------------------------------------------------- diff --git a/tree-sitter-d2.wasm b/tree-sitter-d2.wasm index 96a1442a3e3909c5405b193d6bea0f8a31cb769b..df6db8955835dd5049a27f9e7056dbb53312d2bd 100755 GIT binary patch delta 14357 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