You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2013/07/17 10:23:19 UTC

svn commit: r1504044 [4/12] - in /uima/sandbox/ruta/trunk/ruta-ep-ide: ./ schema/ src/ src/main/ src/main/antlr3/ src/main/antlr3/org/ src/main/antlr3/org/apache/ src/main/antlr3/org/apache/uima/ src/main/antlr3/org/apache/uima/ruta/ src/main/antlr3/or...

Added: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/output/RutaParser.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/output/RutaParser.java?rev=1504044&view=auto
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/output/RutaParser.java (added)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/output/RutaParser.java Wed Jul 17 08:23:15 2013
@@ -0,0 +1,22767 @@
+// $ANTLR 3.4 D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g 2013-07-16 15:57:11
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+
+package org.apache.uima.ruta.ide.core.parser;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+import org.antlr.runtime.BaseRecognizer;
+import org.antlr.runtime.BitSet;
+import org.antlr.runtime.CommonToken;
+import org.antlr.runtime.DFA;
+import org.antlr.runtime.EarlyExitException;
+import org.antlr.runtime.FailedPredicateException;
+import org.antlr.runtime.IntStream;
+import org.antlr.runtime.MismatchedSetException;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.Parser;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
+import org.antlr.runtime.Token;
+import org.antlr.runtime.TokenStream;
+import org.eclipse.dltk.ast.ASTNode;
+import org.eclipse.dltk.ast.DLTKToken;
+import org.eclipse.dltk.ast.declarations.Declaration;
+import org.eclipse.dltk.ast.declarations.ModuleDeclaration;
+import org.eclipse.dltk.ast.expressions.BooleanLiteral;
+import org.eclipse.dltk.ast.expressions.Expression;
+import org.eclipse.dltk.ast.references.VariableReference;
+import org.eclipse.dltk.ast.statements.Statement;
+
+import org.apache.uima.ruta.ide.core.extensions.RutaExternalFactory;
+import org.apache.uima.ruta.ide.core.builder.DescriptorManager;
+import org.apache.uima.ruta.ide.parser.ast.ActionFactory;
+import org.apache.uima.ruta.ide.parser.ast.ComponentDeclaration;
+import org.apache.uima.ruta.ide.parser.ast.ComponentReference;
+import org.apache.uima.ruta.ide.parser.ast.ComposedRuleElement;
+import org.apache.uima.ruta.ide.parser.ast.ConditionFactory;
+import org.apache.uima.ruta.ide.parser.ast.ExpressionFactory;
+import org.apache.uima.ruta.ide.parser.ast.ScriptFactory;
+import org.apache.uima.ruta.ide.parser.ast.StatementFactory;
+import org.apache.uima.ruta.ide.parser.ast.RutaTypeConstants;
+import org.apache.uima.ruta.ide.parser.ast.RutaBlock;
+import org.apache.uima.ruta.ide.parser.ast.RutaExpression;
+import org.apache.uima.ruta.ide.parser.ast.RutaRule;
+import org.apache.uima.ruta.ide.parser.ast.RutaRuleElement;
+import org.apache.uima.ruta.ide.parser.ast.RutaScriptBlock;
+import org.apache.uima.ruta.ide.parser.ast.RutaAction;
+import org.apache.uima.ruta.ide.parser.ast.RutaCondition;
+import org.apache.uima.ruta.ide.parser.ast.RutaFeatureDeclaration;
+import org.apache.uima.ruta.ide.parser.ast.RutaPackageDeclaration;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+
+@SuppressWarnings({"all", "warnings", "unchecked"})
+public class RutaParser extends Parser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "DocComment", "Annotation", "ListIdentifier", "TRIE", "CONTAINS", "DECLARE", "WORDLIST", "WORDTABLE", "AND", "CONTEXTCOUNT", "COUNT", "TOTALCOUNT", "CURRENTCOUNT", "INLIST", "LAST", "MOFN", "NEAR", "OR", "PARTOF", "PARTOFNEQ", "POSITION", "REGEXP", "SCORE", "VOTE", "IF", "FEATURE", "PARSE", "CREATE", "GATHER", "FILL", "ATTRIBUTE", "COLOR", "DEL", "LOG", "MARK", "MARKSCORE", "MARKONCE", "MARKFAST", "MARKTABLE", "MARKLAST", "REPLACE", "RETAINTYPE", "FILTERTYPE", "CALL", "EXEC", "CONFIGURE", "ASSIGN", "SETFEATURE", "GETFEATURE", "UNMARK", "UNMARKALL", "TRANSFER", "SHIFT", "DYNAMICANCHORING", "TRIM", "BEFORE", "AFTER", "IS", "STARTSWITH", "ENDSWITH", "ADDRETAINTYPE", "REMOVERETAINTYPE", "ADDFILTERTYPE", "REMOVEFILTERTYPE", "NOT", "ADD", "REMOVE", "REMOVEDUPLICATE", "MERGE", "GET", "GETLIST", "SIZE", "MATCHEDTEXT", "REMOVESTRING", "CLEAR", "THEN", "LogLevel", "OldColor", "PackageString", "ScriptString", "EngineString", "UimafitString", "Blo
 ckString", "AutomataBlockString", "TypeString", "IntString", "DoubleString", "FloatString", "StringString", "BooleanString", "TypeSystemString", "SymbolString", "CONDITION", "ACTION", "BOOLEANLIST", "INTLIST", "DOUBLELIST", "FLOATLIST", "STRINGLIST", "TYPELIST", "EXP", "LOGN", "SIN", "COS", "TAN", "XOR", "TRUE", "FALSE", "STARTANCHOR", "HexDigit", "IntegerTypeSuffix", "HexLiteral", "DecimalLiteral", "OctalLiteral", "Exponent", "FloatTypeSuffix", "FloatingPointLiteral", "EscapeSequence", "CharacterLiteral", "StringLiteral", "RessourceLiteral", "UnicodeEscape", "OctalEscape", "Letter", "JavaIDDigit", "Identifier", "LPAREN", "RPAREN", "LBRACK", "RBRACK", "LCURLY", "RCURLY", "CIRCUMFLEX", "DOT", "COLON", "COMMA", "SEMI", "PLUS", "MINUS", "STAR", "SLASH", "VBAR", "AMPER", "LESS", "GREATER", "ASSIGN_EQUAL", "PERCENT", "QUESTION", "EQUAL", "NOTEQUAL", "ALT_NOTEQUAL", "LESSEQUAL", "GREATEREQUAL", "WILDCARD", "WS", "COMMENT", "LINE_COMMENT"
