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 2012/01/10 14:18:50 UTC

svn commit: r1229526 [2/2] - in /uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker: TextMarkerEnvironment.java action/SetFeatureAction.java parser/TextMarkerParser.g parser/TextMarkerParser.java

Modified: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.java?rev=1229526&r1=1229525&r2=1229526&view=diff
==============================================================================
--- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.java (original)
+++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.java Tue Jan 10 13:18:50 2012
@@ -1,4 +1,4 @@
-// $ANTLR 3.4 D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g 2012-01-09 13:41:25
+// $ANTLR 3.4 D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g 2012-01-10 14:15:15
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -301,9 +301,17 @@ public class TextMarkerParser extends Pa
     		return parent.getEnvironment().isVariable(name);
     	}
     	
-    	public void setValue(TextMarkerBlock parent, String name, Object value) {
-    		if(value != null) {
+    	public void setValue(TextMarkerBlock parent, List<String> names, Object obj) {
+    		for(String name : names) {
+    			setValue(parent,name,obj);
+    		}
+    	}
+    	
+    	public void setValue(TextMarkerBlock parent, String name, Object obj) {
+    		if(obj != null) {
+    			Object value = parent.getEnvironment().getLiteralValue(name, obj);
     			parent.getEnvironment().setVariableValue(name, value);
+    			parent.getEnvironment().setInitialVariableValue(name, value);
     		}
     	}
     	
@@ -366,7 +374,7 @@ public class TextMarkerParser extends Pa
 
 
     // $ANTLR start "file_input"
-    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:198:1: file_input[String moduleName] returns [TextMarkerModule module] : p= packageDeclaration gs= globalStatements s= statements EOF ;
+    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:206:1: file_input[String moduleName] returns [TextMarkerModule module] : p= packageDeclaration gs= globalStatements s= statements EOF ;
     public final TextMarkerModule file_input(String moduleName) throws RecognitionException {
         TextMarkerModule module = null;
 
@@ -383,8 +391,8 @@ public class TextMarkerParser extends Pa
         List<TextMarkerStatement> stmts = new ArrayList<TextMarkerStatement>();
 
         try {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:203:2: (p= packageDeclaration gs= globalStatements s= statements EOF )
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:204:2: p= packageDeclaration gs= globalStatements s= statements EOF
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:211:2: (p= packageDeclaration gs= globalStatements s= statements EOF )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:212:2: p= packageDeclaration gs= globalStatements s= statements EOF
             {
             pushFollow(FOLLOW_packageDeclaration_in_file_input76);
             p=packageDeclaration();
@@ -441,7 +449,7 @@ public class TextMarkerParser extends Pa
 
 
     // $ANTLR start "packageDeclaration"
-    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:220:1: packageDeclaration returns [String pack = \"\"] : PackageString p= dottedIdentifier SEMI ;
+    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:228:1: packageDeclaration returns [String pack = \"\"] : PackageString p= dottedIdentifier SEMI ;
     public final String packageDeclaration() throws RecognitionException {
         String pack =  "";
 
@@ -450,8 +458,8 @@ public class TextMarkerParser extends Pa
 
 
         try {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:221:2: ( PackageString p= dottedIdentifier SEMI )
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:221:4: PackageString p= dottedIdentifier SEMI
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:229:2: ( PackageString p= dottedIdentifier SEMI )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:229:4: PackageString p= dottedIdentifier SEMI
             {
             match(input,PackageString,FOLLOW_PackageString_in_packageDeclaration124); if (state.failed) return pack;
 
@@ -486,7 +494,7 @@ public class TextMarkerParser extends Pa
 
 
     // $ANTLR start "statements"
-    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:224:1: statements returns [List<TextMarkerStatement> stmts = new ArrayList<TextMarkerStatement>()] : (stmt= statement )* ;
+    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:232:1: statements returns [List<TextMarkerStatement> stmts = new ArrayList<TextMarkerStatement>()] : (stmt= statement )* ;
     public final List<TextMarkerStatement> statements() throws RecognitionException {
         List<TextMarkerStatement> stmts =  new ArrayList<TextMarkerStatement>();
 
@@ -495,10 +503,10 @@ public class TextMarkerParser extends Pa
 
 
         try {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:225:2: ( (stmt= statement )* )
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:226:2: (stmt= statement )*
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:233:2: ( (stmt= statement )* )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:234:2: (stmt= statement )*
             {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:226:2: (stmt= statement )*
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:234:2: (stmt= statement )*
             loop1:
             do {
                 int alt1=2;
@@ -511,7 +519,7 @@ public class TextMarkerParser extends Pa
 
                 switch (alt1) {
             	case 1 :
-            	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:226:3: stmt= statement
+            	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:234:3: stmt= statement
             	    {
             	    pushFollow(FOLLOW_statement_in_statements155);
             	    stmt=statement();
@@ -551,7 +559,7 @@ public class TextMarkerParser extends Pa
 
 
     // $ANTLR start "globalStatements"
-    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:229:1: globalStatements returns [List<TextMarkerStatement> stmts = new ArrayList<TextMarkerStatement>()] : (morestmts= globalStatement )* ;
+    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:237:1: globalStatements returns [List<TextMarkerStatement> stmts = new ArrayList<TextMarkerStatement>()] : (morestmts= globalStatement )* ;
     public final List<TextMarkerStatement> globalStatements() throws RecognitionException {
         List<TextMarkerStatement> stmts =  new ArrayList<TextMarkerStatement>();
 
@@ -560,10 +568,10 @@ public class TextMarkerParser extends Pa
 
 
         try {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:230:2: ( (morestmts= globalStatement )* )
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:231:2: (morestmts= globalStatement )*
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:238:2: ( (morestmts= globalStatement )* )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:239:2: (morestmts= globalStatement )*
             {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:231:2: (morestmts= globalStatement )*
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:239:2: (morestmts= globalStatement )*
             loop2:
             do {
                 int alt2=2;
@@ -576,7 +584,7 @@ public class TextMarkerParser extends Pa
 
                 switch (alt2) {
             	case 1 :
-            	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:231:3: morestmts= globalStatement
+            	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:239:3: morestmts= globalStatement
             	    {
             	    pushFollow(FOLLOW_globalStatement_in_globalStatements180);
             	    morestmts=globalStatement();
@@ -616,7 +624,7 @@ public class TextMarkerParser extends Pa
 
 
     // $ANTLR start "globalStatement"
-    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:234:1: globalStatement returns [List<TextMarkerStatement> stmts = new ArrayList<TextMarkerStatement>()] : stmtImport= importStatement ;
+    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:242:1: globalStatement returns [List<TextMarkerStatement> stmts = new ArrayList<TextMarkerStatement>()] : stmtImport= importStatement ;
     public final List<TextMarkerStatement> globalStatement() throws RecognitionException {
         List<TextMarkerStatement> stmts =  new ArrayList<TextMarkerStatement>();
 
@@ -625,8 +633,8 @@ public class TextMarkerParser extends Pa
 
 
         try {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:235:2: (stmtImport= importStatement )
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:236:2: stmtImport= importStatement
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:243:2: (stmtImport= importStatement )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:244:2: stmtImport= importStatement
             {
             pushFollow(FOLLOW_importStatement_in_globalStatement204);
             stmtImport=importStatement();
@@ -657,7 +665,7 @@ public class TextMarkerParser extends Pa
 
 
     // $ANTLR start "statement"
-    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:239:1: statement returns [TextMarkerStatement stmt = null] : (stmtDecl= declaration |stmtVariable= variableDeclaration |stmtRule= simpleStatement |stmtBlock= blockDeclaration |stmtAutomata= automataDeclaration ) ;
+    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:247:1: statement returns [TextMarkerStatement stmt = null] : (stmtDecl= declaration |stmtVariable= variableDeclaration |stmtRule= simpleStatement |stmtBlock= blockDeclaration |stmtAutomata= automataDeclaration ) ;
     public final TextMarkerStatement statement() throws RecognitionException {
         TextMarkerStatement stmt =  null;
 
@@ -674,10 +682,10 @@ public class TextMarkerParser extends Pa
 
 
         try {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:240:2: ( (stmtDecl= declaration |stmtVariable= variableDeclaration |stmtRule= simpleStatement |stmtBlock= blockDeclaration |stmtAutomata= automataDeclaration ) )
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:241:2: (stmtDecl= declaration |stmtVariable= variableDeclaration |stmtRule= simpleStatement |stmtBlock= blockDeclaration |stmtAutomata= automataDeclaration )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:248:2: ( (stmtDecl= declaration |stmtVariable= variableDeclaration |stmtRule= simpleStatement |stmtBlock= blockDeclaration |stmtAutomata= automataDeclaration ) )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:249:2: (stmtDecl= declaration |stmtVariable= variableDeclaration |stmtRule= simpleStatement |stmtBlock= blockDeclaration |stmtAutomata= automataDeclaration )
             {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:241:2: (stmtDecl= declaration |stmtVariable= variableDeclaration |stmtRule= simpleStatement |stmtBlock= blockDeclaration |stmtAutomata= automataDeclaration )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:249:2: (stmtDecl= declaration |stmtVariable= variableDeclaration |stmtRule= simpleStatement |stmtBlock= blockDeclaration |stmtAutomata= automataDeclaration )
             int alt3=5;
             switch ( input.LA(1) ) {
             case DECLARE:
@@ -734,7 +742,7 @@ public class TextMarkerParser extends Pa
 
             switch (alt3) {
                 case 1 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:241:4: stmtDecl= declaration
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:249:4: stmtDecl= declaration
                     {
                     pushFollow(FOLLOW_declaration_in_statement230);
                     stmtDecl=declaration();
@@ -747,7 +755,7 @@ public class TextMarkerParser extends Pa
                     }
                     break;
                 case 2 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:242:4: stmtVariable= variableDeclaration
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:250:4: stmtVariable= variableDeclaration
                     {
                     pushFollow(FOLLOW_variableDeclaration_in_statement241);
                     stmtVariable=variableDeclaration();
@@ -760,7 +768,7 @@ public class TextMarkerParser extends Pa
                     }
                     break;
                 case 3 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:243:4: stmtRule= simpleStatement
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:251:4: stmtRule= simpleStatement
                     {
                     pushFollow(FOLLOW_simpleStatement_in_statement252);
                     stmtRule=simpleStatement();
@@ -773,7 +781,7 @@ public class TextMarkerParser extends Pa
                     }
                     break;
                 case 4 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:244:4: stmtBlock= blockDeclaration
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:252:4: stmtBlock= blockDeclaration
                     {
                     pushFollow(FOLLOW_blockDeclaration_in_statement263);
                     stmtBlock=blockDeclaration();
@@ -786,7 +794,7 @@ public class TextMarkerParser extends Pa
                     }
                     break;
                 case 5 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:245:4: stmtAutomata= automataDeclaration
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:253:4: stmtAutomata= automataDeclaration
                     {
                     pushFollow(FOLLOW_automataDeclaration_in_statement274);
                     stmtAutomata=automataDeclaration();
@@ -823,7 +831,7 @@ public class TextMarkerParser extends Pa
 
 
     // $ANTLR start "variableDeclaration"
-    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:249:1: variableDeclaration returns [TextMarkerStatement stmt = null] : (type= IntString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value1= numberExpression )? SEMI |type= DoubleString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI |type= FloatString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI |type= StringString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value3= stringExpression )? SEMI |type= BooleanString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value4= booleanExpression )? SEMI |type= TypeString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value5= annotationType )? SEMI |type= WORDLIST {...}?name= Identifier ( ASSIGN_EQUAL list= w
 ordListExpression )? SEMI |type= WORDTABLE {...}?name= Identifier ( ASSIGN_EQUAL table= wordTableExpression )? SEMI |type= BOOLEANLIST {...}?name= Identifier ( ASSIGN_EQUAL bl= booleanListExpression )? SEMI |type= STRINGLIST {...}?name= Identifier ( ASSIGN_EQUAL sl= stringListExpression )? SEMI |type= INTLIST {...}?name= Identifier ( ASSIGN_EQUAL il= numberListExpression )? SEMI |type= DOUBLELIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI |type= FLOATLIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI |type= TYPELIST {...}?name= Identifier ( ASSIGN_EQUAL tl= typeListExpression )? SEMI |stmt1= conditionDeclaration |stmt2= actionDeclaration );
+    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:257:1: variableDeclaration returns [TextMarkerStatement stmt = null] : (type= IntString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value1= numberExpression )? SEMI |type= DoubleString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI |type= FloatString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI |type= StringString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value3= stringExpression )? SEMI |type= BooleanString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value4= booleanExpression )? SEMI |type= TypeString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value5= annotationType )? SEMI |type= WORDLIST {...}?name= Identifier ( ASSIGN_EQUAL list= w
 ordListExpression )? SEMI |type= WORDTABLE {...}?name= Identifier ( ASSIGN_EQUAL table= wordTableExpression )? SEMI |type= BOOLEANLIST {...}?name= Identifier ( ASSIGN_EQUAL bl= booleanListExpression )? SEMI |type= STRINGLIST {...}?name= Identifier ( ASSIGN_EQUAL sl= stringListExpression )? SEMI |type= INTLIST {...}?name= Identifier ( ASSIGN_EQUAL il= numberListExpression )? SEMI |type= DOUBLELIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI |type= FLOATLIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI |type= TYPELIST {...}?name= Identifier ( ASSIGN_EQUAL tl= typeListExpression )? SEMI |stmt1= conditionDeclaration |stmt2= actionDeclaration );
     public final TextMarkerStatement variableDeclaration() throws RecognitionException {
         TextMarkerStatement stmt =  null;
 
@@ -860,8 +868,11 @@ public class TextMarkerParser extends Pa
         TextMarkerStatement stmt2 =null;
 
 
+
+        List<String> vars = new ArrayList<String>();
+
         try {
-            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:250:2: (type= IntString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value1= numberExpression )? SEMI |type= DoubleString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI |type= FloatString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI |type= StringString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value3= stringExpression )? SEMI |type= BooleanString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value4= booleanExpression )? SEMI |type= TypeString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value5= annotationType )? SEMI |type= WORDLIST {...}?name= Identifier ( ASSIGN_EQUAL list= wordListExpression )? SEMI |type= WORDTABLE {...}?name= I
 dentifier ( ASSIGN_EQUAL table= wordTableExpression )? SEMI |type= BOOLEANLIST {...}?name= Identifier ( ASSIGN_EQUAL bl= booleanListExpression )? SEMI |type= STRINGLIST {...}?name= Identifier ( ASSIGN_EQUAL sl= stringListExpression )? SEMI |type= INTLIST {...}?name= Identifier ( ASSIGN_EQUAL il= numberListExpression )? SEMI |type= DOUBLELIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI |type= FLOATLIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI |type= TYPELIST {...}?name= Identifier ( ASSIGN_EQUAL tl= typeListExpression )? SEMI |stmt1= conditionDeclaration |stmt2= actionDeclaration )
+            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:261:2: (type= IntString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value1= numberExpression )? SEMI |type= DoubleString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI |type= FloatString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI |type= StringString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value3= stringExpression )? SEMI |type= BooleanString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value4= booleanExpression )? SEMI |type= TypeString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value5= annotationType )? SEMI |type= WORDLIST {...}?name= Identifier ( ASSIGN_EQUAL list= wordListExpression )? SEMI |type= WORDTABLE {...}?name= I
 dentifier ( ASSIGN_EQUAL table= wordTableExpression )? SEMI |type= BOOLEANLIST {...}?name= Identifier ( ASSIGN_EQUAL bl= booleanListExpression )? SEMI |type= STRINGLIST {...}?name= Identifier ( ASSIGN_EQUAL sl= stringListExpression )? SEMI |type= INTLIST {...}?name= Identifier ( ASSIGN_EQUAL il= numberListExpression )? SEMI |type= DOUBLELIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI |type= FLOATLIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI |type= TYPELIST {...}?name= Identifier ( ASSIGN_EQUAL tl= typeListExpression )? SEMI |stmt1= conditionDeclaration |stmt2= actionDeclaration )
             int alt24=16;
             switch ( input.LA(1) ) {
             case IntString:
@@ -955,20 +966,20 @@ public class TextMarkerParser extends Pa
 
             switch (alt24) {
                 case 1 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:251:2: type= IntString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value1= numberExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:262:2: type= IntString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value1= numberExpression )? SEMI
                     {
-                    type=(Token)match(input,IntString,FOLLOW_IntString_in_variableDeclaration299); if (state.failed) return stmt;
+                    type=(Token)match(input,IntString,FOLLOW_IntString_in_variableDeclaration304); if (state.failed) return stmt;
 
                     if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     }
 
-                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration308); if (state.failed) return stmt;
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration313); if (state.failed) return stmt;
 
-                    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:253:3: ( COMMA {...}?id= Identifier )*
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:264:3: ( COMMA {...}?id= Identifier )*
                     loop4:
                     do {
                         int alt4=2;
@@ -981,18 +992,18 @@ public class TextMarkerParser extends Pa
 
                         switch (alt4) {
                     	case 1 :
-                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:253:4: COMMA {...}?id= Identifier
+                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:264:4: COMMA {...}?id= Identifier
                     	    {
-                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration315); if (state.failed) return stmt;
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration320); if (state.failed) return stmt;
 
                     	    if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                     	        if (state.backtracking>0) {state.failed=true; return stmt;}
                     	        throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     	    }
 
-                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration323); if (state.failed) return stmt;
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration328); if (state.failed) return stmt;
 
-                    	    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    	    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
                     	    }
                     	    break;
@@ -1003,7 +1014,7 @@ public class TextMarkerParser extends Pa
                     } while (true);
 
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:254:6: ( ASSIGN_EQUAL value1= numberExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:265:6: ( ASSIGN_EQUAL value1= numberExpression )?
                     int alt5=2;
                     int LA5_0 = input.LA(1);
 
@@ -1012,11 +1023,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt5) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:254:7: ASSIGN_EQUAL value1= numberExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:265:7: ASSIGN_EQUAL value1= numberExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration333); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration338); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration339);
+                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration344);
                             value1=numberExpression();
 
                             state._fsp--;
@@ -1028,27 +1039,27 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), value1);}
+                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, vars, value1);}
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration346); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration351); if (state.failed) return stmt;
 
                     }
                     break;
                 case 2 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:256:2: type= DoubleString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:267:2: type= DoubleString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI
                     {
-                    type=(Token)match(input,DoubleString,FOLLOW_DoubleString_in_variableDeclaration356); if (state.failed) return stmt;
+                    type=(Token)match(input,DoubleString,FOLLOW_DoubleString_in_variableDeclaration361); if (state.failed) return stmt;
 
                     if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     }
 
