You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2015/06/24 17:51:44 UTC
svn commit: r1687312 - in /uima/ruta/trunk/ruta-core/src:
main/antlr3/org/apache/uima/ruta/parser/ main/java/org/apache/uima/ruta/rule/
main/java/org/apache/uima/ruta/verbalize/ test/java/org/apache/uima/ruta/
Author: pkluegl
Date: Wed Jun 24 15:51:44 2015
New Revision: 1687312
URL: http://svn.apache.org/r1687312
Log:
UIMA-4471
- fixed combination of lined rules
- simplified test
Modified:
uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java
Modified: uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g (original)
+++ uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g Wed Jun 24 15:51:44 2015
@@ -826,7 +826,8 @@ ruleElements[RuleElementContainer contai
ruleElement[RuleElementContainer container] returns [RuleElement re = null]
@init{
-List<RutaStatement> innerRules = new ArrayList<RutaStatement>();
+List<RutaStatement> innerConditionRules = new ArrayList<RutaStatement>();
+List<RutaStatement> innerActionRules = new ArrayList<RutaStatement>();
}
:
start = STARTANCHOR? (
@@ -838,18 +839,17 @@ List<RutaStatement> innerRules = new Arr
{re.setStartAnchor(start != null);}
(t = (THEN2)
LCURLY
- (rule = simpleStatement {innerRules.add(rule);})+
+ (rule = simpleStatement {innerConditionRules.add(rule);})+
RCURLY
- {re.setInlinedRules(innerRules);
- boolean block = t != null && t.getText().equals("->");
- re.setInlineMode(block);})?
+ {re.setInlinedConditionRules(innerConditionRules);}
+
+ )?
(t = (THEN)
LCURLY
- (rule = simpleStatement {innerRules.add(rule);})+
+ (rule = simpleStatement {innerActionRules.add(rule);})+
RCURLY
- {re.setInlinedRules(innerRules);
- boolean block = t != null && t.getText().equals("->");
- re.setInlineMode(block);})?
+ {re.setInlinedActionRules(innerActionRules);}
+ )?
;
ruleElementWildCard [RuleElementContainer container] returns [AbstractRuleElement re = null]
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java Wed Jun 24 15:51:44 2015
@@ -52,10 +52,10 @@ public abstract class AbstractRuleElemen
@SuppressWarnings("unchecked")
protected final InferenceCrowd emptyCrowd = new InferenceCrowd(Collections.EMPTY_LIST);
- protected List<RutaStatement> inlinedRules;
-
- protected boolean inlineMode;
+ protected List<RutaStatement> inlinedConditionRules;
+ protected List<RutaStatement> inlinedActionRules;
+
public AbstractRuleElement(RuleElementQuantifier quantifier,
List<AbstractRutaCondition> conditions, List<AbstractRutaAction> actions,
RuleElementContainer container, RutaBlock parent) {
@@ -87,15 +87,23 @@ public abstract class AbstractRuleElemen
}
}
- protected List<ScriptApply> processInlinedBlockRules(RuleMatch ruleMatch, RutaStream stream,
+ protected List<ScriptApply> processInlinedActionRules(RuleMatch ruleMatch, RutaStream stream,
InferenceCrowd crowd) {
- if (inlineMode && inlinedRules != null && !inlinedRules.isEmpty()) {
- return processInlinedRules(ruleMatch, stream, crowd);
+ if (inlinedActionRules != null && !inlinedActionRules.isEmpty()) {
+ return processInlinedRules(inlinedActionRules, ruleMatch, stream, crowd);
}
return null;
}
- protected List<ScriptApply> processInlinedRules(RuleMatch ruleMatch, RutaStream stream,
+ protected List<ScriptApply> processInlinedConditionRules(RuleMatch ruleMatch, RutaStream stream,
+ InferenceCrowd crowd) {
+ if (inlinedConditionRules != null && !inlinedConditionRules.isEmpty()) {
+ return processInlinedRules(inlinedConditionRules, ruleMatch, stream, crowd);
+ }
+ return null;
+ }
+
+ protected List<ScriptApply> processInlinedRules(List<RutaStatement> inlinedRules, RuleMatch ruleMatch, RutaStream stream,
InferenceCrowd crowd) {
List<ScriptApply> result = new ArrayList<ScriptApply>();
List<AnnotationFS> matchedAnnotationsOf = ruleMatch.getMatchedAnnotationsOf(this);
@@ -116,13 +124,7 @@ public abstract class AbstractRuleElemen
return result;
}
- protected List<ScriptApply> processInlinedConditionRules(RuleMatch ruleMatch, RutaStream stream,
- InferenceCrowd crowd) {
- if (!inlineMode && inlinedRules != null && !inlinedRules.isEmpty()) {
- return processInlinedRules(ruleMatch, stream, crowd);
- }
- return null;
- }
+
public void apply(RuleMatch ruleMatch, RutaStream stream, InferenceCrowd crowd) {
for (AbstractRutaAction action : actions) {
@@ -130,7 +132,7 @@ public abstract class AbstractRuleElemen
action.execute(ruleMatch, this, stream, crowd);
crowd.endVisit(action, null);
}
- processInlinedBlockRules(ruleMatch, stream, crowd);
+ processInlinedActionRules(ruleMatch, stream, crowd);
}
protected boolean matchInnerRules(RuleMatch ruleMatch, RutaStream stream, InferenceCrowd crowd) {
@@ -278,20 +280,20 @@ public abstract class AbstractRuleElemen
return startAnchor;
}
- public void setInlinedRules(List<RutaStatement> innerRules) {
- this.inlinedRules = innerRules;
- }
-
- public void setInlineMode(boolean blockMode) {
- this.inlineMode = blockMode;
- }
-
- public List<RutaStatement> getInlinedRules() {
- return inlinedRules;
+ public void setInlinedConditionRules(List<RutaStatement> innerRules) {
+ this.inlinedConditionRules = innerRules;
}
-
- public boolean getInlineMode() {
- return inlineMode;
+
+ public List<RutaStatement> getInlinedConditionRules() {
+ return inlinedConditionRules;
+ }
+
+ public void setInlinedActionRules(List<RutaStatement> innerRules) {
+ this.inlinedActionRules = innerRules;
+ }
+
+ public List<RutaStatement> getInlinedActionRules() {
+ return inlinedActionRules;
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java Wed Jun 24 15:51:44 2015
@@ -78,8 +78,8 @@ public interface RuleElement {
boolean isStartAnchor();
- void setInlinedRules(List<RutaStatement> innerRules);
-
- void setInlineMode(boolean block);
+ void setInlinedActionRules(List<RutaStatement> innerRules);
+
+ void setInlinedConditionRules(List<RutaStatement> innerRules);
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java Wed Jun 24 15:51:44 2015
@@ -156,21 +156,23 @@ public class ScriptVerbalizer {
}
if(re instanceof AbstractRuleElement) {
AbstractRuleElement are = (AbstractRuleElement) re;
- boolean blockMode = are.getInlineMode();
- List<RutaStatement> inlinedRules = are.getInlinedRules();
- if(inlinedRules != null && !inlinedRules.isEmpty()) {
- if(blockMode) {
- result.append(THEN);
- } else {
- result.append(THEN2);
+ List<RutaStatement> inlinedConditionRules = are.getInlinedConditionRules();
+ if(inlinedConditionRules != null && !inlinedConditionRules.isEmpty()) {
+ result.append(THEN2);
+ result.append(CBOPEN);
+ for (RutaStatement rutaStatement : inlinedConditionRules) {
+ result.append(verbalize(rutaStatement));
+ result.append(";");
}
+ }
+ List<RutaStatement> inlinedActionRules = are.getInlinedActionRules();
+ if(inlinedConditionRules != null && !inlinedActionRules.isEmpty()) {
+ result.append(THEN);
result.append(CBOPEN);
- for (RutaStatement rutaStatement : inlinedRules) {
+ for (RutaStatement rutaStatement : inlinedActionRules) {
result.append(verbalize(rutaStatement));
result.append(";");
-// result.append("\n");
}
- result.append(CBCLOSE);
}
}
return result.toString();
Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java Wed Jun 24 15:51:44 2015
@@ -45,7 +45,7 @@ public class InlinedRulesTest {
script +=
"(T1 PERIOD T1{-> T12}){CONTAINS(COLON)}<-{W COLON (W W)<-{ANY{REGEXP(\"match.*\")};};};\n";
// both types
- script += "(T1 PERIOD T1){CONTAINS(COLON)}<-{W COLON W W;}->{COLON{->T13};};\n";
+ script += "T1<-{W COLON W W;}->{COLON{->T13};};\n";
script += "(T1 PERIOD T1){CONTAINS(COLON)}<-{W COLON (W W)<-{ANY{REGEXP(\"match.*\")};}->{W{->T14};};};\n";
CAS cas = null;
try {
@@ -83,7 +83,7 @@ public class InlinedRulesTest {
2, //
"A rule is composed of a sequence of rule elements and a rule element essentially consists of four parts: A matching condition, an optional quantifier, a list of conditions and a list of actions",
"The matching condition is typically a type of an annotation by which the rule element matches on the covered text of one of those annotations");
- RutaTestUtils.assertAnnotationsEquals(cas, 13, 2, ":", ":");
+ RutaTestUtils.assertAnnotationsEquals(cas, 13, 1, ":");
RutaTestUtils.assertAnnotationsEquals(cas, 14, 4, "A", "A", "matching", "matching");
cas.release();