From 7a76b25c1132ee8ffbf2243afcd6728f57ba3d09 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Tue, 6 Dec 2022 10:32:04 +0300 Subject: [PATCH] chore: remove trailing spaces from identifier --- examples/test.txt | 9 +- grammar.js | 61 ++++---- src/grammar.json | 362 ++++++++++++++++++++++++---------------------- src/parser.c | Bin 106395 -> 97040 bytes 4 files changed, 223 insertions(+), 209 deletions(-) diff --git a/examples/test.txt b/examples/test.txt index 82f991b..89752f0 100644 --- a/examples/test.txt +++ b/examples/test.txt @@ -1,6 +1,5 @@ - - -foo - -bar : Foo Bar; baz +foo -- bar +biz -> baz +biz <-> baz +biz <- baz diff --git a/grammar.js b/grammar.js index 6a514df..6a8a7da 100644 --- a/grammar.js +++ b/grammar.js @@ -1,11 +1,14 @@ +const spaces = repeat(" "); + module.exports = grammar({ name: "d2", - // TODO: handle empty lines extras: ($) => [], word: ($) => $._word, + conflicts: ($) => [[$.identifier], [$.arrow]], + rules: { source_file: ($) => repeat($._definition), @@ -14,8 +17,8 @@ module.exports = grammar({ connection: ($) => seq( - $.identifier, - repeat1(seq($.arrow, $.identifier)), + $._identifier, + repeat1(seq($._arrow, $._identifier)), optional( choice(seq($.dot, $._connection_attribute), seq($._colon, $.label)) ), @@ -24,16 +27,14 @@ module.exports = grammar({ shape: ($) => seq( - $.identifier, - repeat(seq($.dot, $.identifier)), + $._identifier, + repeat(seq($.dot, $._identifier)), optional( choice(seq($.dot, $._shape_attribute), seq($._colon, $.label)) ), $._end ), - identifier: ($) => $._identifier, - label: ($) => choice($.string, $._unquoted_string), attr_value: ($) => choice($.string, $._unquoted_string), @@ -93,36 +94,34 @@ module.exports = grammar({ _connection_attr_key: ($) => choice("source-arrowhead", "target-arrowhead"), - _identifier: ($) => - prec.right( - seq( - repeat(" "), - optional($._dash), - choice( - $._word, - repeat1(seq($._word, choice(repeat(" "), $._dash), $._word)) - ), - optional($._dash), - repeat(" ") - ) + _identifier: ($) => seq(spaces, $.identifier), + + identifier: ($) => + seq( + optional($._dash), + choice( + $._word, + repeat1(seq($._word, choice(spaces, $._dash), $._word)) + ), + optional($._dash) ), - _colon: ($) => seq(repeat(" "), ":", repeat(" ")), + _colon: ($) => seq(spaces, ":", spaces), - _word: ($) => /[\w\d]+/, + _arrow: ($) => seq(spaces, $.arrow), arrow: ($) => - prec.left( - choice( - seq("--", repeat($._dash)), - seq("<-", repeat($._dash)), - seq("<-", repeat($._dash), ">"), - seq(repeat($._dash), "->") - ) + choice( + seq("--", repeat($._dash)), + seq("<-", repeat($._dash)), + seq("<-", repeat($._dash), ">"), + seq(repeat($._dash), "->") ), _dash: ($) => token.immediate("-"), + dot: ($) => token.immediate("."), + _unquoted_string: ($) => token.immediate(/[^'"`\n;{]+/), string: ($) => @@ -132,9 +131,9 @@ module.exports = grammar({ seq("`", repeat(token.immediate(/[^`\n]+/)), "`") ), - _eof: ($) => choice("\n", "\0"), - _end: ($) => seq(repeat(" "), choice(";", $._eof)), + _word: ($) => /[\w\d]+/, - dot: ($) => ".", + _eof: ($) => choice("\n", "\0"), + _end: ($) => seq(spaces, choice(";", $._eof)), }, }); diff --git a/src/grammar.json b/src/grammar.json index 18f3f3f..7aaeacf 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -35,7 +35,7 @@ "members": [ { "type": "SYMBOL", - "name": "identifier" + "name": "_identifier" }, { "type": "REPEAT1", @@ -44,11 +44,11 @@ "members": [ { "type": "SYMBOL", - "name": "arrow" + "name": "_arrow" }, { "type": "SYMBOL", - "name": "identifier" + "name": "_identifier" } ] } @@ -103,7 +103,7 @@ "members": [ { "type": "SYMBOL", - "name": "identifier" + "name": "_identifier" }, { "type": "REPEAT", @@ -116,7 +116,7 @@ }, { "type": "SYMBOL", - "name": "identifier" + "name": "_identifier" } ] } @@ -166,10 +166,6 @@ } ] }, - "identifier": { - "type": "SYMBOL", - "name": "_identifier" - }, "label": { "type": "CHOICE", "members": [ @@ -414,92 +410,90 @@ ] }, "_identifier": { - "type": "PREC_RIGHT", - "value": 0, - "content": { - "type": "SEQ", - "members": [ - { - "type": "REPEAT", - "content": { - "type": "STRING", - "value": " " - } - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_dash" - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_word" - }, - { - "type": "REPEAT1", - "content": { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_word" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "REPEAT", - "content": { - "type": "STRING", - "value": " " - } - }, - { - "type": "SYMBOL", - "name": "_dash" - } - ] - }, - { - "type": "SYMBOL", - "name": "_word" - } - ] - } - } - ] - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_dash" - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "REPEAT", - "content": { - "type": "STRING", - "value": " " - } + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "STRING", + "value": " " } - ] - } + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + }, + "identifier": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_dash" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_word" + }, + { + "type": "REPEAT1", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_word" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "STRING", + "value": " " + } + }, + { + "type": "SYMBOL", + "name": "_dash" + } + ] + }, + { + "type": "SYMBOL", + "name": "_word" + } + ] + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_dash" + }, + { + "type": "BLANK" + } + ] + } + ] }, "_colon": { "type": "SEQ", @@ -524,86 +518,94 @@ } ] }, - "_word": { - "type": "PATTERN", - "value": "[\\w\\d]+" + "_arrow": { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "STRING", + "value": " " + } + }, + { + "type": "SYMBOL", + "name": "arrow" + } + ] }, "arrow": { - "type": "PREC_LEFT", - "value": 0, - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "--" - }, - { - "type": "REPEAT", - "content": { - "type": "SYMBOL", - "name": "_dash" - } + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "--" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_dash" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "<-" - }, - { - "type": "REPEAT", - "content": { - "type": "SYMBOL", - "name": "_dash" - } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "<-" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_dash" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "<-" - }, - { - "type": "REPEAT", - "content": { - "type": "SYMBOL", - "name": "_dash" - } - }, - { - "type": "STRING", - "value": ">" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "<-" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_dash" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "REPEAT", - "content": { - "type": "SYMBOL", - "name": "_dash" - } - }, - { - "type": "STRING", - "value": "->" + }, + { + "type": "STRING", + "value": ">" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_dash" } - ] - } - ] - } + }, + { + "type": "STRING", + "value": "->" + } + ] + } + ] }, "_dash": { "type": "IMMEDIATE_TOKEN", @@ -612,6 +614,13 @@ "value": "-" } }, + "dot": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "STRING", + "value": "." + } + }, "_unquoted_string": { "type": "IMMEDIATE_TOKEN", "content": { @@ -693,6 +702,10 @@ } ] }, + "_word": { + "type": "PATTERN", + "value": "[\\w\\d]+" + }, "_eof": { "type": "CHOICE", "members": [ @@ -730,14 +743,17 @@ ] } ] - }, - "dot": { - "type": "STRING", - "value": "." } }, "extras": [], - "conflicts": [], + "conflicts": [ + [ + "identifier" + ], + [ + "arrow" + ] + ], "precedences": [], "externals": [], "inline": [], diff --git a/src/parser.c b/src/parser.c index f5c642d6b7352b2fbf87abe8ffdbeec5a15cd1f9..e4c3729d15ecef9b1e65b2a4a91723df291f0e63 100644 GIT binary patch literal 97040 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 B0%HIG