-                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration365); if (state.failed) return stmt;
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration370); if (state.failed) return stmt;
 
-                    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:258:3: ( COMMA {...}?id= Identifier )*
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:269:3: ( COMMA {...}?id= Identifier )*
                     loop6:
                     do {
                         int alt6=2;
@@ -1061,18 +1072,18 @@ public class TextMarkerParser extends Pa
 
                         switch (alt6) {
                     	case 1 :
-                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:258:4: COMMA {...}?id= Identifier
+                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:269:4: COMMA {...}?id= Identifier
                     	    {
-                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration372); if (state.failed) return stmt;
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration377); if (state.failed) return stmt;
 
                     	    if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                     	        if (state.backtracking>0) {state.failed=true; return stmt;}
                     	        throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     	    }
 
-                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration380); if (state.failed) return stmt;
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration385); if (state.failed) return stmt;
 
-                    	    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    	    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
                     	    }
                     	    break;
@@ -1083,7 +1094,7 @@ public class TextMarkerParser extends Pa
                     } while (true);
 
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:259:7: ( ASSIGN_EQUAL value2= numberExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:270:7: ( ASSIGN_EQUAL value2= numberExpression )?
                     int alt7=2;
                     int LA7_0 = input.LA(1);
 
@@ -1092,11 +1103,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt7) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:259:8: ASSIGN_EQUAL value2= numberExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:270:8: ASSIGN_EQUAL value2= numberExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration391); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration396); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration397);
+                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration402);
                             value2=numberExpression();
 
                             state._fsp--;