+    };
+
+    public static final int EOF=-1;
+    public static final int STAR=143;
+    public static final int FloatTypeSuffix=119;
+    public static final int OctalLiteral=117;
+    public static final int LOG=37;
+    public static final int CONTAINS=8;
+    public static final int REMOVE=70;
+    public static final int GREATEREQUAL=156;
+    public static final int MARKFAST=41;
+    public static final int CONDITION=96;
+    public static final int MATCHEDTEXT=76;
+    public static final int COUNT=14;
+    public static final int LOGN=105;
+    public static final int DYNAMICANCHORING=57;
+    public static final int NOT=68;
+    public static final int Identifier=129;
+    public static final int ACTION=97;
+    public static final int NOTEQUAL=153;
+    public static final int CLEAR=78;
+    public static final int VBAR=145;
+    public static final int DOUBLELIST=100;
+    public static final int ENDSWITH=63;
+    public static final int RPAREN=131;
+    public static final int CREATE=31;
+    public static final int GREATER=148;
+    public static final int SIN=106;
+    public static final int EXP=104;
+    public static final int CURRENTCOUNT=16;
+    public static final int COS=107;
+    public static final int TAN=108;
+    public static final int TYPELIST=103;
+    public static final int FloatString=91;
+    public static final int LESS=147;
+    public static final int REGEXP=25;
+    public static final int GET=73;
+    public static final int PARTOF=22;
+    public static final int UNMARK=53;
+    public static final int LAST=18;
+    public static final int COMMENT=159;
+    public static final int REMOVEDUPLICATE=71;
+    public static final int UNMARKALL=54;
+    public static final int RBRACK=133;
+    public static final int NEAR=20;
+    public static final int LINE_COMMENT=160;
+    public static final int IntegerTypeSuffix=114;
+    public static final int MARKSCORE=39;
+    public static final int REMOVESTRING=77;
+    public static final int TRANSFER=55;
+    public static final int LCURLY=134;
+    public static final int TRIE=7;
+    public static final int FILTERTYPE=46;
+    public static final int STRINGLIST=102;
+    public static final int MARKONCE=40;
+    public static final int ScriptString=83;
+    public static final int EngineString=84;
+    public static final int WS=158;
+    public static final int WORDTABLE=11;
+    public static final int WORDLIST=10;
+    public static final int AutomataBlockString=87;
+    public static final int FloatingPointLiteral=120;
+    public static final int STARTANCHOR=112;
+    public static final int INTLIST=99;
+    public static final int OR=21;
+    public static final int TRIM=58;
+    public static final int JavaIDDigit=128;
+    public static final int FLOATLIST=101;
+    public static final int CALL=47;
+    public static final int Annotation=5;
+    public static final int FALSE=111;
+    public static final int LESSEQUAL=155;
+    public static final int RessourceLiteral=124;
+    public static final int VOTE=27;
+    public static final int Letter=127;
+    public static final int EscapeSequence=121;
+    public static final int SIZE=75;
+    public static final int REMOVEFILTERTYPE=67;
+    public static final int LBRACK=132;
+    public static final int CharacterLiteral=122;
+    public static final int DEL=36;
+    public static final int ATTRIBUTE=34;
+    public static final int TypeString=88;
+    public static final int SHIFT=56;
+    public static final int Exponent=118;
+    public static final int ASSIGN_EQUAL=149;
+    public static final int RETAINTYPE=45;
+    public static final int TypeSystemString=94;
+    public static final int AND=12;
+    public static final int ADDFILTERTYPE=66;
+    public static final int BlockString=86;
+    public static final int IntString=89;
+    public static final int HexDigit=113;
+    public static final int COLOR=35;
+    public static final int LPAREN=130;
+    public static final int POSITION=24;
+    public static final int IF=28;
+    public static final int LogLevel=80;
+    public static final int CONFIGURE=49;
+    public static final int SLASH=144;
+    public static final int THEN=79;
+    public static final int FILL=33;
+    public static final int COMMA=139;
+    public static final int IS=61;
+    public static final int AMPER=146;
+    public static final int REPLACE=44;
+    public static final int GETLIST=74;
+    public static final int WILDCARD=157;
+    public static final int EQUAL=152;
+    public static final int GATHER=32;
+    public static final int INLIST=17;
+    public static final int PLUS=141;
+    public static final int BooleanString=93;
+    public static final int GETFEATURE=52;
+    public static final int DOT=137;
+    public static final int ListIdentifier=6;
+    public static final int PARTOFNEQ=23;
+    public static final int BOOLEANLIST=98;
+    public static final int ADD=69;
+    public static final int MARKTABLE=42;
+    public static final int HexLiteral=115;
+    public static final int XOR=109;
+    public static final int PERCENT=150;
+    public static final int MARK=38;
+    public static final int PARSE=30;
+    public static final int PackageString=82;
+    public static final int OldColor=81;
+    public static final int MARKLAST=43;
+    public static final int MERGE=72;
+    public static final int CONTEXTCOUNT=13;
+    public static final int BEFORE=59;
+    public static final int EXEC=48;
+    public static final int MINUS=142;
+    public static final int AFTER=60;
+    public static final int DecimalLiteral=116;
+    public static final int SEMI=140;
+    public static final int TRUE=110;
+    public static final int FEATURE=29;
+    public static final int SymbolString=95;
+    public static final int COLON=138;
+    public static final int StringLiteral=123;
+    public static final int StringString=92;
+    public static final int SCORE=26;
+    public static final int QUESTION=151;
+    public static final int ADDRETAINTYPE=64;
+    public static final int UnicodeEscape=125;
+    public static final int RCURLY=135;
+    public static final int STARTSWITH=62;
+    public static final int ASSIGN=50;
+    public static final int REMOVERETAINTYPE=65;
+    public static final int TOTALCOUNT=15;
+    public static final int DECLARE=9;
+    public static final int UimafitString=85;
+    public static final int DocComment=4;
+    public static final int MOFN=19;
+    public static final int OctalEscape=126;
+    public static final int SETFEATURE=51;
+    public static final int DoubleString=90;
+    public static final int CIRCUMFLEX=136;
+    public static final int ALT_NOTEQUAL=154;
+
+    // delegates
+    public Parser[] getDelegates() {
+        return new Parser[] {};
+    }
+
+    // delegators
+
+
+    public RutaParser(TokenStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public RutaParser(TokenStream input, RecognizerSharedState state) {
+        super(input, state);
+    }
+
+    public String[] getTokenNames() { return RutaParser.tokenNames; }
+    public String getGrammarFileName() { return "D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g"; }
+
+
+    	public DLTKRutaErrorReporter reporter;
+    	public ModuleDeclaration md;
+    	private List<String> vars = new ArrayList<String>();	
+    	private Map<String, String> varTypeMap = new HashMap<String, String>();
+    	private Map<String, String> lists = new HashMap<String, String>();
+    	private Map<String, String> tables = new HashMap<String, String>();
+    	public int length;
+    	public DLTKTokenConverter converter;
+    	public DescriptorManager descriptor;
+    	private int level = 0;
+    	private RutaExternalFactory external = new RutaExternalFactory();
+    	
+    	private String module;
+    	private String packageString;
+    	
+    	private ScriptFactory scriptFactory = new ScriptFactory();
+    	
+    	public List<String> getVariables() {
+    		return vars;
+    	}
+    	
+    	public Map<String, String> getVariableTypes() {
+    		return varTypeMap;
+    	}
+    	
+    	DLTKToken toDLTK(Token token) {
+    		return converter.convert(token);
+    	}
+    	public void emitErrorMessage(String msg) {
+    		reporter.reportMessage(msg);
+    	}
+    	public void reportError(RecognitionException e) {
+    		if( reporter != null ) {
+    			reporter.reportError(e);
+    		}
+    	}
+    	
+    	public void addType(RutaBlock parent, String type, String parentType) {
+    		vars.add(type);
+    		descriptor.addType(parent.getNamespace()+"."+type.trim(), "Type defined in "+packageString+"."+module, parentType);
+    	}
+    	
+    	public void addPredefinedType(String type) {
+    		vars.add(type);
+    		varTypeMap.put(type, "TYPE");
+    		
+    	}
+    	
+    	public void addType(RutaBlock parent, String name, String parentType, List featuresTypes,
+              List<Token> featuresNames) {
+    	   	 name = parent.getNamespace() + "." + name.trim();
+    	   	 descriptor.addType(name, "Type defined in " + packageString + "." + module, parentType);
+    	    	for (int i = 0; i < featuresTypes.size(); i++) {
+    	    	  Object object = featuresTypes.get(i);
+    	    	  String ftype = "";
+    	    	  if (object instanceof ASTNode) {
+    	    		    ftype = ((ASTNode) object).toString();
+    		      } else if (object instanceof Token) {
+    	     	   ftype = ((Token) object).getText();
+    	     	 }
+    		      String fname = featuresNames.get(i).getText();
+    	     	 descriptor.addFeature(name, fname, fname, ftype);
+    	   	 }
+     	 }
+    	
+    	public void addWordList(RutaBlock parent, String name, String list) {
+    		lists.put(name, list);
+    	}
+    	
+    	public void addCSVTable(RutaBlock parent, String name, String table) {
+    		tables.put(name, table);
+    	}
+    	
+    	public boolean isType(RutaBlock parent, String type) {
+    		return vars.contains(type);
+    	}
+    		
+    	public void addVariable(String var, String type, IntStream input) throws NoViableAltException {
+    		if(!vars.contains(var)) {
+    			vars.add(var);
+    			varTypeMap.put(var, type);
+    		} 
+    	}
+    	
+    	public void addVariable(String var, String type) {
+    		if(!vars.contains(var)) {
+    			vars.add(var);
+    			varTypeMap.put(var, type);
+    		}
+    	}
+    	
+    	public boolean isVariable(String var) {
+    		return vars.contains(var);
+    	}
+    	
+    	public boolean isVariableOfType(String var, String type) {
+    		return vars.contains(var) && type.equals(varTypeMap.get(var));
+    	}
+    	
+    	public void checkVariable(String var, IntStream input) throws NoViableAltException {
+    		if(!vars.contains(var)) {
+    			throw new NoViableAltException("not declared \"" + var + "\"", 3, 0, input);
+    		}
+    	}
+    	
+    	  public void addImportTypeSystem(ComponentDeclaration module) {
+    	    descriptor.addTypeSystem(module.getName());
+    	  }
+    	
+    	  public void addImportScript(ComponentDeclaration module) {
+    		    descriptor.addScript(module.getName());
+    		  }
+    	
+    	  public void addImportEngine(ComponentDeclaration module) {
+    		    descriptor.addEngine(module.getName());
+    		  }
+    	   public void addImportUimafitEngine(ComponentDeclaration module) {
+    	    descriptor.addUimafitEngine(module.getName());
+    	  }
+    	
+    	protected static final int[] getBounds(Token t) {
+    		if (t instanceof CommonToken) {
+    			CommonToken ct = (CommonToken) t;
+    			int[] bounds = {ct.getStartIndex(), ct.getStopIndex()}; 
+    			return bounds;
+    		}
+    		return null;
+    	}
+    	
+    //	public String getTypeOf(String varName) {
+    //		String vn = varTypeMap.get(varName);
+    //		return vn != null? vn : "";
+    //	}
+    	
+
+
+
+    // $ANTLR start "file_input"
+    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:233:1: file_input[String module] : (p= packageDeclaration )? gs= globalStatements s= statements EOF ;
+    public final void file_input(String module) throws RecognitionException {
+        RutaPackageDeclaration p =null;
+
+        List<Statement> gs =null;
+
+        List<Statement> s =null;
+
+
+
+        RutaScriptBlock rootBlock = null;
+        List<Statement> stmts = new ArrayList<Statement>();
+
+        try {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:238:2: ( (p= packageDeclaration )? gs= globalStatements s= statements EOF )
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:239:2: (p= packageDeclaration )? gs= globalStatements s= statements EOF
+            {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:239:4: (p= packageDeclaration )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==PackageString) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:239:4: p= packageDeclaration
+                    {
+                    pushFollow(FOLLOW_packageDeclaration_in_file_input73);
+                    p=packageDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            if ( state.backtracking==0 ) {
+            	String packageName = "";
+            	if(p != null) {packageName = p.getName();}
+            	rootBlock = scriptFactory.createScriptBlock(0,0,0,0,module, null, null, packageName);
+            	stmts.add(p);
+            	this.module = module;
+            	if(p != null) {
+            		this.packageString = p.getName();
+            	}
+            	}
+
+            if ( state.backtracking==0 ) {blockDeclaration_stack.push(new blockDeclaration_scope());((blockDeclaration_scope)blockDeclaration_stack.peek()).env = rootBlock;}
+
+            pushFollow(FOLLOW_globalStatements_in_file_input88);
+            gs=globalStatements();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            pushFollow(FOLLOW_statements_in_file_input95);
+            s=statements();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            if ( state.backtracking==0 ) {
+            	  stmts.addAll(gs);
+            	  stmts.addAll(s);
+              	  for (Statement stmt : stmts){
+            		  if (stmt != null) {
+            		    md.addStatement(stmt);
+            		  }
+            	  };
+            	}
+
+            match(input,EOF,FOLLOW_EOF_in_file_input101); if (state.failed) return ;
+
+            }
+
+        }
+
+        	catch (RecognitionException exception1) {
+        		if( reporter != null ) {
+        			reporter.reportError(exception1);
+        		}
+        		recover(input,exception1);
+        	}
+        	catch (Throwable exception2) {
+        		if( reporter != null ) {
+        			reporter.reportThrowable(exception2);
+        		}
+        	}
+
+        finally {
+        	// do for sure before leaving
+        }
+        return ;
+    }
+    // $ANTLR end "file_input"
+
+
+
+    // $ANTLR start "packageDeclaration"
+    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:267:1: packageDeclaration returns [RutaPackageDeclaration pack] : pString= PackageString p= dottedId SEMI ;
+    public final RutaPackageDeclaration packageDeclaration() throws RecognitionException {
+        RutaPackageDeclaration pack = null;
+
+
+        Token pString=null;
+        Token p =null;
+
+
+        try {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:268:2: (pString= PackageString p= dottedId SEMI )
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:268:4: pString= PackageString p= dottedId SEMI
+            {
+            pString=(Token)match(input,PackageString,FOLLOW_PackageString_in_packageDeclaration122); if (state.failed) return pack;
+
+            if ( state.backtracking==0 ) {
+            	pack = StatementFactory.createPkgDeclaration(p, pString);
+            	}
+
+            pushFollow(FOLLOW_dottedId_in_packageDeclaration133);
+            p=dottedId();
+
+            state._fsp--;
+            if (state.failed) return pack;
+
+            if ( state.backtracking==0 ) {
+            	pack = StatementFactory.createPkgDeclaration(p, pString);
+            	}
+
+            match(input,SEMI,FOLLOW_SEMI_in_packageDeclaration140); if (state.failed) return pack;
+
+            if ( state.backtracking==0 ) {
+            	pack = StatementFactory.createPkgDeclaration(p, pString);
+            	}
+
+            }
+
+        }
+
+        	catch (RecognitionException exception1) {
+        		if( reporter != null ) {
+        			reporter.reportError(exception1);
+        		}
+        		recover(input,exception1);
+        	}
+        	catch (Throwable exception2) {
+        		if( reporter != null ) {
+        			reporter.reportThrowable(exception2);
+        		}
+        	}
+
+        finally {
+        	// do for sure before leaving
+        }
+        return pack;
+    }
+    // $ANTLR end "packageDeclaration"
+
+
+
+    // $ANTLR start "statements"
+    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:282:1: statements returns [List<Statement> stmts = new ArrayList<Statement>()] : (morestmts= statement )* ;
+    public final List<Statement> statements() throws RecognitionException {
+        List<Statement> stmts =  new ArrayList<Statement>();
+
+
+        List<Statement> morestmts =null;
+
+
+        try {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:283:2: ( (morestmts= statement )* )
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:284:2: (morestmts= statement )*
+            {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:284:2: (morestmts= statement )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0 >= DECLARE && LA2_0 <= WORDTABLE)||LA2_0==REMOVESTRING||(LA2_0 >= BlockString && LA2_0 <= BooleanString)||(LA2_0 >= BOOLEANLIST && LA2_0 <= TYPELIST)||LA2_0==STARTANCHOR||LA2_0==StringLiteral||(LA2_0 >= Identifier && LA2_0 <= LPAREN)||LA2_0==WILDCARD) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:284:3: morestmts= statement
+            	    {
+            	    pushFollow(FOLLOW_statement_in_statements164);
+            	    morestmts=statement();
+
+            	    state._fsp--;
+            	    if (state.failed) return stmts;
+
+            	    if ( state.backtracking==0 ) {if(morestmts != null) {stmts.addAll(morestmts);}}
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+
+            }
+
+        }
+
+        	catch (RecognitionException exception1) {
+        		if( reporter != null ) {
+        			reporter.reportError(exception1);
+        		}
+        		recover(input,exception1);
+        	}
+        	catch (Throwable exception2) {
+        		if( reporter != null ) {
+        			reporter.reportThrowable(exception2);
+        		}
+        	}
+
+        finally {
+        	// do for sure before leaving
+        }
+        return stmts;
+    }
+    // $ANTLR end "statements"
+
+
+
+    // $ANTLR start "globalStatements"
+    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:287:1: globalStatements returns [List<Statement> stmts = new ArrayList<Statement>()] : (morestmts= globalStatement )* ;
+    public final List<Statement> globalStatements() throws RecognitionException {
+        List<Statement> stmts =  new ArrayList<Statement>();
+
+
+        List<Statement> morestmts =null;
+
+
+        try {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:288:2: ( (morestmts= globalStatement )* )
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:289:2: (morestmts= globalStatement )*
+            {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:289:2: (morestmts= globalStatement )*
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0 >= ScriptString && LA3_0 <= UimafitString)||LA3_0==TypeSystemString) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:289:3: morestmts= globalStatement
+            	    {
+            	    pushFollow(FOLLOW_globalStatement_in_globalStatements190);
+            	    morestmts=globalStatement();
+
+            	    state._fsp--;
+            	    if (state.failed) return stmts;
+
+            	    if ( state.backtracking==0 ) {if(morestmts != null) {stmts.addAll(morestmts);}}
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } while (true);
+
+
+            }
+
+        }
+
+        	catch (RecognitionException exception1) {
+        		if( reporter != null ) {
+        			reporter.reportError(exception1);
+        		}
+        		recover(input,exception1);
+        	}
+        	catch (Throwable exception2) {
+        		if( reporter != null ) {
+        			reporter.reportThrowable(exception2);
+        		}
+        	}
+
+        finally {
+        	// do for sure before leaving
+        }
+        return stmts;
+    }
+    // $ANTLR end "globalStatements"
+
+
+
+    // $ANTLR start "globalStatement"
+    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:292:1: globalStatement returns [List<Statement> stmts = new ArrayList<Statement>()] : stmtImport= importStatement ;
+    public final List<Statement> globalStatement() throws RecognitionException {
+        List<Statement> stmts =  new ArrayList<Statement>();
+
+
+        Statement stmtImport =null;
+
+
+        try {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:293:2: (stmtImport= importStatement )
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:294:2: stmtImport= importStatement
+            {
+            pushFollow(FOLLOW_importStatement_in_globalStatement214);
+            stmtImport=importStatement();
+
+            state._fsp--;
+            if (state.failed) return stmts;
+
+            if ( state.backtracking==0 ) {stmts.add(stmtImport);}
+
+            }
+
+        }
+
+        	catch (RecognitionException exception1) {
+        		if( reporter != null ) {
+        			reporter.reportError(exception1);
+        		}
+        		recover(input,exception1);
+        	}
+        	catch (Throwable exception2) {
+        		if( reporter != null ) {
+        			reporter.reportThrowable(exception2);
+        		}
+        	}
+
+        finally {
+        	// do for sure before leaving
+        }
+        return stmts;
+    }
+    // $ANTLR end "globalStatement"
+
+
+
+    // $ANTLR start "statement"
+    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:297:1: statement returns [List<Statement> stmts = new ArrayList<Statement>()] : (stmts1= declaration |stmtVariable= variableDeclaration |stmt3= blockDeclaration |stmt2= simpleStatement ) ;
+    public final List<Statement> statement() throws RecognitionException {
+        List<Statement> stmts =  new ArrayList<Statement>();
+
+
+        List<Statement> stmts1 =null;
+
+        List<Statement> stmtVariable =null;
+
+        RutaBlock stmt3 =null;
+
+        RutaRule stmt2 =null;
+
+
+        try {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:298:2: ( (stmts1= declaration |stmtVariable= variableDeclaration |stmt3= blockDeclaration |stmt2= simpleStatement ) )
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:299:2: (stmts1= declaration |stmtVariable= variableDeclaration |stmt3= blockDeclaration |stmt2= simpleStatement )
+            {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:299:2: (stmts1= declaration |stmtVariable= variableDeclaration |stmt3= blockDeclaration |stmt2= simpleStatement )
+            int alt4=4;
+            switch ( input.LA(1) ) {
+            case DECLARE:
+                {
+                alt4=1;
+                }
+                break;
+            case WORDLIST:
+            case WORDTABLE:
+            case TypeString:
+            case IntString:
+            case DoubleString:
+            case FloatString:
+            case StringString:
+            case BooleanString:
+            case BOOLEANLIST:
+            case INTLIST:
+            case DOUBLELIST:
+            case FLOATLIST:
+            case STRINGLIST:
+            case TYPELIST:
+                {
+                alt4=2;
+                }
+                break;
+            case BlockString:
+            case AutomataBlockString:
+                {
+                alt4=3;
+                }
+                break;
+            case REMOVESTRING:
+            case STARTANCHOR:
+            case StringLiteral:
+            case Identifier:
+            case LPAREN:
+            case WILDCARD:
+                {
+                alt4=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return stmts;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+
+            }
+
+            switch (alt4) {
+                case 1 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:299:4: stmts1= declaration
+                    {
+                    pushFollow(FOLLOW_declaration_in_statement240);
+                    stmts1=declaration();
+
+                    state._fsp--;
+                    if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {stmts.addAll(stmts1);}
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:300:4: stmtVariable= variableDeclaration
+                    {
+                    pushFollow(FOLLOW_variableDeclaration_in_statement251);
+                    stmtVariable=variableDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {stmts.addAll(stmtVariable);}
+
+                    }
+                    break;
+                case 3 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:301:4: stmt3= blockDeclaration
+                    {
+                    pushFollow(FOLLOW_blockDeclaration_in_statement262);
+                    stmt3=blockDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {stmts.add(stmt3);}
+
+                    }
+                    break;
+                case 4 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:303:4: stmt2= simpleStatement
+                    {
+                    pushFollow(FOLLOW_simpleStatement_in_statement275);
+                    stmt2=simpleStatement();
+
+                    state._fsp--;
+                    if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {stmts.add(stmt2);}
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+
+        	catch (RecognitionException exception1) {
+        		if( reporter != null ) {
+        			reporter.reportError(exception1);
+        		}
+        		recover(input,exception1);
+        	}
+        	catch (Throwable exception2) {
+        		if( reporter != null ) {
+        			reporter.reportThrowable(exception2);
+        		}
+        	}
+
+        finally {
+        	// do for sure before leaving
+        }
+        return stmts;
+    }
+    // $ANTLR end "statement"
+
+
+
+    // $ANTLR start "importStatement"
+    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:309:1: importStatement returns [Statement stmt = null] : (im= TypeSystemString name= dottedComponentDeclaration SEMI |im= ScriptString name= dottedComponentDeclaration SEMI |im= EngineString name= dottedComponentDeclaration SEMI |im= UimafitString name= dottedComponentDeclaration SEMI );
+    public final Statement importStatement() throws RecognitionException {
+        Statement stmt =  null;
+
+
+        Token im=null;
+        ComponentDeclaration name =null;
+
+
+        try {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:310:2: (im= TypeSystemString name= dottedComponentDeclaration SEMI |im= ScriptString name= dottedComponentDeclaration SEMI |im= EngineString name= dottedComponentDeclaration SEMI |im= UimafitString name= dottedComponentDeclaration SEMI )
+            int alt5=4;
+            switch ( input.LA(1) ) {
+            case TypeSystemString:
+                {
+                alt5=1;
+                }
+                break;
+            case ScriptString:
+                {
+                alt5=2;
+                }
+                break;
+            case EngineString:
+                {
+                alt5=3;
+                }
+                break;
+            case UimafitString:
+                {
+                alt5=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return stmt;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:311:2: im= TypeSystemString name= dottedComponentDeclaration SEMI
+                    {
+                    im=(Token)match(input,TypeSystemString,FOLLOW_TypeSystemString_in_importStatement304); if (state.failed) return stmt;
+
+                    if ( state.backtracking==0 ) {stmt = StatementFactory.createImportTypeSystem(StatementFactory.createEmptyComponentDeclaration(im),im);}
+
+                    pushFollow(FOLLOW_dottedComponentDeclaration_in_importStatement316);
+                    name=dottedComponentDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return stmt;
+
+                    if ( state.backtracking==0 ) {if(name != null) {stmt = StatementFactory.createImportTypeSystem(name,im);addImportTypeSystem(name);}}
+
+                    match(input,SEMI,FOLLOW_SEMI_in_importStatement324); if (state.failed) return stmt;
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:316:4: im= ScriptString name= dottedComponentDeclaration SEMI
+                    {
+                    im=(Token)match(input,ScriptString,FOLLOW_ScriptString_in_importStatement334); if (state.failed) return stmt;
+
+                    if ( state.backtracking==0 ) {stmt = StatementFactory.createImportScript(StatementFactory.createEmptyComponentDeclaration(im),im);}
+
+                    pushFollow(FOLLOW_dottedComponentDeclaration_in_importStatement346);
+                    name=dottedComponentDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return stmt;
+
+                    if ( state.backtracking==0 ) {if(name != null) {stmt = StatementFactory.createImportScript(name,im);addImportScript(name);}}
+
+                    match(input,SEMI,FOLLOW_SEMI_in_importStatement354); if (state.failed) return stmt;
+
+                    }
+                    break;
+                case 3 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:321:4: im= EngineString name= dottedComponentDeclaration SEMI
+                    {
+                    im=(Token)match(input,EngineString,FOLLOW_EngineString_in_importStatement364); if (state.failed) return stmt;
+
+                    if ( state.backtracking==0 ) {stmt = StatementFactory.createImportEngine(StatementFactory.createEmptyComponentDeclaration(im),im);}
+
+                    pushFollow(FOLLOW_dottedComponentDeclaration_in_importStatement376);
+                    name=dottedComponentDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return stmt;
+
+                    if ( state.backtracking==0 ) {if(name != null) {stmt = StatementFactory.createImportEngine(name,im);addImportEngine(name);}}
+
+                    match(input,SEMI,FOLLOW_SEMI_in_importStatement384); if (state.failed) return stmt;
+
+                    }
+                    break;
+                case 4 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:326:5: im= UimafitString name= dottedComponentDeclaration SEMI
+                    {
+                    im=(Token)match(input,UimafitString,FOLLOW_UimafitString_in_importStatement395); if (state.failed) return stmt;
+
+                    if ( state.backtracking==0 ) {stmt = StatementFactory.createImportEngine(StatementFactory.createEmptyComponentDeclaration(im),im);}
+
+                    pushFollow(FOLLOW_dottedComponentDeclaration_in_importStatement407);
+                    name=dottedComponentDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return stmt;
+
+                    if ( state.backtracking==0 ) {if(name != null) {stmt = StatementFactory.createImportEngine(name,im);addImportUimafitEngine(name);}}
+
+                    match(input,SEMI,FOLLOW_SEMI_in_importStatement415); if (state.failed) return stmt;
+
+                    }
+                    break;
+
+            }
+        }
+
+        	catch (RecognitionException exception1) {
+        		if( reporter != null ) {
+        			reporter.reportError(exception1);
+        		}
+        		recover(input,exception1);
+        	}
+        	catch (Throwable exception2) {
+        		if( reporter != null ) {
+        			reporter.reportThrowable(exception2);
+        		}
+        	}
+
+        finally {
+        	// do for sure before leaving
+        }
+        return stmt;
+    }
+    // $ANTLR end "importStatement"
+
+
+
+    // $ANTLR start "variableDeclaration"
+    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:333:1: variableDeclaration returns [List<Statement> stmts = new ArrayList<Statement>()] : (type= IntString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI |type= DoubleString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI |type= FloatString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI |type= StringString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= stringExpression )? SEMI |type= BooleanString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= booleanExpression )? SEMI |type= TypeString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= typeExpression )? SEMI |type= WORDLIST id= Identifier ( ASSIGN_EQUAL list= wordListExpression )? SEMI |type= WORDTABLE id= Identifier ( ASSIGN_EQUAL table= wordTableEx
 pression )? SEMI |type= BOOLEANLIST id= Identifier ( ASSIGN_EQUAL list= booleanListExpression )? SEMI |type= INTLIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI |type= DOUBLELIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI |type= FLOATLIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI |type= STRINGLIST id= Identifier ( ASSIGN_EQUAL list= stringListExpression )? SEMI |type= TYPELIST id= Identifier ( ASSIGN_EQUAL list= typeListExpression )? SEMI );
+    public final List<Statement> variableDeclaration() throws RecognitionException {
+        List<Statement> stmts =  new ArrayList<Statement>();
+
+
+        Token type=null;
+        Token id=null;
+        Expression init =null;
+
+        Expression list =null;
+
+        Expression table =null;
+
+
+
+        	List decls = new ArrayList();
+
+        try {
+            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:337:2: (type= IntString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI |type= DoubleString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI |type= FloatString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI |type= StringString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= stringExpression )? SEMI |type= BooleanString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= booleanExpression )? SEMI |type= TypeString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= typeExpression )? SEMI |type= WORDLIST id= Identifier ( ASSIGN_EQUAL list= wordListExpression )? SEMI |type= WORDTABLE id= Identifier ( ASSIGN_EQUAL table= wordTableExpression )? SEMI |type= BOOLEANLIST id= Identifier ( ASSIGN_EQUAL list= boo
 leanListExpression )? SEMI |type= INTLIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI |type= DOUBLELIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI |type= FLOATLIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI |type= STRINGLIST id= Identifier ( ASSIGN_EQUAL list= stringListExpression )? SEMI |type= TYPELIST id= Identifier ( ASSIGN_EQUAL list= typeListExpression )? SEMI )
+            int alt26=14;
+            switch ( input.LA(1) ) {
+            case IntString:
+                {
+                alt26=1;
+                }
+                break;
+            case DoubleString:
+                {
+                alt26=2;
+                }
+                break;
+            case FloatString:
+                {
+                alt26=3;
+                }
+                break;
+            case StringString:
+                {
+                alt26=4;
+                }
+                break;
+            case BooleanString:
+                {
+                alt26=5;
+                }
+                break;
+            case TypeString:
+                {
+                alt26=6;
+                }
+                break;
+            case WORDLIST:
+                {
+                alt26=7;
+                }
+                break;
+            case WORDTABLE:
+                {
+                alt26=8;
+                }
+                break;
+            case BOOLEANLIST:
+                {
+                alt26=9;
+                }
+                break;
+            case INTLIST:
+                {
+                alt26=10;
+                }
+                break;
+            case DOUBLELIST:
+                {
+                alt26=11;
+                }
+                break;
+            case FLOATLIST:
+                {
+                alt26=12;
+                }
+                break;
+            case STRINGLIST:
+                {
+                alt26=13;
+                }
+                break;
+            case TYPELIST:
+                {
+                alt26=14;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return stmts;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 26, 0, input);
+
+                throw nvae;
+
+            }
+
+            switch (alt26) {
+                case 1 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:338:2: type= IntString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI
+                    {
+                    type=(Token)match(input,IntString,FOLLOW_IntString_in_variableDeclaration442); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration448); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText()); decls.add(StatementFactory.createIntVariable(id, type));}
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:339:3: ( COMMA id= Identifier )*
+                    loop6:
+                    do {
+                        int alt6=2;
+                        int LA6_0 = input.LA(1);
+
+                        if ( (LA6_0==COMMA) ) {
+                            alt6=1;
+                        }
+
+
+                        switch (alt6) {
+                    	case 1 :
+                    	    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:339:4: COMMA id= Identifier
+                    	    {
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration455); if (state.failed) return stmts;
+
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration460); if (state.failed) return stmts;
+
+                    	    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText()); decls.add(StatementFactory.createIntVariable(id, type));}
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop6;
+                        }
+                    } while (true);
+
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:340:6: ( ASSIGN_EQUAL init= numberExpression )?
+                    int alt7=2;
+                    int LA7_0 = input.LA(1);
+
+                    if ( (LA7_0==ASSIGN_EQUAL) ) {
+                        alt7=1;
+                    }
+                    switch (alt7) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:340:7: ASSIGN_EQUAL init= numberExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration470); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration476);
+                            init=numberExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration481); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                    		 stmts.add(StatementFactory.createDeclarationsStatement(type, decls, init));
+                    		 }
+
+                    }
+                    break;
+                case 2 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:345:2: type= DoubleString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI
+                    {
+                    type=(Token)match(input,DoubleString,FOLLOW_DoubleString_in_variableDeclaration495); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration501); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createDoubleVariable(id, type));}
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:346:4: ( COMMA id= Identifier )*
+                    loop8:
+                    do {
+                        int alt8=2;
+                        int LA8_0 = input.LA(1);
+
+                        if ( (LA8_0==COMMA) ) {
+                            alt8=1;
+                        }
+
+
+                        switch (alt8) {
+                    	case 1 :
+                    	    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:346:5: COMMA id= Identifier
+                    	    {
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration509); if (state.failed) return stmts;
+
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration515); if (state.failed) return stmts;
+
+                    	    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createDoubleVariable(id, type));}
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop8;
+                        }
+                    } while (true);
+
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:347:7: ( ASSIGN_EQUAL init= numberExpression )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0==ASSIGN_EQUAL) ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:347:8: ASSIGN_EQUAL init= numberExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration526); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration532);
+                            init=numberExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration537); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                    		 stmts.add(StatementFactory.createDeclarationsStatement(type, decls, init));
+                    		 }
+
+                    }
+                    break;
+                case 3 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:352:2: type= FloatString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= numberExpression )? SEMI
+                    {
+                    type=(Token)match(input,FloatString,FOLLOW_FloatString_in_variableDeclaration551); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration557); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createFloatVariable(id, type));}
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:353:4: ( COMMA id= Identifier )*
+                    loop10:
+                    do {
+                        int alt10=2;
+                        int LA10_0 = input.LA(1);
+
+                        if ( (LA10_0==COMMA) ) {
+                            alt10=1;
+                        }
+
+
+                        switch (alt10) {
+                    	case 1 :
+                    	    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:353:5: COMMA id= Identifier
+                    	    {
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration565); if (state.failed) return stmts;
+
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration571); if (state.failed) return stmts;
+
+                    	    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createFloatVariable(id, type));}
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop10;
+                        }
+                    } while (true);
+
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:354:7: ( ASSIGN_EQUAL init= numberExpression )?
+                    int alt11=2;
+                    int LA11_0 = input.LA(1);
+
+                    if ( (LA11_0==ASSIGN_EQUAL) ) {
+                        alt11=1;
+                    }
+                    switch (alt11) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:354:8: ASSIGN_EQUAL init= numberExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration582); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_numberExpression_in_variableDeclaration588);
+                            init=numberExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration593); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                    		 stmts.add(StatementFactory.createDeclarationsStatement(type, decls, init));
+                    		 }
+
+                    }
+                    break;
+                case 4 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:359:2: type= StringString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= stringExpression )? SEMI
+                    {
+                    type=(Token)match(input,StringString,FOLLOW_StringString_in_variableDeclaration607); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration613); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createStringVariable(id, type));}
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:360:4: ( COMMA id= Identifier )*
+                    loop12:
+                    do {
+                        int alt12=2;
+                        int LA12_0 = input.LA(1);
+
+                        if ( (LA12_0==COMMA) ) {
+                            alt12=1;
+                        }
+
+
+                        switch (alt12) {
+                    	case 1 :
+                    	    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:360:5: COMMA id= Identifier
+                    	    {
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration621); if (state.failed) return stmts;
+
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration627); if (state.failed) return stmts;
+
+                    	    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createStringVariable(id, type));}
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop12;
+                        }
+                    } while (true);
+
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:361:7: ( ASSIGN_EQUAL init= stringExpression )?
+                    int alt13=2;
+                    int LA13_0 = input.LA(1);
+
+                    if ( (LA13_0==ASSIGN_EQUAL) ) {
+                        alt13=1;
+                    }
+                    switch (alt13) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:361:8: ASSIGN_EQUAL init= stringExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration638); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_stringExpression_in_variableDeclaration644);
+                            init=stringExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration649); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                    		 stmts.add(StatementFactory.createDeclarationsStatement(type, decls, init));
+                    		 }
+
+                    }
+                    break;
+                case 5 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:366:2: type= BooleanString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= booleanExpression )? SEMI
+                    {
+                    type=(Token)match(input,BooleanString,FOLLOW_BooleanString_in_variableDeclaration663); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration669); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createBooleanVariable(id, type));}
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:367:4: ( COMMA id= Identifier )*
+                    loop14:
+                    do {
+                        int alt14=2;
+                        int LA14_0 = input.LA(1);
+
+                        if ( (LA14_0==COMMA) ) {
+                            alt14=1;
+                        }
+
+
+                        switch (alt14) {
+                    	case 1 :
+                    	    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:367:5: COMMA id= Identifier
+                    	    {
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration677); if (state.failed) return stmts;
+
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration683); if (state.failed) return stmts;
+
+                    	    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createBooleanVariable(id, type));}
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop14;
+                        }
+                    } while (true);
+
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:368:7: ( ASSIGN_EQUAL init= booleanExpression )?
+                    int alt15=2;
+                    int LA15_0 = input.LA(1);
+
+                    if ( (LA15_0==ASSIGN_EQUAL) ) {
+                        alt15=1;
+                    }
+                    switch (alt15) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:368:8: ASSIGN_EQUAL init= booleanExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration694); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_booleanExpression_in_variableDeclaration700);
+                            init=booleanExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration705); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                    		 stmts.add(StatementFactory.createDeclarationsStatement(type, decls, init));
+                    		 }
+
+                    }
+                    break;
+                case 6 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:373:2: type= TypeString id= Identifier ( COMMA id= Identifier )* ( ASSIGN_EQUAL init= typeExpression )? SEMI
+                    {
+                    type=(Token)match(input,TypeString,FOLLOW_TypeString_in_variableDeclaration719); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration725); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createTypeVariable(id,type));}
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:374:4: ( COMMA id= Identifier )*
+                    loop16:
+                    do {
+                        int alt16=2;
+                        int LA16_0 = input.LA(1);
+
+                        if ( (LA16_0==COMMA) ) {
+                            alt16=1;
+                        }
+
+
+                        switch (alt16) {
+                    	case 1 :
+                    	    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:374:5: COMMA id= Identifier
+                    	    {
+                    	    match(input,COMMA,FOLLOW_COMMA_in_variableDeclaration733); if (state.failed) return stmts;
+
+                    	    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration739); if (state.failed) return stmts;
+
+                    	    if ( state.backtracking==0 ) {addVariable(id.getText(), type.getText());decls.add(StatementFactory.createTypeVariable(id,type));}
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop16;
+                        }
+                    } while (true);
+
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:375:7: ( ASSIGN_EQUAL init= typeExpression )?
+                    int alt17=2;
+                    int LA17_0 = input.LA(1);
+
+                    if ( (LA17_0==ASSIGN_EQUAL) ) {
+                        alt17=1;
+                    }
+                    switch (alt17) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:375:8: ASSIGN_EQUAL init= typeExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration750); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_typeExpression_in_variableDeclaration756);
+                            init=typeExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration761); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                    		 stmts.add(StatementFactory.createDeclarationsStatement(type, decls, init));
+                    		 }
+
+                    }
+                    break;
+                case 7 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:380:9: type= WORDLIST id= Identifier ( ASSIGN_EQUAL list= wordListExpression )? SEMI
+                    {
+                    type=(Token)match(input,WORDLIST,FOLLOW_WORDLIST_in_variableDeclaration789); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration795); if (state.failed) return stmts;
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:380:41: ( ASSIGN_EQUAL list= wordListExpression )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0==ASSIGN_EQUAL) ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:380:42: ASSIGN_EQUAL list= wordListExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration798); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_wordListExpression_in_variableDeclaration804);
+                            list=wordListExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration808); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                            addVariable(id.getText(), type.getText());
+                            decls.add(StatementFactory.createListVariable(id,type,list));
+                            stmts.add(StatementFactory.createDeclarationsStatement(type, decls, list));
+                            }
+
+                    }
+                    break;
+                case 8 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:387:9: type= WORDTABLE id= Identifier ( ASSIGN_EQUAL table= wordTableExpression )? SEMI
+                    {
+                    type=(Token)match(input,WORDTABLE,FOLLOW_WORDTABLE_in_variableDeclaration842); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration848); if (state.failed) return stmts;
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:387:42: ( ASSIGN_EQUAL table= wordTableExpression )?
+                    int alt19=2;
+                    int LA19_0 = input.LA(1);
+
+                    if ( (LA19_0==ASSIGN_EQUAL) ) {
+                        alt19=1;
+                    }
+                    switch (alt19) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:387:43: ASSIGN_EQUAL table= wordTableExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration851); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_wordTableExpression_in_variableDeclaration857);
+                            table=wordTableExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration862); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                            addVariable(id.getText(), type.getText());
+                            decls.add(StatementFactory.createTableVariable(id,type,table));
+                            stmts.add(StatementFactory.createDeclarationsStatement(type, decls, table));
+                            }
+
+                    }
+                    break;
+                case 9 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:394:9: type= BOOLEANLIST id= Identifier ( ASSIGN_EQUAL list= booleanListExpression )? SEMI
+                    {
+                    type=(Token)match(input,BOOLEANLIST,FOLLOW_BOOLEANLIST_in_variableDeclaration896); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration902); if (state.failed) return stmts;
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:394:44: ( ASSIGN_EQUAL list= booleanListExpression )?
+                    int alt20=2;
+                    int LA20_0 = input.LA(1);
+
+                    if ( (LA20_0==ASSIGN_EQUAL) ) {
+                        alt20=1;
+                    }
+                    switch (alt20) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:394:45: ASSIGN_EQUAL list= booleanListExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration905); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_booleanListExpression_in_variableDeclaration911);
+                            list=booleanListExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration916); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                            addVariable(id.getText(), type.getText());
+                            decls.add(StatementFactory.createVarListVariable(id,type,list, RutaTypeConstants.RUTA_TYPE_BL));
+                            stmts.add(StatementFactory.createDeclarationsStatement(type, decls, list));
+                            }
+
+                    }
+                    break;
+                case 10 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:401:9: type= INTLIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI
+                    {
+                    type=(Token)match(input,INTLIST,FOLLOW_INTLIST_in_variableDeclaration950); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration956); if (state.failed) return stmts;
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:401:40: ( ASSIGN_EQUAL list= numberListExpression )?
+                    int alt21=2;
+                    int LA21_0 = input.LA(1);
+
+                    if ( (LA21_0==ASSIGN_EQUAL) ) {
+                        alt21=1;
+                    }
+                    switch (alt21) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:401:41: ASSIGN_EQUAL list= numberListExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration959); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_numberListExpression_in_variableDeclaration965);
+                            list=numberListExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration970); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                            addVariable(id.getText(), type.getText());
+                            decls.add(StatementFactory.createVarListVariable(id,type,list, RutaTypeConstants.RUTA_TYPE_NL));
+                            stmts.add(StatementFactory.createDeclarationsStatement(type, decls, list));
+                            }
+
+                    }
+                    break;
+                case 11 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:408:9: type= DOUBLELIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI
+                    {
+                    type=(Token)match(input,DOUBLELIST,FOLLOW_DOUBLELIST_in_variableDeclaration1005); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration1011); if (state.failed) return stmts;
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:408:43: ( ASSIGN_EQUAL list= numberListExpression )?
+                    int alt22=2;
+                    int LA22_0 = input.LA(1);
+
+                    if ( (LA22_0==ASSIGN_EQUAL) ) {
+                        alt22=1;
+                    }
+                    switch (alt22) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:408:44: ASSIGN_EQUAL list= numberListExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration1014); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_numberListExpression_in_variableDeclaration1020);
+                            list=numberListExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration1025); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                            addVariable(id.getText(), type.getText());
+                            decls.add(StatementFactory.createVarListVariable(id,type,list, RutaTypeConstants.RUTA_TYPE_NL));
+                            stmts.add(StatementFactory.createDeclarationsStatement(type, decls, list));
+                            }
+
+                    }
+                    break;
+                case 12 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:415:9: type= FLOATLIST id= Identifier ( ASSIGN_EQUAL list= numberListExpression )? SEMI
+                    {
+                    type=(Token)match(input,FLOATLIST,FOLLOW_FLOATLIST_in_variableDeclaration1061); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration1067); if (state.failed) return stmts;
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:415:42: ( ASSIGN_EQUAL list= numberListExpression )?
+                    int alt23=2;
+                    int LA23_0 = input.LA(1);
+
+                    if ( (LA23_0==ASSIGN_EQUAL) ) {
+                        alt23=1;
+                    }
+                    switch (alt23) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:415:43: ASSIGN_EQUAL list= numberListExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration1070); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_numberListExpression_in_variableDeclaration1076);
+                            list=numberListExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration1081); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                            addVariable(id.getText(), type.getText());
+                            decls.add(StatementFactory.createVarListVariable(id,type,list, RutaTypeConstants.RUTA_TYPE_NL));
+                            stmts.add(StatementFactory.createDeclarationsStatement(type, decls, list));
+                            }
+
+                    }
+                    break;
+                case 13 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:422:9: type= STRINGLIST id= Identifier ( ASSIGN_EQUAL list= stringListExpression )? SEMI
+                    {
+                    type=(Token)match(input,STRINGLIST,FOLLOW_STRINGLIST_in_variableDeclaration1123); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration1129); if (state.failed) return stmts;
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:422:43: ( ASSIGN_EQUAL list= stringListExpression )?
+                    int alt24=2;
+                    int LA24_0 = input.LA(1);
+
+                    if ( (LA24_0==ASSIGN_EQUAL) ) {
+                        alt24=1;
+                    }
+                    switch (alt24) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:422:44: ASSIGN_EQUAL list= stringListExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration1132); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_stringListExpression_in_variableDeclaration1138);
+                            list=stringListExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration1143); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {
+                            addVariable(id.getText(), type.getText());
+                            decls.add(StatementFactory.createVarListVariable(id,type,list, RutaTypeConstants.RUTA_TYPE_SL));
+                            stmts.add(StatementFactory.createDeclarationsStatement(type, decls, list));
+                            }
+
+                    }
+                    break;
+                case 14 :
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:429:9: type= TYPELIST id= Identifier ( ASSIGN_EQUAL list= typeListExpression )? SEMI
+                    {
+                    type=(Token)match(input,TYPELIST,FOLLOW_TYPELIST_in_variableDeclaration1185); if (state.failed) return stmts;
+
+                    id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclaration1191); if (state.failed) return stmts;
+
+                    // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:429:41: ( ASSIGN_EQUAL list= typeListExpression )?
+                    int alt25=2;
+                    int LA25_0 = input.LA(1);
+
+                    if ( (LA25_0==ASSIGN_EQUAL) ) {
+                        alt25=1;
+                    }
+                    switch (alt25) {
+                        case 1 :
+                            // D:\\work\\workspace-uima-ruta\\ruta-ep-ide\\src\\main\\antlr3\\org\\apache\\uima\\ruta\\ide\\core\\parser\\RutaParser.g:429:42: ASSIGN_EQUAL list= typeListExpression
+                            {
+                            match(input,ASSIGN_EQUAL,FOLLOW_ASSIGN_EQUAL_in_variableDeclaration1194); if (state.failed) return stmts;
+
+                            pushFollow(FOLLOW_typeListExpression_in_variableDeclaration1200);
+                            list=typeListExpression();
+
+                            state._fsp--;
+                            if (state.failed) return stmts;
+
+                            }
+                            break;
+
+                    }
+
+
+                    match(input,SEMI,FOLLOW_SEMI_in_variableDeclaration1205); if (state.failed) return stmts;
+
+                    if ( state.backtracking==0 ) {

[... 20858 lines stripped ...]