Author: pkluegl
Date: Thu Sep  1 07:28:52 2016
New Revision: 1758716

URL: http://svn.apache.org/viewvc?rev=1758716&view=rev
Log:
UIMA-5090
- fixed ide parser

Modified:
    
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java
    
uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
    
uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java

Modified: 
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java?rev=1758716&r1=1758715&r2=1758716&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java
 Thu Sep  1 07:28:52 2016
@@ -614,6 +614,12 @@ public class LanguageCheckerVisitor exte
         return false;
       }
       RutaVariableReference ref = (RutaVariableReference) s;
+      if(ref.getType() == RutaTypeConstants.RUTA_TYPE_WT || ref.getType() == 
RutaTypeConstants.RUTA_TYPE_WL) {
+        if(StringUtils.isBlank(ref.getName())) {
+          // declaration with a string expression: do not check
+          return false;
+        }
+      }
       if ((ref.getType() & RutaTypeConstants.RUTA_TYPE_AT) != 0) {
         // types
         String name = ref.getName();

Modified: 
uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g?rev=1758716&r1=1758715&r2=1758716&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
 (original)
+++ 
uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
 Thu Sep  1 07:28:52 2016
@@ -486,14 +486,14 @@ variableDeclaration returns [List<Statem
                 stmts.add(StatementFactory.createDeclarationsStatement(type, 
decls, init));
                 }
         |
-        type = WORDLIST id = Identifier (ASSIGN_EQUAL (wl = wordListExpression 
| wl = stringExpression))? SEMI
+        type = WORDLIST id = Identifier (ASSIGN_EQUAL wl = 
wordListOrStringExpression )? SEMI
         {
         addVariable(id.getText(), type.getText());
         decls.add(StatementFactory.createListVariable(id,type,wl));
         stmts.add(StatementFactory.createDeclarationsStatement(type, decls, 
wl));
         }
         |
-        type = WORDTABLE id = Identifier (ASSIGN_EQUAL (wt = 
wordTableExpression | wt = stringExpression))?  SEMI
+        type = WORDTABLE id = Identifier (ASSIGN_EQUAL wt = 
wordTableOrStringExpression)?  SEMI
         {
         addVariable(id.getText(), type.getText());
         decls.add(StatementFactory.createTableVariable(id,type,wt));
@@ -2447,6 +2447,15 @@ wordListExpression returns [Expression e
        ;
 
 
+wordListOrStringExpression returns [Expression expr = null]
+       :
+       (stringExpression)=>id = stringExpression
+       {expr = ExpressionFactory.createListVariableReference(id);}
+       |
+       e = wordListExpression
+       {expr = e;}
+       ;
+
 wordTableExpression returns [Expression expr = null]
        :
        id = Identifier
@@ -2456,6 +2465,15 @@ wordTableExpression returns [Expression
        {expr = ExpressionFactory.createRessourceReference(path);}
        ;
 
+wordTableOrStringExpression returns [Expression expr = null]
+       :
+       (stringExpression)=>id = stringExpression
+       {expr = ExpressionFactory.createTableVariableReference(id);}
+       |
+       e = wordTableExpression
+       {expr = e;}
+       ;
+
 //seems OK
 numberExpression returns [Expression expr = null]
 @init {

Modified: 
uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java?rev=1758716&r1=1758715&r2=1758716&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ExpressionFactory.java
 Thu Sep  1 07:28:52 2016
@@ -281,6 +281,17 @@ public class ExpressionFactory extends A
   public static Expression createTableVariableReference(Token id) {
     return newVariableReference(id, RutaTypeConstants.RUTA_TYPE_WT);
   }
+  
+  public static Expression createListVariableReference(Expression ref) {
+    int bounds[] = getSurroundingBounds(ref);
+    return new RutaVariableReference(bounds[0], bounds[1], "", 
RutaTypeConstants.RUTA_TYPE_WL);
+  }
+  
+  public static Expression createTableVariableReference(Expression ref) {
+    int bounds[] = getSurroundingBounds(ref);
+    return new RutaVariableReference(bounds[0], bounds[1], "", 
RutaTypeConstants.RUTA_TYPE_WT);
+  }
+  
 
   public static Expression createRessourceReference(Token path) {
     int bounds[] = getBounds(path);
@@ -428,5 +439,7 @@ public class ExpressionFactory extends A
     return new NullExpression(bounds[0], bounds[1]);
   }
 
+  
+
  
 }


Reply via email to