@@ -1108,27 +1119,27 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), value2);}
+                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, vars, value2);}
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration403); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration408); if (state.failed) return stmt;
 
                     }
                     break;
                 case 3 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:261:2: type= FloatString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:272:2: type= FloatString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value2= numberExpression )? SEMI
                     {
-                    type=(Token)match(input,FloatString,FOLLOW_FloatString_in_variableDeclaration413); if (state.failed) return stmt;
+                    type=(Token)match(input,FloatString,FOLLOW_FloatString_in_variableDeclaration418); if (state.failed) return stmt;
 
                     if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     }
 
-                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration422); if (state.failed) return stmt;
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration427); if (state.failed) return stmt;
 
-                    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:263:3: ( COMMA {...}?id= Identifier )*
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:274:3: ( COMMA {...}?id= Identifier )*
                     loop8:
                     do {
                         int alt8=2;
@@ -1141,18 +1152,18 @@ public class TextMarkerParser extends Pa
 
                         switch (alt8) {
                     	case 1 :
-                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:263:4: COMMA {...}?id= Identifier
+                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:274:4: COMMA {...}?id= Identifier
                     	    {
-                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration429); if (state.failed) return stmt;
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration434); if (state.failed) return stmt;
 
                     	    if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                     	        if (state.backtracking>0) {state.failed=true; return stmt;}
                     	        throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     	    }
 
