diff --git a/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguage.g b/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguage.g
index 4e3c576035a748a588928aa44b74e9fee63c7c09..20585548c0a426436edfb96c6230d334f51a3df8 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguage.g
+++ b/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguage.g
@@ -4143,7 +4143,7 @@ rule__DoubleLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__DoubleLiteralRule__FactorAssignment_1)
+	(rule__DoubleLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
@@ -4197,7 +4197,7 @@ rule__IntegerLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__IntegerLiteralRule__FactorAssignment_1)
+	(rule__IntegerLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguageParser.java b/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguageParser.java
index ad60ff6fca3b46dfa4f98c5ad42f88af80fc1cad..631195e526aff4c7ba417a99db214e8fdb922123 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.ddl.dsl.ide/src-gen/de/evoal/languages/model/ddl/dsl/ide/contentassist/antlr/internal/InternalDataDescriptionLanguageParser.java
@@ -3412,12 +3412,12 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalConte
                 {
                 int LA3_1 = input.LA(2);
 
-                if ( (LA3_1==67) ) {
-                    alt3=1;
-                }
-                else if ( (LA3_1==EOF||(LA3_1>=21 && LA3_1<=31)||LA3_1==57||(LA3_1>=63 && LA3_1<=66)||(LA3_1>=68 && LA3_1<=69)) ) {
+                if ( (LA3_1==EOF||(LA3_1>=21 && LA3_1<=31)||LA3_1==57||(LA3_1>=63 && LA3_1<=66)||(LA3_1>=68 && LA3_1<=69)) ) {
                     alt3=4;
                 }
+                else if ( (LA3_1==67) ) {
+                    alt3=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -3699,12 +3699,12 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalConte
             if ( (LA5_0==RULE_INT) ) {
                 int LA5_1 = input.LA(2);
 
-                if ( ((LA5_1>=32 && LA5_1<=51)) ) {
-                    alt5=2;
-                }
-                else if ( (LA5_1==70) ) {
+                if ( (LA5_1==70) ) {
                     alt5=1;
                 }
+                else if ( (LA5_1==EOF||(LA5_1>=21 && LA5_1<=51)||LA5_1==57||(LA5_1>=63 && LA5_1<=66)||(LA5_1>=68 && LA5_1<=69)) ) {
+                    alt5=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -14085,29 +14085,40 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalConte
 
 
     // $ANTLR start "rule__DoubleLiteralRule__Group__1__Impl"
-    // InternalDataDescriptionLanguage.g:4139:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalDataDescriptionLanguage.g:4139:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__DoubleLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalDataDescriptionLanguage.g:4143:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) )
-            // InternalDataDescriptionLanguage.g:4144:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
+            // InternalDataDescriptionLanguage.g:4143:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) )
+            // InternalDataDescriptionLanguage.g:4144:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalDataDescriptionLanguage.g:4144:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
-            // InternalDataDescriptionLanguage.g:4145:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
+            // InternalDataDescriptionLanguage.g:4144:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
+            // InternalDataDescriptionLanguage.g:4145:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
             }
-            // InternalDataDescriptionLanguage.g:4146:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
-            // InternalDataDescriptionLanguage.g:4146:3: rule__DoubleLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__DoubleLiteralRule__FactorAssignment_1();
+            // InternalDataDescriptionLanguage.g:4146:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            state._fsp--;
-            if (state.failed) return ;
+            if ( ((LA40_0>=32 && LA40_0<=51)) ) {
+                alt40=1;
+            }
+            switch (alt40) {
+                case 1 :
+                    // InternalDataDescriptionLanguage.g:4146:3: rule__DoubleLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoubleLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
 
             }
 
@@ -14258,29 +14269,40 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalConte
 
 
     // $ANTLR start "rule__IntegerLiteralRule__Group__1__Impl"
-    // InternalDataDescriptionLanguage.g:4193:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalDataDescriptionLanguage.g:4193:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__IntegerLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalDataDescriptionLanguage.g:4197:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) )
-            // InternalDataDescriptionLanguage.g:4198:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
+            // InternalDataDescriptionLanguage.g:4197:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) )
+            // InternalDataDescriptionLanguage.g:4198:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalDataDescriptionLanguage.g:4198:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
-            // InternalDataDescriptionLanguage.g:4199:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
+            // InternalDataDescriptionLanguage.g:4198:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
+            // InternalDataDescriptionLanguage.g:4199:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
             }
-            // InternalDataDescriptionLanguage.g:4200:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
-            // InternalDataDescriptionLanguage.g:4200:3: rule__IntegerLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__IntegerLiteralRule__FactorAssignment_1();
+            // InternalDataDescriptionLanguage.g:4200:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
+            int alt41=2;
+            int LA41_0 = input.LA(1);
 
-            state._fsp--;
-            if (state.failed) return ;
+            if ( ((LA41_0>=32 && LA41_0<=51)) ) {
+                alt41=1;
+            }
+            switch (alt41) {
+                case 1 :
+                    // InternalDataDescriptionLanguage.g:4200:3: rule__IntegerLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__IntegerLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
 
             }
 
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl.ui/templates/templates.xml b/src/languages/de.evoal.languages.model.ddl.dsl.ui/templates/templates.xml
index e60817d1d9e9756baacfb033b84af55a94d82e18..165801523eb94ab3623cd8668d5348493547b001 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl.ui/templates/templates.xml
+++ b/src/languages/de.evoal.languages.model.ddl.dsl.ui/templates/templates.xml
@@ -1,5 +1,14 @@
 <?xml version="1.0" encoding="UTF-8" ?> 
 <templates>
+	<template autoinsert="true"
+			  context="de.evoal.languages.model.ddl.dsl.DataDescriptionLanguage.UseRule"
+			  deleted="false"
+			  description="Creates a use statement"
+			  enabled="true"
+			  id="de.evoal.languages.model.ddl.dsl.ui.templates.createuse"
+			  name="Use Statement">use "${cursor}";
+</template>
+
 	<template autoinsert="true"
 			  context="de.evoal.languages.model.ddl.dsl.DataDescriptionLanguage.DataTypeRule"
 			  deleted="false"
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtextbin b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtextbin
index ce8eeb6fdde9e94777fabdad3053be89ebe018cb..2cba0ab018d9718717a100a0458a963a476efa17 100644
Binary files a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtextbin and b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/DataDescriptionLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguage.g b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguage.g
index 1ff52085bf267fd50a044245684940058dc4a79f..8674a3fedef6ec7c37f900e55beb5f5568a675e7 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguage.g
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguage.g
@@ -1848,7 +1848,7 @@ ruleDoubleLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
@@ -1904,7 +1904,7 @@ ruleIntegerLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguageParser.java b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguageParser.java
index 32942ccf3ce9038b22c851400be5c1c5c29577a4..d583e8ec49437fe8dbd0a2dae87c9a669ea2dae1 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/parser/antlr/internal/InternalDataDescriptionLanguageParser.java
@@ -4327,12 +4327,12 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
                 {
                 int LA27_1 = input.LA(2);
 
-                if ( (LA27_1==28) ) {
-                    alt27=1;
-                }
-                else if ( (LA27_1==EOF||LA27_1==17||(LA27_1>=23 && LA27_1<=25)||LA27_1==27||(LA27_1>=29 && LA27_1<=30)||(LA27_1>=42 && LA27_1<=52)) ) {
+                if ( (LA27_1==EOF||LA27_1==17||(LA27_1>=23 && LA27_1<=25)||LA27_1==27||(LA27_1>=29 && LA27_1<=30)||(LA27_1>=42 && LA27_1<=52)) ) {
                     alt27=4;
                 }
+                else if ( (LA27_1==28) ) {
+                    alt27=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -5142,12 +5142,12 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             if ( (LA31_0==RULE_INT) ) {
                 int LA31_1 = input.LA(2);
 
-                if ( (LA31_1==33) ) {
-                    alt31=1;
-                }
-                else if ( ((LA31_1>=53 && LA31_1<=72)) ) {
+                if ( (LA31_1==EOF||LA31_1==17||(LA31_1>=23 && LA31_1<=25)||LA31_1==27||(LA31_1>=29 && LA31_1<=30)||(LA31_1>=42 && LA31_1<=72)) ) {
                     alt31=2;
                 }
+                else if ( (LA31_1==33) ) {
+                    alt31=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -5283,7 +5283,7 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
 
 
     // $ANTLR start "ruleDoubleLiteralRule"
-    // InternalDataDescriptionLanguage.g:1806:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalDataDescriptionLanguage.g:1806:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleDoubleLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -5296,11 +5296,11 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
         	enterRule();
 
         try {
-            // InternalDataDescriptionLanguage.g:1812:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalDataDescriptionLanguage.g:1813:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalDataDescriptionLanguage.g:1812:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalDataDescriptionLanguage.g:1813:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalDataDescriptionLanguage.g:1813:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalDataDescriptionLanguage.g:1814:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalDataDescriptionLanguage.g:1813:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalDataDescriptionLanguage.g:1814:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalDataDescriptionLanguage.g:1814:3: ( (lv_literal_0_0= ruleDOUBLE ) )
             // InternalDataDescriptionLanguage.g:1815:4: (lv_literal_0_0= ruleDOUBLE )
@@ -5337,38 +5337,49 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
 
             }
 
-            // InternalDataDescriptionLanguage.g:1833:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalDataDescriptionLanguage.g:1834:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalDataDescriptionLanguage.g:1834:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalDataDescriptionLanguage.g:1835:5: lv_factor_1_0= ruleFactorRule
-            {
-            if ( state.backtracking==0 ) {
+            // InternalDataDescriptionLanguage.g:1833:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
 
-              					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-              				
+            if ( ((LA32_0>=53 && LA32_0<=72)) ) {
+                alt32=1;
             }
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            switch (alt32) {
+                case 1 :
+                    // InternalDataDescriptionLanguage.g:1834:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalDataDescriptionLanguage.g:1834:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalDataDescriptionLanguage.g:1835:5: lv_factor_1_0= ruleFactorRule
+                    {
+                    if ( state.backtracking==0 ) {
 
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
+                      					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
-              					}
-              					set(
-              						current,
-              						"factor",
-              						lv_factor_1_0,
-              						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-              					afterParserOrEnumRuleCall();
-              				
-            }
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
+                      					}
+                      					set(
+                      						current,
+                      						"factor",
+                      						lv_factor_1_0,
+                      						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
 
-            }
 
+                    }
+                    break;
 
             }
 
@@ -5437,7 +5448,7 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
 
 
     // $ANTLR start "ruleIntegerLiteralRule"
-    // InternalDataDescriptionLanguage.g:1863:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalDataDescriptionLanguage.g:1863:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleIntegerLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -5449,11 +5460,11 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
         	enterRule();
 
         try {
-            // InternalDataDescriptionLanguage.g:1869:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalDataDescriptionLanguage.g:1870:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalDataDescriptionLanguage.g:1869:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalDataDescriptionLanguage.g:1870:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalDataDescriptionLanguage.g:1870:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalDataDescriptionLanguage.g:1871:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalDataDescriptionLanguage.g:1870:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalDataDescriptionLanguage.g:1871:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalDataDescriptionLanguage.g:1871:3: ( (lv_literal_0_0= RULE_INT ) )
             // InternalDataDescriptionLanguage.g:1872:4: (lv_literal_0_0= RULE_INT )
@@ -5485,38 +5496,49 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
 
             }
 
-            // InternalDataDescriptionLanguage.g:1889:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalDataDescriptionLanguage.g:1890:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalDataDescriptionLanguage.g:1890:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalDataDescriptionLanguage.g:1891:5: lv_factor_1_0= ruleFactorRule
-            {
-            if ( state.backtracking==0 ) {
+            // InternalDataDescriptionLanguage.g:1889:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
 
-              					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-              				
+            if ( ((LA33_0>=53 && LA33_0<=72)) ) {
+                alt33=1;
             }
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            switch (alt33) {
+                case 1 :
+                    // InternalDataDescriptionLanguage.g:1890:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalDataDescriptionLanguage.g:1890:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalDataDescriptionLanguage.g:1891:5: lv_factor_1_0= ruleFactorRule
+                    {
+                    if ( state.backtracking==0 ) {
 
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
+                      					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
-              					}
-              					set(
-              						current,
-              						"factor",
-              						lv_factor_1_0,
-              						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-              					afterParserOrEnumRuleCall();
-              				
-            }
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
 
-            }
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
+                      					}
+                      					set(
+                      						current,
+                      						"factor",
+                      						lv_factor_1_0,
+                      						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
 
+                    }
+
+
+                    }
+                    break;
 
             }
 
@@ -5726,23 +5748,23 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             }
 
             // InternalDataDescriptionLanguage.g:1972:3: ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
-            int alt32=2;
-            int LA32_0 = input.LA(1);
+            int alt34=2;
+            int LA34_0 = input.LA(1);
 
-            if ( (LA32_0==31) ) {
-                alt32=1;
+            if ( (LA34_0==31) ) {
+                alt34=1;
             }
-            else if ( (LA32_0==32) ) {
-                alt32=2;
+            else if ( (LA34_0==32) ) {
+                alt34=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 32, 0, input);
+                    new NoViableAltException("", 34, 0, input);
 
                 throw nvae;
             }
-            switch (alt32) {
+            switch (alt34) {
                 case 1 :
                     // InternalDataDescriptionLanguage.g:1973:4: ( (lv_value_1_0= 'true' ) )
                     {
@@ -5870,23 +5892,23 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             // InternalDataDescriptionLanguage.g:2011:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
             {
             // InternalDataDescriptionLanguage.g:2011:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
-            int alt33=2;
-            int LA33_0 = input.LA(1);
+            int alt35=2;
+            int LA35_0 = input.LA(1);
 
-            if ( (LA33_0==RULE_QUOTED_ID) ) {
-                alt33=1;
+            if ( (LA35_0==RULE_QUOTED_ID) ) {
+                alt35=1;
             }
-            else if ( (LA33_0==RULE_ID) ) {
-                alt33=2;
+            else if ( (LA35_0==RULE_ID) ) {
+                alt35=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 33, 0, input);
+                    new NoViableAltException("", 35, 0, input);
 
                 throw nvae;
             }
-            switch (alt33) {
+            switch (alt35) {
                 case 1 :
                     // InternalDataDescriptionLanguage.g:2012:3: this_QUOTED_ID_0= RULE_QUOTED_ID
                     {
@@ -6075,37 +6097,37 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             // InternalDataDescriptionLanguage.g:2076:2: ( (enumLiteral_0= 'nominal' ) | (enumLiteral_1= 'ordinal' ) | (enumLiteral_2= 'cardinal' ) | (enumLiteral_3= 'quotient' ) )
             {
             // InternalDataDescriptionLanguage.g:2076:2: ( (enumLiteral_0= 'nominal' ) | (enumLiteral_1= 'ordinal' ) | (enumLiteral_2= 'cardinal' ) | (enumLiteral_3= 'quotient' ) )
-            int alt34=4;
+            int alt36=4;
             switch ( input.LA(1) ) {
             case 34:
                 {
-                alt34=1;
+                alt36=1;
                 }
                 break;
             case 35:
                 {
-                alt34=2;
+                alt36=2;
                 }
                 break;
             case 36:
                 {
-                alt34=3;
+                alt36=3;
                 }
                 break;
             case 37:
                 {
-                alt34=4;
+                alt36=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 34, 0, input);
+                    new NoViableAltException("", 36, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt34) {
+            switch (alt36) {
                 case 1 :
                     // InternalDataDescriptionLanguage.g:2077:3: (enumLiteral_0= 'nominal' )
                     {
@@ -6224,37 +6246,37 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             // InternalDataDescriptionLanguage.g:2119:2: ( (enumLiteral_0= 'real' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'boolean' ) | (enumLiteral_3= 'string' ) )
             {
             // InternalDataDescriptionLanguage.g:2119:2: ( (enumLiteral_0= 'real' ) | (enumLiteral_1= 'integer' ) | (enumLiteral_2= 'boolean' ) | (enumLiteral_3= 'string' ) )
-            int alt35=4;
+            int alt37=4;
             switch ( input.LA(1) ) {
             case 38:
                 {
-                alt35=1;
+                alt37=1;
                 }
                 break;
             case 39:
                 {
-                alt35=2;
+                alt37=2;
                 }
                 break;
             case 40:
                 {
-                alt35=3;
+                alt37=3;
                 }
                 break;
             case 41:
                 {
-                alt35=4;
+                alt37=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 35, 0, input);
+                    new NoViableAltException("", 37, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt35) {
+            switch (alt37) {
                 case 1 :
                     // InternalDataDescriptionLanguage.g:2120:3: (enumLiteral_0= 'real' )
                     {
@@ -6375,47 +6397,47 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             // InternalDataDescriptionLanguage.g:2162:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
             {
             // InternalDataDescriptionLanguage.g:2162:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
-            int alt36=6;
+            int alt38=6;
             switch ( input.LA(1) ) {
             case 42:
                 {
-                alt36=1;
+                alt38=1;
                 }
                 break;
             case 43:
                 {
-                alt36=2;
+                alt38=2;
                 }
                 break;
             case 44:
                 {
-                alt36=3;
+                alt38=3;
                 }
                 break;
             case 45:
                 {
-                alt36=4;
+                alt38=4;
                 }
                 break;
             case 46:
                 {
-                alt36=5;
+                alt38=5;
                 }
                 break;
             case 47:
                 {
-                alt36=6;
+                alt38=6;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 36, 0, input);
+                    new NoViableAltException("", 38, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt36) {
+            switch (alt38) {
                 case 1 :
                     // InternalDataDescriptionLanguage.g:2163:3: (enumLiteral_0= '>=' )
                     {
@@ -6570,23 +6592,23 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             // InternalDataDescriptionLanguage.g:2221:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
             {
             // InternalDataDescriptionLanguage.g:2221:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
-            int alt37=2;
-            int LA37_0 = input.LA(1);
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-            if ( (LA37_0==48) ) {
-                alt37=1;
+            if ( (LA39_0==48) ) {
+                alt39=1;
             }
-            else if ( (LA37_0==49) ) {
-                alt37=2;
+            else if ( (LA39_0==49) ) {
+                alt39=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 37, 0, input);
+                    new NoViableAltException("", 39, 0, input);
 
                 throw nvae;
             }
-            switch (alt37) {
+            switch (alt39) {
                 case 1 :
                     // InternalDataDescriptionLanguage.g:2222:3: (enumLiteral_0= '+' )
                     {
@@ -6666,32 +6688,32 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             // InternalDataDescriptionLanguage.g:2248:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
             {
             // InternalDataDescriptionLanguage.g:2248:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
-            int alt38=3;
+            int alt40=3;
             switch ( input.LA(1) ) {
             case 50:
                 {
-                alt38=1;
+                alt40=1;
                 }
                 break;
             case 51:
                 {
-                alt38=2;
+                alt40=2;
                 }
                 break;
             case 52:
                 {
-                alt38=3;
+                alt40=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 38, 0, input);
+                    new NoViableAltException("", 40, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt38) {
+            switch (alt40) {
                 case 1 :
                     // InternalDataDescriptionLanguage.g:2249:3: (enumLiteral_0= '*' )
                     {
@@ -6807,117 +6829,117 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
             // InternalDataDescriptionLanguage.g:2283:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
             {
             // InternalDataDescriptionLanguage.g:2283:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
-            int alt39=20;
+            int alt41=20;
             switch ( input.LA(1) ) {
             case 53:
                 {
-                alt39=1;
+                alt41=1;
                 }
                 break;
             case 54:
                 {
-                alt39=2;
+                alt41=2;
                 }
                 break;
             case 55:
                 {
-                alt39=3;
+                alt41=3;
                 }
                 break;
             case 56:
                 {
-                alt39=4;
+                alt41=4;
                 }
                 break;
             case 57:
                 {
-                alt39=5;
+                alt41=5;
                 }
                 break;
             case 58:
                 {
-                alt39=6;
+                alt41=6;
                 }
                 break;
             case 59:
                 {
-                alt39=7;
+                alt41=7;
                 }
                 break;
             case 60:
                 {
-                alt39=8;
+                alt41=8;
                 }
                 break;
             case 61:
                 {
-                alt39=9;
+                alt41=9;
                 }
                 break;
             case 62:
                 {
-                alt39=10;
+                alt41=10;
                 }
                 break;
             case 63:
                 {
-                alt39=11;
+                alt41=11;
                 }
                 break;
             case 64:
                 {
-                alt39=12;
+                alt41=12;
                 }
                 break;
             case 65:
                 {
-                alt39=13;
+                alt41=13;
                 }
                 break;
             case 66:
                 {
-                alt39=14;
+                alt41=14;
                 }
                 break;
             case 67:
                 {
-                alt39=15;
+                alt41=15;
                 }
                 break;
             case 68:
                 {
-                alt39=16;
+                alt41=16;
                 }
                 break;
             case 69:
                 {
-                alt39=17;
+                alt41=17;
                 }
                 break;
             case 70:
                 {
-                alt39=18;
+                alt41=18;
                 }
                 break;
             case 71:
                 {
-                alt39=19;
+                alt41=19;
                 }
                 break;
             case 72:
                 {
-                alt39=20;
+                alt41=20;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt39) {
+            switch (alt41) {
                 case 1 :
                     // InternalDataDescriptionLanguage.g:2284:3: (enumLiteral_0= 'Y' )
                     {
@@ -7399,7 +7421,7 @@ public class InternalDataDescriptionLanguageParser extends AbstractInternalAntlr
     public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000010000000L});
     public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x00030001B44000F0L});
     public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000060000000L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0xFFE0000000000000L,0x00000000000001FFL});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0xFFE0000000000002L,0x00000000000001FFL});
     public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000200000000L});
     public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000040L});
 
diff --git a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/services/DataDescriptionLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/services/DataDescriptionLanguageGrammarAccess.java
index 6e00ed6002deb1b8a671dba7d9dd10673810d86f..4dd153317bc9787d921028f7d38c749f0f1a97dc 100644
--- a/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/services/DataDescriptionLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.ddl.dsl/src-gen/de/evoal/languages/model/ddl/dsl/services/DataDescriptionLanguageGrammarAccess.java
@@ -1054,7 +1054,7 @@ public class DataDescriptionLanguageGrammarAccess extends AbstractElementFinder.
 	}
 	
 	//DoubleLiteralRule returns DoubleLiteral :
-	//    literal = DOUBLE factor = FactorRule
+	//    literal = DOUBLE (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.DoubleLiteralRuleElements getDoubleLiteralRuleAccess() {
 		return gaExpressionLanguage.getDoubleLiteralRuleAccess();
@@ -1065,7 +1065,7 @@ public class DataDescriptionLanguageGrammarAccess extends AbstractElementFinder.
 	}
 	
 	//IntegerLiteralRule returns IntegerLiteral:
-	//    literal = INT factor = FactorRule
+	//    literal = INT (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.IntegerLiteralRuleElements getIntegerLiteralRuleAccess() {
 		return gaExpressionLanguage.getIntegerLiteralRuleAccess();
diff --git a/src/languages/de.evoal.languages.model.dl.dsl.ide/src-gen/de/evoal/languages/model/dl/dsl/ide/contentassist/antlr/internal/InternalDefinitionLanguage.g b/src/languages/de.evoal.languages.model.dl.dsl.ide/src-gen/de/evoal/languages/model/dl/dsl/ide/contentassist/antlr/internal/InternalDefinitionLanguage.g
index 821f7f8fe22e44e56f421255e51daccf53be8ff3..b02666aaf31bf14349c1c5526d61c846e31509f1 100644
--- a/src/languages/de.evoal.languages.model.dl.dsl.ide/src-gen/de/evoal/languages/model/dl/dsl/ide/contentassist/antlr/internal/InternalDefinitionLanguage.g
+++ b/src/languages/de.evoal.languages.model.dl.dsl.ide/src-gen/de/evoal/languages/model/dl/dsl/ide/contentassist/antlr/internal/InternalDefinitionLanguage.g
@@ -4338,7 +4338,7 @@ rule__DoubleLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__DoubleLiteralRule__FactorAssignment_1)
+	(rule__DoubleLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
@@ -4392,7 +4392,7 @@ rule__IntegerLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__IntegerLiteralRule__FactorAssignment_1)
+	(rule__IntegerLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
diff --git a/src/languages/de.evoal.languages.model.dl.dsl.ide/src-gen/de/evoal/languages/model/dl/dsl/ide/contentassist/antlr/internal/InternalDefinitionLanguageParser.java b/src/languages/de.evoal.languages.model.dl.dsl.ide/src-gen/de/evoal/languages/model/dl/dsl/ide/contentassist/antlr/internal/InternalDefinitionLanguageParser.java
index 05e88676403cba3f3b4f754103b8df52b584ea15..03412dafe10da60ae21db4bfbc5eb7f5a30a54e9 100644
--- a/src/languages/de.evoal.languages.model.dl.dsl.ide/src-gen/de/evoal/languages/model/dl/dsl/ide/contentassist/antlr/internal/InternalDefinitionLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.dl.dsl.ide/src-gen/de/evoal/languages/model/dl/dsl/ide/contentassist/antlr/internal/InternalDefinitionLanguageParser.java
@@ -4268,12 +4268,12 @@ public class InternalDefinitionLanguageParser extends AbstractInternalContentAss
             if ( (LA7_0==RULE_INT) ) {
                 int LA7_1 = input.LA(2);
 
-                if ( (LA7_1==71) ) {
-                    alt7=1;
-                }
-                else if ( ((LA7_1>=24 && LA7_1<=43)) ) {
+                if ( (LA7_1==EOF||(LA7_1>=13 && LA7_1<=43)||(LA7_1>=64 && LA7_1<=69)) ) {
                     alt7=2;
                 }
+                else if ( (LA7_1==71) ) {
+                    alt7=1;
+                }
                 else {
                     NoViableAltException nvae =
                         new NoViableAltException("", 7, 1, input);
@@ -13585,27 +13585,38 @@ public class InternalDefinitionLanguageParser extends AbstractInternalContentAss
 
 
     // $ANTLR start "rule__DoubleLiteralRule__Group__1__Impl"
-    // InternalDefinitionLanguage.g:4334:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalDefinitionLanguage.g:4334:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__DoubleLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalDefinitionLanguage.g:4338:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) )
-            // InternalDefinitionLanguage.g:4339:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
+            // InternalDefinitionLanguage.g:4338:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) )
+            // InternalDefinitionLanguage.g:4339:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalDefinitionLanguage.g:4339:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
-            // InternalDefinitionLanguage.g:4340:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
+            // InternalDefinitionLanguage.g:4339:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
+            // InternalDefinitionLanguage.g:4340:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalDefinitionLanguage.g:4341:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
-            // InternalDefinitionLanguage.g:4341:3: rule__DoubleLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__DoubleLiteralRule__FactorAssignment_1();
+            // InternalDefinitionLanguage.g:4341:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
+            int alt31=2;
+            int LA31_0 = input.LA(1);
+
+            if ( ((LA31_0>=24 && LA31_0<=43)) ) {
+                alt31=1;
+            }
+            switch (alt31) {
+                case 1 :
+                    // InternalDefinitionLanguage.g:4341:3: rule__DoubleLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoubleLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
-            state._fsp--;
 
+                    }
+                    break;
 
             }
 
@@ -13750,28 +13761,39 @@ public class InternalDefinitionLanguageParser extends AbstractInternalContentAss
 
 
     // $ANTLR start "rule__IntegerLiteralRule__Group__1__Impl"
-    // InternalDefinitionLanguage.g:4388:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalDefinitionLanguage.g:4388:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__IntegerLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalDefinitionLanguage.g:4392:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) )
-            // InternalDefinitionLanguage.g:4393:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
+            // InternalDefinitionLanguage.g:4392:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) )
+            // InternalDefinitionLanguage.g:4393:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalDefinitionLanguage.g:4393:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
-            // InternalDefinitionLanguage.g:4394:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
+            // InternalDefinitionLanguage.g:4393:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
+            // InternalDefinitionLanguage.g:4394:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalDefinitionLanguage.g:4395:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
-            // InternalDefinitionLanguage.g:4395:3: rule__IntegerLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__IntegerLiteralRule__FactorAssignment_1();
+            // InternalDefinitionLanguage.g:4395:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
 
-            state._fsp--;
+            if ( ((LA32_0>=24 && LA32_0<=43)) ) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // InternalDefinitionLanguage.g:4395:3: rule__IntegerLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__IntegerLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
              after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
diff --git a/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/DefinitionLanguage.xtextbin b/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/DefinitionLanguage.xtextbin
index ed400f0845e876797291c89d80af67a0172c791f..59e7bbe81aa77a89cd1d85df7fc328581788a341 100644
Binary files a/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/DefinitionLanguage.xtextbin and b/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/DefinitionLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/parser/antlr/internal/InternalDefinitionLanguage.g b/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/parser/antlr/internal/InternalDefinitionLanguage.g
index b5772b2b67bd8313dc7c5cfab212fdc493271aab..5f068ed2a81d4d7a98abe980c3abefd12c816f28 100644
--- a/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/parser/antlr/internal/InternalDefinitionLanguage.g
+++ b/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/parser/antlr/internal/InternalDefinitionLanguage.g
@@ -2055,7 +2055,7 @@ ruleDoubleLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
@@ -2111,7 +2111,7 @@ ruleIntegerLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
diff --git a/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/parser/antlr/internal/InternalDefinitionLanguageParser.java b/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/parser/antlr/internal/InternalDefinitionLanguageParser.java
index 0ad31aae677dab40165d63cce746fa6f473cb054..b6088b9091f81c866372060de7b3e9cde5acb0ba 100644
--- a/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/parser/antlr/internal/InternalDefinitionLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/parser/antlr/internal/InternalDefinitionLanguageParser.java
@@ -5388,12 +5388,12 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
             if ( (LA23_0==RULE_INT) ) {
                 int LA23_1 = input.LA(2);
 
-                if ( (LA23_1==43) ) {
-                    alt23=1;
-                }
-                else if ( ((LA23_1>=55 && LA23_1<=74)) ) {
+                if ( (LA23_1==EOF||(LA23_1>=33 && LA23_1<=37)||LA23_1==39||(LA23_1>=44 && LA23_1<=74)) ) {
                     alt23=2;
                 }
+                else if ( (LA23_1==43) ) {
+                    alt23=1;
+                }
                 else {
                     NoViableAltException nvae =
                         new NoViableAltException("", 23, 1, input);
@@ -5503,7 +5503,7 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
 
 
     // $ANTLR start "ruleDoubleLiteralRule"
-    // InternalDefinitionLanguage.g:2013:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalDefinitionLanguage.g:2013:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleDoubleLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -5516,11 +5516,11 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
         	enterRule();
 
         try {
-            // InternalDefinitionLanguage.g:2019:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalDefinitionLanguage.g:2020:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalDefinitionLanguage.g:2019:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalDefinitionLanguage.g:2020:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalDefinitionLanguage.g:2020:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalDefinitionLanguage.g:2021:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalDefinitionLanguage.g:2020:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalDefinitionLanguage.g:2021:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalDefinitionLanguage.g:2021:3: ( (lv_literal_0_0= ruleDOUBLE ) )
             // InternalDefinitionLanguage.g:2022:4: (lv_literal_0_0= ruleDOUBLE )
@@ -5553,35 +5553,46 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
 
             }
 
-            // InternalDefinitionLanguage.g:2040:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalDefinitionLanguage.g:2041:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalDefinitionLanguage.g:2041:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalDefinitionLanguage.g:2042:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalDefinitionLanguage.g:2040:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA24_0>=55 && LA24_0<=74)) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // InternalDefinitionLanguage.g:2041:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalDefinitionLanguage.g:2041:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalDefinitionLanguage.g:2042:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -5643,7 +5654,7 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
 
 
     // $ANTLR start "ruleIntegerLiteralRule"
-    // InternalDefinitionLanguage.g:2070:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalDefinitionLanguage.g:2070:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleIntegerLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -5655,11 +5666,11 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
         	enterRule();
 
         try {
-            // InternalDefinitionLanguage.g:2076:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalDefinitionLanguage.g:2077:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalDefinitionLanguage.g:2076:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalDefinitionLanguage.g:2077:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalDefinitionLanguage.g:2077:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalDefinitionLanguage.g:2078:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalDefinitionLanguage.g:2077:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalDefinitionLanguage.g:2078:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalDefinitionLanguage.g:2078:3: ( (lv_literal_0_0= RULE_INT ) )
             // InternalDefinitionLanguage.g:2079:4: (lv_literal_0_0= RULE_INT )
@@ -5687,35 +5698,46 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
 
             }
 
-            // InternalDefinitionLanguage.g:2096:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalDefinitionLanguage.g:2097:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalDefinitionLanguage.g:2097:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalDefinitionLanguage.g:2098:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalDefinitionLanguage.g:2096:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA25_0>=55 && LA25_0<=74)) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // InternalDefinitionLanguage.g:2097:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalDefinitionLanguage.g:2097:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalDefinitionLanguage.g:2098:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -5901,22 +5923,22 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
             }
 
             // InternalDefinitionLanguage.g:2176:3: ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            int alt26=2;
+            int LA26_0 = input.LA(1);
 
-            if ( (LA24_0==41) ) {
-                alt24=1;
+            if ( (LA26_0==41) ) {
+                alt26=1;
             }
-            else if ( (LA24_0==42) ) {
-                alt24=2;
+            else if ( (LA26_0==42) ) {
+                alt26=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt26) {
                 case 1 :
                     // InternalDefinitionLanguage.g:2177:4: ( (lv_value_1_0= 'true' ) )
                     {
@@ -6032,22 +6054,22 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
             // InternalDefinitionLanguage.g:2215:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
             {
             // InternalDefinitionLanguage.g:2215:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
-            int alt25=2;
-            int LA25_0 = input.LA(1);
+            int alt27=2;
+            int LA27_0 = input.LA(1);
 
-            if ( (LA25_0==RULE_QUOTED_ID) ) {
-                alt25=1;
+            if ( (LA27_0==RULE_QUOTED_ID) ) {
+                alt27=1;
             }
-            else if ( (LA25_0==RULE_ID) ) {
-                alt25=2;
+            else if ( (LA27_0==RULE_ID) ) {
+                alt27=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
+                    new NoViableAltException("", 27, 0, input);
 
                 throw nvae;
             }
-            switch (alt25) {
+            switch (alt27) {
                 case 1 :
                     // InternalDefinitionLanguage.g:2216:3: this_QUOTED_ID_0= RULE_QUOTED_ID
                     {
@@ -6212,46 +6234,46 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
             // InternalDefinitionLanguage.g:2280:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
             {
             // InternalDefinitionLanguage.g:2280:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
-            int alt26=6;
+            int alt28=6;
             switch ( input.LA(1) ) {
             case 44:
                 {
-                alt26=1;
+                alt28=1;
                 }
                 break;
             case 45:
                 {
-                alt26=2;
+                alt28=2;
                 }
                 break;
             case 46:
                 {
-                alt26=3;
+                alt28=3;
                 }
                 break;
             case 47:
                 {
-                alt26=4;
+                alt28=4;
                 }
                 break;
             case 48:
                 {
-                alt26=5;
+                alt28=5;
                 }
                 break;
             case 49:
                 {
-                alt26=6;
+                alt28=6;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 26, 0, input);
+                    new NoViableAltException("", 28, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt26) {
+            switch (alt28) {
                 case 1 :
                     // InternalDefinitionLanguage.g:2281:3: (enumLiteral_0= '>=' )
                     {
@@ -6392,22 +6414,22 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
             // InternalDefinitionLanguage.g:2339:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
             {
             // InternalDefinitionLanguage.g:2339:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
-            int alt27=2;
-            int LA27_0 = input.LA(1);
+            int alt29=2;
+            int LA29_0 = input.LA(1);
 
-            if ( (LA27_0==50) ) {
-                alt27=1;
+            if ( (LA29_0==50) ) {
+                alt29=1;
             }
-            else if ( (LA27_0==51) ) {
-                alt27=2;
+            else if ( (LA29_0==51) ) {
+                alt29=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 27, 0, input);
+                    new NoViableAltException("", 29, 0, input);
 
                 throw nvae;
             }
-            switch (alt27) {
+            switch (alt29) {
                 case 1 :
                     // InternalDefinitionLanguage.g:2340:3: (enumLiteral_0= '+' )
                     {
@@ -6481,31 +6503,31 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
             // InternalDefinitionLanguage.g:2366:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
             {
             // InternalDefinitionLanguage.g:2366:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
-            int alt28=3;
+            int alt30=3;
             switch ( input.LA(1) ) {
             case 52:
                 {
-                alt28=1;
+                alt30=1;
                 }
                 break;
             case 53:
                 {
-                alt28=2;
+                alt30=2;
                 }
                 break;
             case 54:
                 {
-                alt28=3;
+                alt30=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 28, 0, input);
+                    new NoViableAltException("", 30, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt28) {
+            switch (alt30) {
                 case 1 :
                     // InternalDefinitionLanguage.g:2367:3: (enumLiteral_0= '*' )
                     {
@@ -6613,116 +6635,116 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
             // InternalDefinitionLanguage.g:2401:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
             {
             // InternalDefinitionLanguage.g:2401:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
-            int alt29=20;
+            int alt31=20;
             switch ( input.LA(1) ) {
             case 55:
                 {
-                alt29=1;
+                alt31=1;
                 }
                 break;
             case 56:
                 {
-                alt29=2;
+                alt31=2;
                 }
                 break;
             case 57:
                 {
-                alt29=3;
+                alt31=3;
                 }
                 break;
             case 58:
                 {
-                alt29=4;
+                alt31=4;
                 }
                 break;
             case 59:
                 {
-                alt29=5;
+                alt31=5;
                 }
                 break;
             case 60:
                 {
-                alt29=6;
+                alt31=6;
                 }
                 break;
             case 61:
                 {
-                alt29=7;
+                alt31=7;
                 }
                 break;
             case 62:
                 {
-                alt29=8;
+                alt31=8;
                 }
                 break;
             case 63:
                 {
-                alt29=9;
+                alt31=9;
                 }
                 break;
             case 64:
                 {
-                alt29=10;
+                alt31=10;
                 }
                 break;
             case 65:
                 {
-                alt29=11;
+                alt31=11;
                 }
                 break;
             case 66:
                 {
-                alt29=12;
+                alt31=12;
                 }
                 break;
             case 67:
                 {
-                alt29=13;
+                alt31=13;
                 }
                 break;
             case 68:
                 {
-                alt29=14;
+                alt31=14;
                 }
                 break;
             case 69:
                 {
-                alt29=15;
+                alt31=15;
                 }
                 break;
             case 70:
                 {
-                alt29=16;
+                alt31=16;
                 }
                 break;
             case 71:
                 {
-                alt29=17;
+                alt31=17;
                 }
                 break;
             case 72:
                 {
-                alt29=18;
+                alt31=18;
                 }
                 break;
             case 73:
                 {
-                alt29=19;
+                alt31=19;
                 }
                 break;
             case 74:
                 {
-                alt29=20;
+                alt31=20;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 29, 0, input);
+                    new NoViableAltException("", 31, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt29) {
+            switch (alt31) {
                 case 1 :
                     // InternalDefinitionLanguage.g:2402:3: (enumLiteral_0= 'Y' )
                     {
@@ -7114,7 +7136,7 @@ public class InternalDefinitionLanguageParser extends AbstractInternalAntlrParse
     public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000008000000002L});
     public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000400000000L});
     public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x000C0745000000F0L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0xFF80000000000000L,0x00000000000007FFL});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0xFF80000000000002L,0x00000000000007FFL});
     public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000080000000000L});
     public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000010L});
 
diff --git a/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/services/DefinitionLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/services/DefinitionLanguageGrammarAccess.java
index 845e6bd4b24ee86e415e2ce607274cfa12ce1e63..7bb9376f5ae5d70cb48506c5a3972f1b540e8644 100644
--- a/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/services/DefinitionLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.dl.dsl/src-gen/de/evoal/languages/model/dl/dsl/services/DefinitionLanguageGrammarAccess.java
@@ -1172,7 +1172,7 @@ public class DefinitionLanguageGrammarAccess extends AbstractElementFinder.Abstr
 	}
 	
 	//DoubleLiteralRule returns DoubleLiteral :
-	//    literal = DOUBLE factor = FactorRule
+	//    literal = DOUBLE (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.DoubleLiteralRuleElements getDoubleLiteralRuleAccess() {
 		return gaExpressionLanguage.getDoubleLiteralRuleAccess();
@@ -1183,7 +1183,7 @@ public class DefinitionLanguageGrammarAccess extends AbstractElementFinder.Abstr
 	}
 	
 	//IntegerLiteralRule returns IntegerLiteral:
-	//    literal = INT factor = FactorRule
+	//    literal = INT (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.IntegerLiteralRuleElements getIntegerLiteralRuleAccess() {
 		return gaExpressionLanguage.getIntegerLiteralRuleAccess();
diff --git a/src/languages/de.evoal.languages.model.eal.dsl.ide/src-gen/de/evoal/languages/model/eal/dsl/ide/contentassist/antlr/internal/InternalEvolutionaryAlgorithmLanguage.g b/src/languages/de.evoal.languages.model.eal.dsl.ide/src-gen/de/evoal/languages/model/eal/dsl/ide/contentassist/antlr/internal/InternalEvolutionaryAlgorithmLanguage.g
index 60c8c887df98028327a83e86c9d67f80bdda6f58..ed9d1dcd2d45bd03c9a4e4ad5be5d8be090494a7 100644
--- a/src/languages/de.evoal.languages.model.eal.dsl.ide/src-gen/de/evoal/languages/model/eal/dsl/ide/contentassist/antlr/internal/InternalEvolutionaryAlgorithmLanguage.g
+++ b/src/languages/de.evoal.languages.model.eal.dsl.ide/src-gen/de/evoal/languages/model/eal/dsl/ide/contentassist/antlr/internal/InternalEvolutionaryAlgorithmLanguage.g
@@ -3589,7 +3589,7 @@ rule__DoubleLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__DoubleLiteralRule__FactorAssignment_1)
+	(rule__DoubleLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
@@ -3643,7 +3643,7 @@ rule__IntegerLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__IntegerLiteralRule__FactorAssignment_1)
+	(rule__IntegerLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
diff --git a/src/languages/de.evoal.languages.model.eal.dsl.ide/src-gen/de/evoal/languages/model/eal/dsl/ide/contentassist/antlr/internal/InternalEvolutionaryAlgorithmLanguageParser.java b/src/languages/de.evoal.languages.model.eal.dsl.ide/src-gen/de/evoal/languages/model/eal/dsl/ide/contentassist/antlr/internal/InternalEvolutionaryAlgorithmLanguageParser.java
index 170a5d835bf8612ac101edbf3c10c67a536b20aa..cfb243a91b3c9567ae21f007f8321b8515dd8a7f 100644
--- a/src/languages/de.evoal.languages.model.eal.dsl.ide/src-gen/de/evoal/languages/model/eal/dsl/ide/contentassist/antlr/internal/InternalEvolutionaryAlgorithmLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.eal.dsl.ide/src-gen/de/evoal/languages/model/eal/dsl/ide/contentassist/antlr/internal/InternalEvolutionaryAlgorithmLanguageParser.java
@@ -3625,7 +3625,7 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
                 if ( (LA5_1==61) ) {
                     alt5=1;
                 }
-                else if ( ((LA5_1>=24 && LA5_1<=43)) ) {
+                else if ( (LA5_1==EOF||(LA5_1>=13 && LA5_1<=43)||LA5_1==45||(LA5_1>=51 && LA5_1<=52)||(LA5_1>=54 && LA5_1<=57)||LA5_1==59) ) {
                     alt5=2;
                 }
                 else {
@@ -11382,28 +11382,39 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
 
 
     // $ANTLR start "rule__DoubleLiteralRule__Group__1__Impl"
-    // InternalEvolutionaryAlgorithmLanguage.g:3585:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalEvolutionaryAlgorithmLanguage.g:3585:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__DoubleLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEvolutionaryAlgorithmLanguage.g:3589:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:3590:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:3589:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:3590:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalEvolutionaryAlgorithmLanguage.g:3590:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:3591:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
+            // InternalEvolutionaryAlgorithmLanguage.g:3590:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
+            // InternalEvolutionaryAlgorithmLanguage.g:3591:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalEvolutionaryAlgorithmLanguage.g:3592:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
-            // InternalEvolutionaryAlgorithmLanguage.g:3592:3: rule__DoubleLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__DoubleLiteralRule__FactorAssignment_1();
+            // InternalEvolutionaryAlgorithmLanguage.g:3592:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
+            int alt30=2;
+            int LA30_0 = input.LA(1);
 
-            state._fsp--;
+            if ( ((LA30_0>=24 && LA30_0<=43)) ) {
+                alt30=1;
+            }
+            switch (alt30) {
+                case 1 :
+                    // InternalEvolutionaryAlgorithmLanguage.g:3592:3: rule__DoubleLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoubleLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
              after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
@@ -11547,28 +11558,39 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
 
 
     // $ANTLR start "rule__IntegerLiteralRule__Group__1__Impl"
-    // InternalEvolutionaryAlgorithmLanguage.g:3639:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalEvolutionaryAlgorithmLanguage.g:3639:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__IntegerLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEvolutionaryAlgorithmLanguage.g:3643:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:3644:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:3643:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:3644:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalEvolutionaryAlgorithmLanguage.g:3644:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:3645:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
+            // InternalEvolutionaryAlgorithmLanguage.g:3644:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
+            // InternalEvolutionaryAlgorithmLanguage.g:3645:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalEvolutionaryAlgorithmLanguage.g:3646:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
-            // InternalEvolutionaryAlgorithmLanguage.g:3646:3: rule__IntegerLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__IntegerLiteralRule__FactorAssignment_1();
+            // InternalEvolutionaryAlgorithmLanguage.g:3646:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
+            int alt31=2;
+            int LA31_0 = input.LA(1);
 
-            state._fsp--;
+            if ( ((LA31_0>=24 && LA31_0<=43)) ) {
+                alt31=1;
+            }
+            switch (alt31) {
+                case 1 :
+                    // InternalEvolutionaryAlgorithmLanguage.g:3646:3: rule__IntegerLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__IntegerLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
              after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
diff --git a/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/EvolutionaryAlgorithmLanguage.xtextbin b/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/EvolutionaryAlgorithmLanguage.xtextbin
index 31d3f2cd4793513c3aac8c64fbf45a623259b50d..3c334b3bcd0909181ad97e5f126471250b8830af 100644
Binary files a/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/EvolutionaryAlgorithmLanguage.xtextbin and b/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/EvolutionaryAlgorithmLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/parser/antlr/internal/InternalEvolutionaryAlgorithmLanguage.g b/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/parser/antlr/internal/InternalEvolutionaryAlgorithmLanguage.g
index 32e265525b8477bab9c10d533e5aafd03cce3456..0b32a6079d42ff395205c8f9c0df2feb5d3de285 100644
--- a/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/parser/antlr/internal/InternalEvolutionaryAlgorithmLanguage.g
+++ b/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/parser/antlr/internal/InternalEvolutionaryAlgorithmLanguage.g
@@ -1773,7 +1773,7 @@ ruleDoubleLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
@@ -1829,7 +1829,7 @@ ruleIntegerLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
diff --git a/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/parser/antlr/internal/InternalEvolutionaryAlgorithmLanguageParser.java b/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/parser/antlr/internal/InternalEvolutionaryAlgorithmLanguageParser.java
index 38241ad5c6c226ed83f536344323c91cb9f17349..ecb89b7488fd2afce2e67038fa3e71e0cace7a3a 100644
--- a/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/parser/antlr/internal/InternalEvolutionaryAlgorithmLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/parser/antlr/internal/InternalEvolutionaryAlgorithmLanguageParser.java
@@ -4632,12 +4632,12 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
             if ( (LA23_0==RULE_INT) ) {
                 int LA23_1 = input.LA(2);
 
-                if ( (LA23_1==32) ) {
-                    alt23=1;
-                }
-                else if ( ((LA23_1>=44 && LA23_1<=63)) ) {
+                if ( (LA23_1==EOF||LA23_1==13||(LA23_1>=19 && LA23_1<=20)||(LA23_1>=22 && LA23_1<=24)||LA23_1==26||LA23_1==28||(LA23_1>=33 && LA23_1<=63)) ) {
                     alt23=2;
                 }
+                else if ( (LA23_1==32) ) {
+                    alt23=1;
+                }
                 else {
                     NoViableAltException nvae =
                         new NoViableAltException("", 23, 1, input);
@@ -4747,7 +4747,7 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
 
 
     // $ANTLR start "ruleDoubleLiteralRule"
-    // InternalEvolutionaryAlgorithmLanguage.g:1731:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalEvolutionaryAlgorithmLanguage.g:1731:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleDoubleLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -4760,11 +4760,11 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
         	enterRule();
 
         try {
-            // InternalEvolutionaryAlgorithmLanguage.g:1737:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:1738:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:1737:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:1738:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalEvolutionaryAlgorithmLanguage.g:1738:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:1739:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:1738:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalEvolutionaryAlgorithmLanguage.g:1739:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalEvolutionaryAlgorithmLanguage.g:1739:3: ( (lv_literal_0_0= ruleDOUBLE ) )
             // InternalEvolutionaryAlgorithmLanguage.g:1740:4: (lv_literal_0_0= ruleDOUBLE )
@@ -4797,35 +4797,46 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
 
             }
 
-            // InternalEvolutionaryAlgorithmLanguage.g:1758:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:1759:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalEvolutionaryAlgorithmLanguage.g:1759:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalEvolutionaryAlgorithmLanguage.g:1760:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalEvolutionaryAlgorithmLanguage.g:1758:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA24_0>=44 && LA24_0<=63)) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // InternalEvolutionaryAlgorithmLanguage.g:1759:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalEvolutionaryAlgorithmLanguage.g:1759:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalEvolutionaryAlgorithmLanguage.g:1760:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -4887,7 +4898,7 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
 
 
     // $ANTLR start "ruleIntegerLiteralRule"
-    // InternalEvolutionaryAlgorithmLanguage.g:1788:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalEvolutionaryAlgorithmLanguage.g:1788:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleIntegerLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -4899,11 +4910,11 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
         	enterRule();
 
         try {
-            // InternalEvolutionaryAlgorithmLanguage.g:1794:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:1795:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:1794:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:1795:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalEvolutionaryAlgorithmLanguage.g:1795:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:1796:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalEvolutionaryAlgorithmLanguage.g:1795:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalEvolutionaryAlgorithmLanguage.g:1796:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalEvolutionaryAlgorithmLanguage.g:1796:3: ( (lv_literal_0_0= RULE_INT ) )
             // InternalEvolutionaryAlgorithmLanguage.g:1797:4: (lv_literal_0_0= RULE_INT )
@@ -4931,35 +4942,46 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
 
             }
 
-            // InternalEvolutionaryAlgorithmLanguage.g:1814:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalEvolutionaryAlgorithmLanguage.g:1815:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalEvolutionaryAlgorithmLanguage.g:1815:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalEvolutionaryAlgorithmLanguage.g:1816:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalEvolutionaryAlgorithmLanguage.g:1814:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA25_0>=44 && LA25_0<=63)) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // InternalEvolutionaryAlgorithmLanguage.g:1815:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalEvolutionaryAlgorithmLanguage.g:1815:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalEvolutionaryAlgorithmLanguage.g:1816:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -5145,22 +5167,22 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
             }
 
             // InternalEvolutionaryAlgorithmLanguage.g:1894:3: ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            int alt26=2;
+            int LA26_0 = input.LA(1);
 
-            if ( (LA24_0==30) ) {
-                alt24=1;
+            if ( (LA26_0==30) ) {
+                alt26=1;
             }
-            else if ( (LA24_0==31) ) {
-                alt24=2;
+            else if ( (LA26_0==31) ) {
+                alt26=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt26) {
                 case 1 :
                     // InternalEvolutionaryAlgorithmLanguage.g:1895:4: ( (lv_value_1_0= 'true' ) )
                     {
@@ -5276,22 +5298,22 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
             // InternalEvolutionaryAlgorithmLanguage.g:1933:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
             {
             // InternalEvolutionaryAlgorithmLanguage.g:1933:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
-            int alt25=2;
-            int LA25_0 = input.LA(1);
+            int alt27=2;
+            int LA27_0 = input.LA(1);
 
-            if ( (LA25_0==RULE_QUOTED_ID) ) {
-                alt25=1;
+            if ( (LA27_0==RULE_QUOTED_ID) ) {
+                alt27=1;
             }
-            else if ( (LA25_0==RULE_ID) ) {
-                alt25=2;
+            else if ( (LA27_0==RULE_ID) ) {
+                alt27=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
+                    new NoViableAltException("", 27, 0, input);
 
                 throw nvae;
             }
-            switch (alt25) {
+            switch (alt27) {
                 case 1 :
                     // InternalEvolutionaryAlgorithmLanguage.g:1934:3: this_QUOTED_ID_0= RULE_QUOTED_ID
                     {
@@ -5456,46 +5478,46 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
             // InternalEvolutionaryAlgorithmLanguage.g:1998:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
             {
             // InternalEvolutionaryAlgorithmLanguage.g:1998:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
-            int alt26=6;
+            int alt28=6;
             switch ( input.LA(1) ) {
             case 33:
                 {
-                alt26=1;
+                alt28=1;
                 }
                 break;
             case 34:
                 {
-                alt26=2;
+                alt28=2;
                 }
                 break;
             case 35:
                 {
-                alt26=3;
+                alt28=3;
                 }
                 break;
             case 36:
                 {
-                alt26=4;
+                alt28=4;
                 }
                 break;
             case 37:
                 {
-                alt26=5;
+                alt28=5;
                 }
                 break;
             case 38:
                 {
-                alt26=6;
+                alt28=6;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 26, 0, input);
+                    new NoViableAltException("", 28, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt26) {
+            switch (alt28) {
                 case 1 :
                     // InternalEvolutionaryAlgorithmLanguage.g:1999:3: (enumLiteral_0= '>=' )
                     {
@@ -5636,22 +5658,22 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
             // InternalEvolutionaryAlgorithmLanguage.g:2057:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
             {
             // InternalEvolutionaryAlgorithmLanguage.g:2057:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
-            int alt27=2;
-            int LA27_0 = input.LA(1);
+            int alt29=2;
+            int LA29_0 = input.LA(1);
 
-            if ( (LA27_0==39) ) {
-                alt27=1;
+            if ( (LA29_0==39) ) {
+                alt29=1;
             }
-            else if ( (LA27_0==40) ) {
-                alt27=2;
+            else if ( (LA29_0==40) ) {
+                alt29=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 27, 0, input);
+                    new NoViableAltException("", 29, 0, input);
 
                 throw nvae;
             }
-            switch (alt27) {
+            switch (alt29) {
                 case 1 :
                     // InternalEvolutionaryAlgorithmLanguage.g:2058:3: (enumLiteral_0= '+' )
                     {
@@ -5725,31 +5747,31 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
             // InternalEvolutionaryAlgorithmLanguage.g:2084:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
             {
             // InternalEvolutionaryAlgorithmLanguage.g:2084:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
-            int alt28=3;
+            int alt30=3;
             switch ( input.LA(1) ) {
             case 41:
                 {
-                alt28=1;
+                alt30=1;
                 }
                 break;
             case 42:
                 {
-                alt28=2;
+                alt30=2;
                 }
                 break;
             case 43:
                 {
-                alt28=3;
+                alt30=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 28, 0, input);
+                    new NoViableAltException("", 30, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt28) {
+            switch (alt30) {
                 case 1 :
                     // InternalEvolutionaryAlgorithmLanguage.g:2085:3: (enumLiteral_0= '*' )
                     {
@@ -5857,116 +5879,116 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
             // InternalEvolutionaryAlgorithmLanguage.g:2119:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
             {
             // InternalEvolutionaryAlgorithmLanguage.g:2119:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
-            int alt29=20;
+            int alt31=20;
             switch ( input.LA(1) ) {
             case 44:
                 {
-                alt29=1;
+                alt31=1;
                 }
                 break;
             case 45:
                 {
-                alt29=2;
+                alt31=2;
                 }
                 break;
             case 46:
                 {
-                alt29=3;
+                alt31=3;
                 }
                 break;
             case 47:
                 {
-                alt29=4;
+                alt31=4;
                 }
                 break;
             case 48:
                 {
-                alt29=5;
+                alt31=5;
                 }
                 break;
             case 49:
                 {
-                alt29=6;
+                alt31=6;
                 }
                 break;
             case 50:
                 {
-                alt29=7;
+                alt31=7;
                 }
                 break;
             case 51:
                 {
-                alt29=8;
+                alt31=8;
                 }
                 break;
             case 52:
                 {
-                alt29=9;
+                alt31=9;
                 }
                 break;
             case 53:
                 {
-                alt29=10;
+                alt31=10;
                 }
                 break;
             case 54:
                 {
-                alt29=11;
+                alt31=11;
                 }
                 break;
             case 55:
                 {
-                alt29=12;
+                alt31=12;
                 }
                 break;
             case 56:
                 {
-                alt29=13;
+                alt31=13;
                 }
                 break;
             case 57:
                 {
-                alt29=14;
+                alt31=14;
                 }
                 break;
             case 58:
                 {
-                alt29=15;
+                alt31=15;
                 }
                 break;
             case 59:
                 {
-                alt29=16;
+                alt31=16;
                 }
                 break;
             case 60:
                 {
-                alt29=17;
+                alt31=17;
                 }
                 break;
             case 61:
                 {
-                alt29=18;
+                alt31=18;
                 }
                 break;
             case 62:
                 {
-                alt29=19;
+                alt31=19;
                 }
                 break;
             case 63:
                 {
-                alt29=20;
+                alt31=20;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 29, 0, input);
+                    new NoViableAltException("", 31, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt29) {
+            switch (alt31) {
                 case 1 :
                     // InternalEvolutionaryAlgorithmLanguage.g:2120:3: (enumLiteral_0= 'Y' )
                     {
@@ -6360,7 +6382,7 @@ public class InternalEvolutionaryAlgorithmLanguageParser extends AbstractInterna
     public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000008000000L});
     public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x00000180FA2400F0L});
     public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000010080000L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0xFFFFF00000000000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0xFFFFF00000000002L});
     public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000100000000L});
     public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000040L});
 
diff --git a/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/services/EvolutionaryAlgorithmLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/services/EvolutionaryAlgorithmLanguageGrammarAccess.java
index 85b4f073cd1e1fbeee9745342912eb6d5919965a..47abc1d022c782e903279da3356a03a8ee03deda 100644
--- a/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/services/EvolutionaryAlgorithmLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.eal.dsl/src-gen/de/evoal/languages/model/eal/dsl/services/EvolutionaryAlgorithmLanguageGrammarAccess.java
@@ -638,7 +638,7 @@ public class EvolutionaryAlgorithmLanguageGrammarAccess extends AbstractElementF
 	}
 	
 	//DoubleLiteralRule returns DoubleLiteral :
-	//    literal = DOUBLE factor = FactorRule
+	//    literal = DOUBLE (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.DoubleLiteralRuleElements getDoubleLiteralRuleAccess() {
 		return gaExpressionLanguage.getDoubleLiteralRuleAccess();
@@ -649,7 +649,7 @@ public class EvolutionaryAlgorithmLanguageGrammarAccess extends AbstractElementF
 	}
 	
 	//IntegerLiteralRule returns IntegerLiteral:
-	//    literal = INT factor = FactorRule
+	//    literal = INT (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.IntegerLiteralRuleElements getIntegerLiteralRuleAccess() {
 		return gaExpressionLanguage.getIntegerLiteralRuleAccess();
diff --git a/src/languages/de.evoal.languages.model.el.dsl.ide/src-gen/de/evoal/languages/model/el/dsl/ide/contentassist/antlr/internal/InternalExpressionLanguage.g b/src/languages/de.evoal.languages.model.el.dsl.ide/src-gen/de/evoal/languages/model/el/dsl/ide/contentassist/antlr/internal/InternalExpressionLanguage.g
index 398b933a8944ce526529a87195ca04824b933ad3..5e9a21dfae0d7d7aa7e6f349ec021cdc2321167d 100644
--- a/src/languages/de.evoal.languages.model.el.dsl.ide/src-gen/de/evoal/languages/model/el/dsl/ide/contentassist/antlr/internal/InternalExpressionLanguage.g
+++ b/src/languages/de.evoal.languages.model.el.dsl.ide/src-gen/de/evoal/languages/model/el/dsl/ide/contentassist/antlr/internal/InternalExpressionLanguage.g
@@ -2327,7 +2327,7 @@ rule__DoubleLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__DoubleLiteralRule__FactorAssignment_1)
+	(rule__DoubleLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
@@ -2381,7 +2381,7 @@ rule__IntegerLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__IntegerLiteralRule__FactorAssignment_1)
+	(rule__IntegerLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
diff --git a/src/languages/de.evoal.languages.model.el.dsl.ide/src-gen/de/evoal/languages/model/el/dsl/ide/contentassist/antlr/internal/InternalExpressionLanguageParser.java b/src/languages/de.evoal.languages.model.el.dsl.ide/src-gen/de/evoal/languages/model/el/dsl/ide/contentassist/antlr/internal/InternalExpressionLanguageParser.java
index 36f7d59f3c723f501ecf83bfb164546b4de3e100..795a6a8c95b4b79ef54e637484fc8c456cf6b9d2 100644
--- a/src/languages/de.evoal.languages.model.el.dsl.ide/src-gen/de/evoal/languages/model/el/dsl/ide/contentassist/antlr/internal/InternalExpressionLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.el.dsl.ide/src-gen/de/evoal/languages/model/el/dsl/ide/contentassist/antlr/internal/InternalExpressionLanguageParser.java
@@ -2322,12 +2322,12 @@ public class InternalExpressionLanguageParser extends AbstractInternalContentAss
             if ( (LA3_0==RULE_INT) ) {
                 int LA3_1 = input.LA(2);
 
-                if ( ((LA3_1>=24 && LA3_1<=43)) ) {
-                    alt3=2;
-                }
-                else if ( (LA3_1==53) ) {
+                if ( (LA3_1==53) ) {
                     alt3=1;
                 }
+                else if ( (LA3_1==EOF||(LA3_1>=13 && LA3_1<=47)||(LA3_1>=49 && LA3_1<=50)) ) {
+                    alt3=2;
+                }
                 else {
                     NoViableAltException nvae =
                         new NoViableAltException("", 3, 1, input);
@@ -7471,27 +7471,38 @@ public class InternalExpressionLanguageParser extends AbstractInternalContentAss
 
 
     // $ANTLR start "rule__DoubleLiteralRule__Group__1__Impl"
-    // InternalExpressionLanguage.g:2323:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalExpressionLanguage.g:2323:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__DoubleLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalExpressionLanguage.g:2327:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) )
-            // InternalExpressionLanguage.g:2328:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
+            // InternalExpressionLanguage.g:2327:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) )
+            // InternalExpressionLanguage.g:2328:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalExpressionLanguage.g:2328:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
-            // InternalExpressionLanguage.g:2329:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
+            // InternalExpressionLanguage.g:2328:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
+            // InternalExpressionLanguage.g:2329:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalExpressionLanguage.g:2330:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
-            // InternalExpressionLanguage.g:2330:3: rule__DoubleLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__DoubleLiteralRule__FactorAssignment_1();
+            // InternalExpressionLanguage.g:2330:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( ((LA20_0>=24 && LA20_0<=43)) ) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // InternalExpressionLanguage.g:2330:3: rule__DoubleLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoubleLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
-            state._fsp--;
 
+                    }
+                    break;
 
             }
 
@@ -7636,28 +7647,39 @@ public class InternalExpressionLanguageParser extends AbstractInternalContentAss
 
 
     // $ANTLR start "rule__IntegerLiteralRule__Group__1__Impl"
-    // InternalExpressionLanguage.g:2377:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalExpressionLanguage.g:2377:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__IntegerLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalExpressionLanguage.g:2381:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) )
-            // InternalExpressionLanguage.g:2382:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
+            // InternalExpressionLanguage.g:2381:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) )
+            // InternalExpressionLanguage.g:2382:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalExpressionLanguage.g:2382:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
-            // InternalExpressionLanguage.g:2383:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
+            // InternalExpressionLanguage.g:2382:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
+            // InternalExpressionLanguage.g:2383:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalExpressionLanguage.g:2384:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
-            // InternalExpressionLanguage.g:2384:3: rule__IntegerLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__IntegerLiteralRule__FactorAssignment_1();
+            // InternalExpressionLanguage.g:2384:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
 
-            state._fsp--;
+            if ( ((LA21_0>=24 && LA21_0<=43)) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // InternalExpressionLanguage.g:2384:3: rule__IntegerLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__IntegerLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
              after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
diff --git a/src/languages/de.evoal.languages.model.el.dsl.ui/src/de/evoal/languages/model/el/dsl/ui/contentassist/ExpressionLanguageProposalProvider.java b/src/languages/de.evoal.languages.model.el.dsl.ui/src/de/evoal/languages/model/el/dsl/ui/contentassist/ExpressionLanguageProposalProvider.java
index 892cf4a8d46fdfc60b9e092bfd7150fa5f2de0bb..59d2add7537907ffffa3a35090577eecd406f934 100644
--- a/src/languages/de.evoal.languages.model.el.dsl.ui/src/de/evoal/languages/model/el/dsl/ui/contentassist/ExpressionLanguageProposalProvider.java
+++ b/src/languages/de.evoal.languages.model.el.dsl.ui/src/de/evoal/languages/model/el/dsl/ui/contentassist/ExpressionLanguageProposalProvider.java
@@ -4,25 +4,9 @@
  */
 package de.evoal.languages.model.el.dsl.ui.contentassist;
 
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.resource.FontDescriptor;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.jface.viewers.StyledString;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.xtext.Assignment;
 import org.eclipse.xtext.Keyword;
-import org.eclipse.xtext.RuleCall;
-import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
-import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
-import org.eclipse.xtext.ui.label.StylerFactory;
 
-import com.google.inject.Inject;
-
-/*
- * 		StyledString message = new StyledString();
-		message.append("µ - micro");
-		acceptor.accept(createCompletionProposal("µ", message, null, context));
- */
 /**
  * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#content-assist
  * on how to customize the content assistant.
@@ -31,7 +15,7 @@ public class ExpressionLanguageProposalProvider extends AbstractExpressionLangua
 
 
 	@Override
-	protected StyledString getKeywordDisplayString(Keyword keyword) {
+	protected StyledString getKeywordDisplayString(final Keyword keyword) {
 		switch (keyword.getValue()) {
 		case "Y":
 			return new StyledString("Y").append(" — Yotta (10e24)", StyledString.DECORATIONS_STYLER);
@@ -72,7 +56,7 @@ public class ExpressionLanguageProposalProvider extends AbstractExpressionLangua
 		case "z":
 			return new StyledString("z").append(" — zepto (10e-21)", StyledString.DECORATIONS_STYLER);
 		case "y":
-			return new StyledString("y — yocto").append(" (10e-24)", StyledString.DECORATIONS_STYLER);
+			return new StyledString("y").append(" — yocto (10e-24)", StyledString.DECORATIONS_STYLER);
 		}
 		
 		return super.getKeywordDisplayString(keyword);
diff --git a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/ExpressionLanguage.xtextbin b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/ExpressionLanguage.xtextbin
index e4899a7327bb9fbd5cafd13c02cff8a44e06fc30..e3af95d25d32c2c96cc6a4651a117db26adda981 100644
Binary files a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/ExpressionLanguage.xtextbin and b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/ExpressionLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/parser/antlr/internal/InternalExpressionLanguage.g b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/parser/antlr/internal/InternalExpressionLanguage.g
index 76d58e0bd9f4bb0769357ee9186eb0e119565e61..c7e0988f3fe1632da7155ff58a491ce4947be76a 100644
--- a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/parser/antlr/internal/InternalExpressionLanguage.g
+++ b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/parser/antlr/internal/InternalExpressionLanguage.g
@@ -1104,7 +1104,7 @@ ruleDoubleLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
@@ -1160,7 +1160,7 @@ ruleIntegerLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
diff --git a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/parser/antlr/internal/InternalExpressionLanguageParser.java b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/parser/antlr/internal/InternalExpressionLanguageParser.java
index 889eff53b38df34e30daaff430ecbd07196b4177..c3b01ca12c9ceee35d75e640069461eed53b8caa 100644
--- a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/parser/antlr/internal/InternalExpressionLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/parser/antlr/internal/InternalExpressionLanguageParser.java
@@ -2788,7 +2788,7 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
             if ( (LA14_0==RULE_INT) ) {
                 int LA14_1 = input.LA(2);
 
-                if ( ((LA14_1>=36 && LA14_1<=55)) ) {
+                if ( (LA14_1==EOF||(LA14_1>=12 && LA14_1<=14)||LA14_1==16||(LA14_1>=18 && LA14_1<=19)||(LA14_1>=25 && LA14_1<=55)) ) {
                     alt14=2;
                 }
                 else if ( (LA14_1==24) ) {
@@ -2903,7 +2903,7 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
 
 
     // $ANTLR start "ruleDoubleLiteralRule"
-    // InternalExpressionLanguage.g:1062:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalExpressionLanguage.g:1062:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleDoubleLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -2916,11 +2916,11 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
         	enterRule();
 
         try {
-            // InternalExpressionLanguage.g:1068:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalExpressionLanguage.g:1069:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalExpressionLanguage.g:1068:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalExpressionLanguage.g:1069:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalExpressionLanguage.g:1069:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalExpressionLanguage.g:1070:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalExpressionLanguage.g:1069:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalExpressionLanguage.g:1070:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalExpressionLanguage.g:1070:3: ( (lv_literal_0_0= ruleDOUBLE ) )
             // InternalExpressionLanguage.g:1071:4: (lv_literal_0_0= ruleDOUBLE )
@@ -2953,34 +2953,45 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
 
             }
 
-            // InternalExpressionLanguage.g:1089:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalExpressionLanguage.g:1090:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalExpressionLanguage.g:1090:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalExpressionLanguage.g:1091:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalExpressionLanguage.g:1089:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA15_0>=36 && LA15_0<=55)) ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // InternalExpressionLanguage.g:1090:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalExpressionLanguage.g:1090:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalExpressionLanguage.g:1091:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
+
 
+                    }
+                    break;
 
             }
 
@@ -3043,7 +3054,7 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
 
 
     // $ANTLR start "ruleIntegerLiteralRule"
-    // InternalExpressionLanguage.g:1119:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalExpressionLanguage.g:1119:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleIntegerLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -3055,11 +3066,11 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
         	enterRule();
 
         try {
-            // InternalExpressionLanguage.g:1125:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalExpressionLanguage.g:1126:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalExpressionLanguage.g:1125:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalExpressionLanguage.g:1126:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalExpressionLanguage.g:1126:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalExpressionLanguage.g:1127:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalExpressionLanguage.g:1126:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalExpressionLanguage.g:1127:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalExpressionLanguage.g:1127:3: ( (lv_literal_0_0= RULE_INT ) )
             // InternalExpressionLanguage.g:1128:4: (lv_literal_0_0= RULE_INT )
@@ -3087,35 +3098,46 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
 
             }
 
-            // InternalExpressionLanguage.g:1145:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalExpressionLanguage.g:1146:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalExpressionLanguage.g:1146:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalExpressionLanguage.g:1147:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalExpressionLanguage.g:1145:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA16_0>=36 && LA16_0<=55)) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // InternalExpressionLanguage.g:1146:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalExpressionLanguage.g:1146:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalExpressionLanguage.g:1147:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -3301,22 +3323,22 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
             }
 
             // InternalExpressionLanguage.g:1225:3: ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
-            int alt15=2;
-            int LA15_0 = input.LA(1);
+            int alt17=2;
+            int LA17_0 = input.LA(1);
 
-            if ( (LA15_0==22) ) {
-                alt15=1;
+            if ( (LA17_0==22) ) {
+                alt17=1;
             }
-            else if ( (LA15_0==23) ) {
-                alt15=2;
+            else if ( (LA17_0==23) ) {
+                alt17=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 15, 0, input);
+                    new NoViableAltException("", 17, 0, input);
 
                 throw nvae;
             }
-            switch (alt15) {
+            switch (alt17) {
                 case 1 :
                     // InternalExpressionLanguage.g:1226:4: ( (lv_value_1_0= 'true' ) )
                     {
@@ -3496,46 +3518,46 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
             // InternalExpressionLanguage.g:1295:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
             {
             // InternalExpressionLanguage.g:1295:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
-            int alt16=6;
+            int alt18=6;
             switch ( input.LA(1) ) {
             case 25:
                 {
-                alt16=1;
+                alt18=1;
                 }
                 break;
             case 26:
                 {
-                alt16=2;
+                alt18=2;
                 }
                 break;
             case 27:
                 {
-                alt16=3;
+                alt18=3;
                 }
                 break;
             case 28:
                 {
-                alt16=4;
+                alt18=4;
                 }
                 break;
             case 29:
                 {
-                alt16=5;
+                alt18=5;
                 }
                 break;
             case 30:
                 {
-                alt16=6;
+                alt18=6;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 16, 0, input);
+                    new NoViableAltException("", 18, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt16) {
+            switch (alt18) {
                 case 1 :
                     // InternalExpressionLanguage.g:1296:3: (enumLiteral_0= '>=' )
                     {
@@ -3676,22 +3698,22 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
             // InternalExpressionLanguage.g:1354:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
             {
             // InternalExpressionLanguage.g:1354:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
-            int alt17=2;
-            int LA17_0 = input.LA(1);
+            int alt19=2;
+            int LA19_0 = input.LA(1);
 
-            if ( (LA17_0==31) ) {
-                alt17=1;
+            if ( (LA19_0==31) ) {
+                alt19=1;
             }
-            else if ( (LA17_0==32) ) {
-                alt17=2;
+            else if ( (LA19_0==32) ) {
+                alt19=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 17, 0, input);
+                    new NoViableAltException("", 19, 0, input);
 
                 throw nvae;
             }
-            switch (alt17) {
+            switch (alt19) {
                 case 1 :
                     // InternalExpressionLanguage.g:1355:3: (enumLiteral_0= '+' )
                     {
@@ -3765,31 +3787,31 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
             // InternalExpressionLanguage.g:1381:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
             {
             // InternalExpressionLanguage.g:1381:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
-            int alt18=3;
+            int alt20=3;
             switch ( input.LA(1) ) {
             case 33:
                 {
-                alt18=1;
+                alt20=1;
                 }
                 break;
             case 34:
                 {
-                alt18=2;
+                alt20=2;
                 }
                 break;
             case 35:
                 {
-                alt18=3;
+                alt20=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 18, 0, input);
+                    new NoViableAltException("", 20, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt18) {
+            switch (alt20) {
                 case 1 :
                     // InternalExpressionLanguage.g:1382:3: (enumLiteral_0= '*' )
                     {
@@ -3897,116 +3919,116 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
             // InternalExpressionLanguage.g:1416:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
             {
             // InternalExpressionLanguage.g:1416:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
-            int alt19=20;
+            int alt21=20;
             switch ( input.LA(1) ) {
             case 36:
                 {
-                alt19=1;
+                alt21=1;
                 }
                 break;
             case 37:
                 {
-                alt19=2;
+                alt21=2;
                 }
                 break;
             case 38:
                 {
-                alt19=3;
+                alt21=3;
                 }
                 break;
             case 39:
                 {
-                alt19=4;
+                alt21=4;
                 }
                 break;
             case 40:
                 {
-                alt19=5;
+                alt21=5;
                 }
                 break;
             case 41:
                 {
-                alt19=6;
+                alt21=6;
                 }
                 break;
             case 42:
                 {
-                alt19=7;
+                alt21=7;
                 }
                 break;
             case 43:
                 {
-                alt19=8;
+                alt21=8;
                 }
                 break;
             case 44:
                 {
-                alt19=9;
+                alt21=9;
                 }
                 break;
             case 45:
                 {
-                alt19=10;
+                alt21=10;
                 }
                 break;
             case 46:
                 {
-                alt19=11;
+                alt21=11;
                 }
                 break;
             case 47:
                 {
-                alt19=12;
+                alt21=12;
                 }
                 break;
             case 48:
                 {
-                alt19=13;
+                alt21=13;
                 }
                 break;
             case 49:
                 {
-                alt19=14;
+                alt21=14;
                 }
                 break;
             case 50:
                 {
-                alt19=15;
+                alt21=15;
                 }
                 break;
             case 51:
                 {
-                alt19=16;
+                alt21=16;
                 }
                 break;
             case 52:
                 {
-                alt19=17;
+                alt21=17;
                 }
                 break;
             case 53:
                 {
-                alt19=18;
+                alt21=18;
                 }
                 break;
             case 54:
                 {
-                alt19=19;
+                alt21=19;
                 }
                 break;
             case 55:
                 {
-                alt19=20;
+                alt21=20;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 19, 0, input);
+                    new NoViableAltException("", 21, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt19) {
+            switch (alt21) {
                 case 1 :
                     // InternalExpressionLanguage.g:1417:3: (enumLiteral_0= 'Y' )
                     {
@@ -4387,7 +4409,7 @@ public class InternalExpressionLanguageParser extends AbstractInternalAntlrParse
     public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000020000L});
     public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000180F68030L});
     public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x00000000000C0000L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x00FFFFF000000000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x00FFFFF000000002L});
     public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000001000000L});
     public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000010L});
 
diff --git a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/serializer/ExpressionLanguageSemanticSequencer.java b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/serializer/ExpressionLanguageSemanticSequencer.java
index b84bb72721a31f31e880503d23372242dca0eb88..9443d7c1023ca63ae5353ea4a4de6f2e3a4a2d92 100644
--- a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/serializer/ExpressionLanguageSemanticSequencer.java
+++ b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/serializer/ExpressionLanguageSemanticSequencer.java
@@ -180,19 +180,10 @@ public class ExpressionLanguageSemanticSequencer extends AbstractDelegatingSeman
 	 *     DoubleLiteralRule returns DoubleLiteral
 	 *
 	 * Constraint:
-	 *     (literal=DOUBLE factor=FactorRule)
+	 *     (literal=DOUBLE factor=FactorRule?)
 	 */
 	protected void sequence_DoubleLiteralRule(ISerializationContext context, DoubleLiteral semanticObject) {
-		if (errorAcceptor != null) {
-			if (transientValues.isValueTransient(semanticObject, ELPackage.Literals.DOUBLE_LITERAL__LITERAL) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ELPackage.Literals.DOUBLE_LITERAL__LITERAL));
-			if (transientValues.isValueTransient(semanticObject, ELPackage.Literals.NUMBER_LITERAL__FACTOR) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ELPackage.Literals.NUMBER_LITERAL__FACTOR));
-		}
-		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getDoubleLiteralRuleAccess().getLiteralDOUBLEParserRuleCall_0_0(), semanticObject.getLiteral());
-		feeder.accept(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0(), semanticObject.getFactor());
-		feeder.finish();
+		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
@@ -216,19 +207,10 @@ public class ExpressionLanguageSemanticSequencer extends AbstractDelegatingSeman
 	 *     IntegerLiteralRule returns IntegerLiteral
 	 *
 	 * Constraint:
-	 *     (literal=INT factor=FactorRule)
+	 *     (literal=INT factor=FactorRule?)
 	 */
 	protected void sequence_IntegerLiteralRule(ISerializationContext context, IntegerLiteral semanticObject) {
-		if (errorAcceptor != null) {
-			if (transientValues.isValueTransient(semanticObject, ELPackage.Literals.INTEGER_LITERAL__LITERAL) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ELPackage.Literals.INTEGER_LITERAL__LITERAL));
-			if (transientValues.isValueTransient(semanticObject, ELPackage.Literals.NUMBER_LITERAL__FACTOR) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ELPackage.Literals.NUMBER_LITERAL__FACTOR));
-		}
-		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getIntegerLiteralRuleAccess().getLiteralINTTerminalRuleCall_0_0(), semanticObject.getLiteral());
-		feeder.accept(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0(), semanticObject.getFactor());
-		feeder.finish();
+		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
diff --git a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/services/ExpressionLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/services/ExpressionLanguageGrammarAccess.java
index 5924da17d6cbcff5772885503c7c75160dc8c7d3..95e362dbaa50e5b2fe3228176fdb2fceeafd7553 100644
--- a/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/services/ExpressionLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.el.dsl/src-gen/de/evoal/languages/model/el/dsl/services/ExpressionLanguageGrammarAccess.java
@@ -582,11 +582,11 @@ public class ExpressionLanguageGrammarAccess extends AbstractElementFinder.Abstr
 		private final RuleCall cFactorFactorRuleEnumRuleCall_1_0 = (RuleCall)cFactorAssignment_1.eContents().get(0);
 		
 		//DoubleLiteralRule returns DoubleLiteral :
-		//    literal = DOUBLE factor = FactorRule
+		//    literal = DOUBLE (factor = FactorRule)?
 		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//literal = DOUBLE factor = FactorRule
+		//literal = DOUBLE (factor = FactorRule)?
 		public Group getGroup() { return cGroup; }
 		
 		//literal = DOUBLE
@@ -595,7 +595,7 @@ public class ExpressionLanguageGrammarAccess extends AbstractElementFinder.Abstr
 		//DOUBLE
 		public RuleCall getLiteralDOUBLEParserRuleCall_0_0() { return cLiteralDOUBLEParserRuleCall_0_0; }
 		
-		//factor = FactorRule
+		//(factor = FactorRule)?
 		public Assignment getFactorAssignment_1() { return cFactorAssignment_1; }
 		
 		//FactorRule
@@ -610,11 +610,11 @@ public class ExpressionLanguageGrammarAccess extends AbstractElementFinder.Abstr
 		private final RuleCall cFactorFactorRuleEnumRuleCall_1_0 = (RuleCall)cFactorAssignment_1.eContents().get(0);
 		
 		//IntegerLiteralRule returns IntegerLiteral:
-		//    literal = INT factor = FactorRule
+		//    literal = INT (factor = FactorRule)?
 		//;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//literal = INT factor = FactorRule
+		//literal = INT (factor = FactorRule)?
 		public Group getGroup() { return cGroup; }
 		
 		//literal = INT
@@ -623,7 +623,7 @@ public class ExpressionLanguageGrammarAccess extends AbstractElementFinder.Abstr
 		//INT
 		public RuleCall getLiteralINTTerminalRuleCall_0_0() { return cLiteralINTTerminalRuleCall_0_0; }
 		
-		//factor = FactorRule
+		//(factor = FactorRule)?
 		public Assignment getFactorAssignment_1() { return cFactorAssignment_1; }
 		
 		//FactorRule
@@ -1401,7 +1401,7 @@ public class ExpressionLanguageGrammarAccess extends AbstractElementFinder.Abstr
 	}
 	
 	//DoubleLiteralRule returns DoubleLiteral :
-	//    literal = DOUBLE factor = FactorRule
+	//    literal = DOUBLE (factor = FactorRule)?
 	//;
 	public DoubleLiteralRuleElements getDoubleLiteralRuleAccess() {
 		return pDoubleLiteralRule;
@@ -1412,7 +1412,7 @@ public class ExpressionLanguageGrammarAccess extends AbstractElementFinder.Abstr
 	}
 	
 	//IntegerLiteralRule returns IntegerLiteral:
-	//    literal = INT factor = FactorRule
+	//    literal = INT (factor = FactorRule)?
 	//;
 	public IntegerLiteralRuleElements getIntegerLiteralRuleAccess() {
 		return pIntegerLiteralRule;
diff --git a/src/languages/de.evoal.languages.model.el.dsl/src/de/evoal/languages/model/el/dsl/ExpressionLanguage.xtext b/src/languages/de.evoal.languages.model.el.dsl/src/de/evoal/languages/model/el/dsl/ExpressionLanguage.xtext
index 3bd257b78f5afd4286a8eb1c206af323fa3827e6..be16fe3b778a0568a2ea627893bdd551d09ca796 100644
--- a/src/languages/de.evoal.languages.model.el.dsl/src/de/evoal/languages/model/el/dsl/ExpressionLanguage.xtext
+++ b/src/languages/de.evoal.languages.model.el.dsl/src/de/evoal/languages/model/el/dsl/ExpressionLanguage.xtext
@@ -96,12 +96,12 @@ NumberLiteralRule returns NumberLiteral:
 ;
 
 DoubleLiteralRule returns DoubleLiteral :
-	literal = DOUBLE factor = FactorRule
+	literal = DOUBLE (factor = FactorRule)?
 ;
 
 
 IntegerLiteralRule returns IntegerLiteral:
-	literal = INT factor = FactorRule
+	literal = INT (factor = FactorRule)?
 ;
 
 StringLiteralRule returns StringLiteral:
diff --git a/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSL.g b/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSL.g
index 767b545117fdb74a91b86a902175d18eb32e38b4..8868ef2cdbe68d9e5dd565dc8ac9b838f9f70843 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSL.g
+++ b/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSL.g
@@ -5550,7 +5550,7 @@ rule__DoubleLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__DoubleLiteralRule__FactorAssignment_1)
+	(rule__DoubleLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
@@ -5604,7 +5604,7 @@ rule__IntegerLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__IntegerLiteralRule__FactorAssignment_1)
+	(rule__IntegerLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
diff --git a/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSLParser.java b/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSLParser.java
index 3445f2b41422557f2396317b5cbe775ea67dfbfa..f50c68043336124bacae0ce046a857676abbfa59 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSLParser.java
+++ b/src/languages/de.evoal.languages.model.generator.dsl.ide/src-gen/de/evoal/languages/model/generator/dsl/ide/contentassist/antlr/internal/InternalGeneratorDSLParser.java
@@ -4568,12 +4568,12 @@ public class InternalGeneratorDSLParser extends AbstractInternalContentAssistPar
             if ( (LA8_0==RULE_INT) ) {
                 int LA8_1 = input.LA(2);
 
-                if ( (LA8_1==77) ) {
-                    alt8=1;
-                }
-                else if ( ((LA8_1>=24 && LA8_1<=43)) ) {
+                if ( (LA8_1==EOF||(LA8_1>=13 && LA8_1<=43)||LA8_1==45||LA8_1==48||LA8_1==54||(LA8_1>=69 && LA8_1<=72)||LA8_1==74) ) {
                     alt8=2;
                 }
+                else if ( (LA8_1==77) ) {
+                    alt8=1;
+                }
                 else {
                     NoViableAltException nvae =
                         new NoViableAltException("", 8, 1, input);
@@ -17333,27 +17333,38 @@ public class InternalGeneratorDSLParser extends AbstractInternalContentAssistPar
 
 
     // $ANTLR start "rule__DoubleLiteralRule__Group__1__Impl"
-    // InternalGeneratorDSL.g:5546:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalGeneratorDSL.g:5546:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__DoubleLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalGeneratorDSL.g:5550:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) )
-            // InternalGeneratorDSL.g:5551:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
+            // InternalGeneratorDSL.g:5550:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) )
+            // InternalGeneratorDSL.g:5551:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalGeneratorDSL.g:5551:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
-            // InternalGeneratorDSL.g:5552:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
+            // InternalGeneratorDSL.g:5551:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
+            // InternalGeneratorDSL.g:5552:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalGeneratorDSL.g:5553:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
-            // InternalGeneratorDSL.g:5553:3: rule__DoubleLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__DoubleLiteralRule__FactorAssignment_1();
+            // InternalGeneratorDSL.g:5553:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( ((LA44_0>=24 && LA44_0<=43)) ) {
+                alt44=1;
+            }
+            switch (alt44) {
+                case 1 :
+                    // InternalGeneratorDSL.g:5553:3: rule__DoubleLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoubleLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
-            state._fsp--;
 
+                    }
+                    break;
 
             }
 
@@ -17498,28 +17509,39 @@ public class InternalGeneratorDSLParser extends AbstractInternalContentAssistPar
 
 
     // $ANTLR start "rule__IntegerLiteralRule__Group__1__Impl"
-    // InternalGeneratorDSL.g:5600:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalGeneratorDSL.g:5600:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__IntegerLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalGeneratorDSL.g:5604:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) )
-            // InternalGeneratorDSL.g:5605:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
+            // InternalGeneratorDSL.g:5604:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) )
+            // InternalGeneratorDSL.g:5605:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalGeneratorDSL.g:5605:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
-            // InternalGeneratorDSL.g:5606:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
+            // InternalGeneratorDSL.g:5605:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
+            // InternalGeneratorDSL.g:5606:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalGeneratorDSL.g:5607:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
-            // InternalGeneratorDSL.g:5607:3: rule__IntegerLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__IntegerLiteralRule__FactorAssignment_1();
+            // InternalGeneratorDSL.g:5607:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-            state._fsp--;
+            if ( ((LA45_0>=24 && LA45_0<=43)) ) {
+                alt45=1;
+            }
+            switch (alt45) {
+                case 1 :
+                    // InternalGeneratorDSL.g:5607:3: rule__IntegerLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__IntegerLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
              after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/GeneratorDSL.xtextbin b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/GeneratorDSL.xtextbin
index 24dad71beb448b458fb80bb5950823affb6ca2bb..9f6f94dbbd8afdd2c8fe74ffbc0e4a9f2e7120c6 100644
Binary files a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/GeneratorDSL.xtextbin and b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/GeneratorDSL.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSL.g b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSL.g
index fc634c7a857db3f0aae493ec87ab73294aa1f33c..07f6280d7aef9f3a6d094e802241ea2928102609 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSL.g
+++ b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSL.g
@@ -2474,7 +2474,7 @@ ruleDoubleLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
@@ -2530,7 +2530,7 @@ ruleIntegerLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSLParser.java b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSLParser.java
index adfe144f077b43b1e951435348bc25dc75550dce..867d7d795a054bd6cb56c9b5512e2e776d0acdf3 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSLParser.java
+++ b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/parser/antlr/internal/InternalGeneratorDSLParser.java
@@ -6412,12 +6412,12 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
             if ( (LA37_0==RULE_INT) ) {
                 int LA37_1 = input.LA(2);
 
-                if ( ((LA37_1>=60 && LA37_1<=79)) ) {
-                    alt37=2;
-                }
-                else if ( (LA37_1==48) ) {
+                if ( (LA37_1==48) ) {
                     alt37=1;
                 }
+                else if ( (LA37_1==EOF||LA37_1==13||LA37_1==16||LA37_1==21||(LA37_1>=37 && LA37_1<=39)||LA37_1==41||LA37_1==43||(LA37_1>=49 && LA37_1<=79)) ) {
+                    alt37=2;
+                }
                 else {
                     NoViableAltException nvae =
                         new NoViableAltException("", 37, 1, input);
@@ -6527,7 +6527,7 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
 
 
     // $ANTLR start "ruleDoubleLiteralRule"
-    // InternalGeneratorDSL.g:2432:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalGeneratorDSL.g:2432:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleDoubleLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -6540,11 +6540,11 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
         	enterRule();
 
         try {
-            // InternalGeneratorDSL.g:2438:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalGeneratorDSL.g:2439:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalGeneratorDSL.g:2438:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalGeneratorDSL.g:2439:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalGeneratorDSL.g:2439:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalGeneratorDSL.g:2440:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalGeneratorDSL.g:2439:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalGeneratorDSL.g:2440:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalGeneratorDSL.g:2440:3: ( (lv_literal_0_0= ruleDOUBLE ) )
             // InternalGeneratorDSL.g:2441:4: (lv_literal_0_0= ruleDOUBLE )
@@ -6577,35 +6577,46 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
 
             }
 
-            // InternalGeneratorDSL.g:2459:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalGeneratorDSL.g:2460:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalGeneratorDSL.g:2460:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalGeneratorDSL.g:2461:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalGeneratorDSL.g:2459:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt38=2;
+            int LA38_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA38_0>=60 && LA38_0<=79)) ) {
+                alt38=1;
+            }
+            switch (alt38) {
+                case 1 :
+                    // InternalGeneratorDSL.g:2460:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalGeneratorDSL.g:2460:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalGeneratorDSL.g:2461:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -6667,7 +6678,7 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
 
 
     // $ANTLR start "ruleIntegerLiteralRule"
-    // InternalGeneratorDSL.g:2489:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalGeneratorDSL.g:2489:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleIntegerLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -6679,11 +6690,11 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
         	enterRule();
 
         try {
-            // InternalGeneratorDSL.g:2495:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalGeneratorDSL.g:2496:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalGeneratorDSL.g:2495:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalGeneratorDSL.g:2496:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalGeneratorDSL.g:2496:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalGeneratorDSL.g:2497:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalGeneratorDSL.g:2496:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalGeneratorDSL.g:2497:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalGeneratorDSL.g:2497:3: ( (lv_literal_0_0= RULE_INT ) )
             // InternalGeneratorDSL.g:2498:4: (lv_literal_0_0= RULE_INT )
@@ -6711,35 +6722,46 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
 
             }
 
-            // InternalGeneratorDSL.g:2515:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalGeneratorDSL.g:2516:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalGeneratorDSL.g:2516:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalGeneratorDSL.g:2517:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalGeneratorDSL.g:2515:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA39_0>=60 && LA39_0<=79)) ) {
+                alt39=1;
+            }
+            switch (alt39) {
+                case 1 :
+                    // InternalGeneratorDSL.g:2516:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalGeneratorDSL.g:2516:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalGeneratorDSL.g:2517:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -6925,22 +6947,22 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
             }
 
             // InternalGeneratorDSL.g:2595:3: ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
-            int alt38=2;
-            int LA38_0 = input.LA(1);
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            if ( (LA38_0==46) ) {
-                alt38=1;
+            if ( (LA40_0==46) ) {
+                alt40=1;
             }
-            else if ( (LA38_0==47) ) {
-                alt38=2;
+            else if ( (LA40_0==47) ) {
+                alt40=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 38, 0, input);
+                    new NoViableAltException("", 40, 0, input);
 
                 throw nvae;
             }
-            switch (alt38) {
+            switch (alt40) {
                 case 1 :
                     // InternalGeneratorDSL.g:2596:4: ( (lv_value_1_0= 'true' ) )
                     {
@@ -7056,22 +7078,22 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
             // InternalGeneratorDSL.g:2634:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
             {
             // InternalGeneratorDSL.g:2634:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            int alt41=2;
+            int LA41_0 = input.LA(1);
 
-            if ( (LA39_0==RULE_QUOTED_ID) ) {
-                alt39=1;
+            if ( (LA41_0==RULE_QUOTED_ID) ) {
+                alt41=1;
             }
-            else if ( (LA39_0==RULE_ID) ) {
-                alt39=2;
+            else if ( (LA41_0==RULE_ID) ) {
+                alt41=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
-            switch (alt39) {
+            switch (alt41) {
                 case 1 :
                     // InternalGeneratorDSL.g:2635:3: this_QUOTED_ID_0= RULE_QUOTED_ID
                     {
@@ -7236,46 +7258,46 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
             // InternalGeneratorDSL.g:2699:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
             {
             // InternalGeneratorDSL.g:2699:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
-            int alt40=6;
+            int alt42=6;
             switch ( input.LA(1) ) {
             case 49:
                 {
-                alt40=1;
+                alt42=1;
                 }
                 break;
             case 50:
                 {
-                alt40=2;
+                alt42=2;
                 }
                 break;
             case 51:
                 {
-                alt40=3;
+                alt42=3;
                 }
                 break;
             case 52:
                 {
-                alt40=4;
+                alt42=4;
                 }
                 break;
             case 53:
                 {
-                alt40=5;
+                alt42=5;
                 }
                 break;
             case 54:
                 {
-                alt40=6;
+                alt42=6;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 40, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt40) {
+            switch (alt42) {
                 case 1 :
                     // InternalGeneratorDSL.g:2700:3: (enumLiteral_0= '>=' )
                     {
@@ -7416,22 +7438,22 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
             // InternalGeneratorDSL.g:2758:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
             {
             // InternalGeneratorDSL.g:2758:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
-            int alt41=2;
-            int LA41_0 = input.LA(1);
+            int alt43=2;
+            int LA43_0 = input.LA(1);
 
-            if ( (LA41_0==55) ) {
-                alt41=1;
+            if ( (LA43_0==55) ) {
+                alt43=1;
             }
-            else if ( (LA41_0==56) ) {
-                alt41=2;
+            else if ( (LA43_0==56) ) {
+                alt43=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
+                    new NoViableAltException("", 43, 0, input);
 
                 throw nvae;
             }
-            switch (alt41) {
+            switch (alt43) {
                 case 1 :
                     // InternalGeneratorDSL.g:2759:3: (enumLiteral_0= '+' )
                     {
@@ -7505,31 +7527,31 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
             // InternalGeneratorDSL.g:2785:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
             {
             // InternalGeneratorDSL.g:2785:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
-            int alt42=3;
+            int alt44=3;
             switch ( input.LA(1) ) {
             case 57:
                 {
-                alt42=1;
+                alt44=1;
                 }
                 break;
             case 58:
                 {
-                alt42=2;
+                alt44=2;
                 }
                 break;
             case 59:
                 {
-                alt42=3;
+                alt44=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
+                    new NoViableAltException("", 44, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt42) {
+            switch (alt44) {
                 case 1 :
                     // InternalGeneratorDSL.g:2786:3: (enumLiteral_0= '*' )
                     {
@@ -7637,116 +7659,116 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
             // InternalGeneratorDSL.g:2820:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
             {
             // InternalGeneratorDSL.g:2820:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
-            int alt43=20;
+            int alt45=20;
             switch ( input.LA(1) ) {
             case 60:
                 {
-                alt43=1;
+                alt45=1;
                 }
                 break;
             case 61:
                 {
-                alt43=2;
+                alt45=2;
                 }
                 break;
             case 62:
                 {
-                alt43=3;
+                alt45=3;
                 }
                 break;
             case 63:
                 {
-                alt43=4;
+                alt45=4;
                 }
                 break;
             case 64:
                 {
-                alt43=5;
+                alt45=5;
                 }
                 break;
             case 65:
                 {
-                alt43=6;
+                alt45=6;
                 }
                 break;
             case 66:
                 {
-                alt43=7;
+                alt45=7;
                 }
                 break;
             case 67:
                 {
-                alt43=8;
+                alt45=8;
                 }
                 break;
             case 68:
                 {
-                alt43=9;
+                alt45=9;
                 }
                 break;
             case 69:
                 {
-                alt43=10;
+                alt45=10;
                 }
                 break;
             case 70:
                 {
-                alt43=11;
+                alt45=11;
                 }
                 break;
             case 71:
                 {
-                alt43=12;
+                alt45=12;
                 }
                 break;
             case 72:
                 {
-                alt43=13;
+                alt45=13;
                 }
                 break;
             case 73:
                 {
-                alt43=14;
+                alt45=14;
                 }
                 break;
             case 74:
                 {
-                alt43=15;
+                alt45=15;
                 }
                 break;
             case 75:
                 {
-                alt43=16;
+                alt45=16;
                 }
                 break;
             case 76:
                 {
-                alt43=17;
+                alt45=17;
                 }
                 break;
             case 77:
                 {
-                alt43=18;
+                alt45=18;
                 }
                 break;
             case 78:
                 {
-                alt43=19;
+                alt45=19;
                 }
                 break;
             case 79:
                 {
-                alt43=20;
+                alt45=20;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 45, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt43) {
+            switch (alt45) {
                 case 1 :
                     // InternalGeneratorDSL.g:2821:3: (enumLiteral_0= 'Y' )
                     {
@@ -8162,7 +8184,7 @@ public class InternalGeneratorDSLParser extends AbstractInternalAntlrParser {
     public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000040000000000L});
     public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0180FD10000080F0L});
     public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000080000200000L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0xF000000000000000L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0xF000000000000002L,0x000000000000FFFFL});
     public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0001000000000000L});
 
 }
\ No newline at end of file
diff --git a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/services/GeneratorDSLGrammarAccess.java b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/services/GeneratorDSLGrammarAccess.java
index 022e1dbc6b1d66562ee64eca9b5c0efe708604f3..2e064b1fee7987e76182d2eaf8f1f082a433da99 100644
--- a/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/services/GeneratorDSLGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.generator.dsl/src-gen/de/evoal/languages/model/generator/dsl/services/GeneratorDSLGrammarAccess.java
@@ -1198,7 +1198,7 @@ public class GeneratorDSLGrammarAccess extends AbstractElementFinder.AbstractGra
 	}
 	
 	//DoubleLiteralRule returns DoubleLiteral :
-	//    literal = DOUBLE factor = FactorRule
+	//    literal = DOUBLE (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.DoubleLiteralRuleElements getDoubleLiteralRuleAccess() {
 		return gaExpressionLanguage.getDoubleLiteralRuleAccess();
@@ -1209,7 +1209,7 @@ public class GeneratorDSLGrammarAccess extends AbstractElementFinder.AbstractGra
 	}
 	
 	//IntegerLiteralRule returns IntegerLiteral:
-	//    literal = INT factor = FactorRule
+	//    literal = INT (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.IntegerLiteralRuleElements getIntegerLiteralRuleAccess() {
 		return gaExpressionLanguage.getIntegerLiteralRuleAccess();
diff --git a/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguage.g b/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguage.g
index 057a9bc6f7253e14d18f2ac9937dfeaec3729db0..69b68d25cec580693755e0334da147ab0df32c58 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguage.g
+++ b/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguage.g
@@ -3192,7 +3192,7 @@ rule__DoubleLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__DoubleLiteralRule__FactorAssignment_1)
+	(rule__DoubleLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
@@ -3246,7 +3246,7 @@ rule__IntegerLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__IntegerLiteralRule__FactorAssignment_1)
+	(rule__IntegerLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
diff --git a/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguageParser.java b/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguageParser.java
index b41e43d6ef807743b99d6d5173efc7fe912595b5..0a6945c8316cf14c7c07c8836cd2502176866173 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl.ide/src-gen/de/evoal/languages/model/instance/dsl/ide/contentassist/antlr/internal/InternalInstanceLanguageParser.java
@@ -3316,7 +3316,7 @@ public class InternalInstanceLanguageParser extends AbstractInternalContentAssis
                 if ( (LA5_1==60) ) {
                     alt5=1;
                 }
-                else if ( ((LA5_1>=24 && LA5_1<=43)) ) {
+                else if ( (LA5_1==EOF||(LA5_1>=13 && LA5_1<=43)||LA5_1==47||(LA5_1>=49 && LA5_1<=50)||(LA5_1>=52 && LA5_1<=55)||LA5_1==57) ) {
                     alt5=2;
                 }
                 else {
@@ -10156,28 +10156,39 @@ public class InternalInstanceLanguageParser extends AbstractInternalContentAssis
 
 
     // $ANTLR start "rule__DoubleLiteralRule__Group__1__Impl"
-    // InternalInstanceLanguage.g:3188:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalInstanceLanguage.g:3188:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__DoubleLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalInstanceLanguage.g:3192:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) )
-            // InternalInstanceLanguage.g:3193:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
+            // InternalInstanceLanguage.g:3192:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) )
+            // InternalInstanceLanguage.g:3193:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalInstanceLanguage.g:3193:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
-            // InternalInstanceLanguage.g:3194:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
+            // InternalInstanceLanguage.g:3193:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
+            // InternalInstanceLanguage.g:3194:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalInstanceLanguage.g:3195:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
-            // InternalInstanceLanguage.g:3195:3: rule__DoubleLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__DoubleLiteralRule__FactorAssignment_1();
+            // InternalInstanceLanguage.g:3195:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
+            int alt27=2;
+            int LA27_0 = input.LA(1);
 
-            state._fsp--;
+            if ( ((LA27_0>=24 && LA27_0<=43)) ) {
+                alt27=1;
+            }
+            switch (alt27) {
+                case 1 :
+                    // InternalInstanceLanguage.g:3195:3: rule__DoubleLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoubleLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
              after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
@@ -10321,28 +10332,39 @@ public class InternalInstanceLanguageParser extends AbstractInternalContentAssis
 
 
     // $ANTLR start "rule__IntegerLiteralRule__Group__1__Impl"
-    // InternalInstanceLanguage.g:3242:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalInstanceLanguage.g:3242:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__IntegerLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalInstanceLanguage.g:3246:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) )
-            // InternalInstanceLanguage.g:3247:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
+            // InternalInstanceLanguage.g:3246:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) )
+            // InternalInstanceLanguage.g:3247:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalInstanceLanguage.g:3247:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
-            // InternalInstanceLanguage.g:3248:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
+            // InternalInstanceLanguage.g:3247:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
+            // InternalInstanceLanguage.g:3248:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
             {
              before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
-            // InternalInstanceLanguage.g:3249:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
-            // InternalInstanceLanguage.g:3249:3: rule__IntegerLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__IntegerLiteralRule__FactorAssignment_1();
+            // InternalInstanceLanguage.g:3249:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
 
-            state._fsp--;
+            if ( ((LA28_0>=24 && LA28_0<=43)) ) {
+                alt28=1;
+            }
+            switch (alt28) {
+                case 1 :
+                    // InternalInstanceLanguage.g:3249:3: rule__IntegerLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__IntegerLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
 
 
+                    }
+                    break;
+
             }
 
              after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtextbin b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtextbin
index 56ebed24923fc40583644d9cd7d16cbf89e48027..aabe3e895d952ccdc93af2f85af110ea7ce3c9ff 100644
Binary files a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtextbin and b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/InstanceLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguage.g b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguage.g
index 977f96844ad7605be2dedc7999bbb1fc3bb6b18e..62fda817466d8dd3aaded8ace9518001e0ecad6c 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguage.g
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguage.g
@@ -1553,7 +1553,7 @@ ruleDoubleLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
@@ -1609,7 +1609,7 @@ ruleIntegerLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguageParser.java b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguageParser.java
index d704009518bd7427e474fcd892d2ab33b1d53189..b6032dd46ee159018dfdcd25b387ce54ac9a2d35 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/parser/antlr/internal/InternalInstanceLanguageParser.java
@@ -4055,12 +4055,12 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
             if ( (LA20_0==RULE_INT) ) {
                 int LA20_1 = input.LA(2);
 
-                if ( ((LA20_1>=43 && LA20_1<=62)) ) {
-                    alt20=2;
-                }
-                else if ( (LA20_1==31) ) {
+                if ( (LA20_1==31) ) {
                     alt20=1;
                 }
+                else if ( (LA20_1==EOF||LA20_1==15||(LA20_1>=17 && LA20_1<=18)||(LA20_1>=20 && LA20_1<=22)||LA20_1==24||LA20_1==26||(LA20_1>=32 && LA20_1<=62)) ) {
+                    alt20=2;
+                }
                 else {
                     NoViableAltException nvae =
                         new NoViableAltException("", 20, 1, input);
@@ -4170,7 +4170,7 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
 
 
     // $ANTLR start "ruleDoubleLiteralRule"
-    // InternalInstanceLanguage.g:1511:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalInstanceLanguage.g:1511:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleDoubleLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -4183,11 +4183,11 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
         	enterRule();
 
         try {
-            // InternalInstanceLanguage.g:1517:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalInstanceLanguage.g:1518:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalInstanceLanguage.g:1517:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalInstanceLanguage.g:1518:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalInstanceLanguage.g:1518:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalInstanceLanguage.g:1519:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalInstanceLanguage.g:1518:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalInstanceLanguage.g:1519:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalInstanceLanguage.g:1519:3: ( (lv_literal_0_0= ruleDOUBLE ) )
             // InternalInstanceLanguage.g:1520:4: (lv_literal_0_0= ruleDOUBLE )
@@ -4220,35 +4220,46 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
 
             }
 
-            // InternalInstanceLanguage.g:1538:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalInstanceLanguage.g:1539:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalInstanceLanguage.g:1539:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalInstanceLanguage.g:1540:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalInstanceLanguage.g:1538:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA21_0>=43 && LA21_0<=62)) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // InternalInstanceLanguage.g:1539:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalInstanceLanguage.g:1539:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalInstanceLanguage.g:1540:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -4310,7 +4321,7 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
 
 
     // $ANTLR start "ruleIntegerLiteralRule"
-    // InternalInstanceLanguage.g:1568:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalInstanceLanguage.g:1568:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleIntegerLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -4322,11 +4333,11 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
         	enterRule();
 
         try {
-            // InternalInstanceLanguage.g:1574:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalInstanceLanguage.g:1575:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalInstanceLanguage.g:1574:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalInstanceLanguage.g:1575:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalInstanceLanguage.g:1575:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalInstanceLanguage.g:1576:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalInstanceLanguage.g:1575:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalInstanceLanguage.g:1576:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalInstanceLanguage.g:1576:3: ( (lv_literal_0_0= RULE_INT ) )
             // InternalInstanceLanguage.g:1577:4: (lv_literal_0_0= RULE_INT )
@@ -4354,35 +4365,46 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
 
             }
 
-            // InternalInstanceLanguage.g:1594:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalInstanceLanguage.g:1595:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalInstanceLanguage.g:1595:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalInstanceLanguage.g:1596:5: lv_factor_1_0= ruleFactorRule
-            {
+            // InternalInstanceLanguage.g:1594:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt22=2;
+            int LA22_0 = input.LA(1);
 
-            					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-            				
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            if ( ((LA22_0>=43 && LA22_0<=62)) ) {
+                alt22=1;
+            }
+            switch (alt22) {
+                case 1 :
+                    // InternalInstanceLanguage.g:1595:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalInstanceLanguage.g:1595:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalInstanceLanguage.g:1596:5: lv_factor_1_0= ruleFactorRule
+                    {
 
-            state._fsp--;
+                    					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                    				
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
+                    state._fsp--;
 
-            					if (current==null) {
-            						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
-            					}
-            					set(
-            						current,
-            						"factor",
-            						lv_factor_1_0,
-            						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-            					afterParserOrEnumRuleCall();
-            				
 
-            }
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
+                    					}
+                    					set(
+                    						current,
+                    						"factor",
+                    						lv_factor_1_0,
+                    						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -4568,22 +4590,22 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
             }
 
             // InternalInstanceLanguage.g:1674:3: ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
-            int alt21=2;
-            int LA21_0 = input.LA(1);
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA21_0==29) ) {
-                alt21=1;
+            if ( (LA23_0==29) ) {
+                alt23=1;
             }
-            else if ( (LA21_0==30) ) {
-                alt21=2;
+            else if ( (LA23_0==30) ) {
+                alt23=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 21, 0, input);
+                    new NoViableAltException("", 23, 0, input);
 
                 throw nvae;
             }
-            switch (alt21) {
+            switch (alt23) {
                 case 1 :
                     // InternalInstanceLanguage.g:1675:4: ( (lv_value_1_0= 'true' ) )
                     {
@@ -4699,22 +4721,22 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
             // InternalInstanceLanguage.g:1713:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
             {
             // InternalInstanceLanguage.g:1713:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
-            int alt22=2;
-            int LA22_0 = input.LA(1);
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            if ( (LA22_0==RULE_QUOTED_ID) ) {
-                alt22=1;
+            if ( (LA24_0==RULE_QUOTED_ID) ) {
+                alt24=1;
             }
-            else if ( (LA22_0==RULE_ID) ) {
-                alt22=2;
+            else if ( (LA24_0==RULE_ID) ) {
+                alt24=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
+                    new NoViableAltException("", 24, 0, input);
 
                 throw nvae;
             }
-            switch (alt22) {
+            switch (alt24) {
                 case 1 :
                     // InternalInstanceLanguage.g:1714:3: this_QUOTED_ID_0= RULE_QUOTED_ID
                     {
@@ -4879,46 +4901,46 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
             // InternalInstanceLanguage.g:1778:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
             {
             // InternalInstanceLanguage.g:1778:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
-            int alt23=6;
+            int alt25=6;
             switch ( input.LA(1) ) {
             case 32:
                 {
-                alt23=1;
+                alt25=1;
                 }
                 break;
             case 33:
                 {
-                alt23=2;
+                alt25=2;
                 }
                 break;
             case 34:
                 {
-                alt23=3;
+                alt25=3;
                 }
                 break;
             case 35:
                 {
-                alt23=4;
+                alt25=4;
                 }
                 break;
             case 36:
                 {
-                alt23=5;
+                alt25=5;
                 }
                 break;
             case 37:
                 {
-                alt23=6;
+                alt25=6;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 23, 0, input);
+                    new NoViableAltException("", 25, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt23) {
+            switch (alt25) {
                 case 1 :
                     // InternalInstanceLanguage.g:1779:3: (enumLiteral_0= '>=' )
                     {
@@ -5059,22 +5081,22 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
             // InternalInstanceLanguage.g:1837:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
             {
             // InternalInstanceLanguage.g:1837:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            int alt26=2;
+            int LA26_0 = input.LA(1);
 
-            if ( (LA24_0==38) ) {
-                alt24=1;
+            if ( (LA26_0==38) ) {
+                alt26=1;
             }
-            else if ( (LA24_0==39) ) {
-                alt24=2;
+            else if ( (LA26_0==39) ) {
+                alt26=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt26) {
                 case 1 :
                     // InternalInstanceLanguage.g:1838:3: (enumLiteral_0= '+' )
                     {
@@ -5148,31 +5170,31 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
             // InternalInstanceLanguage.g:1864:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
             {
             // InternalInstanceLanguage.g:1864:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
-            int alt25=3;
+            int alt27=3;
             switch ( input.LA(1) ) {
             case 40:
                 {
-                alt25=1;
+                alt27=1;
                 }
                 break;
             case 41:
                 {
-                alt25=2;
+                alt27=2;
                 }
                 break;
             case 42:
                 {
-                alt25=3;
+                alt27=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
+                    new NoViableAltException("", 27, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt25) {
+            switch (alt27) {
                 case 1 :
                     // InternalInstanceLanguage.g:1865:3: (enumLiteral_0= '*' )
                     {
@@ -5280,116 +5302,116 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
             // InternalInstanceLanguage.g:1899:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
             {
             // InternalInstanceLanguage.g:1899:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
-            int alt26=20;
+            int alt28=20;
             switch ( input.LA(1) ) {
             case 43:
                 {
-                alt26=1;
+                alt28=1;
                 }
                 break;
             case 44:
                 {
-                alt26=2;
+                alt28=2;
                 }
                 break;
             case 45:
                 {
-                alt26=3;
+                alt28=3;
                 }
                 break;
             case 46:
                 {
-                alt26=4;
+                alt28=4;
                 }
                 break;
             case 47:
                 {
-                alt26=5;
+                alt28=5;
                 }
                 break;
             case 48:
                 {
-                alt26=6;
+                alt28=6;
                 }
                 break;
             case 49:
                 {
-                alt26=7;
+                alt28=7;
                 }
                 break;
             case 50:
                 {
-                alt26=8;
+                alt28=8;
                 }
                 break;
             case 51:
                 {
-                alt26=9;
+                alt28=9;
                 }
                 break;
             case 52:
                 {
-                alt26=10;
+                alt28=10;
                 }
                 break;
             case 53:
                 {
-                alt26=11;
+                alt28=11;
                 }
                 break;
             case 54:
                 {
-                alt26=12;
+                alt28=12;
                 }
                 break;
             case 55:
                 {
-                alt26=13;
+                alt28=13;
                 }
                 break;
             case 56:
                 {
-                alt26=14;
+                alt28=14;
                 }
                 break;
             case 57:
                 {
-                alt26=15;
+                alt28=15;
                 }
                 break;
             case 58:
                 {
-                alt26=16;
+                alt28=16;
                 }
                 break;
             case 59:
                 {
-                alt26=17;
+                alt28=17;
                 }
                 break;
             case 60:
                 {
-                alt26=18;
+                alt28=18;
                 }
                 break;
             case 61:
                 {
-                alt26=19;
+                alt28=19;
                 }
                 break;
             case 62:
                 {
-                alt26=20;
+                alt28=20;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 26, 0, input);
+                    new NoViableAltException("", 28, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt26) {
+            switch (alt28) {
                 case 1 :
                     // InternalInstanceLanguage.g:1900:3: (enumLiteral_0= 'Y' )
                     {
@@ -5778,7 +5800,7 @@ public class InternalInstanceLanguageParser extends AbstractInternalAntlrParser
     public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000002000000L});
     public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x000000C07E8900F0L});
     public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000004020000L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x7FFFF80000000000L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x7FFFF80000000002L});
     public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000080000000L});
     public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000020L});
 
diff --git a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/services/InstanceLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/services/InstanceLanguageGrammarAccess.java
index 19afb896ee0db234b191da7e3fb2e1015eb7ceed..86175cd82b9c697830f6a7fd45e5fe61c2a43324 100644
--- a/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/services/InstanceLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.instance.dsl/src-gen/de/evoal/languages/model/instance/dsl/services/InstanceLanguageGrammarAccess.java
@@ -709,7 +709,7 @@ public class InstanceLanguageGrammarAccess extends AbstractElementFinder.Abstrac
 	}
 	
 	//DoubleLiteralRule returns DoubleLiteral :
-	//    literal = DOUBLE factor = FactorRule
+	//    literal = DOUBLE (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.DoubleLiteralRuleElements getDoubleLiteralRuleAccess() {
 		return gaExpressionLanguage.getDoubleLiteralRuleAccess();
@@ -720,7 +720,7 @@ public class InstanceLanguageGrammarAccess extends AbstractElementFinder.Abstrac
 	}
 	
 	//IntegerLiteralRule returns IntegerLiteral:
-	//    literal = INT factor = FactorRule
+	//    literal = INT (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.IntegerLiteralRuleElements getIntegerLiteralRuleAccess() {
 		return gaExpressionLanguage.getIntegerLiteralRuleAccess();
diff --git a/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguage.g b/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguage.g
index ce8b4d39c4680681196c49e46de9e4eda90e7208..b0c2b0fc7d9996d938d117e8f10061c08c199cf7 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguage.g
+++ b/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguage.g
@@ -5371,7 +5371,7 @@ rule__DoubleLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__DoubleLiteralRule__FactorAssignment_1)
+	(rule__DoubleLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
@@ -5425,7 +5425,7 @@ rule__IntegerLiteralRule__Group__1__Impl
 :
 (
 	{ before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
-	(rule__IntegerLiteralRule__FactorAssignment_1)
+	(rule__IntegerLiteralRule__FactorAssignment_1)?
 	{ after(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); }
 )
 ;
diff --git a/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguageParser.java b/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguageParser.java
index 6d4b3178045c71abb971bbdfd65c3d9ff88df5e4..ff90338ff997cc765fda17b8646d3178c71de49a 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.mll.dsl.ide/src-gen/de/evoal/languages/model/mll/dsl/ide/contentassist/antlr/internal/InternalMachineLearningLanguageParser.java
@@ -4908,12 +4908,12 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalConte
             if ( (LA7_0==RULE_INT) ) {
                 int LA7_1 = input.LA(2);
 
-                if ( (LA7_1==77) ) {
-                    alt7=1;
-                }
-                else if ( ((LA7_1>=24 && LA7_1<=43)) ) {
+                if ( (LA7_1==EOF||(LA7_1>=13 && LA7_1<=43)||LA7_1==45||LA7_1==50||LA7_1==65||(LA7_1>=70 && LA7_1<=73)||LA7_1==75) ) {
                     alt7=2;
                 }
+                else if ( (LA7_1==77) ) {
+                    alt7=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -18119,29 +18119,40 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalConte
 
 
     // $ANTLR start "rule__DoubleLiteralRule__Group__1__Impl"
-    // InternalMachineLearningLanguage.g:5367:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalMachineLearningLanguage.g:5367:1: rule__DoubleLiteralRule__Group__1__Impl : ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__DoubleLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMachineLearningLanguage.g:5371:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) ) )
-            // InternalMachineLearningLanguage.g:5372:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
+            // InternalMachineLearningLanguage.g:5371:1: ( ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? ) )
+            // InternalMachineLearningLanguage.g:5372:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalMachineLearningLanguage.g:5372:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 ) )
-            // InternalMachineLearningLanguage.g:5373:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
+            // InternalMachineLearningLanguage.g:5372:1: ( ( rule__DoubleLiteralRule__FactorAssignment_1 )? )
+            // InternalMachineLearningLanguage.g:5373:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDoubleLiteralRuleAccess().getFactorAssignment_1()); 
             }
-            // InternalMachineLearningLanguage.g:5374:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )
-            // InternalMachineLearningLanguage.g:5374:3: rule__DoubleLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__DoubleLiteralRule__FactorAssignment_1();
+            // InternalMachineLearningLanguage.g:5374:2: ( rule__DoubleLiteralRule__FactorAssignment_1 )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
 
-            state._fsp--;
-            if (state.failed) return ;
+            if ( ((LA44_0>=24 && LA44_0<=43)) ) {
+                alt44=1;
+            }
+            switch (alt44) {
+                case 1 :
+                    // InternalMachineLearningLanguage.g:5374:3: rule__DoubleLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__DoubleLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
 
             }
 
@@ -18292,29 +18303,40 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalConte
 
 
     // $ANTLR start "rule__IntegerLiteralRule__Group__1__Impl"
-    // InternalMachineLearningLanguage.g:5421:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) ;
+    // InternalMachineLearningLanguage.g:5421:1: rule__IntegerLiteralRule__Group__1__Impl : ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) ;
     public final void rule__IntegerLiteralRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalMachineLearningLanguage.g:5425:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) ) )
-            // InternalMachineLearningLanguage.g:5426:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
+            // InternalMachineLearningLanguage.g:5425:1: ( ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? ) )
+            // InternalMachineLearningLanguage.g:5426:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
             {
-            // InternalMachineLearningLanguage.g:5426:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 ) )
-            // InternalMachineLearningLanguage.g:5427:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
+            // InternalMachineLearningLanguage.g:5426:1: ( ( rule__IntegerLiteralRule__FactorAssignment_1 )? )
+            // InternalMachineLearningLanguage.g:5427:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIntegerLiteralRuleAccess().getFactorAssignment_1()); 
             }
-            // InternalMachineLearningLanguage.g:5428:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )
-            // InternalMachineLearningLanguage.g:5428:3: rule__IntegerLiteralRule__FactorAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__IntegerLiteralRule__FactorAssignment_1();
+            // InternalMachineLearningLanguage.g:5428:2: ( rule__IntegerLiteralRule__FactorAssignment_1 )?
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-            state._fsp--;
-            if (state.failed) return ;
+            if ( ((LA45_0>=24 && LA45_0<=43)) ) {
+                alt45=1;
+            }
+            switch (alt45) {
+                case 1 :
+                    // InternalMachineLearningLanguage.g:5428:3: rule__IntegerLiteralRule__FactorAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__IntegerLiteralRule__FactorAssignment_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
 
             }
 
diff --git a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/MachineLearningLanguage.xtextbin b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/MachineLearningLanguage.xtextbin
index d329a2ae04364c7b308ae9b05724eb89c77537b4..fe4bbf2b1c7164b4128c93a51b995e6be8ff4b17 100644
Binary files a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/MachineLearningLanguage.xtextbin and b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/MachineLearningLanguage.xtextbin differ
diff --git a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguage.g b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguage.g
index d1b78f55ab34ad1b86b7f8fb64ca8af39aba2175..2ce970bc062518870f4b6fdf5a14312958dd2bbc 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguage.g
+++ b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguage.g
@@ -2607,7 +2607,7 @@ ruleDoubleLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
@@ -2663,7 +2663,7 @@ ruleIntegerLiteralRule returns [EObject current=null]
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)
+		)?
 	)
 ;
 
diff --git a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguageParser.java b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguageParser.java
index 397e634396152e564d75e05c3157075929d1bebc..16bfa87a11d3e4f1af5d3468bb5f99a43fd5aa59 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguageParser.java
+++ b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/parser/antlr/internal/InternalMachineLearningLanguageParser.java
@@ -7385,12 +7385,12 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
             if ( (LA37_0==RULE_INT) ) {
                 int LA37_1 = input.LA(2);
 
-                if ( ((LA37_1>=60 && LA37_1<=79)) ) {
-                    alt37=2;
-                }
-                else if ( (LA37_1==48) ) {
+                if ( (LA37_1==48) ) {
                     alt37=1;
                 }
+                else if ( (LA37_1==EOF||LA37_1==13||LA37_1==16||LA37_1==33||(LA37_1>=38 && LA37_1<=40)||LA37_1==42||LA37_1==44||(LA37_1>=49 && LA37_1<=79)) ) {
+                    alt37=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -7526,7 +7526,7 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
 
 
     // $ANTLR start "ruleDoubleLiteralRule"
-    // InternalMachineLearningLanguage.g:2565:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalMachineLearningLanguage.g:2565:1: ruleDoubleLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleDoubleLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -7539,11 +7539,11 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
         	enterRule();
 
         try {
-            // InternalMachineLearningLanguage.g:2571:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalMachineLearningLanguage.g:2572:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalMachineLearningLanguage.g:2571:2: ( ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalMachineLearningLanguage.g:2572:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalMachineLearningLanguage.g:2572:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalMachineLearningLanguage.g:2573:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalMachineLearningLanguage.g:2572:2: ( ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalMachineLearningLanguage.g:2573:3: ( (lv_literal_0_0= ruleDOUBLE ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalMachineLearningLanguage.g:2573:3: ( (lv_literal_0_0= ruleDOUBLE ) )
             // InternalMachineLearningLanguage.g:2574:4: (lv_literal_0_0= ruleDOUBLE )
@@ -7580,39 +7580,50 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
 
             }
 
-            // InternalMachineLearningLanguage.g:2592:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalMachineLearningLanguage.g:2593:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalMachineLearningLanguage.g:2593:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalMachineLearningLanguage.g:2594:5: lv_factor_1_0= ruleFactorRule
-            {
-            if ( state.backtracking==0 ) {
+            // InternalMachineLearningLanguage.g:2592:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt38=2;
+            int LA38_0 = input.LA(1);
 
-              					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-              				
+            if ( ((LA38_0>=60 && LA38_0<=79)) ) {
+                alt38=1;
             }
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            switch (alt38) {
+                case 1 :
+                    // InternalMachineLearningLanguage.g:2593:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalMachineLearningLanguage.g:2593:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalMachineLearningLanguage.g:2594:5: lv_factor_1_0= ruleFactorRule
+                    {
+                    if ( state.backtracking==0 ) {
 
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
+                      					newCompositeNode(grammarAccess.getDoubleLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
-              					}
-              					set(
-              						current,
-              						"factor",
-              						lv_factor_1_0,
-              						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-              					afterParserOrEnumRuleCall();
-              				
-            }
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
 
-            }
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getDoubleLiteralRuleRule());
+                      					}
+                      					set(
+                      						current,
+                      						"factor",
+                      						lv_factor_1_0,
+                      						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -7680,7 +7691,7 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
 
 
     // $ANTLR start "ruleIntegerLiteralRule"
-    // InternalMachineLearningLanguage.g:2622:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) ;
+    // InternalMachineLearningLanguage.g:2622:1: ruleIntegerLiteralRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) ;
     public final EObject ruleIntegerLiteralRule() throws RecognitionException {
         EObject current = null;
 
@@ -7692,11 +7703,11 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
         	enterRule();
 
         try {
-            // InternalMachineLearningLanguage.g:2628:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) ) )
-            // InternalMachineLearningLanguage.g:2629:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
+            // InternalMachineLearningLanguage.g:2628:2: ( ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? ) )
+            // InternalMachineLearningLanguage.g:2629:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
             {
-            // InternalMachineLearningLanguage.g:2629:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) ) )
-            // InternalMachineLearningLanguage.g:2630:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )
+            // InternalMachineLearningLanguage.g:2629:2: ( ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )? )
+            // InternalMachineLearningLanguage.g:2630:3: ( (lv_literal_0_0= RULE_INT ) ) ( (lv_factor_1_0= ruleFactorRule ) )?
             {
             // InternalMachineLearningLanguage.g:2630:3: ( (lv_literal_0_0= RULE_INT ) )
             // InternalMachineLearningLanguage.g:2631:4: (lv_literal_0_0= RULE_INT )
@@ -7728,38 +7739,49 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
 
             }
 
-            // InternalMachineLearningLanguage.g:2648:3: ( (lv_factor_1_0= ruleFactorRule ) )
-            // InternalMachineLearningLanguage.g:2649:4: (lv_factor_1_0= ruleFactorRule )
-            {
-            // InternalMachineLearningLanguage.g:2649:4: (lv_factor_1_0= ruleFactorRule )
-            // InternalMachineLearningLanguage.g:2650:5: lv_factor_1_0= ruleFactorRule
-            {
-            if ( state.backtracking==0 ) {
+            // InternalMachineLearningLanguage.g:2648:3: ( (lv_factor_1_0= ruleFactorRule ) )?
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-              					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
-              				
+            if ( ((LA39_0>=60 && LA39_0<=79)) ) {
+                alt39=1;
             }
-            pushFollow(FOLLOW_2);
-            lv_factor_1_0=ruleFactorRule();
+            switch (alt39) {
+                case 1 :
+                    // InternalMachineLearningLanguage.g:2649:4: (lv_factor_1_0= ruleFactorRule )
+                    {
+                    // InternalMachineLearningLanguage.g:2649:4: (lv_factor_1_0= ruleFactorRule )
+                    // InternalMachineLearningLanguage.g:2650:5: lv_factor_1_0= ruleFactorRule
+                    {
+                    if ( state.backtracking==0 ) {
 
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
+                      					newCompositeNode(grammarAccess.getIntegerLiteralRuleAccess().getFactorFactorRuleEnumRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_factor_1_0=ruleFactorRule();
 
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
-              					}
-              					set(
-              						current,
-              						"factor",
-              						lv_factor_1_0,
-              						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
-              					afterParserOrEnumRuleCall();
-              				
-            }
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getIntegerLiteralRuleRule());
+                      					}
+                      					set(
+                      						current,
+                      						"factor",
+                      						lv_factor_1_0,
+                      						"de.evoal.languages.model.el.dsl.ExpressionLanguage.FactorRule");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
 
-            }
 
+                    }
+                    break;
 
             }
 
@@ -7969,23 +7991,23 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
             }
 
             // InternalMachineLearningLanguage.g:2731:3: ( ( (lv_value_1_0= 'true' ) ) | otherlv_2= 'false' )
-            int alt38=2;
-            int LA38_0 = input.LA(1);
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            if ( (LA38_0==46) ) {
-                alt38=1;
+            if ( (LA40_0==46) ) {
+                alt40=1;
             }
-            else if ( (LA38_0==47) ) {
-                alt38=2;
+            else if ( (LA40_0==47) ) {
+                alt40=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 38, 0, input);
+                    new NoViableAltException("", 40, 0, input);
 
                 throw nvae;
             }
-            switch (alt38) {
+            switch (alt40) {
                 case 1 :
                     // InternalMachineLearningLanguage.g:2732:4: ( (lv_value_1_0= 'true' ) )
                     {
@@ -8113,23 +8135,23 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
             // InternalMachineLearningLanguage.g:2770:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
             {
             // InternalMachineLearningLanguage.g:2770:2: (this_QUOTED_ID_0= RULE_QUOTED_ID | this_ID_1= RULE_ID )
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            int alt41=2;
+            int LA41_0 = input.LA(1);
 
-            if ( (LA39_0==RULE_QUOTED_ID) ) {
-                alt39=1;
+            if ( (LA41_0==RULE_QUOTED_ID) ) {
+                alt41=1;
             }
-            else if ( (LA39_0==RULE_ID) ) {
-                alt39=2;
+            else if ( (LA41_0==RULE_ID) ) {
+                alt41=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
-            switch (alt39) {
+            switch (alt41) {
                 case 1 :
                     // InternalMachineLearningLanguage.g:2771:3: this_QUOTED_ID_0= RULE_QUOTED_ID
                     {
@@ -8320,47 +8342,47 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
             // InternalMachineLearningLanguage.g:2835:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
             {
             // InternalMachineLearningLanguage.g:2835:2: ( (enumLiteral_0= '>=' ) | (enumLiteral_1= '>' ) | (enumLiteral_2= '=' ) | (enumLiteral_3= '!=' ) | (enumLiteral_4= '<' ) | (enumLiteral_5= '<=' ) )
-            int alt40=6;
+            int alt42=6;
             switch ( input.LA(1) ) {
             case 49:
                 {
-                alt40=1;
+                alt42=1;
                 }
                 break;
             case 50:
                 {
-                alt40=2;
+                alt42=2;
                 }
                 break;
             case 51:
                 {
-                alt40=3;
+                alt42=3;
                 }
                 break;
             case 52:
                 {
-                alt40=4;
+                alt42=4;
                 }
                 break;
             case 53:
                 {
-                alt40=5;
+                alt42=5;
                 }
                 break;
             case 54:
                 {
-                alt40=6;
+                alt42=6;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 40, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt40) {
+            switch (alt42) {
                 case 1 :
                     // InternalMachineLearningLanguage.g:2836:3: (enumLiteral_0= '>=' )
                     {
@@ -8515,23 +8537,23 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
             // InternalMachineLearningLanguage.g:2894:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
             {
             // InternalMachineLearningLanguage.g:2894:2: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) )
-            int alt41=2;
-            int LA41_0 = input.LA(1);
+            int alt43=2;
+            int LA43_0 = input.LA(1);
 
-            if ( (LA41_0==55) ) {
-                alt41=1;
+            if ( (LA43_0==55) ) {
+                alt43=1;
             }
-            else if ( (LA41_0==56) ) {
-                alt41=2;
+            else if ( (LA43_0==56) ) {
+                alt43=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
+                    new NoViableAltException("", 43, 0, input);
 
                 throw nvae;
             }
-            switch (alt41) {
+            switch (alt43) {
                 case 1 :
                     // InternalMachineLearningLanguage.g:2895:3: (enumLiteral_0= '+' )
                     {
@@ -8611,32 +8633,32 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
             // InternalMachineLearningLanguage.g:2921:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
             {
             // InternalMachineLearningLanguage.g:2921:2: ( (enumLiteral_0= '*' ) | (enumLiteral_1= '/' ) | (enumLiteral_2= '%' ) )
-            int alt42=3;
+            int alt44=3;
             switch ( input.LA(1) ) {
             case 57:
                 {
-                alt42=1;
+                alt44=1;
                 }
                 break;
             case 58:
                 {
-                alt42=2;
+                alt44=2;
                 }
                 break;
             case 59:
                 {
-                alt42=3;
+                alt44=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
+                    new NoViableAltException("", 44, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt42) {
+            switch (alt44) {
                 case 1 :
                     // InternalMachineLearningLanguage.g:2922:3: (enumLiteral_0= '*' )
                     {
@@ -8752,117 +8774,117 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
             // InternalMachineLearningLanguage.g:2956:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
             {
             // InternalMachineLearningLanguage.g:2956:2: ( (enumLiteral_0= 'Y' ) | (enumLiteral_1= 'Z' ) | (enumLiteral_2= 'E' ) | (enumLiteral_3= 'P' ) | (enumLiteral_4= 'T' ) | (enumLiteral_5= 'G' ) | (enumLiteral_6= 'M' ) | (enumLiteral_7= 'k' ) | (enumLiteral_8= 'h' ) | (enumLiteral_9= 'da' ) | (enumLiteral_10= 'd' ) | (enumLiteral_11= 'c' ) | (enumLiteral_12= 'm' ) | (enumLiteral_13= '\\u00B5' ) | (enumLiteral_14= 'n' ) | (enumLiteral_15= 'p' ) | (enumLiteral_16= 'f' ) | (enumLiteral_17= 'a' ) | (enumLiteral_18= 'z' ) | (enumLiteral_19= 'y' ) )
-            int alt43=20;
+            int alt45=20;
             switch ( input.LA(1) ) {
             case 60:
                 {
-                alt43=1;
+                alt45=1;
                 }
                 break;
             case 61:
                 {
-                alt43=2;
+                alt45=2;
                 }
                 break;
             case 62:
                 {
-                alt43=3;
+                alt45=3;
                 }
                 break;
             case 63:
                 {
-                alt43=4;
+                alt45=4;
                 }
                 break;
             case 64:
                 {
-                alt43=5;
+                alt45=5;
                 }
                 break;
             case 65:
                 {
-                alt43=6;
+                alt45=6;
                 }
                 break;
             case 66:
                 {
-                alt43=7;
+                alt45=7;
                 }
                 break;
             case 67:
                 {
-                alt43=8;
+                alt45=8;
                 }
                 break;
             case 68:
                 {
-                alt43=9;
+                alt45=9;
                 }
                 break;
             case 69:
                 {
-                alt43=10;
+                alt45=10;
                 }
                 break;
             case 70:
                 {
-                alt43=11;
+                alt45=11;
                 }
                 break;
             case 71:
                 {
-                alt43=12;
+                alt45=12;
                 }
                 break;
             case 72:
                 {
-                alt43=13;
+                alt45=13;
                 }
                 break;
             case 73:
                 {
-                alt43=14;
+                alt45=14;
                 }
                 break;
             case 74:
                 {
-                alt43=15;
+                alt45=15;
                 }
                 break;
             case 75:
                 {
-                alt43=16;
+                alt45=16;
                 }
                 break;
             case 76:
                 {
-                alt43=17;
+                alt45=17;
                 }
                 break;
             case 77:
                 {
-                alt43=18;
+                alt45=18;
                 }
                 break;
             case 78:
                 {
-                alt43=19;
+                alt45=19;
                 }
                 break;
             case 79:
                 {
-                alt43=20;
+                alt45=20;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 45, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt43) {
+            switch (alt45) {
                 case 1 :
                     // InternalMachineLearningLanguage.g:2957:3: (enumLiteral_0= 'Y' )
                     {
@@ -9322,7 +9344,7 @@ public class InternalMachineLearningLanguageParser extends AbstractInternalAntlr
     public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000080000000000L});
     public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0180FA21000000F0L});
     public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000100000010000L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0xF000000000000000L,0x000000000000FFFFL});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0xF000000000000002L,0x000000000000FFFFL});
     public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0001000000000000L});
 
 }
\ No newline at end of file
diff --git a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/services/MachineLearningLanguageGrammarAccess.java b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/services/MachineLearningLanguageGrammarAccess.java
index ef4ef1cef3173143bd4623ca9306e22420a5dd06..65e9eb2b3baa807cad2746e725af6bc7b62d821e 100644
--- a/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/services/MachineLearningLanguageGrammarAccess.java
+++ b/src/languages/de.evoal.languages.model.mll.dsl/src-gen/de/evoal/languages/model/mll/dsl/services/MachineLearningLanguageGrammarAccess.java
@@ -1325,7 +1325,7 @@ public class MachineLearningLanguageGrammarAccess extends AbstractElementFinder.
 	}
 	
 	//DoubleLiteralRule returns DoubleLiteral :
-	//    literal = DOUBLE factor = FactorRule
+	//    literal = DOUBLE (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.DoubleLiteralRuleElements getDoubleLiteralRuleAccess() {
 		return gaExpressionLanguage.getDoubleLiteralRuleAccess();
@@ -1336,7 +1336,7 @@ public class MachineLearningLanguageGrammarAccess extends AbstractElementFinder.
 	}
 	
 	//IntegerLiteralRule returns IntegerLiteral:
-	//    literal = INT factor = FactorRule
+	//    literal = INT (factor = FactorRule)?
 	//;
 	public ExpressionLanguageGrammarAccess.IntegerLiteralRuleElements getIntegerLiteralRuleAccess() {
 		return gaExpressionLanguage.getIntegerLiteralRuleAccess();