From a83e3627ccd2e248623d8365d19e9b2978667702 Mon Sep 17 00:00:00 2001 From: overflowerror Date: Thu, 23 Dec 2021 18:25:30 +0100 Subject: [PATCH] disabled recursive debugging outputs for testing --- .../antlr/hoisting/HoistingConfiguration.java | 12 +++++++++++ .../antlr/hoisting/HoistingProcessor.java | 21 +++++++++++++------ .../hoisting/pathAnalysis/TokenAnalysis.java | 18 +++++++++------- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/HoistingConfiguration.java b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/HoistingConfiguration.java index c8e1850fa..8d345793e 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/HoistingConfiguration.java +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/HoistingConfiguration.java @@ -8,13 +8,25 @@ *******************************************************************************/ package org.eclipse.xtext.xtext.generator.parser.antlr.hoisting; +import org.eclipse.xtext.Grammar; + /** * @author overflow - Initial contribution and API */ public class HoistingConfiguration { private final int tokenLimit = 10; + private boolean debug = false; + + public HoistingConfiguration(Grammar grammar) { + // TODO: get config options from ecore object + } public int getTokenLimit() { return tokenLimit; } + + public boolean isDebug() { + return debug; + } + } diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/HoistingProcessor.java b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/HoistingProcessor.java index de86be32f..4c55ffed3 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/HoistingProcessor.java +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/HoistingProcessor.java @@ -72,10 +72,11 @@ public class HoistingProcessor { private Logger log = Logger.getLogger(this.getClass()); - private HoistingConfiguration config = new HoistingConfiguration(); + private HoistingConfiguration config; private TokenAnalysis analysis; public void init(Grammar grammar) { + config = new HoistingConfiguration(grammar); analysis = new TokenAnalysis(config, grammar); } @@ -295,10 +296,14 @@ public class HoistingProcessor { // this is very inefficient log.warn("nested prefix alternatives detected"); log.warn("avoid these since they can't be handled efficiently"); - log.info(abstractElementToString(alternatives)); + + if (config.isDebug()) + log.info(abstractElementToString(alternatives)); CompoundElement flattened = flattenPaths(alternatives, paths, guards); - log.info(abstractElementToString(flattened)); + + if (config.isDebug()) + log.info(abstractElementToString(flattened)); log.info(flattened.getElements().size()); // TODO: value configurable? @@ -485,7 +490,8 @@ public class HoistingProcessor { } public HoistingGuard findHoistingGuardIgnoreCardinality(AbstractElement element) { - log.info("hoisting (trivial) guard of: \n" + abstractElementToString(element)); + if (config.isDebug()) + log.info("hoisting (trivial) guard of: \n" + abstractElementToString(element)); // should only be called for valid AST elements, so element can never be floating AbstractRule rule = containingParserRule(element); @@ -497,7 +503,9 @@ public class HoistingProcessor { } public HoistingGuard findHoistingGuard(AbstractElement element) { - log.info("hoisting guard of: \n" + abstractElementToString(element)); + if (config.isDebug()) + log.info("hoisting guard of: \n" + abstractElementToString(element)); + // should only be called for valid AST elements, so element can never be floating return findGuardForElement(element, containingParserRule(element)); } @@ -515,7 +523,8 @@ public class HoistingProcessor { } private HoistingGuard findGuardForElementWithTrivialCardinality(AbstractElement element, AbstractRule currentRule) { - log.info(currentRule.getName() + ": " + abstractElementToShortString(element)); + if (config.isDebug()) + log.info(currentRule.getName() + ": " + abstractElementToShortString(element)); if (element instanceof Alternatives) { return findGuardForAlternatives((Alternatives) element, currentRule); diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/pathAnalysis/TokenAnalysis.java b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/pathAnalysis/TokenAnalysis.java index b25b59dcd..43a48273a 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/pathAnalysis/TokenAnalysis.java +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/parser/antlr/hoisting/pathAnalysis/TokenAnalysis.java @@ -388,12 +388,13 @@ public class TokenAnalysis { } private boolean arePathsIdenticalFallback(AbstractElement path1, AbstractElement path2) { - // + 1, because otherwise identical paths of length token limit can't be checked - - log.info("path1: " + abstractElementToString(path1)); - log.info("path2: " + abstractElementToString(path2)); + if (config.isDebug()) { + log.info("path1: " + abstractElementToString(path1)); + log.info("path2: " + abstractElementToString(path2)); + } int i; + // + 1, because otherwise identical paths of length token limit can't be checked int limit = config.getTokenLimit() + 1; for (i = 0; i < limit; i++) { TokenAnalysisPaths tokenPaths1; @@ -525,9 +526,12 @@ public class TokenAnalysis { .map(p -> (List>) null) .collect(Collectors.toList()); - paths.forEach(p -> { - log.info("\n" + abstractElementToString(p)); - }); + + if (config.isDebug()) { + paths.forEach(p -> { + log.info("\n" + abstractElementToString(p)); + }); + } tokenCombinations(indexList -> { log.info("current index list: " + indexList);