-                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration437); if (state.failed) return stmt;
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration442); if (state.failed) return stmt;
 
-                    	    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    	    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
                     	    }
                     	    break;
@@ -1163,7 +1174,7 @@ public class TextMarkerParser extends Pa
                     } while (true);
 
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:264:7: ( ASSIGN_EQUAL value2= numberExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:275:7: ( ASSIGN_EQUAL value2= numberExpression )?
                     int alt9=2;
                     int LA9_0 = input.LA(1);
 
@@ -1172,11 +1183,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt9) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:264:8: ASSIGN_EQUAL value2= numberExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:275:8: ASSIGN_EQUAL value2= numberExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration448); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration453); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration454);
+                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration459);
                             value2=numberExpression();
 
                             state._fsp--;
@@ -1188,27 +1199,27 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), value2);}
+                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, vars, value2);}
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration460); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration465); if (state.failed) return stmt;
 
                     }
                     break;
                 case 4 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:266:2: type= StringString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value3= stringExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:277:2: type= StringString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value3= stringExpression )? SEMI
                     {
-                    type=(Token)match(input,StringString,FOLLOW_StringString_in_variableDeclaration470); if (state.failed) return stmt;
+                    type=(Token)match(input,StringString,FOLLOW_StringString_in_variableDeclaration475); if (state.failed) return stmt;
 
                     if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     }
 
