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]); } + + }