Modified: 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java?rev=1342714&r1=1342713&r2=1342714&view=diff
==============================================================================
--- 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java
 (original)
+++ 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/formatter/TextMarkerFormattedPrinter.java
 Fri May 25 16:26:54 2012
@@ -452,11 +452,13 @@ public class TextMarkerFormattedPrinter 
   private void printStructureAction(TextMarkerAction a) {
     TextMarkerStructureAction tmca = (TextMarkerStructureAction) a;
     // structure
-    append(tmca.getStructure());
+    if (tmca.getStructure() != null) {
+      append(tmca.getStructure());
+    }
     append(COMMA);
     append(" ");
     // number expressions
-    List<Expression> indices = tmca.getIndices();
+    List<Expression> indices = tmca.getExpressions();
     if (indices != null) {
       traverseAstNodes(indices);
     }
@@ -515,12 +517,13 @@ public class TextMarkerFormattedPrinter 
       append(" ");
     }
     // structure
-
-    append(tmca.getStructure());
+    if (tmca.getStructure() != null) {
+      append(tmca.getStructure());
+    }
     append(COMMA);
     append(" ");
     // number expressions
-    List<Expression> indices = tmca.getIndices();
+    List<Expression> indices = tmca.getExpressions();
     if (indices != null) {
       traverseAstNodes(indices);
     }

Modified: 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/parser/ast/ActionFactory.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/parser/ast/ActionFactory.java?rev=1342714&r1=1342713&r2=1342714&view=diff
==============================================================================
--- 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/parser/ast/ActionFactory.java
 (original)
+++ 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/parser/ast/ActionFactory.java
 Fri May 25 16:26:54 2012