-                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration479); if (state.failed) return stmt;
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration484); if (state.failed) return stmt;
 
-                    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:268:3: ( COMMA {...}?id= Identifier )*
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:279:3: ( COMMA {...}?id= Identifier )*
                     loop10:
                     do {
                         int alt10=2;
@@ -1221,18 +1232,18 @@ public class TextMarkerParser extends Pa
 
                         switch (alt10) {
                     	case 1 :
-                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:268:4: COMMA {...}?id= Identifier
+                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:279:4: COMMA {...}?id= Identifier
                     	    {
-                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration486); if (state.failed) return stmt;
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration491); if (state.failed) return stmt;
 
                     	    if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                     	        if (state.backtracking>0) {state.failed=true; return stmt;}
                     	        throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     	    }
 
-                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration494); if (state.failed) return stmt;
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration499); if (state.failed) return stmt;
 
-                    	    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    	    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
                     	    }
                     	    break;
@@ -1243,7 +1254,7 @@ public class TextMarkerParser extends Pa
                     } while (true);
 
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:269:7: ( ASSIGN_EQUAL value3= stringExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:280:7: ( ASSIGN_EQUAL value3= stringExpression )?
                     int alt11=2;
                     int LA11_0 = input.LA(1);
 
@@ -1252,11 +1263,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt11) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:269:8: ASSIGN_EQUAL value3= stringExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:280:8: ASSIGN_EQUAL value3= stringExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration505); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration510); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_stringExpression_in_variableDeclaration511);
+                            pushFollow(FOLLOW_stringExpression_in_variableDeclaration516);
                             value3=stringExpression();
 
                             state._fsp--;
