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 2013/09/27 13:56:07 UTC

svn commit: r1526861 - in /uima/sandbox/ruta/trunk: ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/editor/ ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/ ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/ r...

Author: pkluegl
Date: Fri Sep 27 11:56:07 2013
New Revision: 1526861

URL: http://svn.apache.org/r1526861
Log:
UIMA-3287
- fixed highlighting of implicit elements
- fixed some more bugs concerning type/feature declarations

Modified:
    uima/sandbox/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/editor/ReferenceFinder.java
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaReferenceVisitor.java
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAbstractDeclaration.java
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaDeclareDeclarationsStatement.java
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFeatureDeclaration.java
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/editor/ReferenceFinder.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/editor/ReferenceFinder.java?rev=1526861&r1=1526860&r2=1526861&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/editor/ReferenceFinder.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/ui/editor/ReferenceFinder.java Fri Sep 27 11:56:07 2013
@@ -22,8 +22,10 @@ package org.apache.uima.ruta.ide.ui.edit
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.uima.ruta.ide.parser.ast.ActionFactory;
 import org.apache.uima.ruta.ide.parser.ast.ComponentDeclaration;
 import org.apache.uima.ruta.ide.parser.ast.ComponentReference;
+import org.apache.uima.ruta.ide.parser.ast.ConditionFactory;
 import org.apache.uima.ruta.ide.parser.ast.RutaAction;
 import org.apache.uima.ruta.ide.parser.ast.RutaCondition;
 import org.apache.uima.ruta.ide.parser.ast.RutaVariableReference;
@@ -39,7 +41,29 @@ public class ReferenceFinder extends AST
 
   public ReferenceFinder(ASTNode node) {
     super();
-    this.node = node;
+    this.node = getRealNode(node);
+  }
+
+  private ASTNode getRealNode(ASTNode node) {
+    if (node instanceof RutaAction) {
+      RutaAction a = (RutaAction) node;
+      if (ActionFactory.IMPLICIT.equals(a.getName()) && !a.getChilds().isEmpty()) {
+        Expression expression = a.getChilds().get(0);
+        if (expression != null && !expression.getChilds().isEmpty()) {
+          return (ASTNode) expression.getChilds().get(0);
+        }
+      }
+    }
+    if (node instanceof RutaCondition) {
+      RutaCondition c = (RutaCondition) node;
+      if (ConditionFactory.IMPLICIT.equals(c.getName()) && !c.getChilds().isEmpty()) {
+        Expression expression = c.getChilds().get(0);
+        if (expression != null && !expression.getChilds().isEmpty()) {
+          return (ASTNode) expression.getChilds().get(0);
+        }
+      }
+    }
+    return node;
   }
 
   @Override

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g?rev=1526861&r1=1526860&r2=1526861&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g Fri Sep 27 11:56:07 2013
@@ -514,7 +514,7 @@ declaration returns [List<Statement> stm
 		}
 		addType($blockDeclaration::env, id.getText(), type.toString(), featureTypes, featureNames);
 		declarations.add( StatementFactory.createAnnotationType(id,declareToken, type, features));
-		stmt = StatementFactory.createDeclareDeclarationsStatement(declareToken, declarations, type);
+		stmt = StatementFactory.createDeclareDeclarationsStatement(declareToken, declarations, type, features);
 		stmts.add(stmt);
 		}
 	)

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaReferenceVisitor.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaReferenceVisitor.java?rev=1526861&r1=1526860&r2=1526861&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaReferenceVisitor.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/codeassist/RutaReferenceVisitor.java Fri Sep 27 11:56:07 2013
@@ -51,8 +51,10 @@ public class RutaReferenceVisitor extend
     if (result != null) {
       return false;
     }
-    if (s instanceof RutaVariableReference || s instanceof ComponentDeclaration
-            || s instanceof ComponentReference) {
+    int sourceStart = s.sourceStart();
+    int sourceEnd = s.sourceEnd();
+    if ((s instanceof RutaVariableReference || s instanceof ComponentDeclaration || s instanceof ComponentReference)
+            && sourceStart <= start && sourceEnd >= start) {
       result = s;
     } else if (s instanceof RutaAction && ((RutaAction) s).getNameStart() <= start
             && start <= ((RutaAction) s).getNameEnd()) {

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAbstractDeclaration.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAbstractDeclaration.java?rev=1526861&r1=1526860&r2=1526861&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAbstractDeclaration.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaAbstractDeclaration.java Fri Sep 27 11:56:07 2013
@@ -28,7 +28,7 @@ public abstract class RutaAbstractDeclar
 
   public RutaAbstractDeclaration(String name, int nameStart, int nameEnd, int declStart,
           int declEnd, SimpleReference ref) {
-    super(name, nameStart, nameEnd, nameStart, nameEnd); // declStart, declEnd);
+    super(name, nameStart, nameEnd, declStart, declEnd);
     this.setName(name);
     this.ref = ref;
   }

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaDeclareDeclarationsStatement.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaDeclareDeclarationsStatement.java?rev=1526861&r1=1526860&r2=1526861&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaDeclareDeclarationsStatement.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaDeclareDeclarationsStatement.java Fri Sep 27 11:56:07 2013
@@ -26,17 +26,14 @@ import org.eclipse.dltk.ast.ASTVisitor;
 
 public class RutaDeclareDeclarationsStatement extends RutaDeclarationsStatement {
   private ASTNode parent;
-
-  // public RutaDeclarationsStatement(int declStart, int declEnd,
-  // List<RutaAbstractDeclaration> declarations, Expression init) {
-  // this(declStart, declEnd, declarations, init, 0, 0);
-  // }
+  private List<RutaFeatureDeclaration> features;
 
   public RutaDeclareDeclarationsStatement(int stmtStart, int stmtEnd,
           List<RutaAbstractDeclaration> declarations, ASTNode parent, int typeTokenStart,
-          int typeTokenEnd) {
+          int typeTokenEnd, List<RutaFeatureDeclaration> features) {
     super(stmtStart, stmtEnd, declarations, null, typeTokenStart, typeTokenEnd);
     this.parent = parent;
+    this.features = features;
   }
 
   @Override
@@ -50,6 +47,12 @@ public class RutaDeclareDeclarationsStat
           decl.traverse(visitor);
         }
       }
+      if(features != null) {
+        for (RutaFeatureDeclaration feat : features) {
+          feat.traverse(visitor);
+        }
+      }
+      
       visitor.endvisit(this);
     }
   }