@@ -91,32 +91,12 @@ public class ActionFactory extends Abstr
   }
 
   public static TextMarkerAction createStructureAction(Token type, Expression 
structure,
-          List indexes, List<Expression> left, List<Expression> right) {
-    int bounds[] = getBounds(type);
-    int nameStart = bounds[0];
-    int nameEnd = bounds[1];
-    List<Expression> numExprs = new ArrayList<Expression>();
-    Map<Expression, Expression> assignments = new LinkedHashMap<Expression, 
Expression>();
-    filterNullObjsAndSetBounds(indexes, bounds, numExprs);
-    if (left != null && right != null) {
-      Iterator<Expression> keysIt = left.iterator();
-      Iterator<Expression> valsIt = right.iterator();
-      Expression val = null;
-      while (keysIt.hasNext()) {
-        Expression key = keysIt.next();
-        if (!valsIt.hasNext()) {
-          break;
-        }
-        val = valsIt.next();
-        assignments.put(key, val);
-      }
-      if (val != null) {
-        bounds[1] = val.sourceEnd();
-      }
+          List<Expression> indexes, List<Expression> left, List<Expression> 
right) {
+    List<Expression> args = new ArrayList<Expression>();
+    if (indexes != null) {
+      args.addAll(indexes);
     }
-    return new TextMarkerStructureAction(bounds[0], bounds[1], numExprs,
-            ExpressionConstants.USER_EXPRESSION_START + type.getType(), 
type.getText(), nameStart,
-            nameEnd, assignments, structure);
+    return createStructureAction(type, args, left, right, structure);
   }
 
   /**
@@ -168,6 +148,7 @@ public class ActionFactory extends Abstr
     List<Expression> indexes = new ArrayList<Expression>();
     indexes.add(table);
     indexes.add(index);
+    indexes.add(structure);
     filterNullObjsAndSetBounds(indexes, bounds, numExprs);
     if (left != null && right != null) {
       Iterator<Expression> keysIt = left.iterator();
@@ -218,4 +199,34 @@ public class ActionFactory extends Abstr
     }
     return createAction(name, exprs);
   }
+
+  public static TextMarkerAction createStructureAction(Token name, 
List<Expression> args,
+          List<Expression> left, List<Expression> right, Expression structure) 
{
+    int bounds[] = getBounds(name);
+    int nameStart = bounds[0];
+    int nameEnd = bounds[1];
+    List<Expression> numExprs = new ArrayList<Expression>();
+    Map<Expression, Expression> assignments = new LinkedHashMap<Expression, 
Expression>();
+    filterNullObjsAndSetBounds(args, bounds, numExprs);
+    if (left != null && right != null) {
+      Iterator<Expression> keysIt = left.iterator();
+      Iterator<Expression> valsIt = right.iterator();
+      Expression val = null;
+      while (keysIt.hasNext()) {
+        Expression key = keysIt.next();
+        if (!valsIt.hasNext()) {
+          break;
+        }
+        val = valsIt.next();
+        assignments.put(key, val);
+      }
+      if (val != null) {
+        bounds[1] = val.sourceEnd();
+      }
+    }
+    return new TextMarkerStructureAction(bounds[0], bounds[1], numExprs,
+            ExpressionConstants.USER_EXPRESSION_START + name.getType(), 
name.getText(), nameStart,
+            nameEnd, assignments, structure);
+  }
+
 }

Modified: 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/parser/ast/TextMarkerStructureAction.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/parser/ast/TextMarkerStructureAction.java?rev=1342714&r1=1342713&r2=1342714&view=diff
==============================================================================
--- 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/parser/ast/TextMarkerStructureAction.java
 (original)
+++ 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/parser/ast/TextMarkerStructureAction.java
 Fri May 25 16:26:54 2012
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.eclipse.dltk.ast.ASTVisitor;
 import org.eclipse.dltk.ast.expressions.Expression;
@@ -32,24 +33,23 @@ public class TextMarkerStructureAction e
 
   private Map<Expression, Expression> assignments;
 
-  public TextMarkerStructureAction(int start, int end, List<Expression> 
indexExprs, int kind,
+  public TextMarkerStructureAction(int start, int end, List<Expression> exprs, 
int kind,
           String name, int nameStart, int nameEnd, Map<Expression, Expression> 
assignments,
           Expression structure) {
-    super(start, end, indexExprs, kind, name, nameStart, nameEnd);
-    this.structure = structure;
+    super(start, end, exprs, kind, name, nameStart, nameEnd);
     this.assignments = assignments;
+    this.structure = structure;
   }
 
   @Override
   public void traverse(ASTVisitor visitor) throws Exception {
     if (visitor.visit(this)) {
-      structure.traverse(visitor);
       for (Expression e : super.exprs) {
         e.traverse(visitor);
       }
-      Iterator it = assignments.entrySet().iterator();
+      Iterator<Entry<Expression, Expression>> it = 
assignments.entrySet().iterator();
       while (it.hasNext()) {
-        Map.Entry pairs = (Map.Entry) it.next();
+        Map.Entry<Expression, Expression> pairs = it.next();
         if (pairs.getKey() == null || pairs.getValue() == null) {
           break;
         }
@@ -60,9 +60,8 @@ public class TextMarkerStructureAction e
   }
 
   @Override
-  public List getChilds() {
-    List l = new ArrayList<Expression>();
-    l.add(structure);
+  public List<Expression> getChilds() {
+    List<Expression> l = new ArrayList<Expression>();
     l.addAll(super.getChilds());
     l.addAll(assignments.keySet());
     l.addAll(assignments.values());
@@ -77,7 +76,7 @@ public class TextMarkerStructureAction e
     return structure;
   }
 
-  public List<Expression> getIndices() {
+  public List<Expression> getExpressions() {
     return super.exprs;
   }
 }

Modified: 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/validator/TextMarkerVarRefChecker.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/validator/TextMarkerVarRefChecker.java?rev=1342714&r1=1342713&r2=1342714&view=diff
==============================================================================
--- 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/validator/TextMarkerVarRefChecker.java
 (original)
+++ 
uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/validator/TextMarkerVarRefChecker.java
 Fri May 25 16:26:54 2012
@@ -221,8 +221,11 @@ public class TextMarkerVarRefChecker imp
         if (s instanceof TextMarkerStructureAction) {
           TextMarkerStructureAction sa = (TextMarkerStructureAction) s;
           Expression struct = sa.getStructure();
-          String structure = 
currentFile.getSource().substring(struct.sourceStart(),
-                  struct.sourceEnd());
+          String structure = null;
+          if (struct != null) {
+            structure = currentFile.getSource().substring(struct.sourceStart(),
+                    struct.sourceEnd());
+          }
           Map<Expression, Expression> assignments = sa.getAssignments();
           // hotfix... correct name in ast
           String action = currentFile.getSource().substring(sa.getNameStart(), 
sa.getNameEnd());
@@ -282,7 +285,7 @@ public class TextMarkerVarRefChecker imp
 
     private boolean findFeature(String structure, String feat) {
       boolean featureFound = false;
-      if (description == null) {
+      if (description == null || structure == null) {
         return featureFound;
       }
       TypeDescription[] descriptions = description.getTypes();

Modified: 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/action/ActionFactory.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/action/ActionFactory.java?rev=1342714&r1=1342713&r2=1342714&view=diff
==============================================================================
--- 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/action/ActionFactory.java
 (original)
+++ 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/action/ActionFactory.java
 Fri May 25 16:26:54 2012
@@ -175,8 +175,8 @@ public class ActionFactory {
 
   public static AbstractTextMarkerAction createMarkTableAction(TypeExpression 
structure,
           NumberExpression index, WordTableExpression table,
-          Map<StringExpression, NumberExpression> map, TextMarkerBlock env) {
-    return new MarkTableAction(structure, index, table, map);
+          Map<StringExpression, NumberExpression> map, BooleanExpression 
ignoreCase, NumberExpression ignoreLength, StringExpression ignoreChar, 
NumberExpression maxIgnoreChar, TextMarkerBlock env) {
+    return new MarkTableAction(structure, index, table, map, ignoreCase, 
ignoreLength, ignoreChar, maxIgnoreChar);
   }
 
   public static AbstractTextMarkerAction createMergeAction(BooleanExpression 
union, Token target,

Modified: 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/action/MarkTableAction.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/action/MarkTableAction.java?rev=1342714&r1=1342713&r2=1342714&view=diff
==============================================================================
--- 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/action/MarkTableAction.java
 (original)
+++ 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/action/MarkTableAction.java
 Fri May 25 16:26:54 2012
@@ -33,6 +33,7 @@ import org.apache.uima.jcas.tcas.Annotat
 import org.apache.uima.textmarker.TextMarkerBlock;
 import org.apache.uima.textmarker.TextMarkerStream;
 import org.apache.uima.textmarker.UIMAConstants;
+import org.apache.uima.textmarker.expression.bool.BooleanExpression;
 import org.apache.uima.textmarker.expression.number.NumberExpression;
 import org.apache.uima.textmarker.expression.resource.WordTableExpression;
 import org.apache.uima.textmarker.expression.string.StringExpression;
@@ -52,14 +53,26 @@ public class MarkTableAction extends Abs
   private final Map<StringExpression, NumberExpression> featureMap;
 
   private final NumberExpression indexExpr;
+  
+  private final BooleanExpression ignoreCase;
+
+  private final NumberExpression ignoreLength;
+
+  private final StringExpression ignoreChar;
+
+  private final NumberExpression maxIgnoreChar;
 
   public MarkTableAction(TypeExpression typeExpr, NumberExpression indexExpr,
-          WordTableExpression tableExpr, Map<StringExpression, 
NumberExpression> featureMap) {
+          WordTableExpression tableExpr, Map<StringExpression, 
NumberExpression> featureMap, BooleanExpression ignoreCase, NumberExpression 
ignoreLength, StringExpression ignoreChar, NumberExpression maxIgnoreChar) {
     super();
     this.typeExpr = typeExpr;
     this.indexExpr = indexExpr;
     this.tableExpr = tableExpr;
     this.featureMap = featureMap;
+    this.ignoreCase = ignoreCase;
+    this.ignoreLength = ignoreLength;
+    this.ignoreChar = ignoreChar;
+    this.maxIgnoreChar = maxIgnoreChar;
   }
 
   @Override
@@ -73,8 +86,14 @@ public class MarkTableAction extends Abs
     for (StringExpression each : featureMap.keySet()) {
       map.put(each.getStringValue(block), 
featureMap.get(each).getIntegerValue(block));
     }
+    
+    boolean ignoreCaseValue = ignoreCase != null ? 
ignoreCase.getBooleanValue(element.getParent()) : false;
+    int ignoreLengthValue = ignoreLength != null ? 
ignoreLength.getIntegerValue(element.getParent()) : 0;
+    String ignoreCharValue = ignoreChar != null ? 
ignoreChar.getStringValue(element.getParent()) : "";
+    int maxIgnoreCharValue = maxIgnoreChar != null ? 
maxIgnoreChar.getIntegerValue(element.getParent()) : 0;
+    
     TextMarkerWordList wordList = table.getWordList(index);
-    Collection<AnnotationFS> found = wordList.find(stream, true, 0, new char[] 
{}, 0);
+    Collection<AnnotationFS> found = wordList.find(stream, ignoreCaseValue, 
ignoreLengthValue, ignoreCharValue.toCharArray(), maxIgnoreCharValue);
     for (AnnotationFS annotationFS : found) {
       List<String> rowWhere = table.getRowWhere(index - 1, 
annotationFS.getCoveredText());
       FeatureStructure newFS = stream.getCas().createFS(type);

Modified: 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.g
URL: 
http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.g?rev=1342714&r1=1342713&r2=1342714&view=diff
==============================================================================
--- 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.g
 (original)
+++ 
uima/sandbox/trunk/TextMarker/uimaj-textmarker/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.g
 Fri May 25 16:26:54 2012
@@ -1162,11 +1162,15 @@ actionMarkTable returns [AbstractTextMar
     structure = typeExpression COMMA 
     index = numberExpression COMMA
     table = wordTableExpression 
-    (COMMA    
-    fname = stringExpression ASSIGN_EQUAL obj1 = numberExpression 
{map.put(fname,obj1);} 
-    (COMMA fname = stringExpression ASSIGN_EQUAL obj1 = numberExpression 
{map.put(fname,obj1);})*
-    )? RPAREN
-    {action = ActionFactory.createMarkTableAction(structure, index, table, 
map,$blockDeclaration::env);}
+    (COMMA key=stringExpression ASSIGN_EQUAL value = numberExpression)=>(COMMA 
key = stringExpression ASSIGN_EQUAL value = 
numberExpression{map.put(key,value);} )+
+    (COMMA ignoreCase = booleanExpression)=>(COMMA ignoreCase = 
booleanExpression 
+    COMMA ignoreLength = numberExpression 
+    COMMA ignoreChar = stringExpression
+    COMMA maxIgnoreChar = numberExpression)?
+    RPAREN
+
+
+    {action = ActionFactory.createMarkTableAction(structure, index, table, 
map, ignoreCase, ignoreLength, ignoreChar, 
maxIgnoreChar,$blockDeclaration::env);}
     ;
  
 actionGather returns [AbstractTextMarkerAction action = null]


Reply via email to