@@ -1268,27 +1279,27 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), value3);}
+                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, vars, value3);}
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration517); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration522); if (state.failed) return stmt;
 
                     }
                     break;
                 case 5 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:271:2: type= BooleanString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value4= booleanExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:282:2: type= BooleanString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value4= booleanExpression )? SEMI
                     {
-                    type=(Token)match(input,BooleanString,FOLLOW_BooleanString_in_variableDeclaration527); if (state.failed) return stmt;
+                    type=(Token)match(input,BooleanString,FOLLOW_BooleanString_in_variableDeclaration532); if (state.failed) return stmt;
 
                     if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     }
 
-                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration536); if (state.failed) return stmt;
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration541); if (state.failed) return stmt;
 
-                    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:273:3: ( COMMA {...}?id= Identifier )*
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:284:3: ( COMMA {...}?id= Identifier )*
                     loop12:
                     do {
                         int alt12=2;
@@ -1301,18 +1312,18 @@ public class TextMarkerParser extends Pa
 
                         switch (alt12) {
                     	case 1 :
-                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:273:4: COMMA {...}?id= Identifier
+                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:284:4: COMMA {...}?id= Identifier
                     	    {
-                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration543); if (state.failed) return stmt;
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration548); if (state.failed) return stmt;
 
                     	    if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                     	        if (state.backtracking>0) {state.failed=true; return stmt;}
                     	        throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     	    }
 
-                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration551); if (state.failed) return stmt;
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration556); if (state.failed) return stmt;
 
-                    	    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    	    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
                     	    }
                     	    break;
@@ -1323,7 +1334,7 @@ public class TextMarkerParser extends Pa
                     } while (true);
 
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:274:7: ( ASSIGN_EQUAL value4= booleanExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:285:7: ( ASSIGN_EQUAL value4= booleanExpression )?
                     int alt13=2;
                     int LA13_0 = input.LA(1);
 
@@ -1332,11 +1343,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt13) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:274:8: ASSIGN_EQUAL value4= booleanExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:285:8: ASSIGN_EQUAL value4= booleanExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration562); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration567); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_booleanExpression_in_variableDeclaration568);
+                            pushFollow(FOLLOW_booleanExpression_in_variableDeclaration573);
                             value4=booleanExpression();
 
                             state._fsp--;
@@ -1348,27 +1359,27 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), value4);}
+                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, vars, value4);}
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration574); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration579); if (state.failed) return stmt;
 
                     }
                     break;
                 case 6 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:276:2: type= TypeString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value5= annotationType )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:287:2: type= TypeString {...}?id= Identifier ( COMMA {...}?id= Identifier )* ( ASSIGN_EQUAL value5= annotationType )? SEMI
                     {
-                    type=(Token)match(input,TypeString,FOLLOW_TypeString_in_variableDeclaration584); if (state.failed) return stmt;
+                    type=(Token)match(input,TypeString,FOLLOW_TypeString_in_variableDeclaration589); if (state.failed) return stmt;
 
                     if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     }
 
-                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration593); if (state.failed) return stmt;
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration598); if (state.failed) return stmt;
 
-                    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:278:3: ( COMMA {...}?id= Identifier )*
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:289:3: ( COMMA {...}?id= Identifier )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1381,18 +1392,18 @@ public class TextMarkerParser extends Pa
 
                         switch (alt14) {
                     	case 1 :
-                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:278:4: COMMA {...}?id= Identifier
+                    	    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:289:4: COMMA {...}?id= Identifier
                     	    {
-                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration600); if (state.failed) return stmt;
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration605); if (state.failed) return stmt;
 
                     	    if ( !((!ownsVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText()))) ) {
                     	        if (state.backtracking>0) {state.failed=true; return stmt;}
                     	        throw new FailedPredicateException(input, "variableDeclaration", "!ownsVariable($blockDeclaration::env, input.LT(1).getText())");
                     	    }
 
-                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration608); if (state.failed) return stmt;
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration613); if (state.failed) return stmt;
 
-                    	    if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
+                    	    if ( state.backtracking==0 ) {vars.add(id.getText());addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), type.getText());}
 
                     	    }
                     	    break;
@@ -1403,7 +1414,7 @@ public class TextMarkerParser extends Pa
                     } while (true);
 
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:279:7: ( ASSIGN_EQUAL value5= annotationType )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:290:7: ( ASSIGN_EQUAL value5= annotationType )?
                     int alt15=2;
                     int LA15_0 = input.LA(1);
 
@@ -1412,11 +1423,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt15) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:279:8: ASSIGN_EQUAL value5= annotationType
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:290:8: ASSIGN_EQUAL value5= annotationType
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration619); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration624); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_annotationType_in_variableDeclaration625);
+                            pushFollow(FOLLOW_annotationType_in_variableDeclaration630);
                             value5=annotationType();
 
                             state._fsp--;