@@ -63,4 +66,12 @@ public class RutaDeclareDeclarationsStat
     return parent;
   }
 
+  public List<RutaFeatureDeclaration> getFeatures() {
+    return features;
+  }
+
+  public void setFeatures(List<RutaFeatureDeclaration> features) {
+    this.features = features;
+  }
+
 }

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFeatureDeclaration.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFeatureDeclaration.java?rev=1526861&r1=1526860&r2=1526861&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFeatureDeclaration.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/RutaFeatureDeclaration.java Fri Sep 27 11:56:07 2013
@@ -19,18 +19,36 @@
 
 package org.apache.uima.ruta.ide.parser.ast;
 
+import org.eclipse.dltk.ast.ASTNode;
+import org.eclipse.dltk.ast.ASTVisitor;
 import org.eclipse.dltk.ast.references.SimpleReference;
 
 public class RutaFeatureDeclaration extends RutaAbstractDeclaration {
 
   private String type;
 
+  private ASTNode declType;
+  
   public RutaFeatureDeclaration(String name, String type, int nameStart, int nameEnd,
-          int declStart, int declEnd, SimpleReference ref) {
+          int declStart, int declEnd, SimpleReference ref, Object declType) {
     super(name, nameStart, nameEnd, declStart, declEnd, ref);
     this.type = type;
+    if(declType instanceof ASTNode) {
+      this.declType = (ASTNode) declType;
+    }
   }
 
+  
+  @Override
+  public void traverse(ASTVisitor visitor) throws Exception {
+    if (visitor.visit(this)) {
+      declType.traverse(visitor);
+      getRef().traverse(visitor);
+      visitor.endvisit(this);
+    }
+  }
+
+  
   public void setType(String type) {
     this.type = type;
   }

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java?rev=1526861&r1=1526860&r2=1526861&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/StatementFactory.java Fri Sep 27 11:56:07 2013
@@ -20,6 +20,7 @@
 package org.apache.uima.ruta.ide.parser.ast;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.antlr.runtime.CommonToken;
@@ -238,12 +239,17 @@ public class StatementFactory extends Ab
     int nameBounds[] = getBounds(eachName);
     SimpleReference ref = new SimpleReference(nameBounds[0], nameBounds[1], eachName.getText());
     return new RutaFeatureDeclaration(eachName.getText(), type, nameBounds[0], nameBounds[1],
-            declBounds[0], declBounds[1], ref);
+            declBounds[0], declBounds[1], ref, eachTO);
   }
 
   @SuppressWarnings("unchecked")
   public static Statement createDeclareDeclarationsStatement(Token declareToken, List declarations,
           ASTNode parent) {
+    return createDeclareDeclarationsStatement(declareToken, declarations, parent, new ArrayList<RutaFeatureDeclaration>(0));
+  }
+  
+  public static Statement createDeclareDeclarationsStatement(Token declareToken, List declarations,
+          ASTNode parent, List<RutaFeatureDeclaration> features) {
     List<RutaAbstractDeclaration> decls = declarations;
     for (RutaAbstractDeclaration d : decls) {
       if (d == null) {
@@ -258,9 +264,14 @@ public class StatementFactory extends Ab
       int end = decls.get(decls.size() - 1).sourceEnd();
       statementBounds[1] = Math.max(statementBounds[1], end);
     }
+    if(features != null && !features.isEmpty()) {
+      int end = features.get(features.size() - 1).sourceEnd();
+      statementBounds[1] = Math.max(statementBounds[1], end);
+    }
     return new RutaDeclareDeclarationsStatement(statementBounds[0], statementBounds[1],
-            declarations, parent, declBounds[0], declBounds[1]);
+            decls, parent, declBounds[0], declBounds[1], features);
   }
+  
 
   @SuppressWarnings("unchecked")
   public static Statement createDeclarationsStatement(Token declareToken, List declarations,