From 612b7fb87112663b54f8e0b6befe22843a859950 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Fri, 9 Dec 2022 15:02:21 +0300 Subject: [PATCH] fix unquoted strings and identifiers --- grammar.js | 9 +++++++-- src/grammar.json | 4 ++-- src/parser.c | Bin 124009 -> 140167 bytes test/corpus/attributes.txt | 3 ++- test/corpus/shape.txt | 10 ++++++++++ tree-sitter-d2.wasm | Bin 27491 -> 30396 bytes 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/grammar.js b/grammar.js index 0c942ab..0f48377 100644 --- a/grammar.js +++ b/grammar.js @@ -116,7 +116,12 @@ module.exports = grammar({ shape_key: ($) => choice($.string, seq($._identifier, optional($._dash))), _identifier: ($) => - token(prec(PREC.IDENTIFIER, /\-?([\w\d]+|([\w\d]+( +|\-)[\w\d]+)+)/)), + token( + prec( + PREC.IDENTIFIER, + /\-?([\w\d]+([\w\d`'"]+)?|([\w\d]+([\w\d `'"]+)?( +|\-)[\w\d]+([\w\d `'"]+)?)+)/ + ) + ), // attributes @@ -255,7 +260,7 @@ module.exports = grammar({ dot: ($) => token("."), _unquoted_string: ($) => - token(prec(PREC.UNQUOTED_STRING, /[\w\-?!]([^'"`\n;{}]*[\w\-?!])?/)), + token(prec(PREC.UNQUOTED_STRING, /[^'"`\n\s;{}]([^\n;{}]*[^\n\s;{}])?/)), string: ($) => choice( diff --git a/src/grammar.json b/src/grammar.json index 3d2e8fd..ad3b555 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -502,7 +502,7 @@ "value": 0, "content": { "type": "PATTERN", - "value": "\\-?([\\w\\d]+|([\\w\\d]+( +|\\-)[\\w\\d]+)+)" + "value": "\\-?([\\w\\d]+([\\w\\d`'\"]+)?|([\\w\\d]+([\\w\\d `'\"]+)?( +|\\-)[\\w\\d]+([\\w\\d `'\"]+)?)+)" } } }, @@ -1103,7 +1103,7 @@ "value": 0, "content": { "type": "PATTERN", - "value": "[\\w\\-?!]([^'\"`\\n;{}]*[\\w\\-?!])?" + "value": "[^'\"`\\n\\s;{}]([^\\n;{}]*[^\\n\\s;{}])?" } } }, diff --git a/src/parser.c b/src/parser.c index 6356a1e24d15b95e812a4f2bdbf27d61f6a8be00..e34cffaefae6fe4f20a74b75d9ab8587c67a4aac 100644 GIT binary patch literal 140167 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 delta 15203 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 TJANG{MTtz`zM)wAB bar: { ) ) + diff --git a/test/corpus/shape.txt b/test/corpus/shape.txt index 8d24a7a..d0846f2 100644 --- a/test/corpus/shape.txt +++ b/test/corpus/shape.txt @@ -26,12 +26,22 @@ Complex shape key ================================================================================ Foo bar -Biz-baz- +imAShape +im_a_shape +im a shape +i'm a shape +a-shape -------------------------------------------------------------------------------- (source_file (shape (shape_key)) (shape (shape_key)) + (shape (shape_key)) + (shape (shape_key)) + (shape (shape_key)) + (shape (shape_key)) + (shape (shape_key)) ) ================================================================================ diff --git a/tree-sitter-d2.wasm b/tree-sitter-d2.wasm index c0b5f8af89c2c1036f416845bbe6434268b579e1..b1090db5e0fd307ade3e71efb4770a6f17832b1b 100755 GIT binary patch literal 30396 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