@@ -1428,25 +1439,25 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, id.getText(), value5);}
+                    if ( state.backtracking==0 ) {setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, vars, value5);}
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration631); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration636); if (state.failed) return stmt;
 
                     }
                     break;
                 case 7 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:281:2: type= WORDLIST {...}?name= Identifier ( ASSIGN_EQUAL list= wordListExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:292:2: type= WORDLIST {...}?name= Identifier ( ASSIGN_EQUAL list= wordListExpression )? SEMI
                     {
-                    type=(Token)match(input,WORDLIST,FOLLOW_WORDLIST_in_variableDeclaration642); if (state.failed) return stmt;
+                    type=(Token)match(input,WORDLIST,FOLLOW_WORDLIST_in_variableDeclaration647); if (state.failed) return stmt;
 
                     if ( !((!isVariableOfType(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText(), type.getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())");
                     }
 
-                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration654); if (state.failed) return stmt;
+                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration659); if (state.failed) return stmt;
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:283:20: ( ASSIGN_EQUAL list= wordListExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:294:20: ( ASSIGN_EQUAL list= wordListExpression )?
                     int alt16=2;
                     int LA16_0 = input.LA(1);
 
@@ -1455,11 +1466,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt16) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:283:21: ASSIGN_EQUAL list= wordListExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:294:21: ASSIGN_EQUAL list= wordListExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration657); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration662); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_wordListExpression_in_variableDeclaration663);
+                            pushFollow(FOLLOW_wordListExpression_in_variableDeclaration668);
                             list=wordListExpression();
 
                             state._fsp--;
@@ -1471,25 +1482,25 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration667); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration672); if (state.failed) return stmt;
 
                     if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), type.getText());if(list != null){setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), list);}}
 
                     }
                     break;
                 case 8 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:285:2: type= WORDTABLE {...}?name= Identifier ( ASSIGN_EQUAL table= wordTableExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:296:2: type= WORDTABLE {...}?name= Identifier ( ASSIGN_EQUAL table= wordTableExpression )? SEMI
                     {
-                    type=(Token)match(input,WORDTABLE,FOLLOW_WORDTABLE_in_variableDeclaration681); if (state.failed) return stmt;
+                    type=(Token)match(input,WORDTABLE,FOLLOW_WORDTABLE_in_variableDeclaration686); if (state.failed) return stmt;
 
                     if ( !((!isVariableOfType(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText(), type.getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())");
                     }
 
-                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration693); if (state.failed) return stmt;
+                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration698); if (state.failed) return stmt;
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:287:20: ( ASSIGN_EQUAL table= wordTableExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:298:20: ( ASSIGN_EQUAL table= wordTableExpression )?
                     int alt17=2;
                     int LA17_0 = input.LA(1);
 
@@ -1498,11 +1509,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt17) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:287:21: ASSIGN_EQUAL table= wordTableExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:298:21: ASSIGN_EQUAL table= wordTableExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration696); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration701); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_wordTableExpression_in_variableDeclaration702);
+                            pushFollow(FOLLOW_wordTableExpression_in_variableDeclaration707);
                             table=wordTableExpression();
 
                             state._fsp--;
@@ -1514,25 +1525,25 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration706); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration711); if (state.failed) return stmt;
 
                     if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), type.getText());if(table != null){setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), table);}}
 
                     }
                     break;
                 case 9 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:289:2: type= BOOLEANLIST {...}?name= Identifier ( ASSIGN_EQUAL bl= booleanListExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:300:2: type= BOOLEANLIST {...}?name= Identifier ( ASSIGN_EQUAL bl= booleanListExpression )? SEMI
                     {
-                    type=(Token)match(input,BOOLEANLIST,FOLLOW_BOOLEANLIST_in_variableDeclaration718); if (state.failed) return stmt;
+                    type=(Token)match(input,BOOLEANLIST,FOLLOW_BOOLEANLIST_in_variableDeclaration723); if (state.failed) return stmt;
 
                     if ( !((!isVariableOfType(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText(), type.getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())");
                     }
 
-                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration730); if (state.failed) return stmt;
+                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration735); if (state.failed) return stmt;
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:291:20: ( ASSIGN_EQUAL bl= booleanListExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:302:20: ( ASSIGN_EQUAL bl= booleanListExpression )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -1541,11 +1552,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt18) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:291:21: ASSIGN_EQUAL bl= booleanListExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:302:21: ASSIGN_EQUAL bl= booleanListExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration733); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration738); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_booleanListExpression_in_variableDeclaration739);
+                            pushFollow(FOLLOW_booleanListExpression_in_variableDeclaration744);
                             bl=booleanListExpression();
 
                             state._fsp--;
