Loading EDG/src/main/java/edg/constraint/AsteriskConstraint.java +7 −3 Original line number Diff line number Diff line Loading @@ -89,10 +89,14 @@ public class AsteriskConstraint extends EdgeConstraint } private boolean existsPreviousAsteriskConstraint(Constraints constraints){ for(Constraint c : constraints.getEdgeConstraints()) boolean previousAsterisk = false; for(Constraint c : constraints.getEdgeConstraints()) { if (c instanceof AsteriskConstraint) return true; return false; previousAsterisk = true; if (previousAsterisk && c instanceof GrammarConstraint) previousAsterisk = false; } return previousAsterisk; } private Constraints popToAsteriskConstraint(Constraints constraints){ Loading EDG/src/main/java/edg/edge/SummaryEdgeGenerator.java +12 −1 Original line number Diff line number Diff line Loading @@ -139,6 +139,7 @@ public class SummaryEdgeGenerator extends EdgeGenerator final Grammar grammar = this.edg.getGrammar(); final GrammarConstraint grammarConstraint = new GrammarConstraint(grammar, formalIn); boolean isNewGrammarTerm = grammar.isNewGrammarTerm(grammarConstraint); if (!isLeftRecursiveGrammar(grammarConstraint, constraints)) this.edg.addProduction(grammarConstraint, constraints); final List<Node> nodesToContinue = new LinkedList<>(); Loading Loading @@ -167,4 +168,14 @@ public class SummaryEdgeGenerator extends EdgeGenerator workList.repend(id); } } private boolean isLeftRecursiveGrammar(GrammarConstraint grammarConstraint, Constraints constraints) { if (constraints.getEdgeConstraints().isEmpty()) return false; String grammarId = grammarConstraint.getRefNode().getId() + ""; String stackBottomTerm = constraints.getEdgeConstraints().firstElement().toString(); return grammarId.equals(stackBottomTerm); } } No newline at end of file e-Knife/src/main/java/eknife/erlang/ValueEdgeGenerator.java +1 −2 Original line number Diff line number Diff line Loading @@ -194,8 +194,7 @@ public class ValueEdgeGenerator { { final Node valueNode = this.last.getChild(listComprehensionNode, Node.Type.Value); final Node value = this.last.getChild(valueNode, Node.Type.Value); this.last.addEdge(valueNode, listComprehensionNode, Edge.Type.Value, negativeConstraint); this.last.addEdge(value, valueNode, Edge.Type.Value, EmptyConstraint.getConstraint()); this.last.addEdge(value, listComprehensionNode, Edge.Type.Value, negativeConstraint); } } Loading Loading
EDG/src/main/java/edg/constraint/AsteriskConstraint.java +7 −3 Original line number Diff line number Diff line Loading @@ -89,10 +89,14 @@ public class AsteriskConstraint extends EdgeConstraint } private boolean existsPreviousAsteriskConstraint(Constraints constraints){ for(Constraint c : constraints.getEdgeConstraints()) boolean previousAsterisk = false; for(Constraint c : constraints.getEdgeConstraints()) { if (c instanceof AsteriskConstraint) return true; return false; previousAsterisk = true; if (previousAsterisk && c instanceof GrammarConstraint) previousAsterisk = false; } return previousAsterisk; } private Constraints popToAsteriskConstraint(Constraints constraints){ Loading
EDG/src/main/java/edg/edge/SummaryEdgeGenerator.java +12 −1 Original line number Diff line number Diff line Loading @@ -139,6 +139,7 @@ public class SummaryEdgeGenerator extends EdgeGenerator final Grammar grammar = this.edg.getGrammar(); final GrammarConstraint grammarConstraint = new GrammarConstraint(grammar, formalIn); boolean isNewGrammarTerm = grammar.isNewGrammarTerm(grammarConstraint); if (!isLeftRecursiveGrammar(grammarConstraint, constraints)) this.edg.addProduction(grammarConstraint, constraints); final List<Node> nodesToContinue = new LinkedList<>(); Loading Loading @@ -167,4 +168,14 @@ public class SummaryEdgeGenerator extends EdgeGenerator workList.repend(id); } } private boolean isLeftRecursiveGrammar(GrammarConstraint grammarConstraint, Constraints constraints) { if (constraints.getEdgeConstraints().isEmpty()) return false; String grammarId = grammarConstraint.getRefNode().getId() + ""; String stackBottomTerm = constraints.getEdgeConstraints().firstElement().toString(); return grammarId.equals(stackBottomTerm); } } No newline at end of file
e-Knife/src/main/java/eknife/erlang/ValueEdgeGenerator.java +1 −2 Original line number Diff line number Diff line Loading @@ -194,8 +194,7 @@ public class ValueEdgeGenerator { { final Node valueNode = this.last.getChild(listComprehensionNode, Node.Type.Value); final Node value = this.last.getChild(valueNode, Node.Type.Value); this.last.addEdge(valueNode, listComprehensionNode, Edge.Type.Value, negativeConstraint); this.last.addEdge(value, valueNode, Edge.Type.Value, EmptyConstraint.getConstraint()); this.last.addEdge(value, listComprehensionNode, Edge.Type.Value, negativeConstraint); } } Loading