From 8653146512cbeddedbb06bee73445d1c1d9505f7 Mon Sep 17 00:00:00 2001 From: maxonfjvipon Date: Mon, 18 Mar 2024 12:36:04 +0300 Subject: [PATCH 1/3] fix(#2924): grammar --- eo-parser/src/main/antlr4/org/eolang/parser/Phi.g4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eo-parser/src/main/antlr4/org/eolang/parser/Phi.g4 b/eo-parser/src/main/antlr4/org/eolang/parser/Phi.g4 index b266a2259b..4f2519de59 100644 --- a/eo-parser/src/main/antlr4/org/eolang/parser/Phi.g4 +++ b/eo-parser/src/main/antlr4/org/eolang/parser/Phi.g4 @@ -58,7 +58,7 @@ emptyBinding ; deltaBidning - : DELTA DASHED_ARROW BYTES + : DELTA DASHED_ARROW (BYTES | EMPTY) ; lambdaBidning From 30ee02be242353311ad5eb47a96cda0e3297ba21 Mon Sep 17 00:00:00 2001 From: maxonfjvipon Date: Mon, 18 Mar 2024 12:40:29 +0300 Subject: [PATCH 2/3] fix(#2924): throw --- .../src/main/java/org/eolang/parser/XePhiListener.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/eo-parser/src/main/java/org/eolang/parser/XePhiListener.java b/eo-parser/src/main/java/org/eolang/parser/XePhiListener.java index a509d8a3cc..cb576abcac 100644 --- a/eo-parser/src/main/java/org/eolang/parser/XePhiListener.java +++ b/eo-parser/src/main/java/org/eolang/parser/XePhiListener.java @@ -313,6 +313,13 @@ public void exitEmptyBinding(final PhiParser.EmptyBindingContext ctx) { @Override public void enterDeltaBidning(final PhiParser.DeltaBidningContext ctx) { + if (ctx.EMPTY() != null) { + throw new ParsingException( + "It's impossible to represent Δ ⤍ ∅ binding in EO", + new IllegalStateException(), + ctx.getStart().getLine() + ); + } this.objects() .start() .prop("data", "bytes") From fe423f938b9ece88e010d6623841c1442c34ea84 Mon Sep 17 00:00:00 2001 From: maxonfjvipon Date: Mon, 18 Mar 2024 13:19:02 +0300 Subject: [PATCH 3/3] fix(#2924): test --- .../src/test/java/org/eolang/parser/PhiSyntaxTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/eo-parser/src/test/java/org/eolang/parser/PhiSyntaxTest.java b/eo-parser/src/test/java/org/eolang/parser/PhiSyntaxTest.java index 5739c0925b..5161f8dd77 100644 --- a/eo-parser/src/test/java/org/eolang/parser/PhiSyntaxTest.java +++ b/eo-parser/src/test/java/org/eolang/parser/PhiSyntaxTest.java @@ -26,6 +26,7 @@ import com.jcabi.matchers.XhtmlMatchers; import java.io.IOException; import org.hamcrest.MatcherAssert; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.xembly.Directives; @@ -48,6 +49,15 @@ void addsError() throws IOException { ); } + @Test + void catchesDeltaToNothingBinding() throws IOException { + Assertions.assertThrows( + ParsingException.class, + new PhiSyntax("{ ⟦ x ↦ ⟦ Δ ⤍ ∅ ⟧ ⟧ }")::parsed, + "Impossible binding with Δ should be caught" + ); + } + @Test void addsExtra() throws IOException { MatcherAssert.assertThat(