From b84a31424513f9215de0690ba3d876021de30bb3 Mon Sep 17 00:00:00 2001 From: Bruce Collie Date: Wed, 11 Oct 2023 15:20:25 +0100 Subject: [PATCH] Thread state information into parseError --- .../org/kframework/parser/inner/kernel/EarleyParser.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kernel/src/main/java/org/kframework/parser/inner/kernel/EarleyParser.java b/kernel/src/main/java/org/kframework/parser/inner/kernel/EarleyParser.java index 8f3f541295e..c2c4e5622b3 100644 --- a/kernel/src/main/java/org/kframework/parser/inner/kernel/EarleyParser.java +++ b/kernel/src/main/java/org/kframework/parser/inner/kernel/EarleyParser.java @@ -850,11 +850,11 @@ public Term parse(String input, Source source, int startLine, int startColumn) { // a parse error after the outer loop finishes also. if (S.get(k+1).empty() && Q.empty()) { // no more states to process, so it must be a parse error - parseError(data, k); + parseError(data, S, k); } } if (S.get(data.words.length).empty()) { - parseError(data, data.words.length-1); + parseError(data, S, data.words.length-1); } // finished parsing successfully, so return the final parse forest return Ambiguity.apply(S.get(data.words.length).states.get(0).parseTree().stream().map(list -> list.get(0)).collect(Collectors.toSet())); @@ -862,10 +862,10 @@ public Term parse(String input, Source source, int startLine, int startColumn) { /** * @param data The {@link ParserMetadata} about the sentence being parsed + * @param S The set of {@link EarleyState}s for each end-index in the input * @param k The end-index at which a parse error occurred. In other words, the index just prior to the first token that - * did not parse. */ - private void parseError(ParserMetadata data, int k) { + private void parseError(ParserMetadata data, EarleySet S, int k) { int startLine, startColumn, endLine, endColumn; if (data.words.length == 1) { startLine = data.lines[0];