@@ -1557,25 +1568,25 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration743); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration748); if (state.failed) return stmt;
 
                     if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), type.getText());if(bl != null){setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), bl);}}
 
                     }
                     break;
                 case 10 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:293:2: type= STRINGLIST {...}?name= Identifier ( ASSIGN_EQUAL sl= stringListExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:304:2: type= STRINGLIST {...}?name= Identifier ( ASSIGN_EQUAL sl= stringListExpression )? SEMI
                     {
-                    type=(Token)match(input,STRINGLIST,FOLLOW_STRINGLIST_in_variableDeclaration756); if (state.failed) return stmt;
+                    type=(Token)match(input,STRINGLIST,FOLLOW_STRINGLIST_in_variableDeclaration761); if (state.failed) return stmt;
 
                     if ( !((!isVariableOfType(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText(), type.getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())");
                     }
 
-                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration768); if (state.failed) return stmt;
+                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration773); if (state.failed) return stmt;
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:295:20: ( ASSIGN_EQUAL sl= stringListExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:306:20: ( ASSIGN_EQUAL sl= stringListExpression )?
                     int alt19=2;
                     int LA19_0 = input.LA(1);
 
@@ -1584,11 +1595,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt19) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:295:21: ASSIGN_EQUAL sl= stringListExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:306:21: ASSIGN_EQUAL sl= stringListExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration771); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration776); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_stringListExpression_in_variableDeclaration777);
+                            pushFollow(FOLLOW_stringListExpression_in_variableDeclaration782);
                             sl=stringListExpression();
 
                             state._fsp--;
@@ -1600,25 +1611,25 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration781); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration786); if (state.failed) return stmt;
 
                     if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), type.getText());if(sl != null){setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), sl);}}
 
                     }
                     break;
                 case 11 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:297:2: type= INTLIST {...}?name= Identifier ( ASSIGN_EQUAL il= numberListExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:308:2: type= INTLIST {...}?name= Identifier ( ASSIGN_EQUAL il= numberListExpression )? SEMI
                     {
-                    type=(Token)match(input,INTLIST,FOLLOW_INTLIST_in_variableDeclaration794); if (state.failed) return stmt;
+                    type=(Token)match(input,INTLIST,FOLLOW_INTLIST_in_variableDeclaration799); if (state.failed) return stmt;
 
                     if ( !((!isVariableOfType(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText(), type.getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())");
                     }
 
-                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration806); if (state.failed) return stmt;
+                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration811); if (state.failed) return stmt;
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:299:20: ( ASSIGN_EQUAL il= numberListExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:310:20: ( ASSIGN_EQUAL il= numberListExpression )?
                     int alt20=2;
                     int LA20_0 = input.LA(1);
 
@@ -1627,11 +1638,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt20) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:299:21: ASSIGN_EQUAL il= numberListExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:310:21: ASSIGN_EQUAL il= numberListExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration809); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration814); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_numberListExpression_in_variableDeclaration815);
+                            pushFollow(FOLLOW_numberListExpression_in_variableDeclaration820);
                             il=numberListExpression();
 
                             state._fsp--;
@@ -1643,25 +1654,25 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration819); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration824); if (state.failed) return stmt;
 
                     if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), type.getText());if(il != null){setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), il);}}
 
                     }
                     break;
                 case 12 :
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:301:2: type= DOUBLELIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:312:2: type= DOUBLELIST {...}?name= Identifier ( ASSIGN_EQUAL dl= numberListExpression )? SEMI
                     {
-                    type=(Token)match(input,DOUBLELIST,FOLLOW_DOUBLELIST_in_variableDeclaration832); if (state.failed) return stmt;
+                    type=(Token)match(input,DOUBLELIST,FOLLOW_DOUBLELIST_in_variableDeclaration837); if (state.failed) return stmt;
 
                     if ( !((!isVariableOfType(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, input.LT(1).getText(), type.getText()))) ) {
                         if (state.backtracking>0) {state.failed=true; return stmt;}
                         throw new FailedPredicateException(input, "variableDeclaration", "!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())");
                     }
 
-                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration844); if (state.failed) return stmt;
+                    name=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration849); if (state.failed) return stmt;
 
-                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:303:20: ( ASSIGN_EQUAL dl= numberListExpression )?
+                    // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:314:20: ( ASSIGN_EQUAL dl= numberListExpression )?
                     int alt21=2;
                     int LA21_0 = input.LA(1);
 
@@ -1670,11 +1681,11 @@ public class TextMarkerParser extends Pa
                     }
                     switch (alt21) {
                         case 1 :
-                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:303:21: ASSIGN_EQUAL dl= numberListExpression
+                            // D:\\work\\workspace-uima3\\uimaj-ep-textmarker-engine\\src\\main\\java\\org\\apache\\uima\\textmarker\\parser\\TextMarkerParser.g:314:21: ASSIGN_EQUAL dl= numberListExpression
                             {
-                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration847); if (state.failed) return stmt;
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration852); if (state.failed) return stmt;
 
-                            pushFollow(FOLLOW_numberListExpression_in_variableDeclaration853);
+                            pushFollow(FOLLOW_numberListExpression_in_variableDeclaration858);
                             dl=numberListExpression();
 
                             state._fsp--;
@@ -1686,25 +1697,25 @@ public class TextMarkerParser extends Pa
                     }
 
 
-                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration857); if (state.failed) return stmt;
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration862); if (state.failed) return stmt;
 
                     if ( state.backtracking==0 ) {addVariable(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), type.getText());if(dl != null){setValue(((blockDeclaration_scope)blockDeclaration_stack.peek()).env, name.getText(), dl);}}
 
                     }
                     break;
                 case 13 :

[... 12660 lines stripped ...]