From d556ca3a84363fa5b64840c30513758f91c40550 Mon Sep 17 00:00:00 2001
From: Georgios Treska <s_treska@ira.uka.de>
Date: Mon, 21 Jan 2013 13:17:08 +0000
Subject: [PATCH] DESCARTES-20 *Probe Projekte

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@9878 9e42b895-fcda-4063-8a3b-11be15eb1bbd
---
 org.xtext.example.mydsl.sdk/.project          |    17 +
 org.xtext.example.mydsl.sdk/build.properties  |     1 +
 org.xtext.example.mydsl.sdk/feature.xml       |    17 +
 org.xtext.example.mydsl.tests/.classpath      |     8 +
 org.xtext.example.mydsl.tests/.project        |    28 +
 .../META-INF/MANIFEST.MF                      |    22 +
 .../build.properties                          |     5 +
 .../org.xtext.example.mydsl.tests.launch      |    13 +
 .../example/mydsl/MyDslInjectorProvider.java  |    45 +
 .../mydsl/MyDslUiInjectorProvider.java        |    16 +
 org.xtext.example.mydsl.ui/.classpath         |     8 +
 org.xtext.example.mydsl.ui/.project           |    28 +
 .../META-INF/MANIFEST.MF                      |    24 +
 org.xtext.example.mydsl.ui/build.properties   |     5 +
 org.xtext.example.mydsl.ui/plugin.xml         |   323 +
 org.xtext.example.mydsl.ui/plugin.xml_gen     |   323 +
 .../mydsl/ui/AbstractMyDslUiModule.java       |   247 +
 .../ui/MyDslExecutableExtensionFactory.java   |    29 +
 .../AbstractMyDslProposalProvider.java        |    60 +
 .../ui/contentassist/antlr/MyDslParser.java   |    83 +
 .../PartialMyDslContentAssistParser.java      |    37 +
 .../antlr/internal/InternalMyDsl.g            |  1073 +
 .../antlr/internal/InternalMyDsl.tokens       |    41 +
 .../antlr/internal/InternalMyDslLexer.java    |  1287 +
 .../antlr/internal/InternalMyDslParser.java   |  2938 +++
 .../mydsl/ui/internal/MyDslActivator.java     |    95 +
 .../xtext/example/mydsl/ui/MyDslUiModule.java |    15 +
 .../contentassist/MyDslProposalProvider.java  |    12 +
 .../MyDslDescriptionLabelProvider.java        |    27 +
 .../mydsl/ui/labeling/MyDslLabelProvider.java |    34 +
 .../ui/outline/MyDslOutlineTreeProvider.java  |    14 +
 .../ui/quickfix/MyDslQuickfixProvider.java    |    19 +
 org.xtext.example.mydsl/.classpath            |     9 +
 ...structure (org.xtext.example.mydsl).launch |    18 +
 .../.launch/Launch Runtime Eclipse.launch     |    34 +
 org.xtext.example.mydsl/.project              |    34 +
 org.xtext.example.mydsl/META-INF/MANIFEST.MF  |    34 +
 org.xtext.example.mydsl/build.properties      |     6 +
 org.xtext.example.mydsl/old                   |    40 +
 org.xtext.example.mydsl/plugin.xml            |    17 +
 org.xtext.example.mydsl/plugin.xml_gen        |    17 +
 .../mydsl/AbstractMyDslRuntimeModule.java     |   177 +
 .../org/xtext/example/mydsl/MyDsl.ecore       |    35 +
 .../org/xtext/example/mydsl/MyDsl.genmodel    |    38 +
 .../src-gen/org/xtext/example/mydsl/MyDsl.xmi |   326 +
 .../mydsl/MyDslStandaloneSetupGenerated.java  |    43 +
 .../xtext/example/mydsl/myDsl/Expression.java |    54 +
 .../org/xtext/example/mydsl/myDsl/Model.java  |    43 +
 .../example/mydsl/myDsl/MyDslFactory.java     |    61 +
 .../example/mydsl/myDsl/MyDslPackage.java     |   382 +
 .../example/mydsl/myDsl/OperationsType.java   |   547 +
 .../org/xtext/example/mydsl/myDsl/Term.java   |   104 +
 .../mydsl/myDsl/impl/ExpressionImpl.java      |   178 +
 .../example/mydsl/myDsl/impl/ModelImpl.java   |   167 +
 .../mydsl/myDsl/impl/MyDslFactoryImpl.java    |   187 +
 .../mydsl/myDsl/impl/MyDslPackageImpl.java    |   318 +
 .../example/mydsl/myDsl/impl/TermImpl.java    |   335 +
 .../mydsl/myDsl/util/MyDslAdapterFactory.java |   172 +
 .../example/mydsl/myDsl/util/MyDslSwitch.java |   166 +
 .../antlr/MyDslAntlrTokenFileProvider.java    |    15 +
 .../mydsl/parser/antlr/MyDslParser.java       |    39 +
 .../parser/antlr/internal/InternalMyDsl.g     |   533 +
 .../antlr/internal/InternalMyDsl.tokens       |    41 +
 .../antlr/internal/InternalMyDslLexer.java    |  1287 +
 .../antlr/internal/InternalMyDslParser.java   |  1491 ++
 .../serializer/MyDslSemanticSequencer.java    |   103 +
 .../serializer/MyDslSyntacticSequencer.java   |    88 +
 .../mydsl/services/MyDslGrammarAccess.java    |   559 +
 .../AbstractMyDslJavaValidator.java           |    18 +
 .../xtext/example/mydsl/GenerateMyDsl.mwe2    |   143 +
 .../src/org/xtext/example/mydsl/MyDsl.xtext   |    40 +
 .../example/mydsl/MyDslRuntimeModule.java     |    11 +
 .../example/mydsl/MyDslStandaloneSetup.java   |    14 +
 .../mydsl/formatting/MyDslFormatter.java      |    27 +
 .../mydsl/generator/MyDslGenerator.xtend      |    15 +
 .../src/org/xtext/example/mydsl/old           |    40 +
 .../mydsl/scoping/MyDslScopeProvider.java     |    17 +
 .../mydsl/validation/MyDslJavaValidator.java  |    13 +
 .../generator/.MyDslGenerator.java._trace     |   Bin 0 -> 847 bytes
 .../mydsl/generator/MyDslGenerator.java       |    11 +
 org.xtext.example.mydsl1.sdk/.project         |    17 +
 org.xtext.example.mydsl1.sdk/build.properties |     1 +
 org.xtext.example.mydsl1.sdk/feature.xml      |    17 +
 org.xtext.example.mydsl1.tests/.classpath     |     8 +
 org.xtext.example.mydsl1.tests/.project       |    28 +
 .../META-INF/MANIFEST.MF                      |    21 +
 .../build.properties                          |     5 +
 .../org.xtext.example.mydsl1.tests.launch     |    13 +
 org.xtext.example.mydsl1.ui/.classpath        |     8 +
 org.xtext.example.mydsl1.ui/.project          |    28 +
 .../META-INF/MANIFEST.MF                      |    21 +
 org.xtext.example.mydsl1.ui/build.properties  |     5 +
 org.xtext.example.mydsl1.ui/plugin.xml        |   258 +
 org.xtext.example.mydsl1.ui/plugin.xml_gen    |   258 +
 .../mydsl1/ui/AbstractMyDsl1UiModule.java     |   122 +
 .../ui/MyDsl1ExecutableExtensionFactory.java  |    29 +
 .../AbstractMyDsl1ProposalProvider.java       |   267 +
 .../ui/contentassist/antlr/MyDsl1Parser.java  |   160 +
 .../antlr/internal/InternalMyDsl1.g           |  8017 ++++++
 .../antlr/internal/InternalMyDsl1.tokens      |   111 +
 .../antlr/internal/InternalMyDsl1Lexer.java   |  2965 +++
 .../antlr/internal/InternalMyDsl1Parser.java  | 21690 ++++++++++++++++
 .../mydsl1/ui/internal/MyDsl1Activator.java   |    95 +
 .../example/mydsl1/ui/MyDsl1UiModule.java     |    15 +
 .../contentassist/MyDsl1ProposalProvider.java |    12 +
 .../MyDsl1DescriptionLabelProvider.java       |    27 +
 .../ui/labeling/MyDsl1LabelProvider.java      |    34 +
 .../ui/outline/MyDsl1OutlineTreeProvider.java |    14 +
 .../ui/quickfix/MyDsl1QuickfixProvider.java   |    19 +
 org.xtext.example.mydsl1/.classpath           |     9 +
 org.xtext.example.mydsl1/.project             |    34 +
 org.xtext.example.mydsl1/META-INF/MANIFEST.MF |    27 +
 org.xtext.example.mydsl1/build.properties     |     6 +
 .../mydsl1/AbstractMyDsl1RuntimeModule.java   |   147 +
 .../org/xtext/example/mydsl1/MyDsl1.xmi       |   870 +
 .../MyDsl1StandaloneSetupGenerated.java       |    40 +
 .../MyDsl1ParsetreeConstructor.java           |  9892 +++++++
 .../antlr/MyDsl1AntlrTokenFileProvider.java   |    15 +
 .../mydsl1/parser/antlr/MyDsl1Parser.java     |    39 +
 .../parser/antlr/internal/InternalMyDsl1.g    |  3230 +++
 .../antlr/internal/InternalMyDsl1.tokens      |   111 +
 .../antlr/internal/InternalMyDsl1Lexer.java   |  2963 +++
 .../antlr/internal/InternalMyDsl1Parser.java  |  8144 ++++++
 .../mydsl1/services/MyDsl1GrammarAccess.java  |  2508 ++
 .../AbstractMyDsl1JavaValidator.java          |    19 +
 .../xtext/example/mydsl1/GenerateMyDsl1.mwe2  |   121 +
 .../src/org/xtext/example/mydsl1/MyDsl1.xtext |   224 +
 .../example/mydsl1/MyDsl1RuntimeModule.java   |    11 +
 .../example/mydsl1/MyDsl1StandaloneSetup.java |    14 +
 .../mydsl1/formatting/MyDsl1Formatter.java    |    39 +
 .../mydsl1/scoping/MyDsl1ScopeProvider.java   |    17 +
 .../validation/MyDsl1JavaValidator.java       |    13 +
 132 files changed, 77699 insertions(+)
 create mode 100644 org.xtext.example.mydsl.sdk/.project
 create mode 100644 org.xtext.example.mydsl.sdk/build.properties
 create mode 100644 org.xtext.example.mydsl.sdk/feature.xml
 create mode 100644 org.xtext.example.mydsl.tests/.classpath
 create mode 100644 org.xtext.example.mydsl.tests/.project
 create mode 100644 org.xtext.example.mydsl.tests/META-INF/MANIFEST.MF
 create mode 100644 org.xtext.example.mydsl.tests/build.properties
 create mode 100644 org.xtext.example.mydsl.tests/org.xtext.example.mydsl.tests.launch
 create mode 100644 org.xtext.example.mydsl.tests/src-gen/org/xtext/example/mydsl/MyDslInjectorProvider.java
 create mode 100644 org.xtext.example.mydsl.tests/src-gen/org/xtext/example/mydsl/MyDslUiInjectorProvider.java
 create mode 100644 org.xtext.example.mydsl.ui/.classpath
 create mode 100644 org.xtext.example.mydsl.ui/.project
 create mode 100644 org.xtext.example.mydsl.ui/META-INF/MANIFEST.MF
 create mode 100644 org.xtext.example.mydsl.ui/build.properties
 create mode 100644 org.xtext.example.mydsl.ui/plugin.xml
 create mode 100644 org.xtext.example.mydsl.ui/plugin.xml_gen
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/AbstractMyDslUiModule.java
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/MyDslExecutableExtensionFactory.java
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/AbstractMyDslProposalProvider.java
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/MyDslParser.java
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/PartialMyDslContentAssistParser.java
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.tokens
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDslLexer.java
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDslParser.java
 create mode 100644 org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/internal/MyDslActivator.java
 create mode 100644 org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/MyDslUiModule.java
 create mode 100644 org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/contentassist/MyDslProposalProvider.java
 create mode 100644 org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/labeling/MyDslDescriptionLabelProvider.java
 create mode 100644 org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/labeling/MyDslLabelProvider.java
 create mode 100644 org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/outline/MyDslOutlineTreeProvider.java
 create mode 100644 org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/quickfix/MyDslQuickfixProvider.java
 create mode 100644 org.xtext.example.mydsl/.classpath
 create mode 100644 org.xtext.example.mydsl/.launch/Generate Language Infrastructure (org.xtext.example.mydsl).launch
 create mode 100644 org.xtext.example.mydsl/.launch/Launch Runtime Eclipse.launch
 create mode 100644 org.xtext.example.mydsl/.project
 create mode 100644 org.xtext.example.mydsl/META-INF/MANIFEST.MF
 create mode 100644 org.xtext.example.mydsl/build.properties
 create mode 100644 org.xtext.example.mydsl/old
 create mode 100644 org.xtext.example.mydsl/plugin.xml
 create mode 100644 org.xtext.example.mydsl/plugin.xml_gen
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/AbstractMyDslRuntimeModule.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.ecore
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.genmodel
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.xmi
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDslStandaloneSetupGenerated.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Expression.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Model.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/MyDslFactory.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/MyDslPackage.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/OperationsType.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Term.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/ExpressionImpl.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/ModelImpl.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/MyDslFactoryImpl.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/MyDslPackageImpl.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/TermImpl.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/util/MyDslAdapterFactory.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/util/MyDslSwitch.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/MyDslAntlrTokenFileProvider.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/MyDslParser.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.tokens
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDslLexer.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDslParser.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/serializer/MyDslSemanticSequencer.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/serializer/MyDslSyntacticSequencer.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/services/MyDslGrammarAccess.java
 create mode 100644 org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/validation/AbstractMyDslJavaValidator.java
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/GenerateMyDsl.mwe2
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDsl.xtext
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDslRuntimeModule.java
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDslStandaloneSetup.java
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/formatting/MyDslFormatter.java
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/generator/MyDslGenerator.xtend
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/old
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/scoping/MyDslScopeProvider.java
 create mode 100644 org.xtext.example.mydsl/src/org/xtext/example/mydsl/validation/MyDslJavaValidator.java
 create mode 100644 org.xtext.example.mydsl/xtend-gen/org/xtext/example/mydsl/generator/.MyDslGenerator.java._trace
 create mode 100644 org.xtext.example.mydsl/xtend-gen/org/xtext/example/mydsl/generator/MyDslGenerator.java
 create mode 100644 org.xtext.example.mydsl1.sdk/.project
 create mode 100644 org.xtext.example.mydsl1.sdk/build.properties
 create mode 100644 org.xtext.example.mydsl1.sdk/feature.xml
 create mode 100644 org.xtext.example.mydsl1.tests/.classpath
 create mode 100644 org.xtext.example.mydsl1.tests/.project
 create mode 100644 org.xtext.example.mydsl1.tests/META-INF/MANIFEST.MF
 create mode 100644 org.xtext.example.mydsl1.tests/build.properties
 create mode 100644 org.xtext.example.mydsl1.tests/org.xtext.example.mydsl1.tests.launch
 create mode 100644 org.xtext.example.mydsl1.ui/.classpath
 create mode 100644 org.xtext.example.mydsl1.ui/.project
 create mode 100644 org.xtext.example.mydsl1.ui/META-INF/MANIFEST.MF
 create mode 100644 org.xtext.example.mydsl1.ui/build.properties
 create mode 100644 org.xtext.example.mydsl1.ui/plugin.xml
 create mode 100644 org.xtext.example.mydsl1.ui/plugin.xml_gen
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/AbstractMyDsl1UiModule.java
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/MyDsl1ExecutableExtensionFactory.java
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/AbstractMyDsl1ProposalProvider.java
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/MyDsl1Parser.java
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.tokens
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1Lexer.java
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1Parser.java
 create mode 100644 org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/internal/MyDsl1Activator.java
 create mode 100644 org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/MyDsl1UiModule.java
 create mode 100644 org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/contentassist/MyDsl1ProposalProvider.java
 create mode 100644 org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/labeling/MyDsl1DescriptionLabelProvider.java
 create mode 100644 org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/labeling/MyDsl1LabelProvider.java
 create mode 100644 org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/outline/MyDsl1OutlineTreeProvider.java
 create mode 100644 org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/quickfix/MyDsl1QuickfixProvider.java
 create mode 100644 org.xtext.example.mydsl1/.classpath
 create mode 100644 org.xtext.example.mydsl1/.project
 create mode 100644 org.xtext.example.mydsl1/META-INF/MANIFEST.MF
 create mode 100644 org.xtext.example.mydsl1/build.properties
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/AbstractMyDsl1RuntimeModule.java
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/MyDsl1.xmi
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/MyDsl1StandaloneSetupGenerated.java
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parseTreeConstruction/MyDsl1ParsetreeConstructor.java
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/MyDsl1AntlrTokenFileProvider.java
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/MyDsl1Parser.java
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.tokens
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1Lexer.java
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1Parser.java
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/services/MyDsl1GrammarAccess.java
 create mode 100644 org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/validation/AbstractMyDsl1JavaValidator.java
 create mode 100644 org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/GenerateMyDsl1.mwe2
 create mode 100644 org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1.xtext
 create mode 100644 org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1RuntimeModule.java
 create mode 100644 org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1StandaloneSetup.java
 create mode 100644 org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/formatting/MyDsl1Formatter.java
 create mode 100644 org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/scoping/MyDsl1ScopeProvider.java
 create mode 100644 org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/validation/MyDsl1JavaValidator.java

diff --git a/org.xtext.example.mydsl.sdk/.project b/org.xtext.example.mydsl.sdk/.project
new file mode 100644
index 00000000..0bb367ba
--- /dev/null
+++ b/org.xtext.example.mydsl.sdk/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.xtext.example.mydsl.sdk</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.xtext.example.mydsl.sdk/build.properties b/org.xtext.example.mydsl.sdk/build.properties
new file mode 100644
index 00000000..43c54c14
--- /dev/null
+++ b/org.xtext.example.mydsl.sdk/build.properties
@@ -0,0 +1 @@
+bin.includes =feature.xml
diff --git a/org.xtext.example.mydsl.sdk/feature.xml b/org.xtext.example.mydsl.sdk/feature.xml
new file mode 100644
index 00000000..bf50e62c
--- /dev/null
+++ b/org.xtext.example.mydsl.sdk/feature.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature id="org.xtext.example.mydsl.sdk"
+	label="MyDsl SDK Feature "
+	version="1.0.0.qualifier">
+	<plugin
+			id="org.xtext.example.mydsl"
+			download-size="0"
+			install-size="0"
+			version="0.0.0"
+			unpack="false"/>
+	<plugin
+			id="org.xtext.example.mydsl.ui"
+			download-size="0"
+			install-size="0"
+			version="0.0.0"
+			unpack="false"/>
+</feature>
diff --git a/org.xtext.example.mydsl.tests/.classpath b/org.xtext.example.mydsl.tests/.classpath
new file mode 100644
index 00000000..e5fbd3dd
--- /dev/null
+++ b/org.xtext.example.mydsl.tests/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.xtext.example.mydsl.tests/.project b/org.xtext.example.mydsl.tests/.project
new file mode 100644
index 00000000..0324e1b2
--- /dev/null
+++ b/org.xtext.example.mydsl.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.xtext.example.mydsl.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.xtext.example.mydsl.tests/META-INF/MANIFEST.MF b/org.xtext.example.mydsl.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..0528d331
--- /dev/null
+++ b/org.xtext.example.mydsl.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.xtext.example.mydsl.tests
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.xtext.example.mydsl.tests; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.xtext.example.mydsl,
+ org.xtext.example.mydsl.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4,
+ org.eclipse.ui.workbench;resolution:=optional
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.xtext.example.mydsl
diff --git a/org.xtext.example.mydsl.tests/build.properties b/org.xtext.example.mydsl.tests/build.properties
new file mode 100644
index 00000000..e10dcceb
--- /dev/null
+++ b/org.xtext.example.mydsl.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
\ No newline at end of file
diff --git a/org.xtext.example.mydsl.tests/org.xtext.example.mydsl.tests.launch b/org.xtext.example.mydsl.tests/org.xtext.example.mydsl.tests.launch
new file mode 100644
index 00000000..0f2fdede
--- /dev/null
+++ b/org.xtext.example.mydsl.tests/org.xtext.example.mydsl.tests.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.xtext.example.mydsl.tests"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.xtext.example.mydsl.tests"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.xtext.example.mydsl.tests"/>
+</launchConfiguration>
diff --git a/org.xtext.example.mydsl.tests/src-gen/org/xtext/example/mydsl/MyDslInjectorProvider.java b/org.xtext.example.mydsl.tests/src-gen/org/xtext/example/mydsl/MyDslInjectorProvider.java
new file mode 100644
index 00000000..cc7b31c5
--- /dev/null
+++ b/org.xtext.example.mydsl.tests/src-gen/org/xtext/example/mydsl/MyDslInjectorProvider.java
@@ -0,0 +1,45 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl;
+
+import org.eclipse.xtext.junit4.GlobalRegistries;
+import org.eclipse.xtext.junit4.GlobalRegistries.GlobalStateMemento;
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.eclipse.xtext.junit4.IRegistryConfigurator;
+
+import com.google.inject.Injector;
+
+public class MyDslInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
+	
+    protected GlobalStateMemento stateBeforeInjectorCreation;
+	protected GlobalStateMemento stateAfterInjectorCreation;
+	protected Injector injector;
+
+	static {
+		GlobalRegistries.initializeDefaults();
+	}
+
+	public Injector getInjector()
+	{
+		if (injector == null) {
+			stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+			this.injector = internalCreateInjector();
+			stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+		}
+		return injector;
+	}
+	
+	protected Injector internalCreateInjector() {
+	    return new MyDslStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.xtext.example.mydsl.tests/src-gen/org/xtext/example/mydsl/MyDslUiInjectorProvider.java b/org.xtext.example.mydsl.tests/src-gen/org/xtext/example/mydsl/MyDslUiInjectorProvider.java
new file mode 100644
index 00000000..b1174410
--- /dev/null
+++ b/org.xtext.example.mydsl.tests/src-gen/org/xtext/example/mydsl/MyDslUiInjectorProvider.java
@@ -0,0 +1,16 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+
+import com.google.inject.Injector;
+
+public class MyDslUiInjectorProvider implements IInjectorProvider {
+	
+	public Injector getInjector() {
+		return org.xtext.example.mydsl.ui.internal.MyDslActivator.getInstance().getInjector("org.xtext.example.mydsl.MyDsl");
+	}
+	
+}
diff --git a/org.xtext.example.mydsl.ui/.classpath b/org.xtext.example.mydsl.ui/.classpath
new file mode 100644
index 00000000..e5fbd3dd
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.xtext.example.mydsl.ui/.project b/org.xtext.example.mydsl.ui/.project
new file mode 100644
index 00000000..7649a193
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.xtext.example.mydsl.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.xtext.example.mydsl.ui/META-INF/MANIFEST.MF b/org.xtext.example.mydsl.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..3bf9850c
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.xtext.example.mydsl.ui
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.xtext.example.mydsl.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.xtext.example.mydsl;visibility:=reexport,
+ org.eclipse.xtext.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.ui,
+ org.eclipse.xtext.builder,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types.ui,
+ org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.compare
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.xtext.example.mydsl.ui.contentassist,
+ org.xtext.example.mydsl.ui.contentassist.antlr,
+ org.xtext.example.mydsl.ui.internal
+Bundle-Activator: org.xtext.example.mydsl.ui.internal.MyDslActivator
diff --git a/org.xtext.example.mydsl.ui/build.properties b/org.xtext.example.mydsl.ui/build.properties
new file mode 100644
index 00000000..e10dcceb
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
\ No newline at end of file
diff --git a/org.xtext.example.mydsl.ui/plugin.xml b/org.xtext.example.mydsl.ui/plugin.xml
new file mode 100644
index 00000000..6b93b26d
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/plugin.xml
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="mydsl"
+            id="org.xtext.example.mydsl.MyDsl"
+            name="MyDsl Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.xtext.example.mydsl.MyDsl.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+            </reference>
+         </activeWhen>
+      </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.xtext.example.mydsl.MyDsl.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.xtext.example.mydsl.MyDsl" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl"
+            name="MyDsl">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+        </page>
+        <page
+            category="org.xtext.example.mydsl.MyDsl"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+        </page>
+        <page
+            category="org.xtext.example.mydsl.MyDsl"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.xtext.example.mydsl.MyDsl.templates"
+            name="Templates">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl"
+            name="MyDsl">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.xtext.example.mydsl.ui.keyword_MyDsl"
+            label="MyDsl"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.xtext.example.mydsl.MyDsl.validate"
+            name="Validate">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.xtext.example.mydsl.MyDsl.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="mydsl">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="mydsl">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.xtext.example.mydsl.MyDsl -->
+    <extension
+            id="mydsl.check.fast"
+            name="MyDsl Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="mydsl.check.normal"
+            name="MyDsl Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="mydsl.check.expensive"
+            name="MyDsl Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.expensive"/>
+        <persistent value="true"/>
+    </extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.xtext.example.mydsl.MyDsl"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.xtext.example.mydsl.MyDsl"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.xtext.example.mydsl.MyDsl -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl.ui.mydsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl.ui.mydsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl.ui.mydsl.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.xtext.example.mydsl.MyDsl"
+	        class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.xtext.example.mydsl.MyDsl.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.xtext.example.mydsl.MyDsl.compare.contentViewers"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="mydsl">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.xtext.example.mydsl.MyDsl.compare.contentMergeViewers"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="mydsl" label="MyDsl Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.xtext.example.mydsl.MyDsl.editors.documentProviders"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="mydsl">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.xtext.example.mydsl.ui/plugin.xml_gen b/org.xtext.example.mydsl.ui/plugin.xml_gen
new file mode 100644
index 00000000..6b93b26d
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/plugin.xml_gen
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="mydsl"
+            id="org.xtext.example.mydsl.MyDsl"
+            name="MyDsl Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.xtext.example.mydsl.MyDsl.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+            </reference>
+         </activeWhen>
+      </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.xtext.example.mydsl.MyDsl.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.xtext.example.mydsl.MyDsl" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl"
+            name="MyDsl">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+        </page>
+        <page
+            category="org.xtext.example.mydsl.MyDsl"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+        </page>
+        <page
+            category="org.xtext.example.mydsl.MyDsl"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.xtext.example.mydsl.MyDsl.templates"
+            name="Templates">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl"
+            name="MyDsl">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.xtext.example.mydsl.ui.keyword_MyDsl"
+            label="MyDsl"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.xtext.example.mydsl.MyDsl.validate"
+            name="Validate">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.xtext.example.mydsl.MyDsl.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="mydsl">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="mydsl">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.xtext.example.mydsl.MyDsl -->
+    <extension
+            id="mydsl.check.fast"
+            name="MyDsl Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="mydsl.check.normal"
+            name="MyDsl Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="mydsl.check.expensive"
+            name="MyDsl Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.expensive"/>
+        <persistent value="true"/>
+    </extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.xtext.example.mydsl.MyDsl"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.xtext.example.mydsl.MyDsl"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.xtext.example.mydsl.MyDsl.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.xtext.example.mydsl.MyDsl -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl.ui.mydsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl.ui.mydsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl.ui.mydsl.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.xtext.example.mydsl.MyDsl.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.xtext.example.mydsl.MyDsl"
+	        class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.xtext.example.mydsl.MyDsl.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.xtext.example.mydsl.ui.keyword_MyDsl"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.xtext.example.mydsl.MyDsl.compare.contentViewers"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="mydsl">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.xtext.example.mydsl.MyDsl.compare.contentMergeViewers"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="mydsl" label="MyDsl Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.xtext.example.mydsl.MyDsl.editors.documentProviders"
+            class="org.xtext.example.mydsl.ui.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="mydsl">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/AbstractMyDslUiModule.java b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/AbstractMyDslUiModule.java
new file mode 100644
index 00000000..8ac5655f
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/AbstractMyDslUiModule.java
@@ -0,0 +1,247 @@
+
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.xtext.example.mydsl.ui.MyDslUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractMyDslUiModule extends DefaultUiModule {
+	
+	public AbstractMyDslUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+	
+	
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+		return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+		return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public Class<? extends org.eclipse.xtext.builder.IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+		return org.eclipse.xtext.builder.BuilderParticipant.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public org.eclipse.core.resources.IWorkspaceRoot bindIWorkspaceRootToInstance() {
+		return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.xtext.example.mydsl.ui.labeling.MyDslLabelProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(org.xtext.example.mydsl.ui.labeling.MyDslDescriptionLabelProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return org.xtext.example.mydsl.ui.outline.MyDslOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return org.xtext.example.mydsl.ui.outline.MyDslOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.xtext.example.mydsl.ui.quickfix.MyDslQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.xtext.example.mydsl.ui.contentassist.MyDslProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+		return org.xtext.example.mydsl.ui.contentassist.antlr.MyDslParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.xtext.example.mydsl.ui.contentassist.antlr.internal.InternalMyDslLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.xtext.example.mydsl.ui.contentassist.antlr.internal.InternalMyDslLexer.class));
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(org.xtext.example.mydsl.ui.contentassist.antlr.internal.InternalMyDslLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultReferenceUpdater.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameRefactoringProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return org.eclipse.xtext.ui.refactoring.ui.DefaultRenameSupport.Factory.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler> bindIRenameElementHandler() {
+		return org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.jdt.JdtTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtBasedSimpleTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider> bindITypesProposalProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtTypesProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider> bindIJavaProjectProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.XtextResourceSetBasedProjectProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper> bindIHyperlinkHelper() {
+		return org.eclipse.xtext.common.types.xtext.ui.TypeAwareHyperlinkHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+		return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider.ReferenceProposalCreator> bindAbstractJavaBasedContentProposalProvider$ReferenceProposalCreator() {
+		return org.eclipse.xtext.common.types.xtext.ui.TypeAwareReferenceProposalCreator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IValidationJobScheduler> bindIValidationJobScheduler() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtValidationJobScheduler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.impl.RefactoringResourceSetProvider> bindRefactoringResourceSetProvider() {
+		return org.eclipse.xtext.common.types.ui.refactoring.JvmRefactoringResourceSetProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation> bindIJavaSearchParticipation() {
+		return org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation.Yes.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
+		return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
+		return org.xtext.example.mydsl.ui.contentassist.antlr.PartialMyDslContentAssistParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
+	public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
+		return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+	}
+
+
+}
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/MyDslExecutableExtensionFactory.java b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/MyDslExecutableExtensionFactory.java
new file mode 100644
index 00000000..bd444826
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/MyDslExecutableExtensionFactory.java
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.xtext.example.mydsl.ui.internal.MyDslActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class MyDslExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return MyDslActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return MyDslActivator.getInstance().getInjector(MyDslActivator.ORG_XTEXT_EXAMPLE_MYDSL_MYDSL);
+	}
+	
+}
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/AbstractMyDslProposalProvider.java b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/AbstractMyDslProposalProvider.java
new file mode 100644
index 00000000..7bde4dde
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/AbstractMyDslProposalProvider.java
@@ -0,0 +1,60 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+/**
+ * Represents a generated, default implementation of interface {@link IProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractMyDslProposalProvider extends TerminalsProposalProvider {
+		
+	public void completeModel_Terms(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTerm_Operations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTerm_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeOperations_TermOperations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_Model(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Term(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Types(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Arithmetics(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Strings(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DECIMAL(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_E_STRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Operations(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_OperationsType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/MyDslParser.java b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/MyDslParser.java
new file mode 100644
index 00000000..31056326
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/MyDslParser.java
@@ -0,0 +1,83 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.RecognitionException;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+import com.google.inject.Inject;
+
+import org.xtext.example.mydsl.services.MyDslGrammarAccess;
+
+public class MyDslParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private MyDslGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.xtext.example.mydsl.ui.contentassist.antlr.internal.InternalMyDslParser createParser() {
+		org.xtext.example.mydsl.ui.contentassist.antlr.internal.InternalMyDslParser result = new org.xtext.example.mydsl.ui.contentassist.antlr.internal.InternalMyDslParser(null);
+		result.setGrammarAccess(grammarAccess);
+		return result;
+	}
+	
+	@Override
+	protected String getRuleName(AbstractElement element) {
+		if (nameMappings == null) {
+			nameMappings = new HashMap<AbstractElement, String>() {
+				private static final long serialVersionUID = 1L;
+				{
+					put(grammarAccess.getTypesAccess().getAlternatives(), "rule__Types__Alternatives");
+					put(grammarAccess.getE_STRINGAccess().getAlternatives(), "rule__E_STRING__Alternatives");
+					put(grammarAccess.getOperationsTypeAccess().getAlternatives(), "rule__OperationsType__Alternatives");
+					put(grammarAccess.getTermAccess().getGroup(), "rule__Term__Group__0");
+					put(grammarAccess.getTermAccess().getGroup_1(), "rule__Term__Group_1__0");
+					put(grammarAccess.getTypesAccess().getGroup_2(), "rule__Types__Group_2__0");
+					put(grammarAccess.getArithmeticsAccess().getGroup(), "rule__Arithmetics__Group__0");
+					put(grammarAccess.getStringsAccess().getGroup(), "rule__Strings__Group__0");
+					put(grammarAccess.getDECIMALAccess().getGroup(), "rule__DECIMAL__Group__0");
+					put(grammarAccess.getDECIMALAccess().getGroup_2(), "rule__DECIMAL__Group_2__0");
+					put(grammarAccess.getModelAccess().getTermsAssignment(), "rule__Model__TermsAssignment");
+					put(grammarAccess.getTermAccess().getOperationsAssignment_1_1(), "rule__Term__OperationsAssignment_1_1");
+					put(grammarAccess.getTermAccess().getRightAssignment_1_2(), "rule__Term__RightAssignment_1_2");
+					put(grammarAccess.getOperationsAccess().getTermOperationsAssignment(), "rule__Operations__TermOperationsAssignment");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.xtext.example.mydsl.ui.contentassist.antlr.internal.InternalMyDslParser typedParser = (org.xtext.example.mydsl.ui.contentassist.antlr.internal.InternalMyDslParser) parser;
+			typedParser.entryRuleModel();
+			return typedParser.getFollowElements();
+		} catch(RecognitionException ex) {
+			throw new RuntimeException(ex);
+		}		
+	}
+	
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+	
+	public MyDslGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(MyDslGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/PartialMyDslContentAssistParser.java b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/PartialMyDslContentAssistParser.java
new file mode 100644
index 00000000..523165a7
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/PartialMyDslContentAssistParser.java
@@ -0,0 +1,37 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+/**
+ * @author Sebastian Zarnekow - Initial contribution and API
+ */
+public class PartialMyDslContentAssistParser extends MyDslParser implements IPartialContentAssistParser {
+
+	private AbstractRule rule;
+
+	public void initializeFor(AbstractRule rule) {
+		this.rule = rule;
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		if (rule == null || rule.eIsProxy())
+			return Collections.emptyList();
+		String methodName = "entryRule" + rule.getName();
+		PolymorphicDispatcher<Collection<FollowElement>> dispatcher = 
+			new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
+		dispatcher.invoke();
+		return parser.getFollowElements();
+	}
+
+}
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g
new file mode 100644
index 00000000..fc95b5bd
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g
@@ -0,0 +1,1073 @@
+/*
+* generated by Xtext
+*/
+grammar InternalMyDsl;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	
+}
+
+@lexer::header {
+package org.xtext.example.mydsl.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.xtext.example.mydsl.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.xtext.example.mydsl.services.MyDslGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private MyDslGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(MyDslGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleModel
+entryRuleModel 
+:
+{ before(grammarAccess.getModelRule()); }
+	 ruleModel
+{ after(grammarAccess.getModelRule()); } 
+	 EOF 
+;
+
+// Rule Model
+ruleModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getModelAccess().getTermsAssignment()); }
+(rule__Model__TermsAssignment)
+{ after(grammarAccess.getModelAccess().getTermsAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTerm
+entryRuleTerm 
+:
+{ before(grammarAccess.getTermRule()); }
+	 ruleTerm
+{ after(grammarAccess.getTermRule()); } 
+	 EOF 
+;
+
+// Rule Term
+ruleTerm
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTermAccess().getGroup()); }
+(rule__Term__Group__0)
+{ after(grammarAccess.getTermAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypes
+entryRuleTypes 
+:
+{ before(grammarAccess.getTypesRule()); }
+	 ruleTypes
+{ after(grammarAccess.getTypesRule()); } 
+	 EOF 
+;
+
+// Rule Types
+ruleTypes
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypesAccess().getAlternatives()); }
+(rule__Types__Alternatives)
+{ after(grammarAccess.getTypesAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleArithmetics
+entryRuleArithmetics 
+:
+{ before(grammarAccess.getArithmeticsRule()); }
+	 ruleArithmetics
+{ after(grammarAccess.getArithmeticsRule()); } 
+	 EOF 
+;
+
+// Rule Arithmetics
+ruleArithmetics
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getArithmeticsAccess().getGroup()); }
+(rule__Arithmetics__Group__0)
+{ after(grammarAccess.getArithmeticsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStrings
+entryRuleStrings 
+:
+{ before(grammarAccess.getStringsRule()); }
+	 ruleStrings
+{ after(grammarAccess.getStringsRule()); } 
+	 EOF 
+;
+
+// Rule Strings
+ruleStrings
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStringsAccess().getGroup()); }
+(rule__Strings__Group__0)
+{ after(grammarAccess.getStringsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDECIMAL
+entryRuleDECIMAL 
+:
+{ before(grammarAccess.getDECIMALRule()); }
+	 ruleDECIMAL
+{ after(grammarAccess.getDECIMALRule()); } 
+	 EOF 
+;
+
+// Rule DECIMAL
+ruleDECIMAL
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDECIMALAccess().getGroup()); }
+(rule__DECIMAL__Group__0)
+{ after(grammarAccess.getDECIMALAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleE_STRING
+entryRuleE_STRING 
+:
+{ before(grammarAccess.getE_STRINGRule()); }
+	 ruleE_STRING
+{ after(grammarAccess.getE_STRINGRule()); } 
+	 EOF 
+;
+
+// Rule E_STRING
+ruleE_STRING
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getE_STRINGAccess().getAlternatives()); }
+(rule__E_STRING__Alternatives)
+{ after(grammarAccess.getE_STRINGAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOperations
+entryRuleOperations 
+:
+{ before(grammarAccess.getOperationsRule()); }
+	 ruleOperations
+{ after(grammarAccess.getOperationsRule()); } 
+	 EOF 
+;
+
+// Rule Operations
+ruleOperations
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOperationsAccess().getTermOperationsAssignment()); }
+(rule__Operations__TermOperationsAssignment)
+{ after(grammarAccess.getOperationsAccess().getTermOperationsAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+// Rule OperationsType
+ruleOperationsType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationsTypeAccess().getAlternatives()); }
+(rule__OperationsType__Alternatives)
+{ after(grammarAccess.getOperationsTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Types__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypesAccess().getArithmeticsParserRuleCall_0()); }
+	ruleArithmetics
+{ after(grammarAccess.getTypesAccess().getArithmeticsParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypesAccess().getStringsParserRuleCall_1()); }
+	ruleStrings
+{ after(grammarAccess.getTypesAccess().getStringsParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTypesAccess().getGroup_2()); }
+(rule__Types__Group_2__0)
+{ after(grammarAccess.getTypesAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__E_STRING__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getE_STRINGAccess().getSTRINGTerminalRuleCall_0()); }
+	RULE_STRING
+{ after(grammarAccess.getE_STRINGAccess().getSTRINGTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getE_STRINGAccess().getIDTerminalRuleCall_1()); }
+	RULE_ID
+{ after(grammarAccess.getE_STRINGAccess().getIDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperationsType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationsTypeAccess().getADDEnumLiteralDeclaration_0()); }
+(	'+' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getADDEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getSUBEnumLiteralDeclaration_1()); }
+(	'-' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getSUBEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getMULTEnumLiteralDeclaration_2()); }
+(	'*' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getMULTEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getDIVEnumLiteralDeclaration_3()); }
+(	'/' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getDIVEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getMODEnumLiteralDeclaration_4()); }
+(	'%' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getMODEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getGREATEREnumLiteralDeclaration_5()); }
+(	'>' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getGREATEREnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getLESSEnumLiteralDeclaration_6()); }
+(	'<' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getLESSEnumLiteralDeclaration_6()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getEQUALSEnumLiteralDeclaration_7()); }
+(	'=' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getEQUALSEnumLiteralDeclaration_7()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getNOTEQUALEnumLiteralDeclaration_8()); }
+(	'!=' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getNOTEQUALEnumLiteralDeclaration_8()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getLESSEQUALEnumLiteralDeclaration_9()); }
+(	'<=' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getLESSEQUALEnumLiteralDeclaration_9()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getGREATEREQUALEnumLiteralDeclaration_10()); }
+(	'>=' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getGREATEREQUALEnumLiteralDeclaration_10()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getANDEnumLiteralDeclaration_11()); }
+(	'AND' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getANDEnumLiteralDeclaration_11()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getOREnumLiteralDeclaration_12()); }
+(	'OR' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getOREnumLiteralDeclaration_12()); }
+)
+
+    |(
+{ before(grammarAccess.getOperationsTypeAccess().getXOREnumLiteralDeclaration_13()); }
+(	'XOR' 
+)
+{ after(grammarAccess.getOperationsTypeAccess().getXOREnumLiteralDeclaration_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Term__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Term__Group__0__Impl
+	rule__Term__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getTypesParserRuleCall_0()); }
+	ruleTypes
+{ after(grammarAccess.getTermAccess().getTypesParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Term__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Term__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getGroup_1()); }
+(rule__Term__Group_1__0)*
+{ after(grammarAccess.getTermAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Term__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Term__Group_1__0__Impl
+	rule__Term__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getTermLeftAction_1_0()); }
+(
+
+)
+{ after(grammarAccess.getTermAccess().getTermLeftAction_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Term__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Term__Group_1__1__Impl
+	rule__Term__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getOperationsAssignment_1_1()); }
+(rule__Term__OperationsAssignment_1_1)
+{ after(grammarAccess.getTermAccess().getOperationsAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Term__Group_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Term__Group_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__Group_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getRightAssignment_1_2()); }
+(rule__Term__RightAssignment_1_2)
+{ after(grammarAccess.getTermAccess().getRightAssignment_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Types__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Types__Group_2__0__Impl
+	rule__Types__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Types__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypesAccess().getLeftParenthesisKeyword_2_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getTypesAccess().getLeftParenthesisKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Types__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Types__Group_2__1__Impl
+	rule__Types__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Types__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypesAccess().getTermParserRuleCall_2_1()); }
+	ruleTerm
+{ after(grammarAccess.getTypesAccess().getTermParserRuleCall_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Types__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Types__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Types__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypesAccess().getRightParenthesisKeyword_2_2()); }
+
+	')' 
+
+{ after(grammarAccess.getTypesAccess().getRightParenthesisKeyword_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Arithmetics__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Arithmetics__Group__0__Impl
+	rule__Arithmetics__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Arithmetics__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getArithmeticsAccess().getExpressionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getArithmeticsAccess().getExpressionAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Arithmetics__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Arithmetics__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Arithmetics__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getArithmeticsAccess().getDECIMALParserRuleCall_1()); }
+	ruleDECIMAL
+{ after(grammarAccess.getArithmeticsAccess().getDECIMALParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Strings__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Strings__Group__0__Impl
+	rule__Strings__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Strings__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringsAccess().getExpressionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getStringsAccess().getExpressionAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Strings__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Strings__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Strings__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringsAccess().getE_STRINGParserRuleCall_1()); }
+	ruleE_STRING
+{ after(grammarAccess.getStringsAccess().getE_STRINGParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DECIMAL__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DECIMAL__Group__0__Impl
+	rule__DECIMAL__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DECIMAL__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDECIMALAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getDECIMALAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DECIMAL__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DECIMAL__Group__1__Impl
+	rule__DECIMAL__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DECIMAL__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DECIMAL__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DECIMAL__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DECIMAL__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDECIMALAccess().getGroup_2()); }
+(rule__DECIMAL__Group_2__0)?
+{ after(grammarAccess.getDECIMALAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DECIMAL__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DECIMAL__Group_2__0__Impl
+	rule__DECIMAL__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DECIMAL__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDECIMALAccess().getFullStopKeyword_2_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getDECIMALAccess().getFullStopKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DECIMAL__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DECIMAL__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DECIMAL__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_2_1()); }
+	RULE_INT
+{ after(grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__Model__TermsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getModelAccess().getTermsTermParserRuleCall_0()); }
+	ruleTerm{ after(grammarAccess.getModelAccess().getTermsTermParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__OperationsAssignment_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getOperationsOperationsParserRuleCall_1_1_0()); }
+	ruleOperations{ after(grammarAccess.getTermAccess().getOperationsOperationsParserRuleCall_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__RightAssignment_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getRightTypesParserRuleCall_1_2_0()); }
+	ruleTypes{ after(grammarAccess.getTermAccess().getRightTypesParserRuleCall_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operations__TermOperationsAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationsAccess().getTermOperationsOperationsTypeEnumRuleCall_0()); }
+	ruleOperationsType{ after(grammarAccess.getOperationsAccess().getTermOperationsOperationsTypeEnumRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.tokens b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.tokens
new file mode 100644
index 00000000..b04f893a
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.tokens
@@ -0,0 +1,41 @@
+RULE_ID=5
+T__27=27
+T__26=26
+T__25=25
+T__24=24
+T__23=23
+T__22=22
+RULE_ANY_OTHER=10
+T__21=21
+T__20=20
+RULE_SL_COMMENT=8
+RULE_ML_COMMENT=7
+T__19=19
+RULE_STRING=4
+T__16=16
+T__15=15
+T__18=18
+T__17=17
+T__12=12
+T__11=11
+T__14=14
+T__13=13
+RULE_INT=6
+RULE_WS=9
+'>='=21
+'/'=14
+'OR'=23
+'>'=16
+'XOR'=24
+'<='=20
+'!='=19
+'='=18
+'<'=17
+'('=25
+'-'=12
+'*'=13
+'+'=11
+'.'=27
+')'=26
+'AND'=22
+'%'=15
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDslLexer.java b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDslLexer.java
new file mode 100644
index 00000000..67db6336
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDslLexer.java
@@ -0,0 +1,1287 @@
+package org.xtext.example.mydsl.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalMyDslLexer extends Lexer {
+    public static final int RULE_ID=5;
+    public static final int T__27=27;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int EOF=-1;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__19=19;
+    public static final int RULE_STRING=4;
+    public static final int T__16=16;
+    public static final int T__15=15;
+    public static final int T__18=18;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int RULE_INT=6;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+    public InternalMyDslLexer() {;} 
+    public InternalMyDslLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalMyDslLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g"; }
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:11:7: ( '+' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:11:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__11"
+
+    // $ANTLR start "T__12"
+    public final void mT__12() throws RecognitionException {
+        try {
+            int _type = T__12;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:12:7: ( '-' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:12:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__12"
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:13:7: ( '*' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:13:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:14:7: ( '/' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:14:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:15:7: ( '%' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:15:9: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:16:7: ( '>' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:16:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:17:7: ( '<' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:17:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:18:7: ( '=' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:18:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:19:7: ( '!=' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:19:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:20:7: ( '<=' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:20:9: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:21:7: ( '>=' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:21:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:22:7: ( 'AND' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:22:9: 'AND'
+            {
+            match("AND"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:23:7: ( 'OR' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:23:9: 'OR'
+            {
+            match("OR"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:24:7: ( 'XOR' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:24:9: 'XOR'
+            {
+            match("XOR"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:25:7: ( '(' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:25:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:26:7: ( ')' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:26:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:27:7: ( '.' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:27:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1059:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1059:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1059:11: ( '^' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='^') ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1059:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1059:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1061:10: ( ( '0' .. '9' )+ )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1061:12: ( '0' .. '9' )+
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1061:12: ( '0' .. '9' )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1061:13: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0=='\"') ) {
+                alt6=1;
+            }
+            else if ( (LA6_0=='\'') ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop4:
+                    do {
+                        int alt4=3;
+                        int LA4_0 = input.LA(1);
+
+                        if ( (LA4_0=='\\') ) {
+                            alt4=1;
+                        }
+                        else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) {
+                            alt4=2;
+                        }
+
+
+                        switch (alt4) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:66: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop4;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop5:
+                    do {
+                        int alt5=3;
+                        int LA5_0 = input.LA(1);
+
+                        if ( (LA5_0=='\\') ) {
+                            alt5=1;
+                        }
+                        else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFF')) ) {
+                            alt5=2;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1063:137: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop5;
+                        }
+                    } while (true);
+
+                    match('\''); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1065:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1065:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1065:24: ( options {greedy=false; } : . )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0=='*') ) {
+                    int LA7_1 = input.LA(2);
+
+                    if ( (LA7_1=='/') ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFF')) ) {
+                        alt7=1;
+                    }
+
+
+                }
+                else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1065:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1067:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1067:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1067:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1067:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop8;
+                }
+            } while (true);
+
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1067:40: ( ( '\\r' )? '\\n' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1067:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1067:41: ( '\\r' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0=='\r') ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1067:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1069:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1069:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1069:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1071:16: ( . )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1071:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=24;
+        alt12 = dfa12.predict(input);
+        switch (alt12) {
+            case 1 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:10: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:16: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:22: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:28: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:34: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:40: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:46: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:52: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:58: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:64: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:70: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:76: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:82: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:88: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:94: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:100: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:106: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:112: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:120: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:129: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:141: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:157: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:173: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1:181: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA12_eotS =
+        "\4\uffff\1\34\1\uffff\1\37\1\41\1\uffff\1\26\3\45\3\uffff\1\26"+
+        "\2\uffff\2\26\17\uffff\1\45\1\uffff\1\57\1\45\6\uffff\1\61\1\uffff"+
+        "\1\62\2\uffff";
+    static final String DFA12_eofS =
+        "\63\uffff";
+    static final String DFA12_minS =
+        "\1\0\3\uffff\1\52\1\uffff\2\75\1\uffff\1\75\1\116\1\122\1\117\3"+
+        "\uffff\1\101\2\uffff\2\0\17\uffff\1\104\1\uffff\1\60\1\122\6\uffff"+
+        "\1\60\1\uffff\1\60\2\uffff";
+    static final String DFA12_maxS =
+        "\1\uffff\3\uffff\1\57\1\uffff\2\75\1\uffff\1\75\1\116\1\122\1\117"+
+        "\3\uffff\1\172\2\uffff\2\uffff\17\uffff\1\104\1\uffff\1\172\1\122"+
+        "\6\uffff\1\172\1\uffff\1\172\2\uffff";
+    static final String DFA12_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\uffff\1\5\2\uffff\1\10\4\uffff\1\17\1\20"+
+        "\1\21\1\uffff\1\22\1\23\2\uffff\1\27\1\30\1\1\1\2\1\3\1\25\1\26"+
+        "\1\4\1\5\1\13\1\6\1\12\1\7\1\10\1\11\1\uffff\1\22\2\uffff\1\17\1"+
+        "\20\1\21\1\23\1\24\1\27\1\uffff\1\15\1\uffff\1\14\1\16";
+    static final String DFA12_specialS =
+        "\1\0\22\uffff\1\1\1\2\36\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\11\26\2\25\2\26\1\25\22\26\1\25\1\11\1\23\2\26\1\5\1\26\1"+
+            "\24\1\15\1\16\1\3\1\1\1\26\1\2\1\17\1\4\12\22\2\26\1\7\1\10"+
+            "\1\6\2\26\1\12\15\21\1\13\10\21\1\14\2\21\3\26\1\20\1\21\1\26"+
+            "\32\21\uff85\26",
+            "",
+            "",
+            "",
+            "\1\32\4\uffff\1\33",
+            "",
+            "\1\36",
+            "\1\40",
+            "",
+            "\1\43",
+            "\1\44",
+            "\1\46",
+            "\1\47",
+            "",
+            "",
+            "",
+            "\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "",
+            "\0\54",
+            "\0\54",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\56",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\60",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA12_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA12_0=='+') ) {s = 1;}
+
+                        else if ( (LA12_0=='-') ) {s = 2;}
+
+                        else if ( (LA12_0=='*') ) {s = 3;}
+
+                        else if ( (LA12_0=='/') ) {s = 4;}
+
+                        else if ( (LA12_0=='%') ) {s = 5;}
+
+                        else if ( (LA12_0=='>') ) {s = 6;}
+
+                        else if ( (LA12_0=='<') ) {s = 7;}
+
+                        else if ( (LA12_0=='=') ) {s = 8;}
+
+                        else if ( (LA12_0=='!') ) {s = 9;}
+
+                        else if ( (LA12_0=='A') ) {s = 10;}
+
+                        else if ( (LA12_0=='O') ) {s = 11;}
+
+                        else if ( (LA12_0=='X') ) {s = 12;}
+
+                        else if ( (LA12_0=='(') ) {s = 13;}
+
+                        else if ( (LA12_0==')') ) {s = 14;}
+
+                        else if ( (LA12_0=='.') ) {s = 15;}
+
+                        else if ( (LA12_0=='^') ) {s = 16;}
+
+                        else if ( ((LA12_0>='B' && LA12_0<='N')||(LA12_0>='P' && LA12_0<='W')||(LA12_0>='Y' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='z')) ) {s = 17;}
+
+                        else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 18;}
+
+                        else if ( (LA12_0=='\"') ) {s = 19;}
+
+                        else if ( (LA12_0=='\'') ) {s = 20;}
+
+                        else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 21;}
+
+                        else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||(LA12_0>='#' && LA12_0<='$')||LA12_0=='&'||LA12_0==','||(LA12_0>=':' && LA12_0<=';')||(LA12_0>='?' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||(LA12_0>='{' && LA12_0<='\uFFFF')) ) {s = 22;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA12_19 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_19>='\u0000' && LA12_19<='\uFFFF')) ) {s = 44;}
+
+                        else s = 22;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_20 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_20>='\u0000' && LA12_20<='\uFFFF')) ) {s = 44;}
+
+                        else s = 22;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDslParser.java b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDslParser.java
new file mode 100644
index 00000000..7e8f3bf0
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDslParser.java
@@ -0,0 +1,2938 @@
+package org.xtext.example.mydsl.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.xtext.example.mydsl.services.MyDslGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalMyDslParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'+'", "'-'", "'*'", "'/'", "'%'", "'>'", "'<'", "'='", "'!='", "'<='", "'>='", "'AND'", "'OR'", "'XOR'", "'('", "')'", "'.'"
+    };
+    public static final int RULE_ID=5;
+    public static final int T__27=27;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int EOF=-1;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__19=19;
+    public static final int RULE_STRING=4;
+    public static final int T__16=16;
+    public static final int T__15=15;
+    public static final int T__18=18;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int RULE_INT=6;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+
+        public InternalMyDslParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalMyDslParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalMyDslParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g"; }
+
+
+     
+     	private MyDslGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(MyDslGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+    // $ANTLR start "entryRuleModel"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:60:1: entryRuleModel : ruleModel EOF ;
+    public final void entryRuleModel() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:61:1: ( ruleModel EOF )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:62:1: ruleModel EOF
+            {
+             before(grammarAccess.getModelRule()); 
+            pushFollow(FOLLOW_ruleModel_in_entryRuleModel61);
+            ruleModel();
+
+            state._fsp--;
+
+             after(grammarAccess.getModelRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleModel68); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleModel"
+
+
+    // $ANTLR start "ruleModel"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:69:1: ruleModel : ( ( rule__Model__TermsAssignment ) ) ;
+    public final void ruleModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:73:2: ( ( ( rule__Model__TermsAssignment ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:74:1: ( ( rule__Model__TermsAssignment ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:74:1: ( ( rule__Model__TermsAssignment ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:75:1: ( rule__Model__TermsAssignment )
+            {
+             before(grammarAccess.getModelAccess().getTermsAssignment()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:76:1: ( rule__Model__TermsAssignment )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:76:2: rule__Model__TermsAssignment
+            {
+            pushFollow(FOLLOW_rule__Model__TermsAssignment_in_ruleModel94);
+            rule__Model__TermsAssignment();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getModelAccess().getTermsAssignment()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleModel"
+
+
+    // $ANTLR start "entryRuleTerm"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:88:1: entryRuleTerm : ruleTerm EOF ;
+    public final void entryRuleTerm() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:89:1: ( ruleTerm EOF )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:90:1: ruleTerm EOF
+            {
+             before(grammarAccess.getTermRule()); 
+            pushFollow(FOLLOW_ruleTerm_in_entryRuleTerm121);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTerm128); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTerm"
+
+
+    // $ANTLR start "ruleTerm"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:97:1: ruleTerm : ( ( rule__Term__Group__0 ) ) ;
+    public final void ruleTerm() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:101:2: ( ( ( rule__Term__Group__0 ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:102:1: ( ( rule__Term__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:102:1: ( ( rule__Term__Group__0 ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:103:1: ( rule__Term__Group__0 )
+            {
+             before(grammarAccess.getTermAccess().getGroup()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:104:1: ( rule__Term__Group__0 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:104:2: rule__Term__Group__0
+            {
+            pushFollow(FOLLOW_rule__Term__Group__0_in_ruleTerm154);
+            rule__Term__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTerm"
+
+
+    // $ANTLR start "entryRuleTypes"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:116:1: entryRuleTypes : ruleTypes EOF ;
+    public final void entryRuleTypes() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:117:1: ( ruleTypes EOF )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:118:1: ruleTypes EOF
+            {
+             before(grammarAccess.getTypesRule()); 
+            pushFollow(FOLLOW_ruleTypes_in_entryRuleTypes181);
+            ruleTypes();
+
+            state._fsp--;
+
+             after(grammarAccess.getTypesRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTypes188); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTypes"
+
+
+    // $ANTLR start "ruleTypes"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:125:1: ruleTypes : ( ( rule__Types__Alternatives ) ) ;
+    public final void ruleTypes() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:129:2: ( ( ( rule__Types__Alternatives ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:130:1: ( ( rule__Types__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:130:1: ( ( rule__Types__Alternatives ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:131:1: ( rule__Types__Alternatives )
+            {
+             before(grammarAccess.getTypesAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:132:1: ( rule__Types__Alternatives )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:132:2: rule__Types__Alternatives
+            {
+            pushFollow(FOLLOW_rule__Types__Alternatives_in_ruleTypes214);
+            rule__Types__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTypesAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTypes"
+
+
+    // $ANTLR start "entryRuleArithmetics"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:144:1: entryRuleArithmetics : ruleArithmetics EOF ;
+    public final void entryRuleArithmetics() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:145:1: ( ruleArithmetics EOF )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:146:1: ruleArithmetics EOF
+            {
+             before(grammarAccess.getArithmeticsRule()); 
+            pushFollow(FOLLOW_ruleArithmetics_in_entryRuleArithmetics241);
+            ruleArithmetics();
+
+            state._fsp--;
+
+             after(grammarAccess.getArithmeticsRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleArithmetics248); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleArithmetics"
+
+
+    // $ANTLR start "ruleArithmetics"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:153:1: ruleArithmetics : ( ( rule__Arithmetics__Group__0 ) ) ;
+    public final void ruleArithmetics() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:157:2: ( ( ( rule__Arithmetics__Group__0 ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:158:1: ( ( rule__Arithmetics__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:158:1: ( ( rule__Arithmetics__Group__0 ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:159:1: ( rule__Arithmetics__Group__0 )
+            {
+             before(grammarAccess.getArithmeticsAccess().getGroup()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:160:1: ( rule__Arithmetics__Group__0 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:160:2: rule__Arithmetics__Group__0
+            {
+            pushFollow(FOLLOW_rule__Arithmetics__Group__0_in_ruleArithmetics274);
+            rule__Arithmetics__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getArithmeticsAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleArithmetics"
+
+
+    // $ANTLR start "entryRuleStrings"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:172:1: entryRuleStrings : ruleStrings EOF ;
+    public final void entryRuleStrings() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:173:1: ( ruleStrings EOF )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:174:1: ruleStrings EOF
+            {
+             before(grammarAccess.getStringsRule()); 
+            pushFollow(FOLLOW_ruleStrings_in_entryRuleStrings301);
+            ruleStrings();
+
+            state._fsp--;
+
+             after(grammarAccess.getStringsRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStrings308); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleStrings"
+
+
+    // $ANTLR start "ruleStrings"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:181:1: ruleStrings : ( ( rule__Strings__Group__0 ) ) ;
+    public final void ruleStrings() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:185:2: ( ( ( rule__Strings__Group__0 ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:186:1: ( ( rule__Strings__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:186:1: ( ( rule__Strings__Group__0 ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:187:1: ( rule__Strings__Group__0 )
+            {
+             before(grammarAccess.getStringsAccess().getGroup()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:188:1: ( rule__Strings__Group__0 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:188:2: rule__Strings__Group__0
+            {
+            pushFollow(FOLLOW_rule__Strings__Group__0_in_ruleStrings334);
+            rule__Strings__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getStringsAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleStrings"
+
+
+    // $ANTLR start "entryRuleDECIMAL"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:200:1: entryRuleDECIMAL : ruleDECIMAL EOF ;
+    public final void entryRuleDECIMAL() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:201:1: ( ruleDECIMAL EOF )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:202:1: ruleDECIMAL EOF
+            {
+             before(grammarAccess.getDECIMALRule()); 
+            pushFollow(FOLLOW_ruleDECIMAL_in_entryRuleDECIMAL361);
+            ruleDECIMAL();
+
+            state._fsp--;
+
+             after(grammarAccess.getDECIMALRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDECIMAL368); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDECIMAL"
+
+
+    // $ANTLR start "ruleDECIMAL"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:209:1: ruleDECIMAL : ( ( rule__DECIMAL__Group__0 ) ) ;
+    public final void ruleDECIMAL() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:213:2: ( ( ( rule__DECIMAL__Group__0 ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:214:1: ( ( rule__DECIMAL__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:214:1: ( ( rule__DECIMAL__Group__0 ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:215:1: ( rule__DECIMAL__Group__0 )
+            {
+             before(grammarAccess.getDECIMALAccess().getGroup()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:216:1: ( rule__DECIMAL__Group__0 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:216:2: rule__DECIMAL__Group__0
+            {
+            pushFollow(FOLLOW_rule__DECIMAL__Group__0_in_ruleDECIMAL394);
+            rule__DECIMAL__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDECIMALAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDECIMAL"
+
+
+    // $ANTLR start "entryRuleE_STRING"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:228:1: entryRuleE_STRING : ruleE_STRING EOF ;
+    public final void entryRuleE_STRING() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:229:1: ( ruleE_STRING EOF )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:230:1: ruleE_STRING EOF
+            {
+             before(grammarAccess.getE_STRINGRule()); 
+            pushFollow(FOLLOW_ruleE_STRING_in_entryRuleE_STRING421);
+            ruleE_STRING();
+
+            state._fsp--;
+
+             after(grammarAccess.getE_STRINGRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleE_STRING428); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleE_STRING"
+
+
+    // $ANTLR start "ruleE_STRING"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:237:1: ruleE_STRING : ( ( rule__E_STRING__Alternatives ) ) ;
+    public final void ruleE_STRING() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:241:2: ( ( ( rule__E_STRING__Alternatives ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:242:1: ( ( rule__E_STRING__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:242:1: ( ( rule__E_STRING__Alternatives ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:243:1: ( rule__E_STRING__Alternatives )
+            {
+             before(grammarAccess.getE_STRINGAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:244:1: ( rule__E_STRING__Alternatives )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:244:2: rule__E_STRING__Alternatives
+            {
+            pushFollow(FOLLOW_rule__E_STRING__Alternatives_in_ruleE_STRING454);
+            rule__E_STRING__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getE_STRINGAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleE_STRING"
+
+
+    // $ANTLR start "entryRuleOperations"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:256:1: entryRuleOperations : ruleOperations EOF ;
+    public final void entryRuleOperations() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:257:1: ( ruleOperations EOF )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:258:1: ruleOperations EOF
+            {
+             before(grammarAccess.getOperationsRule()); 
+            pushFollow(FOLLOW_ruleOperations_in_entryRuleOperations481);
+            ruleOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getOperationsRule()); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOperations488); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOperations"
+
+
+    // $ANTLR start "ruleOperations"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:265:1: ruleOperations : ( ( rule__Operations__TermOperationsAssignment ) ) ;
+    public final void ruleOperations() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:269:2: ( ( ( rule__Operations__TermOperationsAssignment ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:270:1: ( ( rule__Operations__TermOperationsAssignment ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:270:1: ( ( rule__Operations__TermOperationsAssignment ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:271:1: ( rule__Operations__TermOperationsAssignment )
+            {
+             before(grammarAccess.getOperationsAccess().getTermOperationsAssignment()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:272:1: ( rule__Operations__TermOperationsAssignment )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:272:2: rule__Operations__TermOperationsAssignment
+            {
+            pushFollow(FOLLOW_rule__Operations__TermOperationsAssignment_in_ruleOperations514);
+            rule__Operations__TermOperationsAssignment();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getOperationsAccess().getTermOperationsAssignment()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOperations"
+
+
+    // $ANTLR start "ruleOperationsType"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:285:1: ruleOperationsType : ( ( rule__OperationsType__Alternatives ) ) ;
+    public final void ruleOperationsType() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:289:1: ( ( ( rule__OperationsType__Alternatives ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:290:1: ( ( rule__OperationsType__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:290:1: ( ( rule__OperationsType__Alternatives ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:291:1: ( rule__OperationsType__Alternatives )
+            {
+             before(grammarAccess.getOperationsTypeAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:292:1: ( rule__OperationsType__Alternatives )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:292:2: rule__OperationsType__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OperationsType__Alternatives_in_ruleOperationsType551);
+            rule__OperationsType__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getOperationsTypeAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOperationsType"
+
+
+    // $ANTLR start "rule__Types__Alternatives"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:303:1: rule__Types__Alternatives : ( ( ruleArithmetics ) | ( ruleStrings ) | ( ( rule__Types__Group_2__0 ) ) );
+    public final void rule__Types__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:307:1: ( ( ruleArithmetics ) | ( ruleStrings ) | ( ( rule__Types__Group_2__0 ) ) )
+            int alt1=3;
+            switch ( input.LA(1) ) {
+            case RULE_INT:
+            case 12:
+                {
+                alt1=1;
+                }
+                break;
+            case RULE_STRING:
+            case RULE_ID:
+                {
+                alt1=2;
+                }
+                break;
+            case 25:
+                {
+                alt1=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt1) {
+                case 1 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:308:1: ( ruleArithmetics )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:308:1: ( ruleArithmetics )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:309:1: ruleArithmetics
+                    {
+                     before(grammarAccess.getTypesAccess().getArithmeticsParserRuleCall_0()); 
+                    pushFollow(FOLLOW_ruleArithmetics_in_rule__Types__Alternatives586);
+                    ruleArithmetics();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTypesAccess().getArithmeticsParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:314:6: ( ruleStrings )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:314:6: ( ruleStrings )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:315:1: ruleStrings
+                    {
+                     before(grammarAccess.getTypesAccess().getStringsParserRuleCall_1()); 
+                    pushFollow(FOLLOW_ruleStrings_in_rule__Types__Alternatives603);
+                    ruleStrings();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTypesAccess().getStringsParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:320:6: ( ( rule__Types__Group_2__0 ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:320:6: ( ( rule__Types__Group_2__0 ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:321:1: ( rule__Types__Group_2__0 )
+                    {
+                     before(grammarAccess.getTypesAccess().getGroup_2()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:322:1: ( rule__Types__Group_2__0 )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:322:2: rule__Types__Group_2__0
+                    {
+                    pushFollow(FOLLOW_rule__Types__Group_2__0_in_rule__Types__Alternatives620);
+                    rule__Types__Group_2__0();
+
+                    state._fsp--;
+
+
+                    }
+
+                     after(grammarAccess.getTypesAccess().getGroup_2()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Types__Alternatives"
+
+
+    // $ANTLR start "rule__E_STRING__Alternatives"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:331:1: rule__E_STRING__Alternatives : ( ( RULE_STRING ) | ( RULE_ID ) );
+    public final void rule__E_STRING__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:335:1: ( ( RULE_STRING ) | ( RULE_ID ) )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==RULE_STRING) ) {
+                alt2=1;
+            }
+            else if ( (LA2_0==RULE_ID) ) {
+                alt2=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:336:1: ( RULE_STRING )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:336:1: ( RULE_STRING )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:337:1: RULE_STRING
+                    {
+                     before(grammarAccess.getE_STRINGAccess().getSTRINGTerminalRuleCall_0()); 
+                    match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__E_STRING__Alternatives653); 
+                     after(grammarAccess.getE_STRINGAccess().getSTRINGTerminalRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:342:6: ( RULE_ID )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:342:6: ( RULE_ID )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:343:1: RULE_ID
+                    {
+                     before(grammarAccess.getE_STRINGAccess().getIDTerminalRuleCall_1()); 
+                    match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__E_STRING__Alternatives670); 
+                     after(grammarAccess.getE_STRINGAccess().getIDTerminalRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__E_STRING__Alternatives"
+
+
+    // $ANTLR start "rule__OperationsType__Alternatives"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:353:1: rule__OperationsType__Alternatives : ( ( ( '+' ) ) | ( ( '-' ) ) | ( ( '*' ) ) | ( ( '/' ) ) | ( ( '%' ) ) | ( ( '>' ) ) | ( ( '<' ) ) | ( ( '=' ) ) | ( ( '!=' ) ) | ( ( '<=' ) ) | ( ( '>=' ) ) | ( ( 'AND' ) ) | ( ( 'OR' ) ) | ( ( 'XOR' ) ) );
+    public final void rule__OperationsType__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:357:1: ( ( ( '+' ) ) | ( ( '-' ) ) | ( ( '*' ) ) | ( ( '/' ) ) | ( ( '%' ) ) | ( ( '>' ) ) | ( ( '<' ) ) | ( ( '=' ) ) | ( ( '!=' ) ) | ( ( '<=' ) ) | ( ( '>=' ) ) | ( ( 'AND' ) ) | ( ( 'OR' ) ) | ( ( 'XOR' ) ) )
+            int alt3=14;
+            switch ( input.LA(1) ) {
+            case 11:
+                {
+                alt3=1;
+                }
+                break;
+            case 12:
+                {
+                alt3=2;
+                }
+                break;
+            case 13:
+                {
+                alt3=3;
+                }
+                break;
+            case 14:
+                {
+                alt3=4;
+                }
+                break;
+            case 15:
+                {
+                alt3=5;
+                }
+                break;
+            case 16:
+                {
+                alt3=6;
+                }
+                break;
+            case 17:
+                {
+                alt3=7;
+                }
+                break;
+            case 18:
+                {
+                alt3=8;
+                }
+                break;
+            case 19:
+                {
+                alt3=9;
+                }
+                break;
+            case 20:
+                {
+                alt3=10;
+                }
+                break;
+            case 21:
+                {
+                alt3=11;
+                }
+                break;
+            case 22:
+                {
+                alt3=12;
+                }
+                break;
+            case 23:
+                {
+                alt3=13;
+                }
+                break;
+            case 24:
+                {
+                alt3=14;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt3) {
+                case 1 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:358:1: ( ( '+' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:358:1: ( ( '+' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:359:1: ( '+' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getADDEnumLiteralDeclaration_0()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:360:1: ( '+' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:360:3: '+'
+                    {
+                    match(input,11,FOLLOW_11_in_rule__OperationsType__Alternatives703); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getADDEnumLiteralDeclaration_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:365:6: ( ( '-' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:365:6: ( ( '-' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:366:1: ( '-' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getSUBEnumLiteralDeclaration_1()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:367:1: ( '-' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:367:3: '-'
+                    {
+                    match(input,12,FOLLOW_12_in_rule__OperationsType__Alternatives724); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getSUBEnumLiteralDeclaration_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:372:6: ( ( '*' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:372:6: ( ( '*' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:373:1: ( '*' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getMULTEnumLiteralDeclaration_2()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:374:1: ( '*' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:374:3: '*'
+                    {
+                    match(input,13,FOLLOW_13_in_rule__OperationsType__Alternatives745); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getMULTEnumLiteralDeclaration_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:379:6: ( ( '/' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:379:6: ( ( '/' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:380:1: ( '/' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getDIVEnumLiteralDeclaration_3()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:381:1: ( '/' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:381:3: '/'
+                    {
+                    match(input,14,FOLLOW_14_in_rule__OperationsType__Alternatives766); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getDIVEnumLiteralDeclaration_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:386:6: ( ( '%' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:386:6: ( ( '%' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:387:1: ( '%' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getMODEnumLiteralDeclaration_4()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:388:1: ( '%' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:388:3: '%'
+                    {
+                    match(input,15,FOLLOW_15_in_rule__OperationsType__Alternatives787); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getMODEnumLiteralDeclaration_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:393:6: ( ( '>' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:393:6: ( ( '>' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:394:1: ( '>' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getGREATEREnumLiteralDeclaration_5()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:395:1: ( '>' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:395:3: '>'
+                    {
+                    match(input,16,FOLLOW_16_in_rule__OperationsType__Alternatives808); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getGREATEREnumLiteralDeclaration_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:400:6: ( ( '<' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:400:6: ( ( '<' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:401:1: ( '<' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getLESSEnumLiteralDeclaration_6()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:402:1: ( '<' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:402:3: '<'
+                    {
+                    match(input,17,FOLLOW_17_in_rule__OperationsType__Alternatives829); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getLESSEnumLiteralDeclaration_6()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:407:6: ( ( '=' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:407:6: ( ( '=' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:408:1: ( '=' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getEQUALSEnumLiteralDeclaration_7()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:409:1: ( '=' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:409:3: '='
+                    {
+                    match(input,18,FOLLOW_18_in_rule__OperationsType__Alternatives850); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getEQUALSEnumLiteralDeclaration_7()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:414:6: ( ( '!=' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:414:6: ( ( '!=' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:415:1: ( '!=' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getNOTEQUALEnumLiteralDeclaration_8()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:416:1: ( '!=' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:416:3: '!='
+                    {
+                    match(input,19,FOLLOW_19_in_rule__OperationsType__Alternatives871); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getNOTEQUALEnumLiteralDeclaration_8()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:421:6: ( ( '<=' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:421:6: ( ( '<=' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:422:1: ( '<=' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getLESSEQUALEnumLiteralDeclaration_9()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:423:1: ( '<=' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:423:3: '<='
+                    {
+                    match(input,20,FOLLOW_20_in_rule__OperationsType__Alternatives892); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getLESSEQUALEnumLiteralDeclaration_9()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:428:6: ( ( '>=' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:428:6: ( ( '>=' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:429:1: ( '>=' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getGREATEREQUALEnumLiteralDeclaration_10()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:430:1: ( '>=' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:430:3: '>='
+                    {
+                    match(input,21,FOLLOW_21_in_rule__OperationsType__Alternatives913); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getGREATEREQUALEnumLiteralDeclaration_10()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:435:6: ( ( 'AND' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:435:6: ( ( 'AND' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:436:1: ( 'AND' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getANDEnumLiteralDeclaration_11()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:437:1: ( 'AND' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:437:3: 'AND'
+                    {
+                    match(input,22,FOLLOW_22_in_rule__OperationsType__Alternatives934); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getANDEnumLiteralDeclaration_11()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:442:6: ( ( 'OR' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:442:6: ( ( 'OR' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:443:1: ( 'OR' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getOREnumLiteralDeclaration_12()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:444:1: ( 'OR' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:444:3: 'OR'
+                    {
+                    match(input,23,FOLLOW_23_in_rule__OperationsType__Alternatives955); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getOREnumLiteralDeclaration_12()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:449:6: ( ( 'XOR' ) )
+                    {
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:449:6: ( ( 'XOR' ) )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:450:1: ( 'XOR' )
+                    {
+                     before(grammarAccess.getOperationsTypeAccess().getXOREnumLiteralDeclaration_13()); 
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:451:1: ( 'XOR' )
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:451:3: 'XOR'
+                    {
+                    match(input,24,FOLLOW_24_in_rule__OperationsType__Alternatives976); 
+
+                    }
+
+                     after(grammarAccess.getOperationsTypeAccess().getXOREnumLiteralDeclaration_13()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OperationsType__Alternatives"
+
+
+    // $ANTLR start "rule__Term__Group__0"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:463:1: rule__Term__Group__0 : rule__Term__Group__0__Impl rule__Term__Group__1 ;
+    public final void rule__Term__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:467:1: ( rule__Term__Group__0__Impl rule__Term__Group__1 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:468:2: rule__Term__Group__0__Impl rule__Term__Group__1
+            {
+            pushFollow(FOLLOW_rule__Term__Group__0__Impl_in_rule__Term__Group__01009);
+            rule__Term__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Term__Group__1_in_rule__Term__Group__01012);
+            rule__Term__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group__0"
+
+
+    // $ANTLR start "rule__Term__Group__0__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:475:1: rule__Term__Group__0__Impl : ( ruleTypes ) ;
+    public final void rule__Term__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:479:1: ( ( ruleTypes ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:480:1: ( ruleTypes )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:480:1: ( ruleTypes )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:481:1: ruleTypes
+            {
+             before(grammarAccess.getTermAccess().getTypesParserRuleCall_0()); 
+            pushFollow(FOLLOW_ruleTypes_in_rule__Term__Group__0__Impl1039);
+            ruleTypes();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermAccess().getTypesParserRuleCall_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Term__Group__1"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:492:1: rule__Term__Group__1 : rule__Term__Group__1__Impl ;
+    public final void rule__Term__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:496:1: ( rule__Term__Group__1__Impl )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:497:2: rule__Term__Group__1__Impl
+            {
+            pushFollow(FOLLOW_rule__Term__Group__1__Impl_in_rule__Term__Group__11068);
+            rule__Term__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group__1"
+
+
+    // $ANTLR start "rule__Term__Group__1__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:503:1: rule__Term__Group__1__Impl : ( ( rule__Term__Group_1__0 )* ) ;
+    public final void rule__Term__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:507:1: ( ( ( rule__Term__Group_1__0 )* ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:508:1: ( ( rule__Term__Group_1__0 )* )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:508:1: ( ( rule__Term__Group_1__0 )* )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:509:1: ( rule__Term__Group_1__0 )*
+            {
+             before(grammarAccess.getTermAccess().getGroup_1()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:510:1: ( rule__Term__Group_1__0 )*
+            loop4:
+            do {
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+
+                if ( ((LA4_0>=11 && LA4_0<=24)) ) {
+                    alt4=1;
+                }
+
+
+                switch (alt4) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:510:2: rule__Term__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_rule__Term__Group_1__0_in_rule__Term__Group__1__Impl1095);
+            	    rule__Term__Group_1__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop4;
+                }
+            } while (true);
+
+             after(grammarAccess.getTermAccess().getGroup_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Term__Group_1__0"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:524:1: rule__Term__Group_1__0 : rule__Term__Group_1__0__Impl rule__Term__Group_1__1 ;
+    public final void rule__Term__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:528:1: ( rule__Term__Group_1__0__Impl rule__Term__Group_1__1 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:529:2: rule__Term__Group_1__0__Impl rule__Term__Group_1__1
+            {
+            pushFollow(FOLLOW_rule__Term__Group_1__0__Impl_in_rule__Term__Group_1__01130);
+            rule__Term__Group_1__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Term__Group_1__1_in_rule__Term__Group_1__01133);
+            rule__Term__Group_1__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group_1__0"
+
+
+    // $ANTLR start "rule__Term__Group_1__0__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:536:1: rule__Term__Group_1__0__Impl : ( () ) ;
+    public final void rule__Term__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:540:1: ( ( () ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:541:1: ( () )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:541:1: ( () )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:542:1: ()
+            {
+             before(grammarAccess.getTermAccess().getTermLeftAction_1_0()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:543:1: ()
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:545:1: 
+            {
+            }
+
+             after(grammarAccess.getTermAccess().getTermLeftAction_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__Term__Group_1__1"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:555:1: rule__Term__Group_1__1 : rule__Term__Group_1__1__Impl rule__Term__Group_1__2 ;
+    public final void rule__Term__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:559:1: ( rule__Term__Group_1__1__Impl rule__Term__Group_1__2 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:560:2: rule__Term__Group_1__1__Impl rule__Term__Group_1__2
+            {
+            pushFollow(FOLLOW_rule__Term__Group_1__1__Impl_in_rule__Term__Group_1__11191);
+            rule__Term__Group_1__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Term__Group_1__2_in_rule__Term__Group_1__11194);
+            rule__Term__Group_1__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group_1__1"
+
+
+    // $ANTLR start "rule__Term__Group_1__1__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:567:1: rule__Term__Group_1__1__Impl : ( ( rule__Term__OperationsAssignment_1_1 ) ) ;
+    public final void rule__Term__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:571:1: ( ( ( rule__Term__OperationsAssignment_1_1 ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:572:1: ( ( rule__Term__OperationsAssignment_1_1 ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:572:1: ( ( rule__Term__OperationsAssignment_1_1 ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:573:1: ( rule__Term__OperationsAssignment_1_1 )
+            {
+             before(grammarAccess.getTermAccess().getOperationsAssignment_1_1()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:574:1: ( rule__Term__OperationsAssignment_1_1 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:574:2: rule__Term__OperationsAssignment_1_1
+            {
+            pushFollow(FOLLOW_rule__Term__OperationsAssignment_1_1_in_rule__Term__Group_1__1__Impl1221);
+            rule__Term__OperationsAssignment_1_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermAccess().getOperationsAssignment_1_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__Term__Group_1__2"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:584:1: rule__Term__Group_1__2 : rule__Term__Group_1__2__Impl ;
+    public final void rule__Term__Group_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:588:1: ( rule__Term__Group_1__2__Impl )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:589:2: rule__Term__Group_1__2__Impl
+            {
+            pushFollow(FOLLOW_rule__Term__Group_1__2__Impl_in_rule__Term__Group_1__21251);
+            rule__Term__Group_1__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group_1__2"
+
+
+    // $ANTLR start "rule__Term__Group_1__2__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:595:1: rule__Term__Group_1__2__Impl : ( ( rule__Term__RightAssignment_1_2 ) ) ;
+    public final void rule__Term__Group_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:599:1: ( ( ( rule__Term__RightAssignment_1_2 ) ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:600:1: ( ( rule__Term__RightAssignment_1_2 ) )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:600:1: ( ( rule__Term__RightAssignment_1_2 ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:601:1: ( rule__Term__RightAssignment_1_2 )
+            {
+             before(grammarAccess.getTermAccess().getRightAssignment_1_2()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:602:1: ( rule__Term__RightAssignment_1_2 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:602:2: rule__Term__RightAssignment_1_2
+            {
+            pushFollow(FOLLOW_rule__Term__RightAssignment_1_2_in_rule__Term__Group_1__2__Impl1278);
+            rule__Term__RightAssignment_1_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermAccess().getRightAssignment_1_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Group_1__2__Impl"
+
+
+    // $ANTLR start "rule__Types__Group_2__0"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:618:1: rule__Types__Group_2__0 : rule__Types__Group_2__0__Impl rule__Types__Group_2__1 ;
+    public final void rule__Types__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:622:1: ( rule__Types__Group_2__0__Impl rule__Types__Group_2__1 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:623:2: rule__Types__Group_2__0__Impl rule__Types__Group_2__1
+            {
+            pushFollow(FOLLOW_rule__Types__Group_2__0__Impl_in_rule__Types__Group_2__01314);
+            rule__Types__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Types__Group_2__1_in_rule__Types__Group_2__01317);
+            rule__Types__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Types__Group_2__0"
+
+
+    // $ANTLR start "rule__Types__Group_2__0__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:630:1: rule__Types__Group_2__0__Impl : ( '(' ) ;
+    public final void rule__Types__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:634:1: ( ( '(' ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:635:1: ( '(' )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:635:1: ( '(' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:636:1: '('
+            {
+             before(grammarAccess.getTypesAccess().getLeftParenthesisKeyword_2_0()); 
+            match(input,25,FOLLOW_25_in_rule__Types__Group_2__0__Impl1345); 
+             after(grammarAccess.getTypesAccess().getLeftParenthesisKeyword_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Types__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__Types__Group_2__1"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:649:1: rule__Types__Group_2__1 : rule__Types__Group_2__1__Impl rule__Types__Group_2__2 ;
+    public final void rule__Types__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:653:1: ( rule__Types__Group_2__1__Impl rule__Types__Group_2__2 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:654:2: rule__Types__Group_2__1__Impl rule__Types__Group_2__2
+            {
+            pushFollow(FOLLOW_rule__Types__Group_2__1__Impl_in_rule__Types__Group_2__11376);
+            rule__Types__Group_2__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Types__Group_2__2_in_rule__Types__Group_2__11379);
+            rule__Types__Group_2__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Types__Group_2__1"
+
+
+    // $ANTLR start "rule__Types__Group_2__1__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:661:1: rule__Types__Group_2__1__Impl : ( ruleTerm ) ;
+    public final void rule__Types__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:665:1: ( ( ruleTerm ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:666:1: ( ruleTerm )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:666:1: ( ruleTerm )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:667:1: ruleTerm
+            {
+             before(grammarAccess.getTypesAccess().getTermParserRuleCall_2_1()); 
+            pushFollow(FOLLOW_ruleTerm_in_rule__Types__Group_2__1__Impl1406);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getTypesAccess().getTermParserRuleCall_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Types__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__Types__Group_2__2"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:678:1: rule__Types__Group_2__2 : rule__Types__Group_2__2__Impl ;
+    public final void rule__Types__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:682:1: ( rule__Types__Group_2__2__Impl )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:683:2: rule__Types__Group_2__2__Impl
+            {
+            pushFollow(FOLLOW_rule__Types__Group_2__2__Impl_in_rule__Types__Group_2__21435);
+            rule__Types__Group_2__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Types__Group_2__2"
+
+
+    // $ANTLR start "rule__Types__Group_2__2__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:689:1: rule__Types__Group_2__2__Impl : ( ')' ) ;
+    public final void rule__Types__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:693:1: ( ( ')' ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:694:1: ( ')' )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:694:1: ( ')' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:695:1: ')'
+            {
+             before(grammarAccess.getTypesAccess().getRightParenthesisKeyword_2_2()); 
+            match(input,26,FOLLOW_26_in_rule__Types__Group_2__2__Impl1463); 
+             after(grammarAccess.getTypesAccess().getRightParenthesisKeyword_2_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Types__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__Arithmetics__Group__0"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:714:1: rule__Arithmetics__Group__0 : rule__Arithmetics__Group__0__Impl rule__Arithmetics__Group__1 ;
+    public final void rule__Arithmetics__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:718:1: ( rule__Arithmetics__Group__0__Impl rule__Arithmetics__Group__1 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:719:2: rule__Arithmetics__Group__0__Impl rule__Arithmetics__Group__1
+            {
+            pushFollow(FOLLOW_rule__Arithmetics__Group__0__Impl_in_rule__Arithmetics__Group__01500);
+            rule__Arithmetics__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Arithmetics__Group__1_in_rule__Arithmetics__Group__01503);
+            rule__Arithmetics__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Arithmetics__Group__0"
+
+
+    // $ANTLR start "rule__Arithmetics__Group__0__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:726:1: rule__Arithmetics__Group__0__Impl : ( () ) ;
+    public final void rule__Arithmetics__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:730:1: ( ( () ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:731:1: ( () )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:731:1: ( () )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:732:1: ()
+            {
+             before(grammarAccess.getArithmeticsAccess().getExpressionAction_0()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:733:1: ()
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:735:1: 
+            {
+            }
+
+             after(grammarAccess.getArithmeticsAccess().getExpressionAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Arithmetics__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Arithmetics__Group__1"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:745:1: rule__Arithmetics__Group__1 : rule__Arithmetics__Group__1__Impl ;
+    public final void rule__Arithmetics__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:749:1: ( rule__Arithmetics__Group__1__Impl )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:750:2: rule__Arithmetics__Group__1__Impl
+            {
+            pushFollow(FOLLOW_rule__Arithmetics__Group__1__Impl_in_rule__Arithmetics__Group__11561);
+            rule__Arithmetics__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Arithmetics__Group__1"
+
+
+    // $ANTLR start "rule__Arithmetics__Group__1__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:756:1: rule__Arithmetics__Group__1__Impl : ( ruleDECIMAL ) ;
+    public final void rule__Arithmetics__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:760:1: ( ( ruleDECIMAL ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:761:1: ( ruleDECIMAL )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:761:1: ( ruleDECIMAL )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:762:1: ruleDECIMAL
+            {
+             before(grammarAccess.getArithmeticsAccess().getDECIMALParserRuleCall_1()); 
+            pushFollow(FOLLOW_ruleDECIMAL_in_rule__Arithmetics__Group__1__Impl1588);
+            ruleDECIMAL();
+
+            state._fsp--;
+
+             after(grammarAccess.getArithmeticsAccess().getDECIMALParserRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Arithmetics__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Strings__Group__0"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:777:1: rule__Strings__Group__0 : rule__Strings__Group__0__Impl rule__Strings__Group__1 ;
+    public final void rule__Strings__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:781:1: ( rule__Strings__Group__0__Impl rule__Strings__Group__1 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:782:2: rule__Strings__Group__0__Impl rule__Strings__Group__1
+            {
+            pushFollow(FOLLOW_rule__Strings__Group__0__Impl_in_rule__Strings__Group__01621);
+            rule__Strings__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__Strings__Group__1_in_rule__Strings__Group__01624);
+            rule__Strings__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Strings__Group__0"
+
+
+    // $ANTLR start "rule__Strings__Group__0__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:789:1: rule__Strings__Group__0__Impl : ( () ) ;
+    public final void rule__Strings__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:793:1: ( ( () ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:794:1: ( () )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:794:1: ( () )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:795:1: ()
+            {
+             before(grammarAccess.getStringsAccess().getExpressionAction_0()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:796:1: ()
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:798:1: 
+            {
+            }
+
+             after(grammarAccess.getStringsAccess().getExpressionAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Strings__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Strings__Group__1"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:808:1: rule__Strings__Group__1 : rule__Strings__Group__1__Impl ;
+    public final void rule__Strings__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:812:1: ( rule__Strings__Group__1__Impl )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:813:2: rule__Strings__Group__1__Impl
+            {
+            pushFollow(FOLLOW_rule__Strings__Group__1__Impl_in_rule__Strings__Group__11682);
+            rule__Strings__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Strings__Group__1"
+
+
+    // $ANTLR start "rule__Strings__Group__1__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:819:1: rule__Strings__Group__1__Impl : ( ruleE_STRING ) ;
+    public final void rule__Strings__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:823:1: ( ( ruleE_STRING ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:824:1: ( ruleE_STRING )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:824:1: ( ruleE_STRING )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:825:1: ruleE_STRING
+            {
+             before(grammarAccess.getStringsAccess().getE_STRINGParserRuleCall_1()); 
+            pushFollow(FOLLOW_ruleE_STRING_in_rule__Strings__Group__1__Impl1709);
+            ruleE_STRING();
+
+            state._fsp--;
+
+             after(grammarAccess.getStringsAccess().getE_STRINGParserRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Strings__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DECIMAL__Group__0"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:840:1: rule__DECIMAL__Group__0 : rule__DECIMAL__Group__0__Impl rule__DECIMAL__Group__1 ;
+    public final void rule__DECIMAL__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:844:1: ( rule__DECIMAL__Group__0__Impl rule__DECIMAL__Group__1 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:845:2: rule__DECIMAL__Group__0__Impl rule__DECIMAL__Group__1
+            {
+            pushFollow(FOLLOW_rule__DECIMAL__Group__0__Impl_in_rule__DECIMAL__Group__01742);
+            rule__DECIMAL__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__DECIMAL__Group__1_in_rule__DECIMAL__Group__01745);
+            rule__DECIMAL__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group__0"
+
+
+    // $ANTLR start "rule__DECIMAL__Group__0__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:852:1: rule__DECIMAL__Group__0__Impl : ( ( '-' )? ) ;
+    public final void rule__DECIMAL__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:856:1: ( ( ( '-' )? ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:857:1: ( ( '-' )? )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:857:1: ( ( '-' )? )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:858:1: ( '-' )?
+            {
+             before(grammarAccess.getDECIMALAccess().getHyphenMinusKeyword_0()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:859:1: ( '-' )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==12) ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:860:2: '-'
+                    {
+                    match(input,12,FOLLOW_12_in_rule__DECIMAL__Group__0__Impl1774); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDECIMALAccess().getHyphenMinusKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group__0__Impl"
+
+
+    // $ANTLR start "rule__DECIMAL__Group__1"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:871:1: rule__DECIMAL__Group__1 : rule__DECIMAL__Group__1__Impl rule__DECIMAL__Group__2 ;
+    public final void rule__DECIMAL__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:875:1: ( rule__DECIMAL__Group__1__Impl rule__DECIMAL__Group__2 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:876:2: rule__DECIMAL__Group__1__Impl rule__DECIMAL__Group__2
+            {
+            pushFollow(FOLLOW_rule__DECIMAL__Group__1__Impl_in_rule__DECIMAL__Group__11807);
+            rule__DECIMAL__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__DECIMAL__Group__2_in_rule__DECIMAL__Group__11810);
+            rule__DECIMAL__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group__1"
+
+
+    // $ANTLR start "rule__DECIMAL__Group__1__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:883:1: rule__DECIMAL__Group__1__Impl : ( RULE_INT ) ;
+    public final void rule__DECIMAL__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:887:1: ( ( RULE_INT ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:888:1: ( RULE_INT )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:888:1: ( RULE_INT )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:889:1: RULE_INT
+            {
+             before(grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_1()); 
+            match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__DECIMAL__Group__1__Impl1837); 
+             after(grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DECIMAL__Group__2"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:900:1: rule__DECIMAL__Group__2 : rule__DECIMAL__Group__2__Impl ;
+    public final void rule__DECIMAL__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:904:1: ( rule__DECIMAL__Group__2__Impl )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:905:2: rule__DECIMAL__Group__2__Impl
+            {
+            pushFollow(FOLLOW_rule__DECIMAL__Group__2__Impl_in_rule__DECIMAL__Group__21866);
+            rule__DECIMAL__Group__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group__2"
+
+
+    // $ANTLR start "rule__DECIMAL__Group__2__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:911:1: rule__DECIMAL__Group__2__Impl : ( ( rule__DECIMAL__Group_2__0 )? ) ;
+    public final void rule__DECIMAL__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:915:1: ( ( ( rule__DECIMAL__Group_2__0 )? ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:916:1: ( ( rule__DECIMAL__Group_2__0 )? )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:916:1: ( ( rule__DECIMAL__Group_2__0 )? )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:917:1: ( rule__DECIMAL__Group_2__0 )?
+            {
+             before(grammarAccess.getDECIMALAccess().getGroup_2()); 
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:918:1: ( rule__DECIMAL__Group_2__0 )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==27) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:918:2: rule__DECIMAL__Group_2__0
+                    {
+                    pushFollow(FOLLOW_rule__DECIMAL__Group_2__0_in_rule__DECIMAL__Group__2__Impl1893);
+                    rule__DECIMAL__Group_2__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDECIMALAccess().getGroup_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group__2__Impl"
+
+
+    // $ANTLR start "rule__DECIMAL__Group_2__0"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:934:1: rule__DECIMAL__Group_2__0 : rule__DECIMAL__Group_2__0__Impl rule__DECIMAL__Group_2__1 ;
+    public final void rule__DECIMAL__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:938:1: ( rule__DECIMAL__Group_2__0__Impl rule__DECIMAL__Group_2__1 )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:939:2: rule__DECIMAL__Group_2__0__Impl rule__DECIMAL__Group_2__1
+            {
+            pushFollow(FOLLOW_rule__DECIMAL__Group_2__0__Impl_in_rule__DECIMAL__Group_2__01930);
+            rule__DECIMAL__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FOLLOW_rule__DECIMAL__Group_2__1_in_rule__DECIMAL__Group_2__01933);
+            rule__DECIMAL__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group_2__0"
+
+
+    // $ANTLR start "rule__DECIMAL__Group_2__0__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:946:1: rule__DECIMAL__Group_2__0__Impl : ( '.' ) ;
+    public final void rule__DECIMAL__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:950:1: ( ( '.' ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:951:1: ( '.' )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:951:1: ( '.' )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:952:1: '.'
+            {
+             before(grammarAccess.getDECIMALAccess().getFullStopKeyword_2_0()); 
+            match(input,27,FOLLOW_27_in_rule__DECIMAL__Group_2__0__Impl1961); 
+             after(grammarAccess.getDECIMALAccess().getFullStopKeyword_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__DECIMAL__Group_2__1"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:965:1: rule__DECIMAL__Group_2__1 : rule__DECIMAL__Group_2__1__Impl ;
+    public final void rule__DECIMAL__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:969:1: ( rule__DECIMAL__Group_2__1__Impl )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:970:2: rule__DECIMAL__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_rule__DECIMAL__Group_2__1__Impl_in_rule__DECIMAL__Group_2__11992);
+            rule__DECIMAL__Group_2__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group_2__1"
+
+
+    // $ANTLR start "rule__DECIMAL__Group_2__1__Impl"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:976:1: rule__DECIMAL__Group_2__1__Impl : ( RULE_INT ) ;
+    public final void rule__DECIMAL__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:980:1: ( ( RULE_INT ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:981:1: ( RULE_INT )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:981:1: ( RULE_INT )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:982:1: RULE_INT
+            {
+             before(grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_2_1()); 
+            match(input,RULE_INT,FOLLOW_RULE_INT_in_rule__DECIMAL__Group_2__1__Impl2019); 
+             after(grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DECIMAL__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__Model__TermsAssignment"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:998:1: rule__Model__TermsAssignment : ( ruleTerm ) ;
+    public final void rule__Model__TermsAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1002:1: ( ( ruleTerm ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1003:1: ( ruleTerm )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1003:1: ( ruleTerm )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1004:1: ruleTerm
+            {
+             before(grammarAccess.getModelAccess().getTermsTermParserRuleCall_0()); 
+            pushFollow(FOLLOW_ruleTerm_in_rule__Model__TermsAssignment2057);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getModelAccess().getTermsTermParserRuleCall_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Model__TermsAssignment"
+
+
+    // $ANTLR start "rule__Term__OperationsAssignment_1_1"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1013:1: rule__Term__OperationsAssignment_1_1 : ( ruleOperations ) ;
+    public final void rule__Term__OperationsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1017:1: ( ( ruleOperations ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1018:1: ( ruleOperations )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1018:1: ( ruleOperations )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1019:1: ruleOperations
+            {
+             before(grammarAccess.getTermAccess().getOperationsOperationsParserRuleCall_1_1_0()); 
+            pushFollow(FOLLOW_ruleOperations_in_rule__Term__OperationsAssignment_1_12088);
+            ruleOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermAccess().getOperationsOperationsParserRuleCall_1_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__OperationsAssignment_1_1"
+
+
+    // $ANTLR start "rule__Term__RightAssignment_1_2"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1028:1: rule__Term__RightAssignment_1_2 : ( ruleTypes ) ;
+    public final void rule__Term__RightAssignment_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1032:1: ( ( ruleTypes ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1033:1: ( ruleTypes )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1033:1: ( ruleTypes )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1034:1: ruleTypes
+            {
+             before(grammarAccess.getTermAccess().getRightTypesParserRuleCall_1_2_0()); 
+            pushFollow(FOLLOW_ruleTypes_in_rule__Term__RightAssignment_1_22119);
+            ruleTypes();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermAccess().getRightTypesParserRuleCall_1_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__RightAssignment_1_2"
+
+
+    // $ANTLR start "rule__Operations__TermOperationsAssignment"
+    // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1043:1: rule__Operations__TermOperationsAssignment : ( ruleOperationsType ) ;
+    public final void rule__Operations__TermOperationsAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1047:1: ( ( ruleOperationsType ) )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1048:1: ( ruleOperationsType )
+            {
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1048:1: ( ruleOperationsType )
+            // ../org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/contentassist/antlr/internal/InternalMyDsl.g:1049:1: ruleOperationsType
+            {
+             before(grammarAccess.getOperationsAccess().getTermOperationsOperationsTypeEnumRuleCall_0()); 
+            pushFollow(FOLLOW_ruleOperationsType_in_rule__Operations__TermOperationsAssignment2150);
+            ruleOperationsType();
+
+            state._fsp--;
+
+             after(grammarAccess.getOperationsAccess().getTermOperationsOperationsTypeEnumRuleCall_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Operations__TermOperationsAssignment"
+
+    // Delegated rules
+
+
+ 
+
+    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel61 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleModel68 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Model__TermsAssignment_in_ruleModel94 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm121 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleTerm128 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__Group__0_in_ruleTerm154 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTypes_in_entryRuleTypes181 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleTypes188 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Types__Alternatives_in_ruleTypes214 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleArithmetics_in_entryRuleArithmetics241 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleArithmetics248 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Arithmetics__Group__0_in_ruleArithmetics274 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleStrings_in_entryRuleStrings301 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleStrings308 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Strings__Group__0_in_ruleStrings334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDECIMAL_in_entryRuleDECIMAL361 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleDECIMAL368 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group__0_in_ruleDECIMAL394 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleE_STRING_in_entryRuleE_STRING421 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleE_STRING428 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__E_STRING__Alternatives_in_ruleE_STRING454 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleOperations_in_entryRuleOperations481 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleOperations488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Operations__TermOperationsAssignment_in_ruleOperations514 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__OperationsType__Alternatives_in_ruleOperationsType551 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleArithmetics_in_rule__Types__Alternatives586 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleStrings_in_rule__Types__Alternatives603 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Types__Group_2__0_in_rule__Types__Alternatives620 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_STRING_in_rule__E_STRING__Alternatives653 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_rule__E_STRING__Alternatives670 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_11_in_rule__OperationsType__Alternatives703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_12_in_rule__OperationsType__Alternatives724 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_rule__OperationsType__Alternatives745 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_14_in_rule__OperationsType__Alternatives766 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_15_in_rule__OperationsType__Alternatives787 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_16_in_rule__OperationsType__Alternatives808 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_rule__OperationsType__Alternatives829 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_18_in_rule__OperationsType__Alternatives850 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_19_in_rule__OperationsType__Alternatives871 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_20_in_rule__OperationsType__Alternatives892 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_21_in_rule__OperationsType__Alternatives913 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_22_in_rule__OperationsType__Alternatives934 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_rule__OperationsType__Alternatives955 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_24_in_rule__OperationsType__Alternatives976 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__Group__0__Impl_in_rule__Term__Group__01009 = new BitSet(new long[]{0x0000000001FFF800L});
+    public static final BitSet FOLLOW_rule__Term__Group__1_in_rule__Term__Group__01012 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTypes_in_rule__Term__Group__0__Impl1039 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__Group__1__Impl_in_rule__Term__Group__11068 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__Group_1__0_in_rule__Term__Group__1__Impl1095 = new BitSet(new long[]{0x0000000001FFF802L});
+    public static final BitSet FOLLOW_rule__Term__Group_1__0__Impl_in_rule__Term__Group_1__01130 = new BitSet(new long[]{0x0000000001FFF800L});
+    public static final BitSet FOLLOW_rule__Term__Group_1__1_in_rule__Term__Group_1__01133 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__Group_1__1__Impl_in_rule__Term__Group_1__11191 = new BitSet(new long[]{0x0000000002001070L});
+    public static final BitSet FOLLOW_rule__Term__Group_1__2_in_rule__Term__Group_1__11194 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__OperationsAssignment_1_1_in_rule__Term__Group_1__1__Impl1221 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__Group_1__2__Impl_in_rule__Term__Group_1__21251 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Term__RightAssignment_1_2_in_rule__Term__Group_1__2__Impl1278 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Types__Group_2__0__Impl_in_rule__Types__Group_2__01314 = new BitSet(new long[]{0x0000000002001070L});
+    public static final BitSet FOLLOW_rule__Types__Group_2__1_in_rule__Types__Group_2__01317 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_25_in_rule__Types__Group_2__0__Impl1345 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Types__Group_2__1__Impl_in_rule__Types__Group_2__11376 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_rule__Types__Group_2__2_in_rule__Types__Group_2__11379 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTerm_in_rule__Types__Group_2__1__Impl1406 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Types__Group_2__2__Impl_in_rule__Types__Group_2__21435 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_26_in_rule__Types__Group_2__2__Impl1463 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Arithmetics__Group__0__Impl_in_rule__Arithmetics__Group__01500 = new BitSet(new long[]{0x0000000000001040L});
+    public static final BitSet FOLLOW_rule__Arithmetics__Group__1_in_rule__Arithmetics__Group__01503 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Arithmetics__Group__1__Impl_in_rule__Arithmetics__Group__11561 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDECIMAL_in_rule__Arithmetics__Group__1__Impl1588 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Strings__Group__0__Impl_in_rule__Strings__Group__01621 = new BitSet(new long[]{0x0000000000000030L});
+    public static final BitSet FOLLOW_rule__Strings__Group__1_in_rule__Strings__Group__01624 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__Strings__Group__1__Impl_in_rule__Strings__Group__11682 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleE_STRING_in_rule__Strings__Group__1__Impl1709 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group__0__Impl_in_rule__DECIMAL__Group__01742 = new BitSet(new long[]{0x0000000000001040L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group__1_in_rule__DECIMAL__Group__01745 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_12_in_rule__DECIMAL__Group__0__Impl1774 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group__1__Impl_in_rule__DECIMAL__Group__11807 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group__2_in_rule__DECIMAL__Group__11810 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_INT_in_rule__DECIMAL__Group__1__Impl1837 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group__2__Impl_in_rule__DECIMAL__Group__21866 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group_2__0_in_rule__DECIMAL__Group__2__Impl1893 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group_2__0__Impl_in_rule__DECIMAL__Group_2__01930 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group_2__1_in_rule__DECIMAL__Group_2__01933 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_27_in_rule__DECIMAL__Group_2__0__Impl1961 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule__DECIMAL__Group_2__1__Impl_in_rule__DECIMAL__Group_2__11992 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_INT_in_rule__DECIMAL__Group_2__1__Impl2019 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTerm_in_rule__Model__TermsAssignment2057 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleOperations_in_rule__Term__OperationsAssignment_1_12088 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTypes_in_rule__Term__RightAssignment_1_22119 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleOperationsType_in_rule__Operations__TermOperationsAssignment2150 = new BitSet(new long[]{0x0000000000000002L});
+
+}
\ No newline at end of file
diff --git a/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/internal/MyDslActivator.java b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/internal/MyDslActivator.java
new file mode 100644
index 00000000..e0e717d2
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src-gen/org/xtext/example/mydsl/ui/internal/MyDslActivator.java
@@ -0,0 +1,95 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl.ui.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class MyDslActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_XTEXT_EXAMPLE_MYDSL_MYDSL = "org.xtext.example.mydsl.MyDsl";
+	
+	private static final Logger logger = Logger.getLogger(MyDslActivator.class);
+	
+	private static MyDslActivator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static MyDslActivator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+
+	protected Module getRuntimeModule(String grammar) {
+		if (ORG_XTEXT_EXAMPLE_MYDSL_MYDSL.equals(grammar)) {
+			return new org.xtext.example.mydsl.MyDslRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_XTEXT_EXAMPLE_MYDSL_MYDSL.equals(grammar)) {
+			return new org.xtext.example.mydsl.ui.MyDslUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/MyDslUiModule.java b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/MyDslUiModule.java
new file mode 100644
index 00000000..31ca8742
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/MyDslUiModule.java
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class MyDslUiModule extends org.xtext.example.mydsl.ui.AbstractMyDslUiModule {
+	public MyDslUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
diff --git a/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/contentassist/MyDslProposalProvider.java b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/contentassist/MyDslProposalProvider.java
new file mode 100644
index 00000000..6c345b71
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/contentassist/MyDslProposalProvider.java
@@ -0,0 +1,12 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl.ui.contentassist;
+
+import org.xtext.example.mydsl.ui.contentassist.AbstractMyDslProposalProvider;
+/**
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant
+ */
+public class MyDslProposalProvider extends AbstractMyDslProposalProvider {
+
+}
diff --git a/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/labeling/MyDslDescriptionLabelProvider.java b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/labeling/MyDslDescriptionLabelProvider.java
new file mode 100644
index 00000000..32829172
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/labeling/MyDslDescriptionLabelProvider.java
@@ -0,0 +1,27 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class MyDslDescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+
+/*
+	//Labels and icons can be computed like this:
+	
+	String text(IEObjectDescription ele) {
+	  return "my "+ele.getName();
+	}
+	 
+    String image(IEObjectDescription ele) {
+      return ele.getEClass().getName() + ".gif";
+    }	 
+*/
+
+}
diff --git a/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/labeling/MyDslLabelProvider.java b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/labeling/MyDslLabelProvider.java
new file mode 100644
index 00000000..749018e4
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/labeling/MyDslLabelProvider.java
@@ -0,0 +1,34 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl.ui.labeling;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider; 
+ 
+import com.google.inject.Inject;
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class MyDslLabelProvider extends DefaultEObjectLabelProvider {
+
+	@Inject
+	public MyDslLabelProvider(AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+/*
+	//Labels and icons can be computed like this:
+	
+	String text(MyModel ele) {
+	  return "my "+ele.getName();
+	}
+	 
+    String image(MyModel ele) {
+      return "MyModel.gif";
+    }
+*/
+}
diff --git a/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/outline/MyDslOutlineTreeProvider.java b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/outline/MyDslOutlineTreeProvider.java
new file mode 100644
index 00000000..49a5f060
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/outline/MyDslOutlineTreeProvider.java
@@ -0,0 +1,14 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl.ui.outline;
+
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
+
+/**
+ * customization of the default outline structure
+ * 
+ */
+public class MyDslOutlineTreeProvider extends DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/quickfix/MyDslQuickfixProvider.java b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/quickfix/MyDslQuickfixProvider.java
new file mode 100644
index 00000000..d4f28855
--- /dev/null
+++ b/org.xtext.example.mydsl.ui/src/org/xtext/example/mydsl/ui/quickfix/MyDslQuickfixProvider.java
@@ -0,0 +1,19 @@
+
+package org.xtext.example.mydsl.ui.quickfix;
+
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
+
+public class MyDslQuickfixProvider extends DefaultQuickfixProvider {
+
+//	@Fix(MyJavaValidator.INVALID_NAME)
+//	public void capitalizeName(final Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(issue, "Capitalize name", "Capitalize the name.", "upcase.png", new IModification() {
+//			public void apply(IModificationContext context) throws BadLocationException {
+//				IXtextDocument xtextDocument = context.getXtextDocument();
+//				String firstLetter = xtextDocument.get(issue.getOffset(), 1);
+//				xtextDocument.replace(issue.getOffset(), 1, firstLetter.toUpperCase());
+//			}
+//		});
+//	}
+
+}
diff --git a/org.xtext.example.mydsl/.classpath b/org.xtext.example.mydsl/.classpath
new file mode 100644
index 00000000..3f1be502
--- /dev/null
+++ b/org.xtext.example.mydsl/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.xtext.example.mydsl/.launch/Generate Language Infrastructure (org.xtext.example.mydsl).launch b/org.xtext.example.mydsl/.launch/Generate Language Infrastructure (org.xtext.example.mydsl).launch
new file mode 100644
index 00000000..b5f05301
--- /dev/null
+++ b/org.xtext.example.mydsl/.launch/Generate Language Infrastructure (org.xtext.example.mydsl).launch	
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.emf.mwe2.launch.Mwe2LaunchConfigurationType">
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;launchConfigurationWorkingSet factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; id=&quot;1299248699643_13&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.xtext.example.mydsl&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.xtext.example.mydsl.generator&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.xtext.example.mydsl.tests&quot; type=&quot;4&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/org.xtext.example.mydsl.ui&quot; type=&quot;4&quot;/&gt;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.xtext.example.mydsl"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="src/org/xtext/example/mydsl/GenerateMyDsl.mwe2"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.xtext.example.mydsl"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m"/>
+</launchConfiguration>
diff --git a/org.xtext.example.mydsl/.launch/Launch Runtime Eclipse.launch b/org.xtext.example.mydsl/.launch/Launch Runtime Eclipse.launch
new file mode 100644
index 00000000..4dc44ec0
--- /dev/null
+++ b/org.xtext.example.mydsl/.launch/Launch Runtime Eclipse.launch	
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bad_container_name" value="/org.xtext.example.mydsl/.launch/"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Launch Runtime Eclipse"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../runtime-EclipseXtext"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m -XX:MaxPermSize=256m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/org.xtext.example.mydsl/.project b/org.xtext.example.mydsl/.project
new file mode 100644
index 00000000..ad03ad8c
--- /dev/null
+++ b/org.xtext.example.mydsl/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.xtext.example.mydsl</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.xtext.example.mydsl/META-INF/MANIFEST.MF b/org.xtext.example.mydsl/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..2e7bff20
--- /dev/null
+++ b/org.xtext.example.mydsl/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.xtext.example.mydsl
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.xtext.example.mydsl; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;visibility:=reexport,
+ org.eclipse.xtext.xbase;resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;resolution:=optional,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ org.eclipse.emf.mwe2.launch;resolution:=optional,
+ org.eclipse.xtext.util,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.common,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types
+Import-Package: org.apache.log4j,
+ org.eclipse.xtext.xbase.lib
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.xtext.example.mydsl,
+ org.xtext.example.mydsl.services,
+ org.xtext.example.mydsl.myDsl,
+ org.xtext.example.mydsl.myDsl.impl,
+ org.xtext.example.mydsl.myDsl.util,
+ org.xtext.example.mydsl.serializer,
+ org.xtext.example.mydsl.parser.antlr,
+ org.xtext.example.mydsl.parser.antlr.internal,
+ org.xtext.example.mydsl.validation,
+ org.xtext.example.mydsl.scoping,
+ org.xtext.example.mydsl.generator,
+ org.xtext.example.mydsl.formatting
diff --git a/org.xtext.example.mydsl/build.properties b/org.xtext.example.mydsl/build.properties
new file mode 100644
index 00000000..31255ed0
--- /dev/null
+++ b/org.xtext.example.mydsl/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
\ No newline at end of file
diff --git a/org.xtext.example.mydsl/old b/org.xtext.example.mydsl/old
new file mode 100644
index 00000000..9302cb56
--- /dev/null
+++ b/org.xtext.example.mydsl/old
@@ -0,0 +1,40 @@
+grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
+
+Model:
+	terms+=Term;
+
+Term returns Expression:
+	Types ({Term.left=current} 
+	Operations=Operations
+ 	right=Types)*
+;
+
+Types returns Expression:
+	Arithmetics | Strings | '(' Term ')'
+;
+
+Arithmetics returns Expression:
+	{Expression}
+  DECIMAL ;
+  
+Strings returns Expression:
+	{Expression}
+	E_STRING
+;
+
+DECIMAL returns ecore::EBigDecimal : '-'? INT ('.' INT)? ;
+ 
+E_STRING returns ecore::EString:
+	STRING | ID;
+ 
+Operations returns Expression:
+	termOperations = OperationsType;
+	
+enum OperationsType:
+	ADD='+' | SUB='-' | MULT='*'|DIV='/'|MOD='%' |
+	GREATER='>' | LESS='<'|EQUALS='='|NOTEQUAL='!='|LESSEQUAL='<=' | GREATEREQUAL='>='
+	| AND='AND' | OR='OR' | XOR='XOR';
+
+ 
\ No newline at end of file
diff --git a/org.xtext.example.mydsl/plugin.xml b/org.xtext.example.mydsl/plugin.xml
new file mode 100644
index 00000000..ad7e4e40
--- /dev/null
+++ b/org.xtext.example.mydsl/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+  <extension point="org.eclipse.emf.ecore.generated_package">
+    <package 
+       uri = "http://www.xtext.org/example/mydsl/MyDsl" 
+       class = "org.xtext.example.mydsl.myDsl.MyDslPackage"
+       genModel = "org/xtext/example/mydsl/MyDsl.genmodel" /> 
+	
+  </extension>
+
+
+
+
+</plugin>
diff --git a/org.xtext.example.mydsl/plugin.xml_gen b/org.xtext.example.mydsl/plugin.xml_gen
new file mode 100644
index 00000000..ad7e4e40
--- /dev/null
+++ b/org.xtext.example.mydsl/plugin.xml_gen
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+  <extension point="org.eclipse.emf.ecore.generated_package">
+    <package 
+       uri = "http://www.xtext.org/example/mydsl/MyDsl" 
+       class = "org.xtext.example.mydsl.myDsl.MyDslPackage"
+       genModel = "org/xtext/example/mydsl/MyDsl.genmodel" /> 
+	
+  </extension>
+
+
+
+
+</plugin>
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/AbstractMyDslRuntimeModule.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/AbstractMyDslRuntimeModule.java
new file mode 100644
index 00000000..79e4a41e
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/AbstractMyDslRuntimeModule.java
@@ -0,0 +1,177 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {org.xtext.example.mydsl.MyDslRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractMyDslRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/xtext/example/mydsl/MyDsl.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.xtext.example.mydsl.MyDsl");
+	}
+	
+	public void configureFileExtensions(Binder binder) {
+		if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("mydsl");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.xtext.example.mydsl.services.MyDslGrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.ecore2xtext.Ecore2XtextValueConverterServiceFragment
+	public Class<? extends org.eclipse.xtext.conversion.IValueConverterService> bindIValueConverterService() {
+		return org.eclipse.xtext.common.services.Ecore2XtextTerminalConverters.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.xtext.example.mydsl.serializer.MyDslSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.xtext.example.mydsl.serializer.MyDslSyntacticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.ISerializer> bindISerializer() {
+		return org.eclipse.xtext.serializer.impl.Serializer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
+		return org.xtext.example.mydsl.parser.antlr.MyDslParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+		return org.xtext.example.mydsl.parser.antlr.MyDslAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslLexer> provideInternalMyDslLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureRuntimeLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.validation.JavaValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.xtext.example.mydsl.validation.MyDslJavaValidator> bindMyDslJavaValidator() {
+		return org.xtext.example.mydsl.validation.MyDslJavaValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return org.xtext.example.mydsl.scoping.MyDslScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
+		binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+		return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
+		return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptions(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return org.xtext.example.mydsl.generator.MyDslGenerator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return org.xtext.example.mydsl.formatting.MyDslFormatter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public org.eclipse.xtext.common.types.TypesFactory bindTypesFactoryToInstance() {
+		return org.eclipse.xtext.common.types.TypesFactory.eINSTANCE;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.ClasspathTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ClasspathBasedTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider.class;
+	}
+
+}
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.ecore b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.ecore
new file mode 100644
index 00000000..14189b96
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.ecore
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="myDsl" nsURI="http://www.xtext.org/example/mydsl/MyDsl" nsPrefix="myDsl">
+  <eClassifiers xsi:type="ecore:EClass" name="Model">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="terms" upperBound="-1"
+        eType="#//Expression" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Expression">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="termOperations" eType="#//OperationsType"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="OperationsType">
+    <eLiterals name="ADD" literal="+"/>
+    <eLiterals name="SUB" value="1" literal="-"/>
+    <eLiterals name="MULT" value="2" literal="*"/>
+    <eLiterals name="DIV" value="3" literal="/"/>
+    <eLiterals name="MOD" value="4" literal="%"/>
+    <eLiterals name="GREATER" value="5" literal=">"/>
+    <eLiterals name="LESS" value="6" literal="&lt;"/>
+    <eLiterals name="EQUALS" value="7" literal="="/>
+    <eLiterals name="NOTEQUAL" value="8" literal="!="/>
+    <eLiterals name="LESSEQUAL" value="9" literal="&lt;="/>
+    <eLiterals name="GREATEREQUAL" value="10" literal=">="/>
+    <eLiterals name="AND" value="11" literal="AND"/>
+    <eLiterals name="OR" value="12" literal="OR"/>
+    <eLiterals name="XOR" value="13" literal="XOR"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Term" eSuperTypes="#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="Operations" eType="#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expression"
+        containment="true"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.genmodel b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.genmodel
new file mode 100644
index 00000000..f7f6bc4c
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.genmodel
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.xtext.example.mydsl/src-gen" editDirectory="/org.xtext.example.mydsl.edit/src"
+    editorDirectory="/org.xtext.example.mydsl.editor/src" modelPluginID="org.xtext.example.mydsl"
+    forceOverwrite="true" modelName="MyDsl" updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    complianceLevel="5.0" copyrightFields="false" editPluginID="org.xtext.example.mydsl.edit"
+    editorPluginID="org.xtext.example.mydsl.editor" runtimeVersion="2.8">
+  <genPackages prefix="MyDsl" basePackage="org.xtext.example.mydsl" disposableProviderFactory="true"
+      ecorePackage="MyDsl.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="MyDsl.ecore#//OperationsType">
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/ADD"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/SUB"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/MULT"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/DIV"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/MOD"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/GREATER"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/LESS"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/EQUALS"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/NOTEQUAL"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/LESSEQUAL"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/GREATEREQUAL"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/AND"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/OR"/>
+      <genEnumLiterals ecoreEnumLiteral="MyDsl.ecore#//OperationsType/XOR"/>
+    </genEnums>
+    <genClasses ecoreClass="MyDsl.ecore#//Model">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference MyDsl.ecore#//Model/terms"/>
+    </genClasses>
+    <genClasses ecoreClass="MyDsl.ecore#//Expression">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute MyDsl.ecore#//Expression/termOperations"/>
+    </genClasses>
+    <genClasses ecoreClass="MyDsl.ecore#//Term">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference MyDsl.ecore#//Term/left"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference MyDsl.ecore#//Term/Operations"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference MyDsl.ecore#//Term/right"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.xmi b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.xmi
new file mode 100644
index 00000000..d9710a7c
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.xmi
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
+  <xtext:Grammar name="org.xtext.example.mydsl.MyDsl" usedGrammars="/1">
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+      <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:GeneratedMetamodel" name="myDsl">
+      <ePackage href="http://www.xtext.org/example/mydsl/MyDsl#/"/>
+    </metamodelDeclarations>
+    <rules xsi:type="xtext:ParserRule" name="Model">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Model"/>
+      </type>
+      <alternatives xsi:type="xtext:Assignment" feature="terms" operator="+=">
+        <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Term">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+        <elements xsi:type="xtext:Group" cardinality="*">
+          <elements xsi:type="xtext:Action" feature="left" operator="=">
+            <type metamodel="/0/@metamodelDeclarations.1">
+              <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Term"/>
+            </type>
+          </elements>
+          <elements xsi:type="xtext:Assignment" feature="Operations" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+          </elements>
+          <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Types">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+        <elements xsi:type="xtext:Group">
+          <elements xsi:type="xtext:Keyword" value="("/>
+          <elements xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+          <elements xsi:type="xtext:Keyword" value=")"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Arithmetics">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Expression"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Strings">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Expression"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="DECIMAL">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" cardinality="?" value="-"/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="."/>
+          <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="E_STRING">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Operations">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.xtext.org/example/mydsl/MyDsl#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Assignment" feature="termOperations" operator="=">
+        <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:EnumRule" name="OperationsType">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EEnum" href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/ADD"/>
+          <literal value="+"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/SUB"/>
+          <literal value="-"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/MULT"/>
+          <literal value="*"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/DIV"/>
+          <literal value="/"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/MOD"/>
+          <literal value="%"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/GREATER"/>
+          <literal value=">"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/LESS"/>
+          <literal value="&lt;"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/EQUALS"/>
+          <literal value="="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/NOTEQUAL"/>
+          <literal value="!="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/LESSEQUAL"/>
+          <literal value="&lt;="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/GREATEREQUAL"/>
+          <literal value=">="/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/AND"/>
+          <literal value="AND"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/OR"/>
+          <literal value="OR"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.xtext.org/example/mydsl/MyDsl#//OperationsType/XOR"/>
+          <literal value="XOR"/>
+        </elements>
+      </alternatives>
+    </rules>
+  </xtext:Grammar>
+  <xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/1/@rules.5 /1/@rules.3 /1/@rules.4">
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+      <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    </metamodelDeclarations>
+    <rules xsi:type="xtext:TerminalRule" name="ID">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
+        <elements xsi:type="xtext:Alternatives">
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="a"/>
+            <right value="z"/>
+          </elements>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="A"/>
+            <right value="Z"/>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="_"/>
+        </elements>
+        <elements xsi:type="xtext:Alternatives" cardinality="*">
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="a"/>
+            <right value="z"/>
+          </elements>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="A"/>
+            <right value="Z"/>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="_"/>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="0"/>
+            <right value="9"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="INT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+      </type>
+      <alternatives xsi:type="xtext:CharacterRange" cardinality="+">
+        <left value="0"/>
+        <right value="9"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="STRING">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:Group">
+          <elements xsi:type="xtext:Keyword" value="&quot;"/>
+          <elements xsi:type="xtext:Alternatives" cardinality="*">
+            <elements xsi:type="xtext:Group">
+              <elements xsi:type="xtext:Keyword" value="\"/>
+              <elements xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="b"/>
+                <elements xsi:type="xtext:Keyword" value="t"/>
+                <elements xsi:type="xtext:Keyword" value="n"/>
+                <elements xsi:type="xtext:Keyword" value="f"/>
+                <elements xsi:type="xtext:Keyword" value="r"/>
+                <elements xsi:type="xtext:Keyword" value="u"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+                <elements xsi:type="xtext:Keyword" value="\"/>
+              </elements>
+            </elements>
+            <elements xsi:type="xtext:NegatedToken">
+              <terminal xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="\"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="&quot;"/>
+        </elements>
+        <elements xsi:type="xtext:Group">
+          <elements xsi:type="xtext:Keyword" value="'"/>
+          <elements xsi:type="xtext:Alternatives" cardinality="*">
+            <elements xsi:type="xtext:Group">
+              <elements xsi:type="xtext:Keyword" value="\"/>
+              <elements xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="b"/>
+                <elements xsi:type="xtext:Keyword" value="t"/>
+                <elements xsi:type="xtext:Keyword" value="n"/>
+                <elements xsi:type="xtext:Keyword" value="f"/>
+                <elements xsi:type="xtext:Keyword" value="r"/>
+                <elements xsi:type="xtext:Keyword" value="u"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+                <elements xsi:type="xtext:Keyword" value="\"/>
+              </elements>
+            </elements>
+            <elements xsi:type="xtext:NegatedToken">
+              <terminal xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="\"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="'"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="/*"/>
+        <elements xsi:type="xtext:UntilToken">
+          <terminal xsi:type="xtext:Keyword" value="*/"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="//"/>
+        <elements xsi:type="xtext:NegatedToken" cardinality="*">
+          <terminal xsi:type="xtext:Alternatives">
+            <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+            <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
+          <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="WS">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives" cardinality="+">
+        <elements xsi:type="xtext:Keyword" value=" "/>
+        <elements xsi:type="xtext:Keyword" value="&#x9;"/>
+        <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+        <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Wildcard"/>
+    </rules>
+  </xtext:Grammar>
+</xmi:XMI>
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDslStandaloneSetupGenerated.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDslStandaloneSetupGenerated.java
new file mode 100644
index 00000000..92cd5f41
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDslStandaloneSetupGenerated.java
@@ -0,0 +1,43 @@
+
+package org.xtext.example.mydsl;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class MyDslStandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.xtext.common.TerminalsStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.xtext.example.mydsl.MyDslRuntimeModule());
+	}
+	
+	public void register(Injector injector) {
+	if (!EPackage.Registry.INSTANCE.containsKey("http://www.xtext.org/example/mydsl/MyDsl")) {
+		EPackage.Registry.INSTANCE.put("http://www.xtext.org/example/mydsl/MyDsl", org.xtext.example.mydsl.myDsl.MyDslPackage.eINSTANCE);
+	}
+
+		org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+		org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("mydsl", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("mydsl", serviceProvider);
+		
+
+
+
+	}
+}
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Expression.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Expression.java
new file mode 100644
index 00000000..9e3fbac1
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Expression.java
@@ -0,0 +1,54 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.Expression#getTermOperations <em>Term Operations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getExpression()
+ * @model
+ * @generated
+ */
+public interface Expression extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Term Operations</b></em>' attribute.
+   * The literals are from the enumeration {@link org.xtext.example.mydsl.myDsl.OperationsType}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Term Operations</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Term Operations</em>' attribute.
+   * @see org.xtext.example.mydsl.myDsl.OperationsType
+   * @see #setTermOperations(OperationsType)
+   * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getExpression_TermOperations()
+   * @model
+   * @generated
+   */
+  OperationsType getTermOperations();
+
+  /**
+   * Sets the value of the '{@link org.xtext.example.mydsl.myDsl.Expression#getTermOperations <em>Term Operations</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Term Operations</em>' attribute.
+   * @see org.xtext.example.mydsl.myDsl.OperationsType
+   * @see #getTermOperations()
+   * @generated
+   */
+  void setTermOperations(OperationsType value);
+
+} // Expression
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Model.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Model.java
new file mode 100644
index 00000000..f3f26d78
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Model.java
@@ -0,0 +1,43 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.Model#getTerms <em>Terms</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getModel()
+ * @model
+ * @generated
+ */
+public interface Model extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Terms</b></em>' containment reference list.
+   * The list contents are of type {@link org.xtext.example.mydsl.myDsl.Expression}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Terms</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Terms</em>' containment reference list.
+   * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getModel_Terms()
+   * @model containment="true"
+   * @generated
+   */
+  EList<Expression> getTerms();
+
+} // Model
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/MyDslFactory.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/MyDslFactory.java
new file mode 100644
index 00000000..802311ab
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/MyDslFactory.java
@@ -0,0 +1,61 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.xtext.example.mydsl.myDsl.MyDslPackage
+ * @generated
+ */
+public interface MyDslFactory extends EFactory
+{
+  /**
+   * The singleton instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  MyDslFactory eINSTANCE = org.xtext.example.mydsl.myDsl.impl.MyDslFactoryImpl.init();
+
+  /**
+   * Returns a new object of class '<em>Model</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Model</em>'.
+   * @generated
+   */
+  Model createModel();
+
+  /**
+   * Returns a new object of class '<em>Expression</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Expression</em>'.
+   * @generated
+   */
+  Expression createExpression();
+
+  /**
+   * Returns a new object of class '<em>Term</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Term</em>'.
+   * @generated
+   */
+  Term createTerm();
+
+  /**
+   * Returns the package supported by this factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the package supported by this factory.
+   * @generated
+   */
+  MyDslPackage getMyDslPackage();
+
+} //MyDslFactory
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/MyDslPackage.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/MyDslPackage.java
new file mode 100644
index 00000000..17782344
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/MyDslPackage.java
@@ -0,0 +1,382 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.xtext.example.mydsl.myDsl.MyDslFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface MyDslPackage extends EPackage
+{
+  /**
+   * The package name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNAME = "myDsl";
+
+  /**
+   * The package namespace URI.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_URI = "http://www.xtext.org/example/mydsl/MyDsl";
+
+  /**
+   * The package namespace name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_PREFIX = "myDsl";
+
+  /**
+   * The singleton instance of the package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  MyDslPackage eINSTANCE = org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl.init();
+
+  /**
+   * The meta object id for the '{@link org.xtext.example.mydsl.myDsl.impl.ModelImpl <em>Model</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.xtext.example.mydsl.myDsl.impl.ModelImpl
+   * @see org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl#getModel()
+   * @generated
+   */
+  int MODEL = 0;
+
+  /**
+   * The feature id for the '<em><b>Terms</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODEL__TERMS = 0;
+
+  /**
+   * The number of structural features of the '<em>Model</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODEL_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.xtext.example.mydsl.myDsl.impl.ExpressionImpl <em>Expression</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.xtext.example.mydsl.myDsl.impl.ExpressionImpl
+   * @see org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl#getExpression()
+   * @generated
+   */
+  int EXPRESSION = 1;
+
+  /**
+   * The feature id for the '<em><b>Term Operations</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int EXPRESSION__TERM_OPERATIONS = 0;
+
+  /**
+   * The number of structural features of the '<em>Expression</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int EXPRESSION_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.xtext.example.mydsl.myDsl.impl.TermImpl <em>Term</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.xtext.example.mydsl.myDsl.impl.TermImpl
+   * @see org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl#getTerm()
+   * @generated
+   */
+  int TERM = 2;
+
+  /**
+   * The feature id for the '<em><b>Term Operations</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TERM__TERM_OPERATIONS = EXPRESSION__TERM_OPERATIONS;
+
+  /**
+   * The feature id for the '<em><b>Left</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TERM__LEFT = EXPRESSION_FEATURE_COUNT + 0;
+
+  /**
+   * The feature id for the '<em><b>Operations</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TERM__OPERATIONS = EXPRESSION_FEATURE_COUNT + 1;
+
+  /**
+   * The feature id for the '<em><b>Right</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TERM__RIGHT = EXPRESSION_FEATURE_COUNT + 2;
+
+  /**
+   * The number of structural features of the '<em>Term</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TERM_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 3;
+
+  /**
+   * The meta object id for the '{@link org.xtext.example.mydsl.myDsl.OperationsType <em>Operations Type</em>}' enum.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.xtext.example.mydsl.myDsl.OperationsType
+   * @see org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl#getOperationsType()
+   * @generated
+   */
+  int OPERATIONS_TYPE = 3;
+
+
+  /**
+   * Returns the meta object for class '{@link org.xtext.example.mydsl.myDsl.Model <em>Model</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Model</em>'.
+   * @see org.xtext.example.mydsl.myDsl.Model
+   * @generated
+   */
+  EClass getModel();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.xtext.example.mydsl.myDsl.Model#getTerms <em>Terms</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Terms</em>'.
+   * @see org.xtext.example.mydsl.myDsl.Model#getTerms()
+   * @see #getModel()
+   * @generated
+   */
+  EReference getModel_Terms();
+
+  /**
+   * Returns the meta object for class '{@link org.xtext.example.mydsl.myDsl.Expression <em>Expression</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Expression</em>'.
+   * @see org.xtext.example.mydsl.myDsl.Expression
+   * @generated
+   */
+  EClass getExpression();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.xtext.example.mydsl.myDsl.Expression#getTermOperations <em>Term Operations</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Term Operations</em>'.
+   * @see org.xtext.example.mydsl.myDsl.Expression#getTermOperations()
+   * @see #getExpression()
+   * @generated
+   */
+  EAttribute getExpression_TermOperations();
+
+  /**
+   * Returns the meta object for class '{@link org.xtext.example.mydsl.myDsl.Term <em>Term</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Term</em>'.
+   * @see org.xtext.example.mydsl.myDsl.Term
+   * @generated
+   */
+  EClass getTerm();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.xtext.example.mydsl.myDsl.Term#getLeft <em>Left</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Left</em>'.
+   * @see org.xtext.example.mydsl.myDsl.Term#getLeft()
+   * @see #getTerm()
+   * @generated
+   */
+  EReference getTerm_Left();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.xtext.example.mydsl.myDsl.Term#getOperations <em>Operations</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Operations</em>'.
+   * @see org.xtext.example.mydsl.myDsl.Term#getOperations()
+   * @see #getTerm()
+   * @generated
+   */
+  EReference getTerm_Operations();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.xtext.example.mydsl.myDsl.Term#getRight <em>Right</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Right</em>'.
+   * @see org.xtext.example.mydsl.myDsl.Term#getRight()
+   * @see #getTerm()
+   * @generated
+   */
+  EReference getTerm_Right();
+
+  /**
+   * Returns the meta object for enum '{@link org.xtext.example.mydsl.myDsl.OperationsType <em>Operations Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for enum '<em>Operations Type</em>'.
+   * @see org.xtext.example.mydsl.myDsl.OperationsType
+   * @generated
+   */
+  EEnum getOperationsType();
+
+  /**
+   * Returns the factory that creates the instances of the model.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the factory that creates the instances of the model.
+   * @generated
+   */
+  MyDslFactory getMyDslFactory();
+
+  /**
+   * <!-- begin-user-doc -->
+   * Defines literals for the meta objects that represent
+   * <ul>
+   *   <li>each class,</li>
+   *   <li>each feature of each class,</li>
+   *   <li>each enum,</li>
+   *   <li>and each data type</li>
+   * </ul>
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  interface Literals
+  {
+    /**
+     * The meta object literal for the '{@link org.xtext.example.mydsl.myDsl.impl.ModelImpl <em>Model</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.xtext.example.mydsl.myDsl.impl.ModelImpl
+     * @see org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl#getModel()
+     * @generated
+     */
+    EClass MODEL = eINSTANCE.getModel();
+
+    /**
+     * The meta object literal for the '<em><b>Terms</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference MODEL__TERMS = eINSTANCE.getModel_Terms();
+
+    /**
+     * The meta object literal for the '{@link org.xtext.example.mydsl.myDsl.impl.ExpressionImpl <em>Expression</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.xtext.example.mydsl.myDsl.impl.ExpressionImpl
+     * @see org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl#getExpression()
+     * @generated
+     */
+    EClass EXPRESSION = eINSTANCE.getExpression();
+
+    /**
+     * The meta object literal for the '<em><b>Term Operations</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute EXPRESSION__TERM_OPERATIONS = eINSTANCE.getExpression_TermOperations();
+
+    /**
+     * The meta object literal for the '{@link org.xtext.example.mydsl.myDsl.impl.TermImpl <em>Term</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.xtext.example.mydsl.myDsl.impl.TermImpl
+     * @see org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl#getTerm()
+     * @generated
+     */
+    EClass TERM = eINSTANCE.getTerm();
+
+    /**
+     * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference TERM__LEFT = eINSTANCE.getTerm_Left();
+
+    /**
+     * The meta object literal for the '<em><b>Operations</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference TERM__OPERATIONS = eINSTANCE.getTerm_Operations();
+
+    /**
+     * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference TERM__RIGHT = eINSTANCE.getTerm_Right();
+
+    /**
+     * The meta object literal for the '{@link org.xtext.example.mydsl.myDsl.OperationsType <em>Operations Type</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.xtext.example.mydsl.myDsl.OperationsType
+     * @see org.xtext.example.mydsl.myDsl.impl.MyDslPackageImpl#getOperationsType()
+     * @generated
+     */
+    EEnum OPERATIONS_TYPE = eINSTANCE.getOperationsType();
+
+  }
+
+} //MyDslPackage
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/OperationsType.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/OperationsType.java
new file mode 100644
index 00000000..58eb832e
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/OperationsType.java
@@ -0,0 +1,547 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Operations Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getOperationsType()
+ * @model
+ * @generated
+ */
+public enum OperationsType implements Enumerator
+{
+  /**
+   * The '<em><b>ADD</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #ADD_VALUE
+   * @generated
+   * @ordered
+   */
+  ADD(0, "ADD", "+"),
+
+  /**
+   * The '<em><b>SUB</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #SUB_VALUE
+   * @generated
+   * @ordered
+   */
+  SUB(1, "SUB", "-"),
+
+  /**
+   * The '<em><b>MULT</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #MULT_VALUE
+   * @generated
+   * @ordered
+   */
+  MULT(2, "MULT", "*"),
+
+  /**
+   * The '<em><b>DIV</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #DIV_VALUE
+   * @generated
+   * @ordered
+   */
+  DIV(3, "DIV", "/"),
+
+  /**
+   * The '<em><b>MOD</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #MOD_VALUE
+   * @generated
+   * @ordered
+   */
+  MOD(4, "MOD", "%"),
+
+  /**
+   * The '<em><b>GREATER</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #GREATER_VALUE
+   * @generated
+   * @ordered
+   */
+  GREATER(5, "GREATER", ">"),
+
+  /**
+   * The '<em><b>LESS</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #LESS_VALUE
+   * @generated
+   * @ordered
+   */
+  LESS(6, "LESS", "<"),
+
+  /**
+   * The '<em><b>EQUALS</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #EQUALS_VALUE
+   * @generated
+   * @ordered
+   */
+  EQUALS(7, "EQUALS", "="),
+
+  /**
+   * The '<em><b>NOTEQUAL</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #NOTEQUAL_VALUE
+   * @generated
+   * @ordered
+   */
+  NOTEQUAL(8, "NOTEQUAL", "!="),
+
+  /**
+   * The '<em><b>LESSEQUAL</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #LESSEQUAL_VALUE
+   * @generated
+   * @ordered
+   */
+  LESSEQUAL(9, "LESSEQUAL", "<="),
+
+  /**
+   * The '<em><b>GREATEREQUAL</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #GREATEREQUAL_VALUE
+   * @generated
+   * @ordered
+   */
+  GREATEREQUAL(10, "GREATEREQUAL", ">="),
+
+  /**
+   * The '<em><b>AND</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #AND_VALUE
+   * @generated
+   * @ordered
+   */
+  AND(11, "AND", "AND"),
+
+  /**
+   * The '<em><b>OR</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #OR_VALUE
+   * @generated
+   * @ordered
+   */
+  OR(12, "OR", "OR"),
+
+  /**
+   * The '<em><b>XOR</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #XOR_VALUE
+   * @generated
+   * @ordered
+   */
+  XOR(13, "XOR", "XOR");
+
+  /**
+   * The '<em><b>ADD</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>ADD</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #ADD
+   * @model literal="+"
+   * @generated
+   * @ordered
+   */
+  public static final int ADD_VALUE = 0;
+
+  /**
+   * The '<em><b>SUB</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>SUB</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #SUB
+   * @model literal="-"
+   * @generated
+   * @ordered
+   */
+  public static final int SUB_VALUE = 1;
+
+  /**
+   * The '<em><b>MULT</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>MULT</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #MULT
+   * @model literal="*"
+   * @generated
+   * @ordered
+   */
+  public static final int MULT_VALUE = 2;
+
+  /**
+   * The '<em><b>DIV</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>DIV</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #DIV
+   * @model literal="/"
+   * @generated
+   * @ordered
+   */
+  public static final int DIV_VALUE = 3;
+
+  /**
+   * The '<em><b>MOD</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>MOD</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #MOD
+   * @model literal="%"
+   * @generated
+   * @ordered
+   */
+  public static final int MOD_VALUE = 4;
+
+  /**
+   * The '<em><b>GREATER</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>GREATER</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #GREATER
+   * @model literal=">"
+   * @generated
+   * @ordered
+   */
+  public static final int GREATER_VALUE = 5;
+
+  /**
+   * The '<em><b>LESS</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>LESS</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #LESS
+   * @model literal="<"
+   * @generated
+   * @ordered
+   */
+  public static final int LESS_VALUE = 6;
+
+  /**
+   * The '<em><b>EQUALS</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>EQUALS</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #EQUALS
+   * @model literal="="
+   * @generated
+   * @ordered
+   */
+  public static final int EQUALS_VALUE = 7;
+
+  /**
+   * The '<em><b>NOTEQUAL</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>NOTEQUAL</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #NOTEQUAL
+   * @model literal="!="
+   * @generated
+   * @ordered
+   */
+  public static final int NOTEQUAL_VALUE = 8;
+
+  /**
+   * The '<em><b>LESSEQUAL</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>LESSEQUAL</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #LESSEQUAL
+   * @model literal="<="
+   * @generated
+   * @ordered
+   */
+  public static final int LESSEQUAL_VALUE = 9;
+
+  /**
+   * The '<em><b>GREATEREQUAL</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>GREATEREQUAL</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #GREATEREQUAL
+   * @model literal=">="
+   * @generated
+   * @ordered
+   */
+  public static final int GREATEREQUAL_VALUE = 10;
+
+  /**
+   * The '<em><b>AND</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>AND</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #AND
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int AND_VALUE = 11;
+
+  /**
+   * The '<em><b>OR</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>OR</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #OR
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int OR_VALUE = 12;
+
+  /**
+   * The '<em><b>XOR</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>XOR</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #XOR
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int XOR_VALUE = 13;
+
+  /**
+   * An array of all the '<em><b>Operations Type</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final OperationsType[] VALUES_ARRAY =
+    new OperationsType[]
+    {
+      ADD,
+      SUB,
+      MULT,
+      DIV,
+      MOD,
+      GREATER,
+      LESS,
+      EQUALS,
+      NOTEQUAL,
+      LESSEQUAL,
+      GREATEREQUAL,
+      AND,
+      OR,
+      XOR,
+    };
+
+  /**
+   * A public read-only list of all the '<em><b>Operations Type</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final List<OperationsType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+  /**
+   * Returns the '<em><b>Operations Type</b></em>' literal with the specified literal value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static OperationsType get(String literal)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      OperationsType result = VALUES_ARRAY[i];
+      if (result.toString().equals(literal))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>Operations Type</b></em>' literal with the specified name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static OperationsType getByName(String name)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      OperationsType result = VALUES_ARRAY[i];
+      if (result.getName().equals(name))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>Operations Type</b></em>' literal with the specified integer value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static OperationsType get(int value)
+  {
+    switch (value)
+    {
+      case ADD_VALUE: return ADD;
+      case SUB_VALUE: return SUB;
+      case MULT_VALUE: return MULT;
+      case DIV_VALUE: return DIV;
+      case MOD_VALUE: return MOD;
+      case GREATER_VALUE: return GREATER;
+      case LESS_VALUE: return LESS;
+      case EQUALS_VALUE: return EQUALS;
+      case NOTEQUAL_VALUE: return NOTEQUAL;
+      case LESSEQUAL_VALUE: return LESSEQUAL;
+      case GREATEREQUAL_VALUE: return GREATEREQUAL;
+      case AND_VALUE: return AND;
+      case OR_VALUE: return OR;
+      case XOR_VALUE: return XOR;
+    }
+    return null;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final int value;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String name;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String literal;
+
+  /**
+   * Only this class can construct instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private OperationsType(int value, String name, String literal)
+  {
+    this.value = value;
+    this.name = name;
+    this.literal = literal;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public int getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getLiteral()
+  {
+    return literal;
+  }
+
+  /**
+   * Returns the literal value of the enumerator, which is its string representation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    return literal;
+  }
+  
+} //OperationsType
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Term.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Term.java
new file mode 100644
index 00000000..22909702
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/Term.java
@@ -0,0 +1,104 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Term</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.Term#getLeft <em>Left</em>}</li>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.Term#getOperations <em>Operations</em>}</li>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.Term#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getTerm()
+ * @model
+ * @generated
+ */
+public interface Term extends Expression
+{
+  /**
+   * Returns the value of the '<em><b>Left</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Left</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Left</em>' containment reference.
+   * @see #setLeft(Expression)
+   * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getTerm_Left()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getLeft();
+
+  /**
+   * Sets the value of the '{@link org.xtext.example.mydsl.myDsl.Term#getLeft <em>Left</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Left</em>' containment reference.
+   * @see #getLeft()
+   * @generated
+   */
+  void setLeft(Expression value);
+
+  /**
+   * Returns the value of the '<em><b>Operations</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Operations</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Operations</em>' containment reference.
+   * @see #setOperations(Expression)
+   * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getTerm_Operations()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getOperations();
+
+  /**
+   * Sets the value of the '{@link org.xtext.example.mydsl.myDsl.Term#getOperations <em>Operations</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Operations</em>' containment reference.
+   * @see #getOperations()
+   * @generated
+   */
+  void setOperations(Expression value);
+
+  /**
+   * Returns the value of the '<em><b>Right</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Right</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Right</em>' containment reference.
+   * @see #setRight(Expression)
+   * @see org.xtext.example.mydsl.myDsl.MyDslPackage#getTerm_Right()
+   * @model containment="true"
+   * @generated
+   */
+  Expression getRight();
+
+  /**
+   * Sets the value of the '{@link org.xtext.example.mydsl.myDsl.Term#getRight <em>Right</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Right</em>' containment reference.
+   * @see #getRight()
+   * @generated
+   */
+  void setRight(Expression value);
+
+} // Term
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/ExpressionImpl.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/ExpressionImpl.java
new file mode 100644
index 00000000..c842c144
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/ExpressionImpl.java
@@ -0,0 +1,178 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.xtext.example.mydsl.myDsl.Expression;
+import org.xtext.example.mydsl.myDsl.MyDslPackage;
+import org.xtext.example.mydsl.myDsl.OperationsType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.impl.ExpressionImpl#getTermOperations <em>Term Operations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExpressionImpl extends MinimalEObjectImpl.Container implements Expression
+{
+  /**
+   * The default value of the '{@link #getTermOperations() <em>Term Operations</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getTermOperations()
+   * @generated
+   * @ordered
+   */
+  protected static final OperationsType TERM_OPERATIONS_EDEFAULT = OperationsType.ADD;
+
+  /**
+   * The cached value of the '{@link #getTermOperations() <em>Term Operations</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getTermOperations()
+   * @generated
+   * @ordered
+   */
+  protected OperationsType termOperations = TERM_OPERATIONS_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ExpressionImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return MyDslPackage.Literals.EXPRESSION;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public OperationsType getTermOperations()
+  {
+    return termOperations;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setTermOperations(OperationsType newTermOperations)
+  {
+    OperationsType oldTermOperations = termOperations;
+    termOperations = newTermOperations == null ? TERM_OPERATIONS_EDEFAULT : newTermOperations;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, MyDslPackage.EXPRESSION__TERM_OPERATIONS, oldTermOperations, termOperations));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.EXPRESSION__TERM_OPERATIONS:
+        return getTermOperations();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.EXPRESSION__TERM_OPERATIONS:
+        setTermOperations((OperationsType)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.EXPRESSION__TERM_OPERATIONS:
+        setTermOperations(TERM_OPERATIONS_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.EXPRESSION__TERM_OPERATIONS:
+        return termOperations != TERM_OPERATIONS_EDEFAULT;
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (termOperations: ");
+    result.append(termOperations);
+    result.append(')');
+    return result.toString();
+  }
+
+} //ExpressionImpl
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/ModelImpl.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/ModelImpl.java
new file mode 100644
index 00000000..285e692f
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/ModelImpl.java
@@ -0,0 +1,167 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.xtext.example.mydsl.myDsl.Expression;
+import org.xtext.example.mydsl.myDsl.Model;
+import org.xtext.example.mydsl.myDsl.MyDslPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.impl.ModelImpl#getTerms <em>Terms</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModelImpl extends MinimalEObjectImpl.Container implements Model
+{
+  /**
+   * The cached value of the '{@link #getTerms() <em>Terms</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getTerms()
+   * @generated
+   * @ordered
+   */
+  protected EList<Expression> terms;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ModelImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return MyDslPackage.Literals.MODEL;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<Expression> getTerms()
+  {
+    if (terms == null)
+    {
+      terms = new EObjectContainmentEList<Expression>(Expression.class, this, MyDslPackage.MODEL__TERMS);
+    }
+    return terms;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.MODEL__TERMS:
+        return ((InternalEList<?>)getTerms()).basicRemove(otherEnd, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.MODEL__TERMS:
+        return getTerms();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @SuppressWarnings("unchecked")
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.MODEL__TERMS:
+        getTerms().clear();
+        getTerms().addAll((Collection<? extends Expression>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.MODEL__TERMS:
+        getTerms().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.MODEL__TERMS:
+        return terms != null && !terms.isEmpty();
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //ModelImpl
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/MyDslFactoryImpl.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/MyDslFactoryImpl.java
new file mode 100644
index 00000000..26741195
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/MyDslFactoryImpl.java
@@ -0,0 +1,187 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.xtext.example.mydsl.myDsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MyDslFactoryImpl extends EFactoryImpl implements MyDslFactory
+{
+  /**
+   * Creates the default factory implementation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static MyDslFactory init()
+  {
+    try
+    {
+      MyDslFactory theMyDslFactory = (MyDslFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.xtext.org/example/mydsl/MyDsl"); 
+      if (theMyDslFactory != null)
+      {
+        return theMyDslFactory;
+      }
+    }
+    catch (Exception exception)
+    {
+      EcorePlugin.INSTANCE.log(exception);
+    }
+    return new MyDslFactoryImpl();
+  }
+
+  /**
+   * Creates an instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MyDslFactoryImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public EObject create(EClass eClass)
+  {
+    switch (eClass.getClassifierID())
+    {
+      case MyDslPackage.MODEL: return createModel();
+      case MyDslPackage.EXPRESSION: return createExpression();
+      case MyDslPackage.TERM: return createTerm();
+      default:
+        throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object createFromString(EDataType eDataType, String initialValue)
+  {
+    switch (eDataType.getClassifierID())
+    {
+      case MyDslPackage.OPERATIONS_TYPE:
+        return createOperationsTypeFromString(eDataType, initialValue);
+      default:
+        throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String convertToString(EDataType eDataType, Object instanceValue)
+  {
+    switch (eDataType.getClassifierID())
+    {
+      case MyDslPackage.OPERATIONS_TYPE:
+        return convertOperationsTypeToString(eDataType, instanceValue);
+      default:
+        throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Model createModel()
+  {
+    ModelImpl model = new ModelImpl();
+    return model;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression createExpression()
+  {
+    ExpressionImpl expression = new ExpressionImpl();
+    return expression;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Term createTerm()
+  {
+    TermImpl term = new TermImpl();
+    return term;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public OperationsType createOperationsTypeFromString(EDataType eDataType, String initialValue)
+  {
+    OperationsType result = OperationsType.get(initialValue);
+    if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertOperationsTypeToString(EDataType eDataType, Object instanceValue)
+  {
+    return instanceValue == null ? null : instanceValue.toString();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MyDslPackage getMyDslPackage()
+  {
+    return (MyDslPackage)getEPackage();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @deprecated
+   * @generated
+   */
+  @Deprecated
+  public static MyDslPackage getPackage()
+  {
+    return MyDslPackage.eINSTANCE;
+  }
+
+} //MyDslFactoryImpl
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/MyDslPackageImpl.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/MyDslPackageImpl.java
new file mode 100644
index 00000000..43380a7b
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/MyDslPackageImpl.java
@@ -0,0 +1,318 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.xtext.example.mydsl.myDsl.Expression;
+import org.xtext.example.mydsl.myDsl.Model;
+import org.xtext.example.mydsl.myDsl.MyDslFactory;
+import org.xtext.example.mydsl.myDsl.MyDslPackage;
+import org.xtext.example.mydsl.myDsl.OperationsType;
+import org.xtext.example.mydsl.myDsl.Term;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MyDslPackageImpl extends EPackageImpl implements MyDslPackage
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass modelEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass expressionEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass termEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EEnum operationsTypeEEnum = null;
+
+  /**
+   * Creates an instance of the model <b>Package</b>, registered with
+   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+   * package URI value.
+   * <p>Note: the correct way to create the package is via the static
+   * factory method {@link #init init()}, which also performs
+   * initialization of the package, or returns the registered package,
+   * if one already exists.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.emf.ecore.EPackage.Registry
+   * @see org.xtext.example.mydsl.myDsl.MyDslPackage#eNS_URI
+   * @see #init()
+   * @generated
+   */
+  private MyDslPackageImpl()
+  {
+    super(eNS_URI, MyDslFactory.eINSTANCE);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static boolean isInited = false;
+
+  /**
+   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+   * 
+   * <p>This method is used to initialize {@link MyDslPackage#eINSTANCE} when that field is accessed.
+   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #eNS_URI
+   * @see #createPackageContents()
+   * @see #initializePackageContents()
+   * @generated
+   */
+  public static MyDslPackage init()
+  {
+    if (isInited) return (MyDslPackage)EPackage.Registry.INSTANCE.getEPackage(MyDslPackage.eNS_URI);
+
+    // Obtain or create and register package
+    MyDslPackageImpl theMyDslPackage = (MyDslPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof MyDslPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new MyDslPackageImpl());
+
+    isInited = true;
+
+    // Create package meta-data objects
+    theMyDslPackage.createPackageContents();
+
+    // Initialize created meta-data
+    theMyDslPackage.initializePackageContents();
+
+    // Mark meta-data to indicate it can't be changed
+    theMyDslPackage.freeze();
+
+  
+    // Update the registry and return the package
+    EPackage.Registry.INSTANCE.put(MyDslPackage.eNS_URI, theMyDslPackage);
+    return theMyDslPackage;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getModel()
+  {
+    return modelEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getModel_Terms()
+  {
+    return (EReference)modelEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getExpression()
+  {
+    return expressionEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getExpression_TermOperations()
+  {
+    return (EAttribute)expressionEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getTerm()
+  {
+    return termEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getTerm_Left()
+  {
+    return (EReference)termEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getTerm_Operations()
+  {
+    return (EReference)termEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getTerm_Right()
+  {
+    return (EReference)termEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EEnum getOperationsType()
+  {
+    return operationsTypeEEnum;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MyDslFactory getMyDslFactory()
+  {
+    return (MyDslFactory)getEFactoryInstance();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private boolean isCreated = false;
+
+  /**
+   * Creates the meta-model objects for the package.  This method is
+   * guarded to have no affect on any invocation but its first.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void createPackageContents()
+  {
+    if (isCreated) return;
+    isCreated = true;
+
+    // Create classes and their features
+    modelEClass = createEClass(MODEL);
+    createEReference(modelEClass, MODEL__TERMS);
+
+    expressionEClass = createEClass(EXPRESSION);
+    createEAttribute(expressionEClass, EXPRESSION__TERM_OPERATIONS);
+
+    termEClass = createEClass(TERM);
+    createEReference(termEClass, TERM__LEFT);
+    createEReference(termEClass, TERM__OPERATIONS);
+    createEReference(termEClass, TERM__RIGHT);
+
+    // Create enums
+    operationsTypeEEnum = createEEnum(OPERATIONS_TYPE);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private boolean isInitialized = false;
+
+  /**
+   * Complete the initialization of the package and its meta-model.  This
+   * method is guarded to have no affect on any invocation but its first.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void initializePackageContents()
+  {
+    if (isInitialized) return;
+    isInitialized = true;
+
+    // Initialize package
+    setName(eNAME);
+    setNsPrefix(eNS_PREFIX);
+    setNsURI(eNS_URI);
+
+    // Create type parameters
+
+    // Set bounds for type parameters
+
+    // Add supertypes to classes
+    termEClass.getESuperTypes().add(this.getExpression());
+
+    // Initialize classes and features; add operations and parameters
+    initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getModel_Terms(), this.getExpression(), null, "terms", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getExpression_TermOperations(), this.getOperationsType(), "termOperations", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(termEClass, Term.class, "Term", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getTerm_Left(), this.getExpression(), null, "left", null, 0, 1, Term.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getTerm_Operations(), this.getExpression(), null, "Operations", null, 0, 1, Term.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getTerm_Right(), this.getExpression(), null, "right", null, 0, 1, Term.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    // Initialize enums and add enum literals
+    initEEnum(operationsTypeEEnum, OperationsType.class, "OperationsType");
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.ADD);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.SUB);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.MULT);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.DIV);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.MOD);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.GREATER);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.LESS);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.EQUALS);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.NOTEQUAL);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.LESSEQUAL);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.GREATEREQUAL);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.AND);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.OR);
+    addEEnumLiteral(operationsTypeEEnum, OperationsType.XOR);
+
+    // Create resource
+    createResource(eNS_URI);
+  }
+
+} //MyDslPackageImpl
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/TermImpl.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/TermImpl.java
new file mode 100644
index 00000000..e4105a91
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/impl/TermImpl.java
@@ -0,0 +1,335 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.xtext.example.mydsl.myDsl.Expression;
+import org.xtext.example.mydsl.myDsl.MyDslPackage;
+import org.xtext.example.mydsl.myDsl.Term;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Term</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.impl.TermImpl#getLeft <em>Left</em>}</li>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.impl.TermImpl#getOperations <em>Operations</em>}</li>
+ *   <li>{@link org.xtext.example.mydsl.myDsl.impl.TermImpl#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TermImpl extends ExpressionImpl implements Term
+{
+  /**
+   * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getLeft()
+   * @generated
+   * @ordered
+   */
+  protected Expression left;
+
+  /**
+   * The cached value of the '{@link #getOperations() <em>Operations</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getOperations()
+   * @generated
+   * @ordered
+   */
+  protected Expression operations;
+
+  /**
+   * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getRight()
+   * @generated
+   * @ordered
+   */
+  protected Expression right;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected TermImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return MyDslPackage.Literals.TERM;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getLeft()
+  {
+    return left;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetLeft(Expression newLeft, NotificationChain msgs)
+  {
+    Expression oldLeft = left;
+    left = newLeft;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MyDslPackage.TERM__LEFT, oldLeft, newLeft);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setLeft(Expression newLeft)
+  {
+    if (newLeft != left)
+    {
+      NotificationChain msgs = null;
+      if (left != null)
+        msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MyDslPackage.TERM__LEFT, null, msgs);
+      if (newLeft != null)
+        msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MyDslPackage.TERM__LEFT, null, msgs);
+      msgs = basicSetLeft(newLeft, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, MyDslPackage.TERM__LEFT, newLeft, newLeft));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getOperations()
+  {
+    return operations;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetOperations(Expression newOperations, NotificationChain msgs)
+  {
+    Expression oldOperations = operations;
+    operations = newOperations;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MyDslPackage.TERM__OPERATIONS, oldOperations, newOperations);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setOperations(Expression newOperations)
+  {
+    if (newOperations != operations)
+    {
+      NotificationChain msgs = null;
+      if (operations != null)
+        msgs = ((InternalEObject)operations).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MyDslPackage.TERM__OPERATIONS, null, msgs);
+      if (newOperations != null)
+        msgs = ((InternalEObject)newOperations).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MyDslPackage.TERM__OPERATIONS, null, msgs);
+      msgs = basicSetOperations(newOperations, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, MyDslPackage.TERM__OPERATIONS, newOperations, newOperations));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Expression getRight()
+  {
+    return right;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetRight(Expression newRight, NotificationChain msgs)
+  {
+    Expression oldRight = right;
+    right = newRight;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MyDslPackage.TERM__RIGHT, oldRight, newRight);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setRight(Expression newRight)
+  {
+    if (newRight != right)
+    {
+      NotificationChain msgs = null;
+      if (right != null)
+        msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MyDslPackage.TERM__RIGHT, null, msgs);
+      if (newRight != null)
+        msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MyDslPackage.TERM__RIGHT, null, msgs);
+      msgs = basicSetRight(newRight, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, MyDslPackage.TERM__RIGHT, newRight, newRight));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.TERM__LEFT:
+        return basicSetLeft(null, msgs);
+      case MyDslPackage.TERM__OPERATIONS:
+        return basicSetOperations(null, msgs);
+      case MyDslPackage.TERM__RIGHT:
+        return basicSetRight(null, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.TERM__LEFT:
+        return getLeft();
+      case MyDslPackage.TERM__OPERATIONS:
+        return getOperations();
+      case MyDslPackage.TERM__RIGHT:
+        return getRight();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.TERM__LEFT:
+        setLeft((Expression)newValue);
+        return;
+      case MyDslPackage.TERM__OPERATIONS:
+        setOperations((Expression)newValue);
+        return;
+      case MyDslPackage.TERM__RIGHT:
+        setRight((Expression)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.TERM__LEFT:
+        setLeft((Expression)null);
+        return;
+      case MyDslPackage.TERM__OPERATIONS:
+        setOperations((Expression)null);
+        return;
+      case MyDslPackage.TERM__RIGHT:
+        setRight((Expression)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case MyDslPackage.TERM__LEFT:
+        return left != null;
+      case MyDslPackage.TERM__OPERATIONS:
+        return operations != null;
+      case MyDslPackage.TERM__RIGHT:
+        return right != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //TermImpl
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/util/MyDslAdapterFactory.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/util/MyDslAdapterFactory.java
new file mode 100644
index 00000000..bfc73f61
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/util/MyDslAdapterFactory.java
@@ -0,0 +1,172 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.xtext.example.mydsl.myDsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.xtext.example.mydsl.myDsl.MyDslPackage
+ * @generated
+ */
+public class MyDslAdapterFactory extends AdapterFactoryImpl
+{
+  /**
+   * The cached model package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static MyDslPackage modelPackage;
+
+  /**
+   * Creates an instance of the adapter factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MyDslAdapterFactory()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = MyDslPackage.eINSTANCE;
+    }
+  }
+
+  /**
+   * Returns whether this factory is applicable for the type of the object.
+   * <!-- begin-user-doc -->
+   * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+   * <!-- end-user-doc -->
+   * @return whether this factory is applicable for the type of the object.
+   * @generated
+   */
+  @Override
+  public boolean isFactoryForType(Object object)
+  {
+    if (object == modelPackage)
+    {
+      return true;
+    }
+    if (object instanceof EObject)
+    {
+      return ((EObject)object).eClass().getEPackage() == modelPackage;
+    }
+    return false;
+  }
+
+  /**
+   * The switch that delegates to the <code>createXXX</code> methods.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected MyDslSwitch<Adapter> modelSwitch =
+    new MyDslSwitch<Adapter>()
+    {
+      @Override
+      public Adapter caseModel(Model object)
+      {
+        return createModelAdapter();
+      }
+      @Override
+      public Adapter caseExpression(Expression object)
+      {
+        return createExpressionAdapter();
+      }
+      @Override
+      public Adapter caseTerm(Term object)
+      {
+        return createTermAdapter();
+      }
+      @Override
+      public Adapter defaultCase(EObject object)
+      {
+        return createEObjectAdapter();
+      }
+    };
+
+  /**
+   * Creates an adapter for the <code>target</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param target the object to adapt.
+   * @return the adapter for the <code>target</code>.
+   * @generated
+   */
+  @Override
+  public Adapter createAdapter(Notifier target)
+  {
+    return modelSwitch.doSwitch((EObject)target);
+  }
+
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.xtext.example.mydsl.myDsl.Model <em>Model</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.xtext.example.mydsl.myDsl.Model
+   * @generated
+   */
+  public Adapter createModelAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.xtext.example.mydsl.myDsl.Expression <em>Expression</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.xtext.example.mydsl.myDsl.Expression
+   * @generated
+   */
+  public Adapter createExpressionAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.xtext.example.mydsl.myDsl.Term <em>Term</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.xtext.example.mydsl.myDsl.Term
+   * @generated
+   */
+  public Adapter createTermAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for the default case.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @generated
+   */
+  public Adapter createEObjectAdapter()
+  {
+    return null;
+  }
+
+} //MyDslAdapterFactory
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/util/MyDslSwitch.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/util/MyDslSwitch.java
new file mode 100644
index 00000000..5006fb17
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/myDsl/util/MyDslSwitch.java
@@ -0,0 +1,166 @@
+/**
+ */
+package org.xtext.example.mydsl.myDsl.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.xtext.example.mydsl.myDsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.xtext.example.mydsl.myDsl.MyDslPackage
+ * @generated
+ */
+public class MyDslSwitch<T> extends Switch<T>
+{
+  /**
+   * The cached model package
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static MyDslPackage modelPackage;
+
+  /**
+   * Creates an instance of the switch.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MyDslSwitch()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = MyDslPackage.eINSTANCE;
+    }
+  }
+
+  /**
+   * Checks whether this is a switch for the given package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @parameter ePackage the package in question.
+   * @return whether this is a switch for the given package.
+   * @generated
+   */
+  @Override
+  protected boolean isSwitchFor(EPackage ePackage)
+  {
+    return ePackage == modelPackage;
+  }
+
+  /**
+   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the first non-null result returned by a <code>caseXXX</code> call.
+   * @generated
+   */
+  @Override
+  protected T doSwitch(int classifierID, EObject theEObject)
+  {
+    switch (classifierID)
+    {
+      case MyDslPackage.MODEL:
+      {
+        Model model = (Model)theEObject;
+        T result = caseModel(model);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case MyDslPackage.EXPRESSION:
+      {
+        Expression expression = (Expression)theEObject;
+        T result = caseExpression(expression);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case MyDslPackage.TERM:
+      {
+        Term term = (Term)theEObject;
+        T result = caseTerm(term);
+        if (result == null) result = caseExpression(term);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      default: return defaultCase(theEObject);
+    }
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseModel(Model object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseExpression(Expression object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Term</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Term</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseTerm(Term object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch, but this is the last case anyway.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+   * @generated
+   */
+  @Override
+  public T defaultCase(EObject object)
+  {
+    return null;
+  }
+
+} //MyDslSwitch
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/MyDslAntlrTokenFileProvider.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/MyDslAntlrTokenFileProvider.java
new file mode 100644
index 00000000..09037f02
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/MyDslAntlrTokenFileProvider.java
@@ -0,0 +1,15 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class MyDslAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.tokens");
+	}
+}
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/MyDslParser.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/MyDslParser.java
new file mode 100644
index 00000000..cabcc76b
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/MyDslParser.java
@@ -0,0 +1,39 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.xtext.example.mydsl.services.MyDslGrammarAccess;
+
+public class MyDslParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private MyDslGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslParser createParser(XtextTokenStream stream) {
+		return new org.xtext.example.mydsl.parser.antlr.internal.InternalMyDslParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "Model";
+	}
+	
+	public MyDslGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(MyDslGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g
new file mode 100644
index 00000000..f15696f6
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g
@@ -0,0 +1,533 @@
+/*
+* generated by Xtext
+*/
+grammar InternalMyDsl;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.xtext.example.mydsl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.xtext.example.mydsl.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.xtext.example.mydsl.services.MyDslGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private MyDslGrammarAccess grammarAccess;
+ 	
+    public InternalMyDslParser(TokenStream input, MyDslGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "Model";	
+   	}
+   	
+   	@Override
+   	protected MyDslGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleModel
+entryRuleModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getModelRule()); }
+	 iv_ruleModel=ruleModel 
+	 { $current=$iv_ruleModel.current; } 
+	 EOF 
+;
+
+// Rule Model
+ruleModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getModelAccess().getTermsTermParserRuleCall_0()); 
+	    }
+		lv_terms_0_0=ruleTerm		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getModelRule());
+	        }
+       		add(
+       			$current, 
+       			"terms",
+        		lv_terms_0_0, 
+        		"Term");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTerm
+entryRuleTerm returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTermRule()); }
+	 iv_ruleTerm=ruleTerm 
+	 { $current=$iv_ruleTerm.current; } 
+	 EOF 
+;
+
+// Rule Term
+ruleTerm returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getTypesParserRuleCall_0()); 
+    }
+    this_Types_0=ruleTypes
+    { 
+        $current = $this_Types_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getTermAccess().getTermLeftAction_1_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTermAccess().getOperationsOperationsParserRuleCall_1_1_0()); 
+	    }
+		lv_Operations_2_0=ruleOperations		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTermRule());
+	        }
+       		set(
+       			$current, 
+       			"Operations",
+        		lv_Operations_2_0, 
+        		"Operations");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTermAccess().getRightTypesParserRuleCall_1_2_0()); 
+	    }
+		lv_right_3_0=ruleTypes		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTermRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_3_0, 
+        		"Types");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleTypes
+entryRuleTypes returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypesRule()); }
+	 iv_ruleTypes=ruleTypes 
+	 { $current=$iv_ruleTypes.current; } 
+	 EOF 
+;
+
+// Rule Types
+ruleTypes returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getTypesAccess().getArithmeticsParserRuleCall_0()); 
+    }
+    this_Arithmetics_0=ruleArithmetics
+    { 
+        $current = $this_Arithmetics_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTypesAccess().getStringsParserRuleCall_1()); 
+    }
+    this_Strings_1=ruleStrings
+    { 
+        $current = $this_Strings_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTypesAccess().getLeftParenthesisKeyword_2_0());
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getTypesAccess().getTermParserRuleCall_2_1()); 
+    }
+    this_Term_3=ruleTerm
+    { 
+        $current = $this_Term_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTypesAccess().getRightParenthesisKeyword_2_2());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleArithmetics
+entryRuleArithmetics returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getArithmeticsRule()); }
+	 iv_ruleArithmetics=ruleArithmetics 
+	 { $current=$iv_ruleArithmetics.current; } 
+	 EOF 
+;
+
+// Rule Arithmetics
+ruleArithmetics returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getArithmeticsAccess().getExpressionAction_0(),
+            $current);
+    }
+)
+    { 
+        newCompositeNode(grammarAccess.getArithmeticsAccess().getDECIMALParserRuleCall_1()); 
+    }
+ruleDECIMAL
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStrings
+entryRuleStrings returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringsRule()); }
+	 iv_ruleStrings=ruleStrings 
+	 { $current=$iv_ruleStrings.current; } 
+	 EOF 
+;
+
+// Rule Strings
+ruleStrings returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStringsAccess().getExpressionAction_0(),
+            $current);
+    }
+)
+    { 
+        newCompositeNode(grammarAccess.getStringsAccess().getE_STRINGParserRuleCall_1()); 
+    }
+ruleE_STRING
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDECIMAL
+entryRuleDECIMAL returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDECIMALRule()); } 
+	 iv_ruleDECIMAL=ruleDECIMAL 
+	 { $current=$iv_ruleDECIMAL.current.getText(); }  
+	 EOF 
+;
+
+// Rule DECIMAL
+ruleDECIMAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getDECIMALAccess().getHyphenMinusKeyword_0()); 
+    }
+)?    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_1()); 
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getDECIMALAccess().getFullStopKeyword_2_0()); 
+    }
+    this_INT_3=RULE_INT    {
+		$current.merge(this_INT_3);
+    }
+
+    { 
+    newLeafNode(this_INT_3, grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_2_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// Entry rule entryRuleE_STRING
+entryRuleE_STRING returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getE_STRINGRule()); } 
+	 iv_ruleE_STRING=ruleE_STRING 
+	 { $current=$iv_ruleE_STRING.current.getText(); }  
+	 EOF 
+;
+
+// Rule E_STRING
+ruleE_STRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_STRING_0=RULE_STRING    {
+		$current.merge(this_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_STRING_0, grammarAccess.getE_STRINGAccess().getSTRINGTerminalRuleCall_0()); 
+    }
+
+    |    this_ID_1=RULE_ID    {
+		$current.merge(this_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ID_1, grammarAccess.getE_STRINGAccess().getIDTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleOperations
+entryRuleOperations returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOperationsRule()); }
+	 iv_ruleOperations=ruleOperations 
+	 { $current=$iv_ruleOperations.current; } 
+	 EOF 
+;
+
+// Rule Operations
+ruleOperations returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationsAccess().getTermOperationsOperationsTypeEnumRuleCall_0()); 
+	    }
+		lv_termOperations_0_0=ruleOperationsType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationsRule());
+	        }
+       		set(
+       			$current, 
+       			"termOperations",
+        		lv_termOperations_0_0, 
+        		"OperationsType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Rule OperationsType
+ruleOperationsType returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='+' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getADDEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getOperationsTypeAccess().getADDEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='-' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getSUBEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getOperationsTypeAccess().getSUBEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='*' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getMULTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getOperationsTypeAccess().getMULTEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='/' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getDIVEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getOperationsTypeAccess().getDIVEnumLiteralDeclaration_3()); 
+    }
+)
+    |(	enumLiteral_4='%' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getMODEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_4, grammarAccess.getOperationsTypeAccess().getMODEnumLiteralDeclaration_4()); 
+    }
+)
+    |(	enumLiteral_5='>' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getGREATEREnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_5, grammarAccess.getOperationsTypeAccess().getGREATEREnumLiteralDeclaration_5()); 
+    }
+)
+    |(	enumLiteral_6='<' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getLESSEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_6, grammarAccess.getOperationsTypeAccess().getLESSEnumLiteralDeclaration_6()); 
+    }
+)
+    |(	enumLiteral_7='=' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getEQUALSEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_7, grammarAccess.getOperationsTypeAccess().getEQUALSEnumLiteralDeclaration_7()); 
+    }
+)
+    |(	enumLiteral_8='!=' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getNOTEQUALEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_8, grammarAccess.getOperationsTypeAccess().getNOTEQUALEnumLiteralDeclaration_8()); 
+    }
+)
+    |(	enumLiteral_9='<=' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getLESSEQUALEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_9, grammarAccess.getOperationsTypeAccess().getLESSEQUALEnumLiteralDeclaration_9()); 
+    }
+)
+    |(	enumLiteral_10='>=' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getGREATEREQUALEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_10, grammarAccess.getOperationsTypeAccess().getGREATEREQUALEnumLiteralDeclaration_10()); 
+    }
+)
+    |(	enumLiteral_11='AND' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getANDEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_11, grammarAccess.getOperationsTypeAccess().getANDEnumLiteralDeclaration_11()); 
+    }
+)
+    |(	enumLiteral_12='OR' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getOREnumLiteralDeclaration_12().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_12, grammarAccess.getOperationsTypeAccess().getOREnumLiteralDeclaration_12()); 
+    }
+)
+    |(	enumLiteral_13='XOR' 
+	{
+        $current = grammarAccess.getOperationsTypeAccess().getXOREnumLiteralDeclaration_13().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_13, grammarAccess.getOperationsTypeAccess().getXOREnumLiteralDeclaration_13()); 
+    }
+));
+
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.tokens b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.tokens
new file mode 100644
index 00000000..4c16ce22
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.tokens
@@ -0,0 +1,41 @@
+RULE_ID=6
+T__27=27
+T__26=26
+T__25=25
+T__24=24
+T__23=23
+T__22=22
+RULE_ANY_OTHER=10
+T__21=21
+T__20=20
+RULE_SL_COMMENT=8
+RULE_ML_COMMENT=7
+T__19=19
+RULE_STRING=5
+T__16=16
+T__15=15
+T__18=18
+T__17=17
+T__12=12
+T__11=11
+T__14=14
+T__13=13
+RULE_INT=4
+RULE_WS=9
+'>='=24
+'/'=17
+'OR'=26
+'>'=19
+'XOR'=27
+'<='=23
+'!='=22
+'='=21
+'<'=20
+'('=11
+'-'=13
+'*'=16
+'+'=15
+')'=12
+'.'=14
+'AND'=25
+'%'=18
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDslLexer.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDslLexer.java
new file mode 100644
index 00000000..a35af1c2
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDslLexer.java
@@ -0,0 +1,1287 @@
+package org.xtext.example.mydsl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalMyDslLexer extends Lexer {
+    public static final int RULE_ID=6;
+    public static final int T__27=27;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int EOF=-1;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__19=19;
+    public static final int RULE_STRING=5;
+    public static final int T__16=16;
+    public static final int T__15=15;
+    public static final int T__18=18;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int RULE_INT=4;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+    public InternalMyDslLexer() {;} 
+    public InternalMyDslLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalMyDslLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g"; }
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:11:7: ( '(' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:11:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__11"
+
+    // $ANTLR start "T__12"
+    public final void mT__12() throws RecognitionException {
+        try {
+            int _type = T__12;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:12:7: ( ')' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:12:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__12"
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:13:7: ( '-' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:13:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:14:7: ( '.' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:14:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:15:7: ( '+' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:15:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:16:7: ( '*' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:16:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:17:7: ( '/' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:17:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:18:7: ( '%' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:18:9: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:19:7: ( '>' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:19:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:20:7: ( '<' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:20:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:21:7: ( '=' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:21:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:22:7: ( '!=' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:22:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:23:7: ( '<=' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:23:9: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:24:7: ( '>=' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:24:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:25:7: ( 'AND' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:25:9: 'AND'
+            {
+            match("AND"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:26:7: ( 'OR' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:26:9: 'OR'
+            {
+            match("OR"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:27:7: ( 'XOR' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:27:9: 'XOR'
+            {
+            match("XOR"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:519:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:519:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:519:11: ( '^' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='^') ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:519:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:519:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:521:10: ( ( '0' .. '9' )+ )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:521:12: ( '0' .. '9' )+
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:521:12: ( '0' .. '9' )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:521:13: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0=='\"') ) {
+                alt6=1;
+            }
+            else if ( (LA6_0=='\'') ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop4:
+                    do {
+                        int alt4=3;
+                        int LA4_0 = input.LA(1);
+
+                        if ( (LA4_0=='\\') ) {
+                            alt4=1;
+                        }
+                        else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) {
+                            alt4=2;
+                        }
+
+
+                        switch (alt4) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:66: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop4;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop5:
+                    do {
+                        int alt5=3;
+                        int LA5_0 = input.LA(1);
+
+                        if ( (LA5_0=='\\') ) {
+                            alt5=1;
+                        }
+                        else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFF')) ) {
+                            alt5=2;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:523:137: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop5;
+                        }
+                    } while (true);
+
+                    match('\''); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:525:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:525:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:525:24: ( options {greedy=false; } : . )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0=='*') ) {
+                    int LA7_1 = input.LA(2);
+
+                    if ( (LA7_1=='/') ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFF')) ) {
+                        alt7=1;
+                    }
+
+
+                }
+                else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:525:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:527:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:527:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:527:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:527:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop8;
+                }
+            } while (true);
+
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:527:40: ( ( '\\r' )? '\\n' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:527:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:527:41: ( '\\r' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0=='\r') ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:527:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:529:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:529:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:529:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:531:16: ( . )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:531:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=24;
+        alt12 = dfa12.predict(input);
+        switch (alt12) {
+            case 1 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:10: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:16: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:22: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:28: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:34: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:40: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:46: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:52: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:58: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:64: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:70: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:76: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:82: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:88: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:94: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:100: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:106: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:112: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:120: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:129: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:141: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:157: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:173: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:1:181: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA12_eotS =
+        "\7\uffff\1\37\1\uffff\1\42\1\44\1\uffff\1\26\3\50\1\26\2\uffff"+
+        "\2\26\22\uffff\1\50\1\uffff\1\57\1\50\3\uffff\1\61\1\uffff\1\62"+
+        "\2\uffff";
+    static final String DFA12_eofS =
+        "\63\uffff";
+    static final String DFA12_minS =
+        "\1\0\6\uffff\1\52\1\uffff\2\75\1\uffff\1\75\1\116\1\122\1\117\1"+
+        "\101\2\uffff\2\0\22\uffff\1\104\1\uffff\1\60\1\122\3\uffff\1\60"+
+        "\1\uffff\1\60\2\uffff";
+    static final String DFA12_maxS =
+        "\1\uffff\6\uffff\1\57\1\uffff\2\75\1\uffff\1\75\1\116\1\122\1\117"+
+        "\1\172\2\uffff\2\uffff\22\uffff\1\104\1\uffff\1\172\1\122\3\uffff"+
+        "\1\172\1\uffff\1\172\2\uffff";
+    static final String DFA12_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\uffff\1\10\2\uffff\1\13\5\uffff"+
+        "\1\22\1\23\2\uffff\1\27\1\30\1\1\1\2\1\3\1\4\1\5\1\6\1\25\1\26\1"+
+        "\7\1\10\1\16\1\11\1\15\1\12\1\13\1\14\1\uffff\1\22\2\uffff\1\23"+
+        "\1\24\1\27\1\uffff\1\20\1\uffff\1\17\1\21";
+    static final String DFA12_specialS =
+        "\1\0\22\uffff\1\1\1\2\36\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\11\26\2\25\2\26\1\25\22\26\1\25\1\14\1\23\2\26\1\10\1\26\1"+
+            "\24\1\1\1\2\1\6\1\5\1\26\1\3\1\4\1\7\12\22\2\26\1\12\1\13\1"+
+            "\11\2\26\1\15\15\21\1\16\10\21\1\17\2\21\3\26\1\20\1\21\1\26"+
+            "\32\21\uff85\26",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\35\4\uffff\1\36",
+            "",
+            "\1\41",
+            "\1\43",
+            "",
+            "\1\46",
+            "\1\47",
+            "\1\51",
+            "\1\52",
+            "\32\50\4\uffff\1\50\1\uffff\32\50",
+            "",
+            "",
+            "\0\54",
+            "\0\54",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\56",
+            "",
+            "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50",
+            "\1\60",
+            "",
+            "",
+            "",
+            "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50",
+            "",
+            "\12\50\7\uffff\32\50\4\uffff\1\50\1\uffff\32\50",
+            "",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA12_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA12_0=='(') ) {s = 1;}
+
+                        else if ( (LA12_0==')') ) {s = 2;}
+
+                        else if ( (LA12_0=='-') ) {s = 3;}
+
+                        else if ( (LA12_0=='.') ) {s = 4;}
+
+                        else if ( (LA12_0=='+') ) {s = 5;}
+
+                        else if ( (LA12_0=='*') ) {s = 6;}
+
+                        else if ( (LA12_0=='/') ) {s = 7;}
+
+                        else if ( (LA12_0=='%') ) {s = 8;}
+
+                        else if ( (LA12_0=='>') ) {s = 9;}
+
+                        else if ( (LA12_0=='<') ) {s = 10;}
+
+                        else if ( (LA12_0=='=') ) {s = 11;}
+
+                        else if ( (LA12_0=='!') ) {s = 12;}
+
+                        else if ( (LA12_0=='A') ) {s = 13;}
+
+                        else if ( (LA12_0=='O') ) {s = 14;}
+
+                        else if ( (LA12_0=='X') ) {s = 15;}
+
+                        else if ( (LA12_0=='^') ) {s = 16;}
+
+                        else if ( ((LA12_0>='B' && LA12_0<='N')||(LA12_0>='P' && LA12_0<='W')||(LA12_0>='Y' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='a' && LA12_0<='z')) ) {s = 17;}
+
+                        else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 18;}
+
+                        else if ( (LA12_0=='\"') ) {s = 19;}
+
+                        else if ( (LA12_0=='\'') ) {s = 20;}
+
+                        else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 21;}
+
+                        else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||(LA12_0>='#' && LA12_0<='$')||LA12_0=='&'||LA12_0==','||(LA12_0>=':' && LA12_0<=';')||(LA12_0>='?' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||(LA12_0>='{' && LA12_0<='\uFFFF')) ) {s = 22;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA12_19 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_19>='\u0000' && LA12_19<='\uFFFF')) ) {s = 44;}
+
+                        else s = 22;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_20 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_20>='\u0000' && LA12_20<='\uFFFF')) ) {s = 44;}
+
+                        else s = 22;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDslParser.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDslParser.java
new file mode 100644
index 00000000..9ebcb66e
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDslParser.java
@@ -0,0 +1,1491 @@
+package org.xtext.example.mydsl.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.xtext.example.mydsl.services.MyDslGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalMyDslParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_STRING", "RULE_ID", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'('", "')'", "'-'", "'.'", "'+'", "'*'", "'/'", "'%'", "'>'", "'<'", "'='", "'!='", "'<='", "'>='", "'AND'", "'OR'", "'XOR'"
+    };
+    public static final int RULE_ID=6;
+    public static final int T__27=27;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int EOF=-1;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__19=19;
+    public static final int RULE_STRING=5;
+    public static final int T__16=16;
+    public static final int T__15=15;
+    public static final int T__18=18;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int RULE_INT=4;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+
+        public InternalMyDslParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalMyDslParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalMyDslParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g"; }
+
+
+
+     	private MyDslGrammarAccess grammarAccess;
+     	
+        public InternalMyDslParser(TokenStream input, MyDslGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "Model";	
+       	}
+       	
+       	@Override
+       	protected MyDslGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleModel"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:68:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
+    public final EObject entryRuleModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleModel = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:69:2: (iv_ruleModel= ruleModel EOF )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:70:2: iv_ruleModel= ruleModel EOF
+            {
+             newCompositeNode(grammarAccess.getModelRule()); 
+            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
+            iv_ruleModel=ruleModel();
+
+            state._fsp--;
+
+             current =iv_ruleModel; 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleModel"
+
+
+    // $ANTLR start "ruleModel"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:77:1: ruleModel returns [EObject current=null] : ( (lv_terms_0_0= ruleTerm ) ) ;
+    public final EObject ruleModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_terms_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:80:28: ( ( (lv_terms_0_0= ruleTerm ) ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:81:1: ( (lv_terms_0_0= ruleTerm ) )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:81:1: ( (lv_terms_0_0= ruleTerm ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:82:1: (lv_terms_0_0= ruleTerm )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:82:1: (lv_terms_0_0= ruleTerm )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:83:3: lv_terms_0_0= ruleTerm
+            {
+             
+            	        newCompositeNode(grammarAccess.getModelAccess().getTermsTermParserRuleCall_0()); 
+            	    
+            pushFollow(FOLLOW_ruleTerm_in_ruleModel130);
+            lv_terms_0_0=ruleTerm();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getModelRule());
+            	        }
+                   		add(
+                   			current, 
+                   			"terms",
+                    		lv_terms_0_0, 
+                    		"Term");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleModel"
+
+
+    // $ANTLR start "entryRuleTerm"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:107:1: entryRuleTerm returns [EObject current=null] : iv_ruleTerm= ruleTerm EOF ;
+    public final EObject entryRuleTerm() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTerm = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:108:2: (iv_ruleTerm= ruleTerm EOF )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:109:2: iv_ruleTerm= ruleTerm EOF
+            {
+             newCompositeNode(grammarAccess.getTermRule()); 
+            pushFollow(FOLLOW_ruleTerm_in_entryRuleTerm165);
+            iv_ruleTerm=ruleTerm();
+
+            state._fsp--;
+
+             current =iv_ruleTerm; 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTerm175); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTerm"
+
+
+    // $ANTLR start "ruleTerm"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:116:1: ruleTerm returns [EObject current=null] : (this_Types_0= ruleTypes ( () ( (lv_Operations_2_0= ruleOperations ) ) ( (lv_right_3_0= ruleTypes ) ) )* ) ;
+    public final EObject ruleTerm() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_Types_0 = null;
+
+        EObject lv_Operations_2_0 = null;
+
+        EObject lv_right_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:119:28: ( (this_Types_0= ruleTypes ( () ( (lv_Operations_2_0= ruleOperations ) ) ( (lv_right_3_0= ruleTypes ) ) )* ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:120:1: (this_Types_0= ruleTypes ( () ( (lv_Operations_2_0= ruleOperations ) ) ( (lv_right_3_0= ruleTypes ) ) )* )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:120:1: (this_Types_0= ruleTypes ( () ( (lv_Operations_2_0= ruleOperations ) ) ( (lv_right_3_0= ruleTypes ) ) )* )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:121:5: this_Types_0= ruleTypes ( () ( (lv_Operations_2_0= ruleOperations ) ) ( (lv_right_3_0= ruleTypes ) ) )*
+            {
+             
+                    newCompositeNode(grammarAccess.getTermAccess().getTypesParserRuleCall_0()); 
+                
+            pushFollow(FOLLOW_ruleTypes_in_ruleTerm222);
+            this_Types_0=ruleTypes();
+
+            state._fsp--;
+
+             
+                    current = this_Types_0; 
+                    afterParserOrEnumRuleCall();
+                
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:129:1: ( () ( (lv_Operations_2_0= ruleOperations ) ) ( (lv_right_3_0= ruleTypes ) ) )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==13||(LA1_0>=15 && LA1_0<=27)) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:129:2: () ( (lv_Operations_2_0= ruleOperations ) ) ( (lv_right_3_0= ruleTypes ) )
+            	    {
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:129:2: ()
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:130:5: 
+            	    {
+
+            	            current = forceCreateModelElementAndSet(
+            	                grammarAccess.getTermAccess().getTermLeftAction_1_0(),
+            	                current);
+            	        
+
+            	    }
+
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:135:2: ( (lv_Operations_2_0= ruleOperations ) )
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:136:1: (lv_Operations_2_0= ruleOperations )
+            	    {
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:136:1: (lv_Operations_2_0= ruleOperations )
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:137:3: lv_Operations_2_0= ruleOperations
+            	    {
+            	     
+            	    	        newCompositeNode(grammarAccess.getTermAccess().getOperationsOperationsParserRuleCall_1_1_0()); 
+            	    	    
+            	    pushFollow(FOLLOW_ruleOperations_in_ruleTerm252);
+            	    lv_Operations_2_0=ruleOperations();
+
+            	    state._fsp--;
+
+
+            	    	        if (current==null) {
+            	    	            current = createModelElementForParent(grammarAccess.getTermRule());
+            	    	        }
+            	           		set(
+            	           			current, 
+            	           			"Operations",
+            	            		lv_Operations_2_0, 
+            	            		"Operations");
+            	    	        afterParserOrEnumRuleCall();
+            	    	    
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:153:2: ( (lv_right_3_0= ruleTypes ) )
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:154:1: (lv_right_3_0= ruleTypes )
+            	    {
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:154:1: (lv_right_3_0= ruleTypes )
+            	    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:155:3: lv_right_3_0= ruleTypes
+            	    {
+            	     
+            	    	        newCompositeNode(grammarAccess.getTermAccess().getRightTypesParserRuleCall_1_2_0()); 
+            	    	    
+            	    pushFollow(FOLLOW_ruleTypes_in_ruleTerm273);
+            	    lv_right_3_0=ruleTypes();
+
+            	    state._fsp--;
+
+
+            	    	        if (current==null) {
+            	    	            current = createModelElementForParent(grammarAccess.getTermRule());
+            	    	        }
+            	           		set(
+            	           			current, 
+            	           			"right",
+            	            		lv_right_3_0, 
+            	            		"Types");
+            	    	        afterParserOrEnumRuleCall();
+            	    	    
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTerm"
+
+
+    // $ANTLR start "entryRuleTypes"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:179:1: entryRuleTypes returns [EObject current=null] : iv_ruleTypes= ruleTypes EOF ;
+    public final EObject entryRuleTypes() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTypes = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:180:2: (iv_ruleTypes= ruleTypes EOF )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:181:2: iv_ruleTypes= ruleTypes EOF
+            {
+             newCompositeNode(grammarAccess.getTypesRule()); 
+            pushFollow(FOLLOW_ruleTypes_in_entryRuleTypes311);
+            iv_ruleTypes=ruleTypes();
+
+            state._fsp--;
+
+             current =iv_ruleTypes; 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTypes321); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTypes"
+
+
+    // $ANTLR start "ruleTypes"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:188:1: ruleTypes returns [EObject current=null] : (this_Arithmetics_0= ruleArithmetics | this_Strings_1= ruleStrings | (otherlv_2= '(' this_Term_3= ruleTerm otherlv_4= ')' ) ) ;
+    public final EObject ruleTypes() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject this_Arithmetics_0 = null;
+
+        EObject this_Strings_1 = null;
+
+        EObject this_Term_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:191:28: ( (this_Arithmetics_0= ruleArithmetics | this_Strings_1= ruleStrings | (otherlv_2= '(' this_Term_3= ruleTerm otherlv_4= ')' ) ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:192:1: (this_Arithmetics_0= ruleArithmetics | this_Strings_1= ruleStrings | (otherlv_2= '(' this_Term_3= ruleTerm otherlv_4= ')' ) )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:192:1: (this_Arithmetics_0= ruleArithmetics | this_Strings_1= ruleStrings | (otherlv_2= '(' this_Term_3= ruleTerm otherlv_4= ')' ) )
+            int alt2=3;
+            switch ( input.LA(1) ) {
+            case RULE_INT:
+            case 13:
+                {
+                alt2=1;
+                }
+                break;
+            case RULE_STRING:
+            case RULE_ID:
+                {
+                alt2=2;
+                }
+                break;
+            case 11:
+                {
+                alt2=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt2) {
+                case 1 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:193:5: this_Arithmetics_0= ruleArithmetics
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTypesAccess().getArithmeticsParserRuleCall_0()); 
+                        
+                    pushFollow(FOLLOW_ruleArithmetics_in_ruleTypes368);
+                    this_Arithmetics_0=ruleArithmetics();
+
+                    state._fsp--;
+
+                     
+                            current = this_Arithmetics_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:203:5: this_Strings_1= ruleStrings
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTypesAccess().getStringsParserRuleCall_1()); 
+                        
+                    pushFollow(FOLLOW_ruleStrings_in_ruleTypes395);
+                    this_Strings_1=ruleStrings();
+
+                    state._fsp--;
+
+                     
+                            current = this_Strings_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:212:6: (otherlv_2= '(' this_Term_3= ruleTerm otherlv_4= ')' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:212:6: (otherlv_2= '(' this_Term_3= ruleTerm otherlv_4= ')' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:212:8: otherlv_2= '(' this_Term_3= ruleTerm otherlv_4= ')'
+                    {
+                    otherlv_2=(Token)match(input,11,FOLLOW_11_in_ruleTypes413); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getTypesAccess().getLeftParenthesisKeyword_2_0());
+                        
+                     
+                            newCompositeNode(grammarAccess.getTypesAccess().getTermParserRuleCall_2_1()); 
+                        
+                    pushFollow(FOLLOW_ruleTerm_in_ruleTypes435);
+                    this_Term_3=ruleTerm();
+
+                    state._fsp--;
+
+                     
+                            current = this_Term_3; 
+                            afterParserOrEnumRuleCall();
+                        
+                    otherlv_4=(Token)match(input,12,FOLLOW_12_in_ruleTypes446); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getTypesAccess().getRightParenthesisKeyword_2_2());
+                        
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTypes"
+
+
+    // $ANTLR start "entryRuleArithmetics"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:237:1: entryRuleArithmetics returns [EObject current=null] : iv_ruleArithmetics= ruleArithmetics EOF ;
+    public final EObject entryRuleArithmetics() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleArithmetics = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:238:2: (iv_ruleArithmetics= ruleArithmetics EOF )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:239:2: iv_ruleArithmetics= ruleArithmetics EOF
+            {
+             newCompositeNode(grammarAccess.getArithmeticsRule()); 
+            pushFollow(FOLLOW_ruleArithmetics_in_entryRuleArithmetics483);
+            iv_ruleArithmetics=ruleArithmetics();
+
+            state._fsp--;
+
+             current =iv_ruleArithmetics; 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleArithmetics493); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleArithmetics"
+
+
+    // $ANTLR start "ruleArithmetics"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:246:1: ruleArithmetics returns [EObject current=null] : ( () ruleDECIMAL ) ;
+    public final EObject ruleArithmetics() throws RecognitionException {
+        EObject current = null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:249:28: ( ( () ruleDECIMAL ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:250:1: ( () ruleDECIMAL )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:250:1: ( () ruleDECIMAL )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:250:2: () ruleDECIMAL
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:250:2: ()
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:251:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getArithmeticsAccess().getExpressionAction_0(),
+                        current);
+                
+
+            }
+
+             
+                    newCompositeNode(grammarAccess.getArithmeticsAccess().getDECIMALParserRuleCall_1()); 
+                
+            pushFollow(FOLLOW_ruleDECIMAL_in_ruleArithmetics543);
+            ruleDECIMAL();
+
+            state._fsp--;
+
+             
+                    afterParserOrEnumRuleCall();
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleArithmetics"
+
+
+    // $ANTLR start "entryRuleStrings"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:272:1: entryRuleStrings returns [EObject current=null] : iv_ruleStrings= ruleStrings EOF ;
+    public final EObject entryRuleStrings() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStrings = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:273:2: (iv_ruleStrings= ruleStrings EOF )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:274:2: iv_ruleStrings= ruleStrings EOF
+            {
+             newCompositeNode(grammarAccess.getStringsRule()); 
+            pushFollow(FOLLOW_ruleStrings_in_entryRuleStrings578);
+            iv_ruleStrings=ruleStrings();
+
+            state._fsp--;
+
+             current =iv_ruleStrings; 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleStrings588); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStrings"
+
+
+    // $ANTLR start "ruleStrings"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:281:1: ruleStrings returns [EObject current=null] : ( () ruleE_STRING ) ;
+    public final EObject ruleStrings() throws RecognitionException {
+        EObject current = null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:284:28: ( ( () ruleE_STRING ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:285:1: ( () ruleE_STRING )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:285:1: ( () ruleE_STRING )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:285:2: () ruleE_STRING
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:285:2: ()
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:286:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getStringsAccess().getExpressionAction_0(),
+                        current);
+                
+
+            }
+
+             
+                    newCompositeNode(grammarAccess.getStringsAccess().getE_STRINGParserRuleCall_1()); 
+                
+            pushFollow(FOLLOW_ruleE_STRING_in_ruleStrings638);
+            ruleE_STRING();
+
+            state._fsp--;
+
+             
+                    afterParserOrEnumRuleCall();
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStrings"
+
+
+    // $ANTLR start "entryRuleDECIMAL"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:307:1: entryRuleDECIMAL returns [String current=null] : iv_ruleDECIMAL= ruleDECIMAL EOF ;
+    public final String entryRuleDECIMAL() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleDECIMAL = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:308:2: (iv_ruleDECIMAL= ruleDECIMAL EOF )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:309:2: iv_ruleDECIMAL= ruleDECIMAL EOF
+            {
+             newCompositeNode(grammarAccess.getDECIMALRule()); 
+            pushFollow(FOLLOW_ruleDECIMAL_in_entryRuleDECIMAL674);
+            iv_ruleDECIMAL=ruleDECIMAL();
+
+            state._fsp--;
+
+             current =iv_ruleDECIMAL.getText(); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDECIMAL685); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDECIMAL"
+
+
+    // $ANTLR start "ruleDECIMAL"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:316:1: ruleDECIMAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT_1= RULE_INT (kw= '.' this_INT_3= RULE_INT )? ) ;
+    public final AntlrDatatypeRuleToken ruleDECIMAL() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        Token this_INT_1=null;
+        Token this_INT_3=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:319:28: ( ( (kw= '-' )? this_INT_1= RULE_INT (kw= '.' this_INT_3= RULE_INT )? ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:320:1: ( (kw= '-' )? this_INT_1= RULE_INT (kw= '.' this_INT_3= RULE_INT )? )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:320:1: ( (kw= '-' )? this_INT_1= RULE_INT (kw= '.' this_INT_3= RULE_INT )? )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:320:2: (kw= '-' )? this_INT_1= RULE_INT (kw= '.' this_INT_3= RULE_INT )?
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:320:2: (kw= '-' )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==13) ) {
+                alt3=1;
+            }
+            switch (alt3) {
+                case 1 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:321:2: kw= '-'
+                    {
+                    kw=(Token)match(input,13,FOLLOW_13_in_ruleDECIMAL724); 
+
+                            current.merge(kw);
+                            newLeafNode(kw, grammarAccess.getDECIMALAccess().getHyphenMinusKeyword_0()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDECIMAL741); 
+
+            		current.merge(this_INT_1);
+                
+             
+                newLeafNode(this_INT_1, grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_1()); 
+                
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:333:1: (kw= '.' this_INT_3= RULE_INT )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==14) ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:334:2: kw= '.' this_INT_3= RULE_INT
+                    {
+                    kw=(Token)match(input,14,FOLLOW_14_in_ruleDECIMAL760); 
+
+                            current.merge(kw);
+                            newLeafNode(kw, grammarAccess.getDECIMALAccess().getFullStopKeyword_2_0()); 
+                        
+                    this_INT_3=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDECIMAL775); 
+
+                    		current.merge(this_INT_3);
+                        
+                     
+                        newLeafNode(this_INT_3, grammarAccess.getDECIMALAccess().getINTTerminalRuleCall_2_1()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDECIMAL"
+
+
+    // $ANTLR start "entryRuleE_STRING"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:354:1: entryRuleE_STRING returns [String current=null] : iv_ruleE_STRING= ruleE_STRING EOF ;
+    public final String entryRuleE_STRING() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleE_STRING = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:355:2: (iv_ruleE_STRING= ruleE_STRING EOF )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:356:2: iv_ruleE_STRING= ruleE_STRING EOF
+            {
+             newCompositeNode(grammarAccess.getE_STRINGRule()); 
+            pushFollow(FOLLOW_ruleE_STRING_in_entryRuleE_STRING823);
+            iv_ruleE_STRING=ruleE_STRING();
+
+            state._fsp--;
+
+             current =iv_ruleE_STRING.getText(); 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleE_STRING834); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleE_STRING"
+
+
+    // $ANTLR start "ruleE_STRING"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:363:1: ruleE_STRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID ) ;
+    public final AntlrDatatypeRuleToken ruleE_STRING() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_STRING_0=null;
+        Token this_ID_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:366:28: ( (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:367:1: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:367:1: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID )
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==RULE_STRING) ) {
+                alt5=1;
+            }
+            else if ( (LA5_0==RULE_ID) ) {
+                alt5=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+            switch (alt5) {
+                case 1 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:367:6: this_STRING_0= RULE_STRING
+                    {
+                    this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleE_STRING874); 
+
+                    		current.merge(this_STRING_0);
+                        
+                     
+                        newLeafNode(this_STRING_0, grammarAccess.getE_STRINGAccess().getSTRINGTerminalRuleCall_0()); 
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:375:10: this_ID_1= RULE_ID
+                    {
+                    this_ID_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleE_STRING900); 
+
+                    		current.merge(this_ID_1);
+                        
+                     
+                        newLeafNode(this_ID_1, grammarAccess.getE_STRINGAccess().getIDTerminalRuleCall_1()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleE_STRING"
+
+
+    // $ANTLR start "entryRuleOperations"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:390:1: entryRuleOperations returns [EObject current=null] : iv_ruleOperations= ruleOperations EOF ;
+    public final EObject entryRuleOperations() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleOperations = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:391:2: (iv_ruleOperations= ruleOperations EOF )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:392:2: iv_ruleOperations= ruleOperations EOF
+            {
+             newCompositeNode(grammarAccess.getOperationsRule()); 
+            pushFollow(FOLLOW_ruleOperations_in_entryRuleOperations945);
+            iv_ruleOperations=ruleOperations();
+
+            state._fsp--;
+
+             current =iv_ruleOperations; 
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOperations955); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOperations"
+
+
+    // $ANTLR start "ruleOperations"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:399:1: ruleOperations returns [EObject current=null] : ( (lv_termOperations_0_0= ruleOperationsType ) ) ;
+    public final EObject ruleOperations() throws RecognitionException {
+        EObject current = null;
+
+        Enumerator lv_termOperations_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:402:28: ( ( (lv_termOperations_0_0= ruleOperationsType ) ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:403:1: ( (lv_termOperations_0_0= ruleOperationsType ) )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:403:1: ( (lv_termOperations_0_0= ruleOperationsType ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:404:1: (lv_termOperations_0_0= ruleOperationsType )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:404:1: (lv_termOperations_0_0= ruleOperationsType )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:405:3: lv_termOperations_0_0= ruleOperationsType
+            {
+             
+            	        newCompositeNode(grammarAccess.getOperationsAccess().getTermOperationsOperationsTypeEnumRuleCall_0()); 
+            	    
+            pushFollow(FOLLOW_ruleOperationsType_in_ruleOperations1000);
+            lv_termOperations_0_0=ruleOperationsType();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getOperationsRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"termOperations",
+                    		lv_termOperations_0_0, 
+                    		"OperationsType");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOperations"
+
+
+    // $ANTLR start "ruleOperationsType"
+    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:429:1: ruleOperationsType returns [Enumerator current=null] : ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) | (enumLiteral_2= '*' ) | (enumLiteral_3= '/' ) | (enumLiteral_4= '%' ) | (enumLiteral_5= '>' ) | (enumLiteral_6= '<' ) | (enumLiteral_7= '=' ) | (enumLiteral_8= '!=' ) | (enumLiteral_9= '<=' ) | (enumLiteral_10= '>=' ) | (enumLiteral_11= 'AND' ) | (enumLiteral_12= 'OR' ) | (enumLiteral_13= 'XOR' ) ) ;
+    public final Enumerator ruleOperationsType() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+        Token enumLiteral_3=null;
+        Token enumLiteral_4=null;
+        Token enumLiteral_5=null;
+        Token enumLiteral_6=null;
+        Token enumLiteral_7=null;
+        Token enumLiteral_8=null;
+        Token enumLiteral_9=null;
+        Token enumLiteral_10=null;
+        Token enumLiteral_11=null;
+        Token enumLiteral_12=null;
+        Token enumLiteral_13=null;
+
+         enterRule(); 
+        try {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:431:28: ( ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) | (enumLiteral_2= '*' ) | (enumLiteral_3= '/' ) | (enumLiteral_4= '%' ) | (enumLiteral_5= '>' ) | (enumLiteral_6= '<' ) | (enumLiteral_7= '=' ) | (enumLiteral_8= '!=' ) | (enumLiteral_9= '<=' ) | (enumLiteral_10= '>=' ) | (enumLiteral_11= 'AND' ) | (enumLiteral_12= 'OR' ) | (enumLiteral_13= 'XOR' ) ) )
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:432:1: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) | (enumLiteral_2= '*' ) | (enumLiteral_3= '/' ) | (enumLiteral_4= '%' ) | (enumLiteral_5= '>' ) | (enumLiteral_6= '<' ) | (enumLiteral_7= '=' ) | (enumLiteral_8= '!=' ) | (enumLiteral_9= '<=' ) | (enumLiteral_10= '>=' ) | (enumLiteral_11= 'AND' ) | (enumLiteral_12= 'OR' ) | (enumLiteral_13= 'XOR' ) )
+            {
+            // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:432:1: ( (enumLiteral_0= '+' ) | (enumLiteral_1= '-' ) | (enumLiteral_2= '*' ) | (enumLiteral_3= '/' ) | (enumLiteral_4= '%' ) | (enumLiteral_5= '>' ) | (enumLiteral_6= '<' ) | (enumLiteral_7= '=' ) | (enumLiteral_8= '!=' ) | (enumLiteral_9= '<=' ) | (enumLiteral_10= '>=' ) | (enumLiteral_11= 'AND' ) | (enumLiteral_12= 'OR' ) | (enumLiteral_13= 'XOR' ) )
+            int alt6=14;
+            switch ( input.LA(1) ) {
+            case 15:
+                {
+                alt6=1;
+                }
+                break;
+            case 13:
+                {
+                alt6=2;
+                }
+                break;
+            case 16:
+                {
+                alt6=3;
+                }
+                break;
+            case 17:
+                {
+                alt6=4;
+                }
+                break;
+            case 18:
+                {
+                alt6=5;
+                }
+                break;
+            case 19:
+                {
+                alt6=6;
+                }
+                break;
+            case 20:
+                {
+                alt6=7;
+                }
+                break;
+            case 21:
+                {
+                alt6=8;
+                }
+                break;
+            case 22:
+                {
+                alt6=9;
+                }
+                break;
+            case 23:
+                {
+                alt6=10;
+                }
+                break;
+            case 24:
+                {
+                alt6=11;
+                }
+                break;
+            case 25:
+                {
+                alt6=12;
+                }
+                break;
+            case 26:
+                {
+                alt6=13;
+                }
+                break;
+            case 27:
+                {
+                alt6=14;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt6) {
+                case 1 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:432:2: (enumLiteral_0= '+' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:432:2: (enumLiteral_0= '+' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:432:4: enumLiteral_0= '+'
+                    {
+                    enumLiteral_0=(Token)match(input,15,FOLLOW_15_in_ruleOperationsType1049); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getADDEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_0, grammarAccess.getOperationsTypeAccess().getADDEnumLiteralDeclaration_0()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:438:6: (enumLiteral_1= '-' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:438:6: (enumLiteral_1= '-' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:438:8: enumLiteral_1= '-'
+                    {
+                    enumLiteral_1=(Token)match(input,13,FOLLOW_13_in_ruleOperationsType1066); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getSUBEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_1, grammarAccess.getOperationsTypeAccess().getSUBEnumLiteralDeclaration_1()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:444:6: (enumLiteral_2= '*' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:444:6: (enumLiteral_2= '*' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:444:8: enumLiteral_2= '*'
+                    {
+                    enumLiteral_2=(Token)match(input,16,FOLLOW_16_in_ruleOperationsType1083); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getMULTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_2, grammarAccess.getOperationsTypeAccess().getMULTEnumLiteralDeclaration_2()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:450:6: (enumLiteral_3= '/' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:450:6: (enumLiteral_3= '/' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:450:8: enumLiteral_3= '/'
+                    {
+                    enumLiteral_3=(Token)match(input,17,FOLLOW_17_in_ruleOperationsType1100); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getDIVEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_3, grammarAccess.getOperationsTypeAccess().getDIVEnumLiteralDeclaration_3()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:456:6: (enumLiteral_4= '%' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:456:6: (enumLiteral_4= '%' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:456:8: enumLiteral_4= '%'
+                    {
+                    enumLiteral_4=(Token)match(input,18,FOLLOW_18_in_ruleOperationsType1117); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getMODEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_4, grammarAccess.getOperationsTypeAccess().getMODEnumLiteralDeclaration_4()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:462:6: (enumLiteral_5= '>' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:462:6: (enumLiteral_5= '>' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:462:8: enumLiteral_5= '>'
+                    {
+                    enumLiteral_5=(Token)match(input,19,FOLLOW_19_in_ruleOperationsType1134); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getGREATEREnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_5, grammarAccess.getOperationsTypeAccess().getGREATEREnumLiteralDeclaration_5()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:468:6: (enumLiteral_6= '<' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:468:6: (enumLiteral_6= '<' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:468:8: enumLiteral_6= '<'
+                    {
+                    enumLiteral_6=(Token)match(input,20,FOLLOW_20_in_ruleOperationsType1151); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getLESSEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_6, grammarAccess.getOperationsTypeAccess().getLESSEnumLiteralDeclaration_6()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:474:6: (enumLiteral_7= '=' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:474:6: (enumLiteral_7= '=' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:474:8: enumLiteral_7= '='
+                    {
+                    enumLiteral_7=(Token)match(input,21,FOLLOW_21_in_ruleOperationsType1168); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getEQUALSEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_7, grammarAccess.getOperationsTypeAccess().getEQUALSEnumLiteralDeclaration_7()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:480:6: (enumLiteral_8= '!=' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:480:6: (enumLiteral_8= '!=' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:480:8: enumLiteral_8= '!='
+                    {
+                    enumLiteral_8=(Token)match(input,22,FOLLOW_22_in_ruleOperationsType1185); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getNOTEQUALEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_8, grammarAccess.getOperationsTypeAccess().getNOTEQUALEnumLiteralDeclaration_8()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:486:6: (enumLiteral_9= '<=' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:486:6: (enumLiteral_9= '<=' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:486:8: enumLiteral_9= '<='
+                    {
+                    enumLiteral_9=(Token)match(input,23,FOLLOW_23_in_ruleOperationsType1202); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getLESSEQUALEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_9, grammarAccess.getOperationsTypeAccess().getLESSEQUALEnumLiteralDeclaration_9()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:492:6: (enumLiteral_10= '>=' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:492:6: (enumLiteral_10= '>=' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:492:8: enumLiteral_10= '>='
+                    {
+                    enumLiteral_10=(Token)match(input,24,FOLLOW_24_in_ruleOperationsType1219); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getGREATEREQUALEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_10, grammarAccess.getOperationsTypeAccess().getGREATEREQUALEnumLiteralDeclaration_10()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:498:6: (enumLiteral_11= 'AND' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:498:6: (enumLiteral_11= 'AND' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:498:8: enumLiteral_11= 'AND'
+                    {
+                    enumLiteral_11=(Token)match(input,25,FOLLOW_25_in_ruleOperationsType1236); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getANDEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_11, grammarAccess.getOperationsTypeAccess().getANDEnumLiteralDeclaration_11()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:504:6: (enumLiteral_12= 'OR' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:504:6: (enumLiteral_12= 'OR' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:504:8: enumLiteral_12= 'OR'
+                    {
+                    enumLiteral_12=(Token)match(input,26,FOLLOW_26_in_ruleOperationsType1253); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getOREnumLiteralDeclaration_12().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_12, grammarAccess.getOperationsTypeAccess().getOREnumLiteralDeclaration_12()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:510:6: (enumLiteral_13= 'XOR' )
+                    {
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:510:6: (enumLiteral_13= 'XOR' )
+                    // ../org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl.g:510:8: enumLiteral_13= 'XOR'
+                    {
+                    enumLiteral_13=(Token)match(input,27,FOLLOW_27_in_ruleOperationsType1270); 
+
+                            current = grammarAccess.getOperationsTypeAccess().getXOREnumLiteralDeclaration_13().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_13, grammarAccess.getOperationsTypeAccess().getXOREnumLiteralDeclaration_13()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOperationsType"
+
+    // Delegated rules
+
+
+ 
+
+    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTerm_in_ruleModel130 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm165 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleTerm175 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleTypes_in_ruleTerm222 = new BitSet(new long[]{0x000000000FFFA002L});
+    public static final BitSet FOLLOW_ruleOperations_in_ruleTerm252 = new BitSet(new long[]{0x0000000000002870L});
+    public static final BitSet FOLLOW_ruleTypes_in_ruleTerm273 = new BitSet(new long[]{0x000000000FFFA002L});
+    public static final BitSet FOLLOW_ruleTypes_in_entryRuleTypes311 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleTypes321 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleArithmetics_in_ruleTypes368 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleStrings_in_ruleTypes395 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_11_in_ruleTypes413 = new BitSet(new long[]{0x0000000000002870L});
+    public static final BitSet FOLLOW_ruleTerm_in_ruleTypes435 = new BitSet(new long[]{0x0000000000001000L});
+    public static final BitSet FOLLOW_12_in_ruleTypes446 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleArithmetics_in_entryRuleArithmetics483 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleArithmetics493 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDECIMAL_in_ruleArithmetics543 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleStrings_in_entryRuleStrings578 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleStrings588 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleE_STRING_in_ruleStrings638 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleDECIMAL_in_entryRuleDECIMAL674 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleDECIMAL685 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_ruleDECIMAL724 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_RULE_INT_in_ruleDECIMAL741 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_14_in_ruleDECIMAL760 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_RULE_INT_in_ruleDECIMAL775 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleE_STRING_in_entryRuleE_STRING823 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleE_STRING834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_STRING_in_ruleE_STRING874 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RULE_ID_in_ruleE_STRING900 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleOperations_in_entryRuleOperations945 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_EOF_in_entryRuleOperations955 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleOperationsType_in_ruleOperations1000 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_15_in_ruleOperationsType1049 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_ruleOperationsType1066 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_16_in_ruleOperationsType1083 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_17_in_ruleOperationsType1100 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_18_in_ruleOperationsType1117 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_19_in_ruleOperationsType1134 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_20_in_ruleOperationsType1151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_21_in_ruleOperationsType1168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_22_in_ruleOperationsType1185 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_23_in_ruleOperationsType1202 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_24_in_ruleOperationsType1219 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_25_in_ruleOperationsType1236 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_26_in_ruleOperationsType1253 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_27_in_ruleOperationsType1270 = new BitSet(new long[]{0x0000000000000002L});
+
+}
\ No newline at end of file
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/serializer/MyDslSemanticSequencer.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/serializer/MyDslSemanticSequencer.java
new file mode 100644
index 00000000..434cb75e
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/serializer/MyDslSemanticSequencer.java
@@ -0,0 +1,103 @@
+package org.xtext.example.mydsl.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor;
+import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
+import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider;
+import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
+import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
+import org.xtext.example.mydsl.myDsl.Expression;
+import org.xtext.example.mydsl.myDsl.Model;
+import org.xtext.example.mydsl.myDsl.MyDslPackage;
+import org.xtext.example.mydsl.myDsl.Term;
+import org.xtext.example.mydsl.services.MyDslGrammarAccess;
+
+@SuppressWarnings("all")
+public class MyDslSemanticSequencer extends AbstractDelegatingSemanticSequencer {
+
+	@Inject
+	private MyDslGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == MyDslPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case MyDslPackage.EXPRESSION:
+				if(context == grammarAccess.getArithmeticsRule() ||
+				   context == grammarAccess.getStringsRule() ||
+				   context == grammarAccess.getTermRule() ||
+				   context == grammarAccess.getTermAccess().getTermLeftAction_1_0() ||
+				   context == grammarAccess.getTypesRule()) {
+					sequence_Arithmetics_Strings(context, (Expression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getOperationsRule()) {
+					sequence_Operations(context, (Expression) semanticObject); 
+					return; 
+				}
+				else break;
+			case MyDslPackage.MODEL:
+				if(context == grammarAccess.getModelRule()) {
+					sequence_Model(context, (Model) semanticObject); 
+					return; 
+				}
+				else break;
+			case MyDslPackage.TERM:
+				if(context == grammarAccess.getTermRule() ||
+				   context == grammarAccess.getTermAccess().getTermLeftAction_1_0() ||
+				   context == grammarAccess.getTypesRule()) {
+					sequence_Term(context, (Term) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+	}
+	
+	/**
+	 * Constraint:
+	 *     {Expression}
+	 */
+	protected void sequence_Arithmetics_Strings(EObject context, Expression semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     terms+=Term
+	 */
+	protected void sequence_Model(EObject context, Model semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     termOperations=OperationsType
+	 */
+	protected void sequence_Operations(EObject context, Expression semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, MyDslPackage.Literals.EXPRESSION__TERM_OPERATIONS) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, MyDslPackage.Literals.EXPRESSION__TERM_OPERATIONS));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getOperationsAccess().getTermOperationsOperationsTypeEnumRuleCall_0(), semanticObject.getTermOperations());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=Term_Term_1_0 Operations=Operations right=Types)
+	 */
+	protected void sequence_Term(EObject context, Term semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/serializer/MyDslSyntacticSequencer.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/serializer/MyDslSyntacticSequencer.java
new file mode 100644
index 00000000..dce60187
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/serializer/MyDslSyntacticSequencer.java
@@ -0,0 +1,88 @@
+package org.xtext.example.mydsl.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+import org.xtext.example.mydsl.services.MyDslGrammarAccess;
+
+@SuppressWarnings("all")
+public class MyDslSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected MyDslGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_Types_LeftParenthesisKeyword_2_0_a;
+	protected AbstractElementAlias match_Types_LeftParenthesisKeyword_2_0_p;
+	
+	@Inject
+	protected void init(IGrammarAccess access) {
+		grammarAccess = (MyDslGrammarAccess) access;
+		match_Types_LeftParenthesisKeyword_2_0_a = new TokenAlias(true, true, grammarAccess.getTypesAccess().getLeftParenthesisKeyword_2_0());
+		match_Types_LeftParenthesisKeyword_2_0_p = new TokenAlias(true, false, grammarAccess.getTypesAccess().getLeftParenthesisKeyword_2_0());
+	}
+	
+	@Override
+	protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if(ruleCall.getRule() == grammarAccess.getDECIMALRule())
+			return getDECIMALToken(semanticObject, ruleCall, node);
+		else if(ruleCall.getRule() == grammarAccess.getE_STRINGRule())
+			return getE_STRINGToken(semanticObject, ruleCall, node);
+		return "";
+	}
+	
+	/**
+	 * DECIMAL returns ecore::EBigDecimal : '-'? INT ('.' INT)? ;
+	 */
+	protected String getDECIMALToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if (node != null)
+			return getTokenText(node);
+		return "";
+	}
+	
+	/**
+	 * E_STRING returns ecore::EString:
+	 * 	STRING | ID;
+	 */
+	protected String getE_STRINGToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if (node != null)
+			return getTokenText(node);
+		return "\"\"";
+	}
+	
+	@Override
+	protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
+		if (transition.getAmbiguousSyntaxes().isEmpty()) return;
+		List<INode> transitionNodes = collectNodes(fromNode, toNode);
+		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
+			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
+			if(match_Types_LeftParenthesisKeyword_2_0_a.equals(syntax))
+				emit_Types_LeftParenthesisKeyword_2_0_a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Types_LeftParenthesisKeyword_2_0_p.equals(syntax))
+				emit_Types_LeftParenthesisKeyword_2_0_p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else acceptNodes(getLastNavigableState(), syntaxNodes);
+		}
+	}
+
+	/**
+	 * Syntax:
+	 *     '('*
+	 */
+	protected void emit_Types_LeftParenthesisKeyword_2_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('+
+	 */
+	protected void emit_Types_LeftParenthesisKeyword_2_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+}
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/services/MyDslGrammarAccess.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/services/MyDslGrammarAccess.java
new file mode 100644
index 00000000..4afddd6e
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/services/MyDslGrammarAccess.java
@@ -0,0 +1,559 @@
+/*
+* generated by Xtext
+*/
+
+package org.xtext.example.mydsl.services;
+
+import com.google.inject.Singleton;
+import com.google.inject.Inject;
+
+import java.util.List;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.service.AbstractElementFinder.*;
+
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+
+@Singleton
+public class MyDslGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class ModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Model");
+		private final Assignment cTermsAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cTermsTermParserRuleCall_0 = (RuleCall)cTermsAssignment.eContents().get(0);
+		
+		//Model:
+		//
+		//	terms+=Term;
+		public ParserRule getRule() { return rule; }
+
+		//terms+=Term
+		public Assignment getTermsAssignment() { return cTermsAssignment; }
+
+		//Term
+		public RuleCall getTermsTermParserRuleCall_0() { return cTermsTermParserRuleCall_0; }
+	}
+
+	public class TermElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Term");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cTypesParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Action cTermLeftAction_1_0 = (Action)cGroup_1.eContents().get(0);
+		private final Assignment cOperationsAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+		private final RuleCall cOperationsOperationsParserRuleCall_1_1_0 = (RuleCall)cOperationsAssignment_1_1.eContents().get(0);
+		private final Assignment cRightAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
+		private final RuleCall cRightTypesParserRuleCall_1_2_0 = (RuleCall)cRightAssignment_1_2.eContents().get(0);
+		
+		//Term returns Expression:
+		//
+		//	Types ({Term.left=current} Operations=Operations right=Types)*;
+		public ParserRule getRule() { return rule; }
+
+		//Types ({Term.left=current} Operations=Operations right=Types)*
+		public Group getGroup() { return cGroup; }
+
+		//Types
+		public RuleCall getTypesParserRuleCall_0() { return cTypesParserRuleCall_0; }
+
+		//({Term.left=current} Operations=Operations right=Types)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{Term.left=current}
+		public Action getTermLeftAction_1_0() { return cTermLeftAction_1_0; }
+
+		//Operations=Operations
+		public Assignment getOperationsAssignment_1_1() { return cOperationsAssignment_1_1; }
+
+		//Operations
+		public RuleCall getOperationsOperationsParserRuleCall_1_1_0() { return cOperationsOperationsParserRuleCall_1_1_0; }
+
+		//right=Types
+		public Assignment getRightAssignment_1_2() { return cRightAssignment_1_2; }
+
+		//Types
+		public RuleCall getRightTypesParserRuleCall_1_2_0() { return cRightTypesParserRuleCall_1_2_0; }
+	}
+
+	public class TypesElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Types");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cArithmeticsParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cStringsParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final Group cGroup_2 = (Group)cAlternatives.eContents().get(2);
+		private final Keyword cLeftParenthesisKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final RuleCall cTermParserRuleCall_2_1 = (RuleCall)cGroup_2.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
+		
+		//Types returns Expression:
+		//
+		//	Arithmetics | Strings | "(" Term ")";
+		public ParserRule getRule() { return rule; }
+
+		//Arithmetics | Strings | "(" Term ")"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//Arithmetics
+		public RuleCall getArithmeticsParserRuleCall_0() { return cArithmeticsParserRuleCall_0; }
+
+		//Strings
+		public RuleCall getStringsParserRuleCall_1() { return cStringsParserRuleCall_1; }
+
+		//"(" Term ")"
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_0() { return cLeftParenthesisKeyword_2_0; }
+
+		//Term
+		public RuleCall getTermParserRuleCall_2_1() { return cTermParserRuleCall_2_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_2() { return cRightParenthesisKeyword_2_2; }
+	}
+
+	public class ArithmeticsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Arithmetics");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cExpressionAction_0 = (Action)cGroup.eContents().get(0);
+		private final RuleCall cDECIMALParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		//Arithmetics returns Expression:
+		//
+		//	{Expression} DECIMAL;
+		public ParserRule getRule() { return rule; }
+
+		//{Expression} DECIMAL
+		public Group getGroup() { return cGroup; }
+
+		//{Expression}
+		public Action getExpressionAction_0() { return cExpressionAction_0; }
+
+		//DECIMAL
+		public RuleCall getDECIMALParserRuleCall_1() { return cDECIMALParserRuleCall_1; }
+	}
+
+	public class StringsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Strings");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cExpressionAction_0 = (Action)cGroup.eContents().get(0);
+		private final RuleCall cE_STRINGParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		//Strings returns Expression:
+		//
+		//	{Expression} E_STRING;
+		public ParserRule getRule() { return rule; }
+
+		//{Expression} E_STRING
+		public Group getGroup() { return cGroup; }
+
+		//{Expression}
+		public Action getExpressionAction_0() { return cExpressionAction_0; }
+
+		//E_STRING
+		public RuleCall getE_STRINGParserRuleCall_1() { return cE_STRINGParserRuleCall_1; }
+	}
+
+	public class DECIMALElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DECIMAL");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cFullStopKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final RuleCall cINTTerminalRuleCall_2_1 = (RuleCall)cGroup_2.eContents().get(1);
+		
+		//DECIMAL returns ecore::EBigDecimal:
+		//
+		//	"-"? INT ("." INT)?;
+		public ParserRule getRule() { return rule; }
+
+		//"-"? INT ("." INT)?
+		public Group getGroup() { return cGroup; }
+
+		//"-"?
+		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
+
+		//("." INT)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"."
+		public Keyword getFullStopKeyword_2_0() { return cFullStopKeyword_2_0; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_2_1() { return cINTTerminalRuleCall_2_1; }
+	}
+
+	public class E_STRINGElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "E_STRING");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//E_STRING returns ecore::EString:
+		//
+		//	STRING | ID;
+		public ParserRule getRule() { return rule; }
+
+		//STRING | ID
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//STRING
+		public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; }
+	}
+
+	public class OperationsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Operations");
+		private final Assignment cTermOperationsAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cTermOperationsOperationsTypeEnumRuleCall_0 = (RuleCall)cTermOperationsAssignment.eContents().get(0);
+		
+		//Operations returns Expression:
+		//
+		//	termOperations=OperationsType;
+		public ParserRule getRule() { return rule; }
+
+		//termOperations=OperationsType
+		public Assignment getTermOperationsAssignment() { return cTermOperationsAssignment; }
+
+		//OperationsType
+		public RuleCall getTermOperationsOperationsTypeEnumRuleCall_0() { return cTermOperationsOperationsTypeEnumRuleCall_0; }
+	}
+	
+	
+	public class OperationsTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "OperationsType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cADDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cADDPlusSignKeyword_0_0 = (Keyword)cADDEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cSUBEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cSUBHyphenMinusKeyword_1_0 = (Keyword)cSUBEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cMULTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cMULTAsteriskKeyword_2_0 = (Keyword)cMULTEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cDIVEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cDIVSolidusKeyword_3_0 = (Keyword)cDIVEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cMODEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cMODPercentSignKeyword_4_0 = (Keyword)cMODEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cGREATEREnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cGREATERGreaterThanSignKeyword_5_0 = (Keyword)cGREATEREnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cLESSEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cLESSLessThanSignKeyword_6_0 = (Keyword)cLESSEnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cEQUALSEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cEQUALSEqualsSignKeyword_7_0 = (Keyword)cEQUALSEnumLiteralDeclaration_7.eContents().get(0);
+		private final EnumLiteralDeclaration cNOTEQUALEnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
+		private final Keyword cNOTEQUALExclamationMarkEqualsSignKeyword_8_0 = (Keyword)cNOTEQUALEnumLiteralDeclaration_8.eContents().get(0);
+		private final EnumLiteralDeclaration cLESSEQUALEnumLiteralDeclaration_9 = (EnumLiteralDeclaration)cAlternatives.eContents().get(9);
+		private final Keyword cLESSEQUALLessThanSignEqualsSignKeyword_9_0 = (Keyword)cLESSEQUALEnumLiteralDeclaration_9.eContents().get(0);
+		private final EnumLiteralDeclaration cGREATEREQUALEnumLiteralDeclaration_10 = (EnumLiteralDeclaration)cAlternatives.eContents().get(10);
+		private final Keyword cGREATEREQUALGreaterThanSignEqualsSignKeyword_10_0 = (Keyword)cGREATEREQUALEnumLiteralDeclaration_10.eContents().get(0);
+		private final EnumLiteralDeclaration cANDEnumLiteralDeclaration_11 = (EnumLiteralDeclaration)cAlternatives.eContents().get(11);
+		private final Keyword cANDANDKeyword_11_0 = (Keyword)cANDEnumLiteralDeclaration_11.eContents().get(0);
+		private final EnumLiteralDeclaration cOREnumLiteralDeclaration_12 = (EnumLiteralDeclaration)cAlternatives.eContents().get(12);
+		private final Keyword cORORKeyword_12_0 = (Keyword)cOREnumLiteralDeclaration_12.eContents().get(0);
+		private final EnumLiteralDeclaration cXOREnumLiteralDeclaration_13 = (EnumLiteralDeclaration)cAlternatives.eContents().get(13);
+		private final Keyword cXORXORKeyword_13_0 = (Keyword)cXOREnumLiteralDeclaration_13.eContents().get(0);
+		
+		//enum OperationsType:
+		//
+		//	ADD="+" | SUB="-" | MULT="*" | DIV="/" | MOD="%" | GREATER=">" | LESS="<" | EQUALS="=" | NOTEQUAL="!=" |
+		//
+		//	LESSEQUAL="<=" | GREATEREQUAL=">=" | AND | OR | XOR;
+		public EnumRule getRule() { return rule; }
+
+		//ADD="+" | SUB="-" | MULT="*" | DIV="/" | MOD="%" | GREATER=">" | LESS="<" | EQUALS="=" | NOTEQUAL="!=" | LESSEQUAL="<="
+		//
+		//| GREATEREQUAL=">=" | AND | OR | XOR
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ADD="+"
+		public EnumLiteralDeclaration getADDEnumLiteralDeclaration_0() { return cADDEnumLiteralDeclaration_0; }
+
+		//"+"
+		public Keyword getADDPlusSignKeyword_0_0() { return cADDPlusSignKeyword_0_0; }
+
+		//SUB="-"
+		public EnumLiteralDeclaration getSUBEnumLiteralDeclaration_1() { return cSUBEnumLiteralDeclaration_1; }
+
+		//"-"
+		public Keyword getSUBHyphenMinusKeyword_1_0() { return cSUBHyphenMinusKeyword_1_0; }
+
+		//MULT="*"
+		public EnumLiteralDeclaration getMULTEnumLiteralDeclaration_2() { return cMULTEnumLiteralDeclaration_2; }
+
+		//"*"
+		public Keyword getMULTAsteriskKeyword_2_0() { return cMULTAsteriskKeyword_2_0; }
+
+		//DIV="/"
+		public EnumLiteralDeclaration getDIVEnumLiteralDeclaration_3() { return cDIVEnumLiteralDeclaration_3; }
+
+		//"/"
+		public Keyword getDIVSolidusKeyword_3_0() { return cDIVSolidusKeyword_3_0; }
+
+		//MOD="%"
+		public EnumLiteralDeclaration getMODEnumLiteralDeclaration_4() { return cMODEnumLiteralDeclaration_4; }
+
+		//"%"
+		public Keyword getMODPercentSignKeyword_4_0() { return cMODPercentSignKeyword_4_0; }
+
+		//GREATER=">"
+		public EnumLiteralDeclaration getGREATEREnumLiteralDeclaration_5() { return cGREATEREnumLiteralDeclaration_5; }
+
+		//">"
+		public Keyword getGREATERGreaterThanSignKeyword_5_0() { return cGREATERGreaterThanSignKeyword_5_0; }
+
+		//LESS="<"
+		public EnumLiteralDeclaration getLESSEnumLiteralDeclaration_6() { return cLESSEnumLiteralDeclaration_6; }
+
+		//"<"
+		public Keyword getLESSLessThanSignKeyword_6_0() { return cLESSLessThanSignKeyword_6_0; }
+
+		//EQUALS="="
+		public EnumLiteralDeclaration getEQUALSEnumLiteralDeclaration_7() { return cEQUALSEnumLiteralDeclaration_7; }
+
+		//"="
+		public Keyword getEQUALSEqualsSignKeyword_7_0() { return cEQUALSEqualsSignKeyword_7_0; }
+
+		//NOTEQUAL="!="
+		public EnumLiteralDeclaration getNOTEQUALEnumLiteralDeclaration_8() { return cNOTEQUALEnumLiteralDeclaration_8; }
+
+		//"!="
+		public Keyword getNOTEQUALExclamationMarkEqualsSignKeyword_8_0() { return cNOTEQUALExclamationMarkEqualsSignKeyword_8_0; }
+
+		//LESSEQUAL="<="
+		public EnumLiteralDeclaration getLESSEQUALEnumLiteralDeclaration_9() { return cLESSEQUALEnumLiteralDeclaration_9; }
+
+		//"<="
+		public Keyword getLESSEQUALLessThanSignEqualsSignKeyword_9_0() { return cLESSEQUALLessThanSignEqualsSignKeyword_9_0; }
+
+		//GREATEREQUAL=">="
+		public EnumLiteralDeclaration getGREATEREQUALEnumLiteralDeclaration_10() { return cGREATEREQUALEnumLiteralDeclaration_10; }
+
+		//">="
+		public Keyword getGREATEREQUALGreaterThanSignEqualsSignKeyword_10_0() { return cGREATEREQUALGreaterThanSignEqualsSignKeyword_10_0; }
+
+		//AND
+		public EnumLiteralDeclaration getANDEnumLiteralDeclaration_11() { return cANDEnumLiteralDeclaration_11; }
+
+		//"AND"
+		public Keyword getANDANDKeyword_11_0() { return cANDANDKeyword_11_0; }
+
+		//OR
+		public EnumLiteralDeclaration getOREnumLiteralDeclaration_12() { return cOREnumLiteralDeclaration_12; }
+
+		//"OR"
+		public Keyword getORORKeyword_12_0() { return cORORKeyword_12_0; }
+
+		//XOR
+		public EnumLiteralDeclaration getXOREnumLiteralDeclaration_13() { return cXOREnumLiteralDeclaration_13; }
+
+		//"XOR"
+		public Keyword getXORXORKeyword_13_0() { return cXORXORKeyword_13_0; }
+	}
+	
+	private ModelElements pModel;
+	private TermElements pTerm;
+	private TypesElements pTypes;
+	private ArithmeticsElements pArithmetics;
+	private StringsElements pStrings;
+	private DECIMALElements pDECIMAL;
+	private E_STRINGElements pE_STRING;
+	private OperationsElements pOperations;
+	private OperationsTypeElements unknownRuleOperationsType;
+	
+	private final Grammar grammar;
+
+	private TerminalsGrammarAccess gaTerminals;
+
+	@Inject
+	public MyDslGrammarAccess(GrammarProvider grammarProvider,
+		TerminalsGrammarAccess gaTerminals) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaTerminals = gaTerminals;
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.xtext.example.mydsl.MyDsl".equals(grammar.getName())) {
+				return grammar;
+			}
+			List<Grammar> grammars = grammar.getUsedGrammars();
+			if (!grammars.isEmpty()) {
+				grammar = grammars.iterator().next();
+			} else {
+				return null;
+			}
+		}
+		return grammar;
+	}
+	
+	
+	public Grammar getGrammar() {
+		return grammar;
+	}
+	
+
+	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
+		return gaTerminals;
+	}
+
+	
+	//Model:
+	//
+	//	terms+=Term;
+	public ModelElements getModelAccess() {
+		return (pModel != null) ? pModel : (pModel = new ModelElements());
+	}
+	
+	public ParserRule getModelRule() {
+		return getModelAccess().getRule();
+	}
+
+	//Term returns Expression:
+	//
+	//	Types ({Term.left=current} Operations=Operations right=Types)*;
+	public TermElements getTermAccess() {
+		return (pTerm != null) ? pTerm : (pTerm = new TermElements());
+	}
+	
+	public ParserRule getTermRule() {
+		return getTermAccess().getRule();
+	}
+
+	//Types returns Expression:
+	//
+	//	Arithmetics | Strings | "(" Term ")";
+	public TypesElements getTypesAccess() {
+		return (pTypes != null) ? pTypes : (pTypes = new TypesElements());
+	}
+	
+	public ParserRule getTypesRule() {
+		return getTypesAccess().getRule();
+	}
+
+	//Arithmetics returns Expression:
+	//
+	//	{Expression} DECIMAL;
+	public ArithmeticsElements getArithmeticsAccess() {
+		return (pArithmetics != null) ? pArithmetics : (pArithmetics = new ArithmeticsElements());
+	}
+	
+	public ParserRule getArithmeticsRule() {
+		return getArithmeticsAccess().getRule();
+	}
+
+	//Strings returns Expression:
+	//
+	//	{Expression} E_STRING;
+	public StringsElements getStringsAccess() {
+		return (pStrings != null) ? pStrings : (pStrings = new StringsElements());
+	}
+	
+	public ParserRule getStringsRule() {
+		return getStringsAccess().getRule();
+	}
+
+	//DECIMAL returns ecore::EBigDecimal:
+	//
+	//	"-"? INT ("." INT)?;
+	public DECIMALElements getDECIMALAccess() {
+		return (pDECIMAL != null) ? pDECIMAL : (pDECIMAL = new DECIMALElements());
+	}
+	
+	public ParserRule getDECIMALRule() {
+		return getDECIMALAccess().getRule();
+	}
+
+	//E_STRING returns ecore::EString:
+	//
+	//	STRING | ID;
+	public E_STRINGElements getE_STRINGAccess() {
+		return (pE_STRING != null) ? pE_STRING : (pE_STRING = new E_STRINGElements());
+	}
+	
+	public ParserRule getE_STRINGRule() {
+		return getE_STRINGAccess().getRule();
+	}
+
+	//Operations returns Expression:
+	//
+	//	termOperations=OperationsType;
+	public OperationsElements getOperationsAccess() {
+		return (pOperations != null) ? pOperations : (pOperations = new OperationsElements());
+	}
+	
+	public ParserRule getOperationsRule() {
+		return getOperationsAccess().getRule();
+	}
+
+	//enum OperationsType:
+	//
+	//	ADD="+" | SUB="-" | MULT="*" | DIV="/" | MOD="%" | GREATER=">" | LESS="<" | EQUALS="=" | NOTEQUAL="!=" |
+	//
+	//	LESSEQUAL="<=" | GREATEREQUAL=">=" | AND | OR | XOR;
+	public OperationsTypeElements getOperationsTypeAccess() {
+		return (unknownRuleOperationsType != null) ? unknownRuleOperationsType : (unknownRuleOperationsType = new OperationsTypeElements());
+	}
+	
+	public EnumRule getOperationsTypeRule() {
+		return getOperationsTypeAccess().getRule();
+	}
+
+	//terminal ID:
+	//
+	//	"^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaTerminals.getIDRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//
+	//	"0".."9"+;
+	public TerminalRule getINTRule() {
+		return gaTerminals.getINTRule();
+	} 
+
+	//terminal STRING:
+	//
+	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" |
+	//
+	//	"n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
+	public TerminalRule getSTRINGRule() {
+		return gaTerminals.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaTerminals.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaTerminals.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaTerminals.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaTerminals.getANY_OTHERRule();
+	} 
+}
diff --git a/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/validation/AbstractMyDslJavaValidator.java b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/validation/AbstractMyDslJavaValidator.java
new file mode 100644
index 00000000..7a1bb29e
--- /dev/null
+++ b/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/validation/AbstractMyDslJavaValidator.java
@@ -0,0 +1,18 @@
+package org.xtext.example.mydsl.validation;
+ 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.AbstractDeclarativeValidator;
+
+public class AbstractMyDslJavaValidator extends AbstractDeclarativeValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    result.add(org.xtext.example.mydsl.myDsl.MyDslPackage.eINSTANCE);
+		return result;
+	}
+
+}
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/GenerateMyDsl.mwe2 b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/GenerateMyDsl.mwe2
new file mode 100644
index 00000000..471ab623
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/GenerateMyDsl.mwe2
@@ -0,0 +1,143 @@
+module org.xtext.example.mydsl.GenerateMyDsl
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+
+var grammarURI = "classpath:/org/xtext/example/mydsl/MyDsl.xtext"
+var file.extensions = "mydsl"
+var projectName = "org.xtext.example.mydsl"
+var runtimeProject = "../${projectName}"
+
+Workflow {
+    bean = StandaloneSetup {
+            scanClassPath = true
+            platformUri = "${runtimeProject}/.."
+            // The following two lines can be removed, if Xbase is not used.
+            registerGeneratedEPackage = "org.eclipse.xtext.xbase.XbasePackage"
+            registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+        }
+    
+        component = DirectoryCleaner {
+            directory = "${runtimeProject}/src-gen"
+        }
+    
+        component = DirectoryCleaner {
+            directory = "${runtimeProject}.ui/src-gen"
+        }
+    
+        component = Generator {
+            pathRtProject = runtimeProject
+            pathUiProject = "${runtimeProject}.ui"
+            pathTestProject = "${runtimeProject}.tests"
+            projectNameRt = projectName
+            projectNameUi = "${projectName}.ui"
+            language = {
+                uri = grammarURI
+                fileExtensions = file.extensions
+    
+                // Java API to access grammar elements (required by several other fragments)
+                fragment = grammarAccess.GrammarAccessFragment {}
+    
+    		// formatter API 
+			fragment = ecore2xtext.FormatterFragment {}
+                // generates Java API for the generated EPackages
+                fragment = ecore.EcoreGeneratorFragment {
+                // referencedGenModels = "
+                //  platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel,
+                //  platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel
+                // "
+                }
+                // the Ecore2Xtext specific terminal converter
+				fragment = ecore2xtext.Ecore2XtextValueConverterServiceFragment {}
+    
+                // Serializer 2.0
+                fragment = serializer.SerializerFragment {
+                	generateStub = false
+                }
+                
+                // the serialization component (1.0)
+                // fragment = parseTreeConstructor.ParseTreeConstructorFragment {}
+    
+                // a custom ResourceFactory for use with EMF
+                fragment = resourceFactory.ResourceFactoryFragment {
+                    fileExtensions = file.extensions
+                }
+    
+                // The antlr parser generator fragment.
+                fragment = parser.antlr.XtextAntlrGeneratorFragment {
+                //  options = {
+                //      backtrack = true
+                //  }
+                }
+    
+                // java-based API for validation
+                fragment = validation.JavaValidatorFragment {
+                //    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+                //    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+                }
+    
+                // scoping and exporting API
+                // fragment = scoping.ImportURIScopingFragment {}
+                // fragment = exporting.SimpleNamesFragment {}
+    
+                // scoping and exporting API
+                fragment = scoping.ImportNamespacesScopingFragment {}
+                fragment = exporting.QualifiedNamesFragment {}
+                fragment = builder.BuilderIntegrationFragment {}
+    
+                // generator API
+                fragment = generator.GeneratorFragment {
+                    generateMwe = false
+                    generateJavaMain = false
+                }
+    
+                // formatter API
+                fragment = formatting.FormatterFragment {}
+    
+                // labeling API
+                fragment = labeling.LabelProviderFragment {}
+    
+                // outline API
+                fragment = outline.OutlineTreeProviderFragment {}
+                fragment = outline.QuickOutlineFragment {}
+    
+                // quickfix API
+                fragment = quickfix.QuickfixProviderFragment {}
+    
+                // content assist API
+                fragment = contentAssist.JavaBasedContentAssistFragment {}
+    
+                // generates a more lightweight Antlr parser and lexer tailored for content assist
+                fragment = parser.antlr.XtextAntlrUiGeneratorFragment {}
+    
+                // generates junit test support classes into Generator#pathTestProject
+                fragment = junit.Junit4Fragment {}
+    
+                // project wizard (optional)
+                // fragment = projectWizard.SimpleProjectWizardFragment {
+                //      generatorProjectName = "${projectName}"
+                //      modelFileExtension = file.extensions
+                // }
+    
+                // rename refactoring
+                fragment = refactoring.RefactorElementNameFragment {}
+    
+                // provides the necessary bindings for java types integration
+                fragment = types.TypesGeneratorFragment {}
+    
+                // generates the required bindings only if the grammar inherits from Xbase
+                fragment = xbase.XbaseGeneratorFragment {}
+    
+                // provides a preference page for template proposals
+                fragment = templates.CodetemplatesGeneratorFragment {}
+    
+                // provides a compare view
+                fragment = compare.CompareFragment {
+                     fileExtensions = file.extensions
+                }
+    
+            }
+        }
+}
+
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDsl.xtext b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDsl.xtext
new file mode 100644
index 00000000..9302cb56
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDsl.xtext
@@ -0,0 +1,40 @@
+grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
+
+Model:
+	terms+=Term;
+
+Term returns Expression:
+	Types ({Term.left=current} 
+	Operations=Operations
+ 	right=Types)*
+;
+
+Types returns Expression:
+	Arithmetics | Strings | '(' Term ')'
+;
+
+Arithmetics returns Expression:
+	{Expression}
+  DECIMAL ;
+  
+Strings returns Expression:
+	{Expression}
+	E_STRING
+;
+
+DECIMAL returns ecore::EBigDecimal : '-'? INT ('.' INT)? ;
+ 
+E_STRING returns ecore::EString:
+	STRING | ID;
+ 
+Operations returns Expression:
+	termOperations = OperationsType;
+	
+enum OperationsType:
+	ADD='+' | SUB='-' | MULT='*'|DIV='/'|MOD='%' |
+	GREATER='>' | LESS='<'|EQUALS='='|NOTEQUAL='!='|LESSEQUAL='<=' | GREATEREQUAL='>='
+	| AND='AND' | OR='OR' | XOR='XOR';
+
+ 
\ No newline at end of file
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDslRuntimeModule.java b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDslRuntimeModule.java
new file mode 100644
index 00000000..3867acb2
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDslRuntimeModule.java
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl;
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class MyDslRuntimeModule extends org.xtext.example.mydsl.AbstractMyDslRuntimeModule {
+
+}
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDslStandaloneSetup.java b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDslStandaloneSetup.java
new file mode 100644
index 00000000..864cb5b7
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/MyDslStandaloneSetup.java
@@ -0,0 +1,14 @@
+
+package org.xtext.example.mydsl;
+
+/**
+ * Initialization support for running Xtext languages 
+ * without equinox extension registry
+ */
+public class MyDslStandaloneSetup extends MyDslStandaloneSetupGenerated{
+
+	public static void doSetup() {
+		new MyDslStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/formatting/MyDslFormatter.java b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/formatting/MyDslFormatter.java
new file mode 100644
index 00000000..5f740944
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/formatting/MyDslFormatter.java
@@ -0,0 +1,27 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl.formatting;
+
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it 
+ * 
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+public class MyDslFormatter extends AbstractDeclarativeFormatter {
+	
+	@Override
+	protected void configureFormatting(FormattingConfig c) {
+// It's usually a good idea to activate the following three statements.
+// They will add and preserve newlines around comments
+//		c.setLinewrap(0, 1, 2).before(getGrammarAccess().getSL_COMMENTRule());
+//		c.setLinewrap(0, 1, 2).before(getGrammarAccess().getML_COMMENTRule());
+//		c.setLinewrap(0, 1, 1).after(getGrammarAccess().getML_COMMENTRule());
+	}
+}
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/generator/MyDslGenerator.xtend b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/generator/MyDslGenerator.xtend
new file mode 100644
index 00000000..b8abd8f9
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/generator/MyDslGenerator.xtend
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl.generator
+
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.xtext.generator.IGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess
+
+class MyDslGenerator implements IGenerator {
+	
+	override void doGenerate(Resource resource, IFileSystemAccess fsa) {
+		//TODO implement me
+	}
+}
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/old b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/old
new file mode 100644
index 00000000..9302cb56
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/old
@@ -0,0 +1,40 @@
+grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
+
+Model:
+	terms+=Term;
+
+Term returns Expression:
+	Types ({Term.left=current} 
+	Operations=Operations
+ 	right=Types)*
+;
+
+Types returns Expression:
+	Arithmetics | Strings | '(' Term ')'
+;
+
+Arithmetics returns Expression:
+	{Expression}
+  DECIMAL ;
+  
+Strings returns Expression:
+	{Expression}
+	E_STRING
+;
+
+DECIMAL returns ecore::EBigDecimal : '-'? INT ('.' INT)? ;
+ 
+E_STRING returns ecore::EString:
+	STRING | ID;
+ 
+Operations returns Expression:
+	termOperations = OperationsType;
+	
+enum OperationsType:
+	ADD='+' | SUB='-' | MULT='*'|DIV='/'|MOD='%' |
+	GREATER='>' | LESS='<'|EQUALS='='|NOTEQUAL='!='|LESSEQUAL='<=' | GREATEREQUAL='>='
+	| AND='AND' | OR='OR' | XOR='XOR';
+
+ 
\ No newline at end of file
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/scoping/MyDslScopeProvider.java b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/scoping/MyDslScopeProvider.java
new file mode 100644
index 00000000..af5c5094
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/scoping/MyDslScopeProvider.java
@@ -0,0 +1,17 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl.scoping;
+
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * on how and when to use it 
+ *
+ */
+public class MyDslScopeProvider extends AbstractDeclarativeScopeProvider {
+
+}
diff --git a/org.xtext.example.mydsl/src/org/xtext/example/mydsl/validation/MyDslJavaValidator.java b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/validation/MyDslJavaValidator.java
new file mode 100644
index 00000000..ea0ab44f
--- /dev/null
+++ b/org.xtext.example.mydsl/src/org/xtext/example/mydsl/validation/MyDslJavaValidator.java
@@ -0,0 +1,13 @@
+package org.xtext.example.mydsl.validation;
+ 
+
+public class MyDslJavaValidator extends AbstractMyDslJavaValidator {
+
+//	@Check
+//	public void checkGreetingStartsWithCapital(Greeting greeting) {
+//		if (!Character.isUpperCase(greeting.getName().charAt(0))) {
+//			warning("Name should start with a capital", MyDslPackage.Literals.GREETING__NAME);
+//		}
+//	}
+
+}
diff --git a/org.xtext.example.mydsl/xtend-gen/org/xtext/example/mydsl/generator/.MyDslGenerator.java._trace b/org.xtext.example.mydsl/xtend-gen/org/xtext/example/mydsl/generator/.MyDslGenerator.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..b7f09c4edd113396d7a7fbeb39c22fb69e1ca5b9
GIT binary patch
literal 847
zcma))F;2rk5JhJJK>!g6DJViTDME>t3M3kuND&31NKIiSn>2PD)<$wp!7;cBcc9_~
z9Ds)Z?X`AMK-kjX@y@>aJ7ZZywv|+mda9!wA~N?5y+Hd=SBY6AaWT(qdZVq$vu8Us
zI<t$YEKFHMri{~7Vxn|C%M+d3DbI9urrnvY&lYBBY+Phk->*k`GH$jsTF#X8|1d=t
z?CK4Ag?6C>Xroi)FckC&b)h{ck{>R|nW*Yfe4|%Lez}|{QQwk8sXE0nfjSU9Sj{i{
z2r(W(B0I<q>R6GaN%mZhBvoezh^Y97Bz%sA6Vb2nWJk<-Pi)jBmOd1cL+p<sPi}#{
z3aG}DB;P&B?%R<lQ@6i(UTk=hyu)%9(7fjw`xD6D&ORTIVfW!gB!5oC`gSBrRg8uI
MROrc$nDe*GH`MV$od5s;

literal 0
HcmV?d00001

diff --git a/org.xtext.example.mydsl/xtend-gen/org/xtext/example/mydsl/generator/MyDslGenerator.java b/org.xtext.example.mydsl/xtend-gen/org/xtext/example/mydsl/generator/MyDslGenerator.java
new file mode 100644
index 00000000..fc8be53a
--- /dev/null
+++ b/org.xtext.example.mydsl/xtend-gen/org/xtext/example/mydsl/generator/MyDslGenerator.java
@@ -0,0 +1,11 @@
+package org.xtext.example.mydsl.generator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.generator.IGenerator;
+
+@SuppressWarnings("all")
+public class MyDslGenerator implements IGenerator {
+  public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
+  }
+}
diff --git a/org.xtext.example.mydsl1.sdk/.project b/org.xtext.example.mydsl1.sdk/.project
new file mode 100644
index 00000000..5ce31b58
--- /dev/null
+++ b/org.xtext.example.mydsl1.sdk/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.xtext.example.mydsl1.sdk</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.xtext.example.mydsl1.sdk/build.properties b/org.xtext.example.mydsl1.sdk/build.properties
new file mode 100644
index 00000000..43c54c14
--- /dev/null
+++ b/org.xtext.example.mydsl1.sdk/build.properties
@@ -0,0 +1 @@
+bin.includes =feature.xml
diff --git a/org.xtext.example.mydsl1.sdk/feature.xml b/org.xtext.example.mydsl1.sdk/feature.xml
new file mode 100644
index 00000000..d862c126
--- /dev/null
+++ b/org.xtext.example.mydsl1.sdk/feature.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature id="org.xtext.example.mydsl1.sdk"
+	label="MyDsl1 SDK Feature "
+	version="1.0.0.qualifier">
+	<plugin
+			id="org.xtext.example.mydsl1"
+			download-size="0"
+			install-size="0"
+			version="0.0.0"
+			unpack="false"/>
+	<plugin
+			id="org.xtext.example.mydsl1.ui"
+			download-size="0"
+			install-size="0"
+			version="0.0.0"
+			unpack="false"/>
+</feature>
diff --git a/org.xtext.example.mydsl1.tests/.classpath b/org.xtext.example.mydsl1.tests/.classpath
new file mode 100644
index 00000000..e5fbd3dd
--- /dev/null
+++ b/org.xtext.example.mydsl1.tests/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.xtext.example.mydsl1.tests/.project b/org.xtext.example.mydsl1.tests/.project
new file mode 100644
index 00000000..c0003e90
--- /dev/null
+++ b/org.xtext.example.mydsl1.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.xtext.example.mydsl1.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.xtext.example.mydsl1.tests/META-INF/MANIFEST.MF b/org.xtext.example.mydsl1.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..e67e2515
--- /dev/null
+++ b/org.xtext.example.mydsl1.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.xtext.example.mydsl1.tests
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.xtext.example.mydsl1.tests; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.xtext.example.mydsl1,
+ org.xtext.example.mydsl1.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4,
+ org.eclipse.ui.workbench;resolution:=optional
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.xtext.example.mydsl1.tests/build.properties b/org.xtext.example.mydsl1.tests/build.properties
new file mode 100644
index 00000000..e10dcceb
--- /dev/null
+++ b/org.xtext.example.mydsl1.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
\ No newline at end of file
diff --git a/org.xtext.example.mydsl1.tests/org.xtext.example.mydsl1.tests.launch b/org.xtext.example.mydsl1.tests/org.xtext.example.mydsl1.tests.launch
new file mode 100644
index 00000000..db3ad7e0
--- /dev/null
+++ b/org.xtext.example.mydsl1.tests/org.xtext.example.mydsl1.tests.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.xtext.example.mydsl1.tests"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.xtext.example.mydsl1.tests"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.xtext.example.mydsl1.tests"/>
+</launchConfiguration>
diff --git a/org.xtext.example.mydsl1.ui/.classpath b/org.xtext.example.mydsl1.ui/.classpath
new file mode 100644
index 00000000..e5fbd3dd
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.xtext.example.mydsl1.ui/.project b/org.xtext.example.mydsl1.ui/.project
new file mode 100644
index 00000000..66d5fd8e
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.xtext.example.mydsl1.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.xtext.example.mydsl1.ui/META-INF/MANIFEST.MF b/org.xtext.example.mydsl1.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..ede997c7
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.xtext.example.mydsl1.ui
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.xtext.example.mydsl1.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.xtext.example.mydsl1;visibility:=reexport,
+ org.eclipse.xtext.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.ui,
+ org.antlr.runtime,
+ org.eclipse.compare,
+ org.eclipse.xtext.builder
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.xtext.example.mydsl1.ui.contentassist,
+ org.xtext.example.mydsl1.ui.contentassist.antlr
+Bundle-Activator: org.xtext.example.mydsl1.ui.internal.MyDsl1Activator
diff --git a/org.xtext.example.mydsl1.ui/build.properties b/org.xtext.example.mydsl1.ui/build.properties
new file mode 100644
index 00000000..e10dcceb
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
\ No newline at end of file
diff --git a/org.xtext.example.mydsl1.ui/plugin.xml b/org.xtext.example.mydsl1.ui/plugin.xml
new file mode 100644
index 00000000..ef01f88f
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/plugin.xml
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="mydsl1"
+            id="org.xtext.example.mydsl1.MyDsl1"
+            name="MyDsl1 Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.xtext.example.mydsl1.MyDsl1.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+            </reference>
+         </activeWhen>
+      </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.xtext.example.mydsl1.MyDsl1" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.xtext.example.mydsl1.MyDsl1"
+            name="MyDsl1">
+            <keywordReference id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"/>
+        </page>
+        <page
+            category="org.xtext.example.mydsl1.MyDsl1"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.xtext.example.mydsl1.MyDsl1.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"/>
+        </page>
+        <page
+            category="org.xtext.example.mydsl1.MyDsl1"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.xtext.example.mydsl1.MyDsl1.templates"
+            name="Templates">
+            <keywordReference id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.xtext.example.mydsl1.MyDsl1"
+            name="MyDsl1">
+            <keywordReference id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"
+            label="MyDsl1"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.xtext.example.mydsl1.MyDsl1.validate"
+            name="Validate">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.xtext.example.mydsl1.MyDsl1.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="mydsl1">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="mydsl1">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.xtext.example.mydsl1.MyDsl1 -->
+    <extension
+            id="mydsl1.check.fast"
+            name="MyDsl1 Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="mydsl1.check.normal"
+            name="MyDsl1 Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="mydsl1.check.expensive"
+            name="MyDsl1 Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.expensive"/>
+        <persistent value="true"/>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.xtext.example.mydsl1.MyDsl1.compare.contentViewers"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="mydsl1">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.xtext.example.mydsl1.MyDsl1.compare.contentMergeViewers"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="mydsl1" label="MyDsl1 Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.xtext.example.mydsl1.MyDsl1.editors.documentProviders"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="mydsl1">
+    </provider>
+  </extension>
+    <!-- quickfix marker resolution generator for org.xtext.example.mydsl1.MyDsl1 -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl1.ui.mydsl1.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl1.ui.mydsl1.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl1.ui.mydsl1.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+
+</plugin>
diff --git a/org.xtext.example.mydsl1.ui/plugin.xml_gen b/org.xtext.example.mydsl1.ui/plugin.xml_gen
new file mode 100644
index 00000000..ef01f88f
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/plugin.xml_gen
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="mydsl1"
+            id="org.xtext.example.mydsl1.MyDsl1"
+            name="MyDsl1 Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.xtext.example.mydsl1.MyDsl1.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+            </reference>
+         </activeWhen>
+      </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.xtext.example.mydsl1.MyDsl1" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.xtext.example.mydsl1.MyDsl1"
+            name="MyDsl1">
+            <keywordReference id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"/>
+        </page>
+        <page
+            category="org.xtext.example.mydsl1.MyDsl1"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.xtext.example.mydsl1.MyDsl1.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"/>
+        </page>
+        <page
+            category="org.xtext.example.mydsl1.MyDsl1"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.xtext.example.mydsl1.MyDsl1.templates"
+            name="Templates">
+            <keywordReference id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.xtext.example.mydsl1.MyDsl1"
+            name="MyDsl1">
+            <keywordReference id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.xtext.example.mydsl1.ui.keyword_MyDsl1"
+            label="MyDsl1"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.xtext.example.mydsl1.MyDsl1.validate"
+            name="Validate">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.xtext.example.mydsl1.MyDsl1.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="mydsl1">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="mydsl1">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.xtext.example.mydsl1.MyDsl1 -->
+    <extension
+            id="mydsl1.check.fast"
+            name="MyDsl1 Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="mydsl1.check.normal"
+            name="MyDsl1 Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="mydsl1.check.expensive"
+            name="MyDsl1 Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.expensive"/>
+        <persistent value="true"/>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.xtext.example.mydsl1.MyDsl1.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.xtext.example.mydsl1.MyDsl1.compare.contentViewers"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="mydsl1">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.xtext.example.mydsl1.MyDsl1.compare.contentMergeViewers"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="mydsl1" label="MyDsl1 Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.xtext.example.mydsl1.MyDsl1.editors.documentProviders"
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="mydsl1">
+    </provider>
+  </extension>
+    <!-- quickfix marker resolution generator for org.xtext.example.mydsl1.MyDsl1 -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl1.ui.mydsl1.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl1.ui.mydsl1.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.xtext.example.mydsl1.ui.MyDsl1ExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.xtext.example.mydsl1.ui.mydsl1.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+
+</plugin>
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/AbstractMyDsl1UiModule.java b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/AbstractMyDsl1UiModule.java
new file mode 100644
index 00000000..9eb88bf2
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/AbstractMyDsl1UiModule.java
@@ -0,0 +1,122 @@
+
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl1.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.xtext.example.mydsl1.ui.MyDsl1UiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractMyDsl1UiModule extends DefaultUiModule {
+	
+	public AbstractMyDsl1UiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+	
+	
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+		return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.xtext.example.mydsl1.parser.antlr.internal.InternalMyDsl1Lexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.SimpleNamesFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.xtext.example.mydsl1.ui.labeling.MyDsl1LabelProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(org.xtext.example.mydsl1.ui.labeling.MyDsl1DescriptionLabelProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return org.xtext.example.mydsl1.ui.outline.MyDsl1OutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return org.xtext.example.mydsl1.ui.outline.MyDsl1OutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.xtext.example.mydsl1.ui.contentassist.MyDsl1ProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+		return org.xtext.example.mydsl1.ui.contentassist.antlr.MyDsl1Parser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.xtext.example.mydsl1.ui.contentassist.antlr.internal.InternalMyDsl1Lexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.xtext.example.mydsl1.ui.contentassist.antlr.internal.InternalMyDsl1Lexer.class));
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(org.xtext.example.mydsl1.ui.contentassist.antlr.internal.InternalMyDsl1Lexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
+	public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
+		return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+		return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.xtext.example.mydsl1.ui.quickfix.MyDsl1QuickfixProvider.class;
+	}
+
+
+}
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/MyDsl1ExecutableExtensionFactory.java b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/MyDsl1ExecutableExtensionFactory.java
new file mode 100644
index 00000000..e577ec39
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/MyDsl1ExecutableExtensionFactory.java
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl1.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.xtext.example.mydsl1.ui.internal.MyDsl1Activator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class MyDsl1ExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return MyDsl1Activator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return MyDsl1Activator.getInstance().getInjector(MyDsl1Activator.ORG_XTEXT_EXAMPLE_MYDSL1_MYDSL1);
+	}
+	
+}
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/AbstractMyDsl1ProposalProvider.java b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/AbstractMyDsl1ProposalProvider.java
new file mode 100644
index 00000000..4b77828e
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/AbstractMyDsl1ProposalProvider.java
@@ -0,0 +1,267 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+/**
+ * Represents a generated, default implementation of interface {@link IProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractMyDsl1ProposalProvider extends TerminalsProposalProvider {
+		
+	public void completeExplicitFunction_Specification(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExplicitFunction_Expression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTermExpression_Operation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTermExpression_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTermExpression2_Left(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTermExpression2_Operation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTermExpression2_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProductExpression_Operation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProductExpression_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProductExpression2_Left(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProductExpression2_Operation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProductExpression2_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCompareExpression_Operation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCompareExpression_Left(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCompareExpression_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePowerExpression_Base(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePowerExpression_Exponent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBooleanOperatorExpression_Operation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBooleanOperatorExpression_Left(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBooleanOperatorExpression_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNotExpression_Inner(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNegativeExpression_Inner(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeIfElseExpression_IfExpression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeIfElseExpression_ElseExpression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeIfElseExpression_ConditionExpression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunction_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunction_Parameters(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeParenthesis_InnerExpression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeStringLiteral_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBoolLiteral_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeIntLiteral_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDoubleLiteral_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFormalParameter_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProbabilityMassFunction_Sample(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBoxedPDF_Sample(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNormalDistribution_Mu(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNormalDistribution_Sigma(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExponentialDistribution_Rate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSample_Probability(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSample_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeContinuousSample_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeContinuousSample_Probability(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_ExplicitFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Expression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Term(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Product(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Power(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Unary(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BooleanExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EString(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TermExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TermExpression2(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ProductExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ProductExpression2(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CompareExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PowerExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BooleanOperatorExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NotExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NegativeExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_IfElseExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Function(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Parenthesis(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Literal_Impl(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StringLiteral(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BoolLiteral(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_IntLiteral(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DoubleLiteral(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FormalParameter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ProbabilityMassFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BoxedPDF(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NormalDistribution(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ExponentialDistribution(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TermOperations(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ProductOperations(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CompareOperations(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BooleanOperations(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EBoolean(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EBigInteger(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EBigDecimal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Sample(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EObject(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ContinuousSample(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/MyDsl1Parser.java b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/MyDsl1Parser.java
new file mode 100644
index 00000000..bc7acefa
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/MyDsl1Parser.java
@@ -0,0 +1,160 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.RecognitionException;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+import com.google.inject.Inject;
+
+import org.xtext.example.mydsl1.services.MyDsl1GrammarAccess;
+
+public class MyDsl1Parser extends AbstractContentAssistParser {
+	
+	@Inject
+	private MyDsl1GrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.xtext.example.mydsl1.ui.contentassist.antlr.internal.InternalMyDsl1Parser createParser() {
+		org.xtext.example.mydsl1.ui.contentassist.antlr.internal.InternalMyDsl1Parser result = new org.xtext.example.mydsl1.ui.contentassist.antlr.internal.InternalMyDsl1Parser(null);
+		result.setGrammarAccess(grammarAccess);
+		return result;
+	}
+	
+	@Override
+	protected String getRuleName(AbstractElement element) {
+		if (nameMappings == null) {
+			nameMappings = new HashMap<AbstractElement, String>() {
+				private static final long serialVersionUID = 1L;
+				{
+					put(grammarAccess.getExpressionAccess().getAlternatives(), "rule__Expression__Alternatives");
+					put(grammarAccess.getTermAccess().getAlternatives(), "rule__Term__Alternatives");
+					put(grammarAccess.getProductAccess().getAlternatives(), "rule__Product__Alternatives");
+					put(grammarAccess.getPowerAccess().getAlternatives(), "rule__Power__Alternatives");
+					put(grammarAccess.getUnaryAccess().getAlternatives(), "rule__Unary__Alternatives");
+					put(grammarAccess.getBooleanExpressionAccess().getAlternatives(), "rule__BooleanExpression__Alternatives");
+					put(grammarAccess.getEStringAccess().getAlternatives(), "rule__EString__Alternatives");
+					put(grammarAccess.getEBooleanAccess().getAlternatives(), "rule__EBoolean__Alternatives");
+					put(grammarAccess.getExplicitFunctionAccess().getGroup(), "rule__ExplicitFunction__Group__0");
+					put(grammarAccess.getExplicitFunctionAccess().getGroup_3(), "rule__ExplicitFunction__Group_3__0");
+					put(grammarAccess.getExplicitFunctionAccess().getGroup_4(), "rule__ExplicitFunction__Group_4__0");
+					put(grammarAccess.getTermExpressionAccess().getGroup(), "rule__TermExpression__Group__0");
+					put(grammarAccess.getTermExpressionAccess().getGroup_3(), "rule__TermExpression__Group_3__0");
+					put(grammarAccess.getTermExpression2Access().getGroup(), "rule__TermExpression2__Group__0");
+					put(grammarAccess.getProductExpressionAccess().getGroup(), "rule__ProductExpression__Group__0");
+					put(grammarAccess.getProductExpressionAccess().getGroup_3(), "rule__ProductExpression__Group_3__0");
+					put(grammarAccess.getProductExpression2Access().getGroup(), "rule__ProductExpression2__Group__0");
+					put(grammarAccess.getCompareExpressionAccess().getGroup(), "rule__CompareExpression__Group__0");
+					put(grammarAccess.getPowerExpressionAccess().getGroup(), "rule__PowerExpression__Group__0");
+					put(grammarAccess.getBooleanOperatorExpressionAccess().getGroup(), "rule__BooleanOperatorExpression__Group__0");
+					put(grammarAccess.getNotExpressionAccess().getGroup(), "rule__NotExpression__Group__0");
+					put(grammarAccess.getNegativeExpressionAccess().getGroup(), "rule__NegativeExpression__Group__0");
+					put(grammarAccess.getIfElseExpressionAccess().getGroup(), "rule__IfElseExpression__Group__0");
+					put(grammarAccess.getFunctionAccess().getGroup(), "rule__Function__Group__0");
+					put(grammarAccess.getFunctionAccess().getGroup_4(), "rule__Function__Group_4__0");
+					put(grammarAccess.getFunctionAccess().getGroup_4_3(), "rule__Function__Group_4_3__0");
+					put(grammarAccess.getParenthesisAccess().getGroup(), "rule__Parenthesis__Group__0");
+					put(grammarAccess.getLiteral_ImplAccess().getGroup(), "rule__Literal_Impl__Group__0");
+					put(grammarAccess.getStringLiteralAccess().getGroup(), "rule__StringLiteral__Group__0");
+					put(grammarAccess.getBoolLiteralAccess().getGroup(), "rule__BoolLiteral__Group__0");
+					put(grammarAccess.getIntLiteralAccess().getGroup(), "rule__IntLiteral__Group__0");
+					put(grammarAccess.getDoubleLiteralAccess().getGroup(), "rule__DoubleLiteral__Group__0");
+					put(grammarAccess.getFormalParameterAccess().getGroup(), "rule__FormalParameter__Group__0");
+					put(grammarAccess.getProbabilityMassFunctionAccess().getGroup(), "rule__ProbabilityMassFunction__Group__0");
+					put(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3(), "rule__ProbabilityMassFunction__Group_3__0");
+					put(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3_3(), "rule__ProbabilityMassFunction__Group_3_3__0");
+					put(grammarAccess.getBoxedPDFAccess().getGroup(), "rule__BoxedPDF__Group__0");
+					put(grammarAccess.getBoxedPDFAccess().getGroup_3(), "rule__BoxedPDF__Group_3__0");
+					put(grammarAccess.getBoxedPDFAccess().getGroup_3_3(), "rule__BoxedPDF__Group_3_3__0");
+					put(grammarAccess.getNormalDistributionAccess().getGroup(), "rule__NormalDistribution__Group__0");
+					put(grammarAccess.getExponentialDistributionAccess().getGroup(), "rule__ExponentialDistribution__Group__0");
+					put(grammarAccess.getEBigIntegerAccess().getGroup(), "rule__EBigInteger__Group__0");
+					put(grammarAccess.getEBigDecimalAccess().getGroup(), "rule__EBigDecimal__Group__0");
+					put(grammarAccess.getSampleAccess().getGroup(), "rule__Sample__Group__0");
+					put(grammarAccess.getEObjectAccess().getGroup(), "rule__EObject__Group__0");
+					put(grammarAccess.getContinuousSampleAccess().getGroup(), "rule__ContinuousSample__Group__0");
+					put(grammarAccess.getExplicitFunctionAccess().getSpecificationAssignment_3_1(), "rule__ExplicitFunction__SpecificationAssignment_3_1");
+					put(grammarAccess.getExplicitFunctionAccess().getExpressionAssignment_4_1(), "rule__ExplicitFunction__ExpressionAssignment_4_1");
+					put(grammarAccess.getTermExpressionAccess().getOperationAssignment_3_1(), "rule__TermExpression__OperationAssignment_3_1");
+					put(grammarAccess.getTermExpressionAccess().getRightAssignment_3_2(), "rule__TermExpression__RightAssignment_3_2");
+					put(grammarAccess.getTermExpression2Access().getLeftAssignment_0(), "rule__TermExpression2__LeftAssignment_0");
+					put(grammarAccess.getTermExpression2Access().getOperationAssignment_1(), "rule__TermExpression2__OperationAssignment_1");
+					put(grammarAccess.getTermExpression2Access().getRightAssignment_2(), "rule__TermExpression2__RightAssignment_2");
+					put(grammarAccess.getProductExpressionAccess().getOperationAssignment_3_1(), "rule__ProductExpression__OperationAssignment_3_1");
+					put(grammarAccess.getProductExpressionAccess().getRightAssignment_3_2(), "rule__ProductExpression__RightAssignment_3_2");
+					put(grammarAccess.getProductExpression2Access().getLeftAssignment_0(), "rule__ProductExpression2__LeftAssignment_0");
+					put(grammarAccess.getProductExpression2Access().getOperationAssignment_1(), "rule__ProductExpression2__OperationAssignment_1");
+					put(grammarAccess.getProductExpression2Access().getRightAssignment_2(), "rule__ProductExpression2__RightAssignment_2");
+					put(grammarAccess.getCompareExpressionAccess().getOperationAssignment_3(), "rule__CompareExpression__OperationAssignment_3");
+					put(grammarAccess.getCompareExpressionAccess().getLeftAssignment_5(), "rule__CompareExpression__LeftAssignment_5");
+					put(grammarAccess.getCompareExpressionAccess().getRightAssignment_7(), "rule__CompareExpression__RightAssignment_7");
+					put(grammarAccess.getPowerExpressionAccess().getBaseAssignment_3(), "rule__PowerExpression__BaseAssignment_3");
+					put(grammarAccess.getPowerExpressionAccess().getExponentAssignment_5(), "rule__PowerExpression__ExponentAssignment_5");
+					put(grammarAccess.getBooleanOperatorExpressionAccess().getOperationAssignment_3(), "rule__BooleanOperatorExpression__OperationAssignment_3");
+					put(grammarAccess.getBooleanOperatorExpressionAccess().getLeftAssignment_5(), "rule__BooleanOperatorExpression__LeftAssignment_5");
+					put(grammarAccess.getBooleanOperatorExpressionAccess().getRightAssignment_7(), "rule__BooleanOperatorExpression__RightAssignment_7");
+					put(grammarAccess.getNotExpressionAccess().getInnerAssignment_3(), "rule__NotExpression__InnerAssignment_3");
+					put(grammarAccess.getNegativeExpressionAccess().getInnerAssignment_3(), "rule__NegativeExpression__InnerAssignment_3");
+					put(grammarAccess.getIfElseExpressionAccess().getIfExpressionAssignment_3(), "rule__IfElseExpression__IfExpressionAssignment_3");
+					put(grammarAccess.getIfElseExpressionAccess().getElseExpressionAssignment_5(), "rule__IfElseExpression__ElseExpressionAssignment_5");
+					put(grammarAccess.getIfElseExpressionAccess().getConditionExpressionAssignment_7(), "rule__IfElseExpression__ConditionExpressionAssignment_7");
+					put(grammarAccess.getFunctionAccess().getIdAssignment_3(), "rule__Function__IdAssignment_3");
+					put(grammarAccess.getFunctionAccess().getParametersAssignment_4_2(), "rule__Function__ParametersAssignment_4_2");
+					put(grammarAccess.getFunctionAccess().getParametersAssignment_4_3_1(), "rule__Function__ParametersAssignment_4_3_1");
+					put(grammarAccess.getParenthesisAccess().getInnerExpressionAssignment_3(), "rule__Parenthesis__InnerExpressionAssignment_3");
+					put(grammarAccess.getStringLiteralAccess().getValueAssignment_3(), "rule__StringLiteral__ValueAssignment_3");
+					put(grammarAccess.getBoolLiteralAccess().getValueAssignment_0(), "rule__BoolLiteral__ValueAssignment_0");
+					put(grammarAccess.getIntLiteralAccess().getValueAssignment_3(), "rule__IntLiteral__ValueAssignment_3");
+					put(grammarAccess.getDoubleLiteralAccess().getValueAssignment_3(), "rule__DoubleLiteral__ValueAssignment_3");
+					put(grammarAccess.getFormalParameterAccess().getNameAssignment_2(), "rule__FormalParameter__NameAssignment_2");
+					put(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_2(), "rule__ProbabilityMassFunction__SampleAssignment_3_2");
+					put(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_3_1(), "rule__ProbabilityMassFunction__SampleAssignment_3_3_1");
+					put(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_2(), "rule__BoxedPDF__SampleAssignment_3_2");
+					put(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_3_1(), "rule__BoxedPDF__SampleAssignment_3_3_1");
+					put(grammarAccess.getNormalDistributionAccess().getMuAssignment_3(), "rule__NormalDistribution__MuAssignment_3");
+					put(grammarAccess.getNormalDistributionAccess().getSigmaAssignment_5(), "rule__NormalDistribution__SigmaAssignment_5");
+					put(grammarAccess.getExponentialDistributionAccess().getRateAssignment_3(), "rule__ExponentialDistribution__RateAssignment_3");
+					put(grammarAccess.getSampleAccess().getProbabilityAssignment_3(), "rule__Sample__ProbabilityAssignment_3");
+					put(grammarAccess.getSampleAccess().getValueAssignment_5(), "rule__Sample__ValueAssignment_5");
+					put(grammarAccess.getContinuousSampleAccess().getValueAssignment_3(), "rule__ContinuousSample__ValueAssignment_3");
+					put(grammarAccess.getContinuousSampleAccess().getProbabilityAssignment_5(), "rule__ContinuousSample__ProbabilityAssignment_5");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.xtext.example.mydsl1.ui.contentassist.antlr.internal.InternalMyDsl1Parser typedParser = (org.xtext.example.mydsl1.ui.contentassist.antlr.internal.InternalMyDsl1Parser) parser;
+			typedParser.entryRuleExplicitFunction();
+			return typedParser.getFollowElements();
+		} catch(RecognitionException ex) {
+			throw new RuntimeException(ex);
+		}		
+	}
+	
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+	
+	public MyDsl1GrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(MyDsl1GrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g
new file mode 100644
index 00000000..aff9d09d
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g
@@ -0,0 +1,8017 @@
+/*
+* generated by Xtext
+*/
+grammar InternalMyDsl1;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	
+}
+
+@lexer::header {
+package org.xtext.example.mydsl1.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.xtext.example.mydsl1.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.xtext.example.mydsl1.services.MyDsl1GrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private MyDsl1GrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(MyDsl1GrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleExplicitFunction
+entryRuleExplicitFunction 
+:
+{ before(grammarAccess.getExplicitFunctionRule()); }
+	 ruleExplicitFunction
+{ after(grammarAccess.getExplicitFunctionRule()); } 
+	 EOF 
+;
+
+// Rule ExplicitFunction
+ruleExplicitFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getGroup()); }
+(rule__ExplicitFunction__Group__0)
+{ after(grammarAccess.getExplicitFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExpression
+entryRuleExpression 
+:
+{ before(grammarAccess.getExpressionRule()); }
+	 ruleExpression
+{ after(grammarAccess.getExpressionRule()); } 
+	 EOF 
+;
+
+// Rule Expression
+ruleExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExpressionAccess().getAlternatives()); }
+(rule__Expression__Alternatives)
+{ after(grammarAccess.getExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTerm
+entryRuleTerm 
+:
+{ before(grammarAccess.getTermRule()); }
+	 ruleTerm
+{ after(grammarAccess.getTermRule()); } 
+	 EOF 
+;
+
+// Rule Term
+ruleTerm
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTermAccess().getAlternatives()); }
+(rule__Term__Alternatives)
+{ after(grammarAccess.getTermAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProduct
+entryRuleProduct 
+:
+{ before(grammarAccess.getProductRule()); }
+	 ruleProduct
+{ after(grammarAccess.getProductRule()); } 
+	 EOF 
+;
+
+// Rule Product
+ruleProduct
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProductAccess().getAlternatives()); }
+(rule__Product__Alternatives)
+{ after(grammarAccess.getProductAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePower
+entryRulePower 
+:
+{ before(grammarAccess.getPowerRule()); }
+	 rulePower
+{ after(grammarAccess.getPowerRule()); } 
+	 EOF 
+;
+
+// Rule Power
+rulePower
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPowerAccess().getAlternatives()); }
+(rule__Power__Alternatives)
+{ after(grammarAccess.getPowerAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnary
+entryRuleUnary 
+:
+{ before(grammarAccess.getUnaryRule()); }
+	 ruleUnary
+{ after(grammarAccess.getUnaryRule()); } 
+	 EOF 
+;
+
+// Rule Unary
+ruleUnary
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnaryAccess().getAlternatives()); }
+(rule__Unary__Alternatives)
+{ after(grammarAccess.getUnaryAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBooleanExpression
+entryRuleBooleanExpression 
+:
+{ before(grammarAccess.getBooleanExpressionRule()); }
+	 ruleBooleanExpression
+{ after(grammarAccess.getBooleanExpressionRule()); } 
+	 EOF 
+;
+
+// Rule BooleanExpression
+ruleBooleanExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBooleanExpressionAccess().getAlternatives()); }
+(rule__BooleanExpression__Alternatives)
+{ after(grammarAccess.getBooleanExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEString
+entryRuleEString 
+:
+{ before(grammarAccess.getEStringRule()); }
+	 ruleEString
+{ after(grammarAccess.getEStringRule()); } 
+	 EOF 
+;
+
+// Rule EString
+ruleEString
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEStringAccess().getAlternatives()); }
+(rule__EString__Alternatives)
+{ after(grammarAccess.getEStringAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTermExpression
+entryRuleTermExpression 
+:
+{ before(grammarAccess.getTermExpressionRule()); }
+	 ruleTermExpression
+{ after(grammarAccess.getTermExpressionRule()); } 
+	 EOF 
+;
+
+// Rule TermExpression
+ruleTermExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTermExpressionAccess().getGroup()); }
+(rule__TermExpression__Group__0)
+{ after(grammarAccess.getTermExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTermExpression2
+entryRuleTermExpression2 
+:
+{ before(grammarAccess.getTermExpression2Rule()); }
+	 ruleTermExpression2
+{ after(grammarAccess.getTermExpression2Rule()); } 
+	 EOF 
+;
+
+// Rule TermExpression2
+ruleTermExpression2
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTermExpression2Access().getGroup()); }
+(rule__TermExpression2__Group__0)
+{ after(grammarAccess.getTermExpression2Access().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProductExpression
+entryRuleProductExpression 
+:
+{ before(grammarAccess.getProductExpressionRule()); }
+	 ruleProductExpression
+{ after(grammarAccess.getProductExpressionRule()); } 
+	 EOF 
+;
+
+// Rule ProductExpression
+ruleProductExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProductExpressionAccess().getGroup()); }
+(rule__ProductExpression__Group__0)
+{ after(grammarAccess.getProductExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProductExpression2
+entryRuleProductExpression2 
+:
+{ before(grammarAccess.getProductExpression2Rule()); }
+	 ruleProductExpression2
+{ after(grammarAccess.getProductExpression2Rule()); } 
+	 EOF 
+;
+
+// Rule ProductExpression2
+ruleProductExpression2
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProductExpression2Access().getGroup()); }
+(rule__ProductExpression2__Group__0)
+{ after(grammarAccess.getProductExpression2Access().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCompareExpression
+entryRuleCompareExpression 
+:
+{ before(grammarAccess.getCompareExpressionRule()); }
+	 ruleCompareExpression
+{ after(grammarAccess.getCompareExpressionRule()); } 
+	 EOF 
+;
+
+// Rule CompareExpression
+ruleCompareExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getGroup()); }
+(rule__CompareExpression__Group__0)
+{ after(grammarAccess.getCompareExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePowerExpression
+entryRulePowerExpression 
+:
+{ before(grammarAccess.getPowerExpressionRule()); }
+	 rulePowerExpression
+{ after(grammarAccess.getPowerExpressionRule()); } 
+	 EOF 
+;
+
+// Rule PowerExpression
+rulePowerExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getGroup()); }
+(rule__PowerExpression__Group__0)
+{ after(grammarAccess.getPowerExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBooleanOperatorExpression
+entryRuleBooleanOperatorExpression 
+:
+{ before(grammarAccess.getBooleanOperatorExpressionRule()); }
+	 ruleBooleanOperatorExpression
+{ after(grammarAccess.getBooleanOperatorExpressionRule()); } 
+	 EOF 
+;
+
+// Rule BooleanOperatorExpression
+ruleBooleanOperatorExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getGroup()); }
+(rule__BooleanOperatorExpression__Group__0)
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNotExpression
+entryRuleNotExpression 
+:
+{ before(grammarAccess.getNotExpressionRule()); }
+	 ruleNotExpression
+{ after(grammarAccess.getNotExpressionRule()); } 
+	 EOF 
+;
+
+// Rule NotExpression
+ruleNotExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNotExpressionAccess().getGroup()); }
+(rule__NotExpression__Group__0)
+{ after(grammarAccess.getNotExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNegativeExpression
+entryRuleNegativeExpression 
+:
+{ before(grammarAccess.getNegativeExpressionRule()); }
+	 ruleNegativeExpression
+{ after(grammarAccess.getNegativeExpressionRule()); } 
+	 EOF 
+;
+
+// Rule NegativeExpression
+ruleNegativeExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNegativeExpressionAccess().getGroup()); }
+(rule__NegativeExpression__Group__0)
+{ after(grammarAccess.getNegativeExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIfElseExpression
+entryRuleIfElseExpression 
+:
+{ before(grammarAccess.getIfElseExpressionRule()); }
+	 ruleIfElseExpression
+{ after(grammarAccess.getIfElseExpressionRule()); } 
+	 EOF 
+;
+
+// Rule IfElseExpression
+ruleIfElseExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getGroup()); }
+(rule__IfElseExpression__Group__0)
+{ after(grammarAccess.getIfElseExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFunction
+entryRuleFunction 
+:
+{ before(grammarAccess.getFunctionRule()); }
+	 ruleFunction
+{ after(grammarAccess.getFunctionRule()); } 
+	 EOF 
+;
+
+// Rule Function
+ruleFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFunctionAccess().getGroup()); }
+(rule__Function__Group__0)
+{ after(grammarAccess.getFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleParenthesis
+entryRuleParenthesis 
+:
+{ before(grammarAccess.getParenthesisRule()); }
+	 ruleParenthesis
+{ after(grammarAccess.getParenthesisRule()); } 
+	 EOF 
+;
+
+// Rule Parenthesis
+ruleParenthesis
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getParenthesisAccess().getGroup()); }
+(rule__Parenthesis__Group__0)
+{ after(grammarAccess.getParenthesisAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLiteral_Impl
+entryRuleLiteral_Impl 
+:
+{ before(grammarAccess.getLiteral_ImplRule()); }
+	 ruleLiteral_Impl
+{ after(grammarAccess.getLiteral_ImplRule()); } 
+	 EOF 
+;
+
+// Rule Literal_Impl
+ruleLiteral_Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLiteral_ImplAccess().getGroup()); }
+(rule__Literal_Impl__Group__0)
+{ after(grammarAccess.getLiteral_ImplAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral 
+:
+{ before(grammarAccess.getStringLiteralRule()); }
+	 ruleStringLiteral
+{ after(grammarAccess.getStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStringLiteralAccess().getGroup()); }
+(rule__StringLiteral__Group__0)
+{ after(grammarAccess.getStringLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBoolLiteral
+entryRuleBoolLiteral 
+:
+{ before(grammarAccess.getBoolLiteralRule()); }
+	 ruleBoolLiteral
+{ after(grammarAccess.getBoolLiteralRule()); } 
+	 EOF 
+;
+
+// Rule BoolLiteral
+ruleBoolLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBoolLiteralAccess().getGroup()); }
+(rule__BoolLiteral__Group__0)
+{ after(grammarAccess.getBoolLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIntLiteral
+entryRuleIntLiteral 
+:
+{ before(grammarAccess.getIntLiteralRule()); }
+	 ruleIntLiteral
+{ after(grammarAccess.getIntLiteralRule()); } 
+	 EOF 
+;
+
+// Rule IntLiteral
+ruleIntLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIntLiteralAccess().getGroup()); }
+(rule__IntLiteral__Group__0)
+{ after(grammarAccess.getIntLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDoubleLiteral
+entryRuleDoubleLiteral 
+:
+{ before(grammarAccess.getDoubleLiteralRule()); }
+	 ruleDoubleLiteral
+{ after(grammarAccess.getDoubleLiteralRule()); } 
+	 EOF 
+;
+
+// Rule DoubleLiteral
+ruleDoubleLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDoubleLiteralAccess().getGroup()); }
+(rule__DoubleLiteral__Group__0)
+{ after(grammarAccess.getDoubleLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFormalParameter
+entryRuleFormalParameter 
+:
+{ before(grammarAccess.getFormalParameterRule()); }
+	 ruleFormalParameter
+{ after(grammarAccess.getFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule FormalParameter
+ruleFormalParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFormalParameterAccess().getGroup()); }
+(rule__FormalParameter__Group__0)
+{ after(grammarAccess.getFormalParameterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProbabilityMassFunction
+entryRuleProbabilityMassFunction 
+:
+{ before(grammarAccess.getProbabilityMassFunctionRule()); }
+	 ruleProbabilityMassFunction
+{ after(grammarAccess.getProbabilityMassFunctionRule()); } 
+	 EOF 
+;
+
+// Rule ProbabilityMassFunction
+ruleProbabilityMassFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getGroup()); }
+(rule__ProbabilityMassFunction__Group__0)
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBoxedPDF
+entryRuleBoxedPDF 
+:
+{ before(grammarAccess.getBoxedPDFRule()); }
+	 ruleBoxedPDF
+{ after(grammarAccess.getBoxedPDFRule()); } 
+	 EOF 
+;
+
+// Rule BoxedPDF
+ruleBoxedPDF
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getGroup()); }
+(rule__BoxedPDF__Group__0)
+{ after(grammarAccess.getBoxedPDFAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNormalDistribution
+entryRuleNormalDistribution 
+:
+{ before(grammarAccess.getNormalDistributionRule()); }
+	 ruleNormalDistribution
+{ after(grammarAccess.getNormalDistributionRule()); } 
+	 EOF 
+;
+
+// Rule NormalDistribution
+ruleNormalDistribution
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getGroup()); }
+(rule__NormalDistribution__Group__0)
+{ after(grammarAccess.getNormalDistributionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExponentialDistribution
+entryRuleExponentialDistribution 
+:
+{ before(grammarAccess.getExponentialDistributionRule()); }
+	 ruleExponentialDistribution
+{ after(grammarAccess.getExponentialDistributionRule()); } 
+	 EOF 
+;
+
+// Rule ExponentialDistribution
+ruleExponentialDistribution
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExponentialDistributionAccess().getGroup()); }
+(rule__ExponentialDistribution__Group__0)
+{ after(grammarAccess.getExponentialDistributionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTermOperations
+entryRuleTermOperations 
+:
+{ before(grammarAccess.getTermOperationsRule()); }
+	 ruleTermOperations
+{ after(grammarAccess.getTermOperationsRule()); } 
+	 EOF 
+;
+
+// Rule TermOperations
+ruleTermOperations
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTermOperationsAccess().getTermOperationsKeyword()); }
+
+	'TermOperations' 
+
+{ after(grammarAccess.getTermOperationsAccess().getTermOperationsKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProductOperations
+entryRuleProductOperations 
+:
+{ before(grammarAccess.getProductOperationsRule()); }
+	 ruleProductOperations
+{ after(grammarAccess.getProductOperationsRule()); } 
+	 EOF 
+;
+
+// Rule ProductOperations
+ruleProductOperations
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProductOperationsAccess().getProductOperationsKeyword()); }
+
+	'ProductOperations' 
+
+{ after(grammarAccess.getProductOperationsAccess().getProductOperationsKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCompareOperations
+entryRuleCompareOperations 
+:
+{ before(grammarAccess.getCompareOperationsRule()); }
+	 ruleCompareOperations
+{ after(grammarAccess.getCompareOperationsRule()); } 
+	 EOF 
+;
+
+// Rule CompareOperations
+ruleCompareOperations
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCompareOperationsAccess().getCompareOperationsKeyword()); }
+
+	'CompareOperations' 
+
+{ after(grammarAccess.getCompareOperationsAccess().getCompareOperationsKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBooleanOperations
+entryRuleBooleanOperations 
+:
+{ before(grammarAccess.getBooleanOperationsRule()); }
+	 ruleBooleanOperations
+{ after(grammarAccess.getBooleanOperationsRule()); } 
+	 EOF 
+;
+
+// Rule BooleanOperations
+ruleBooleanOperations
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBooleanOperationsAccess().getBooleanOperationsKeyword()); }
+
+	'BooleanOperations' 
+
+{ after(grammarAccess.getBooleanOperationsAccess().getBooleanOperationsKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleEBigInteger
+entryRuleEBigInteger 
+:
+{ before(grammarAccess.getEBigIntegerRule()); }
+	 ruleEBigInteger
+{ after(grammarAccess.getEBigIntegerRule()); } 
+	 EOF 
+;
+
+// Rule EBigInteger
+ruleEBigInteger
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEBigIntegerAccess().getGroup()); }
+(rule__EBigInteger__Group__0)
+{ after(grammarAccess.getEBigIntegerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEBigDecimal
+entryRuleEBigDecimal 
+:
+{ before(grammarAccess.getEBigDecimalRule()); }
+	 ruleEBigDecimal
+{ after(grammarAccess.getEBigDecimalRule()); } 
+	 EOF 
+;
+
+// Rule EBigDecimal
+ruleEBigDecimal
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEBigDecimalAccess().getGroup()); }
+(rule__EBigDecimal__Group__0)
+{ after(grammarAccess.getEBigDecimalAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSample
+entryRuleSample 
+:
+{ before(grammarAccess.getSampleRule()); }
+	 ruleSample
+{ after(grammarAccess.getSampleRule()); } 
+	 EOF 
+;
+
+// Rule Sample
+ruleSample
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSampleAccess().getGroup()); }
+(rule__Sample__Group__0)
+{ after(grammarAccess.getSampleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleContinuousSample
+entryRuleContinuousSample 
+:
+{ before(grammarAccess.getContinuousSampleRule()); }
+	 ruleContinuousSample
+{ after(grammarAccess.getContinuousSampleRule()); } 
+	 EOF 
+;
+
+// Rule ContinuousSample
+ruleContinuousSample
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getGroup()); }
+(rule__ContinuousSample__Group__0)
+{ after(grammarAccess.getContinuousSampleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__Expression__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExpressionAccess().getTermExpressionParserRuleCall_0()); }
+	ruleTermExpression
+{ after(grammarAccess.getExpressionAccess().getTermExpressionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getProductExpressionParserRuleCall_1()); }
+	ruleProductExpression
+{ after(grammarAccess.getExpressionAccess().getProductExpressionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getCompareExpressionParserRuleCall_2()); }
+	ruleCompareExpression
+{ after(grammarAccess.getExpressionAccess().getCompareExpressionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getPowerExpressionParserRuleCall_3()); }
+	rulePowerExpression
+{ after(grammarAccess.getExpressionAccess().getPowerExpressionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); }
+	ruleBooleanOperatorExpression
+{ after(grammarAccess.getExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getNotExpressionParserRuleCall_5()); }
+	ruleNotExpression
+{ after(grammarAccess.getExpressionAccess().getNotExpressionParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getNegativeExpressionParserRuleCall_6()); }
+	ruleNegativeExpression
+{ after(grammarAccess.getExpressionAccess().getNegativeExpressionParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getIfElseExpressionParserRuleCall_7()); }
+	ruleIfElseExpression
+{ after(grammarAccess.getExpressionAccess().getIfElseExpressionParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getFunctionParserRuleCall_8()); }
+	ruleFunction
+{ after(grammarAccess.getExpressionAccess().getFunctionParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getParenthesisParserRuleCall_9()); }
+	ruleParenthesis
+{ after(grammarAccess.getExpressionAccess().getParenthesisParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getLiteral_ImplParserRuleCall_10()); }
+	ruleLiteral_Impl
+{ after(grammarAccess.getExpressionAccess().getLiteral_ImplParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getStringLiteralParserRuleCall_11()); }
+	ruleStringLiteral
+{ after(grammarAccess.getExpressionAccess().getStringLiteralParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getBoolLiteralParserRuleCall_12()); }
+	ruleBoolLiteral
+{ after(grammarAccess.getExpressionAccess().getBoolLiteralParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getIntLiteralParserRuleCall_13()); }
+	ruleIntLiteral
+{ after(grammarAccess.getExpressionAccess().getIntLiteralParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getDoubleLiteralParserRuleCall_14()); }
+	ruleDoubleLiteral
+{ after(grammarAccess.getExpressionAccess().getDoubleLiteralParserRuleCall_14()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getFormalParameterParserRuleCall_15()); }
+	ruleFormalParameter
+{ after(grammarAccess.getExpressionAccess().getFormalParameterParserRuleCall_15()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getProbabilityMassFunctionParserRuleCall_16()); }
+	ruleProbabilityMassFunction
+{ after(grammarAccess.getExpressionAccess().getProbabilityMassFunctionParserRuleCall_16()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getBoxedPDFParserRuleCall_17()); }
+	ruleBoxedPDF
+{ after(grammarAccess.getExpressionAccess().getBoxedPDFParserRuleCall_17()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getNormalDistributionParserRuleCall_18()); }
+	ruleNormalDistribution
+{ after(grammarAccess.getExpressionAccess().getNormalDistributionParserRuleCall_18()); }
+)
+
+    |(
+{ before(grammarAccess.getExpressionAccess().getExponentialDistributionParserRuleCall_19()); }
+	ruleExponentialDistribution
+{ after(grammarAccess.getExpressionAccess().getExponentialDistributionParserRuleCall_19()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Term__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermAccess().getTermExpressionParserRuleCall_0()); }
+	ruleTermExpression
+{ after(grammarAccess.getTermAccess().getTermExpressionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getProductExpressionParserRuleCall_1()); }
+	ruleProductExpression
+{ after(grammarAccess.getTermAccess().getProductExpressionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getPowerExpressionParserRuleCall_2()); }
+	rulePowerExpression
+{ after(grammarAccess.getTermAccess().getPowerExpressionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getNotExpressionParserRuleCall_3()); }
+	ruleNotExpression
+{ after(grammarAccess.getTermAccess().getNotExpressionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getNegativeExpressionParserRuleCall_4()); }
+	ruleNegativeExpression
+{ after(grammarAccess.getTermAccess().getNegativeExpressionParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getFunctionParserRuleCall_5()); }
+	ruleFunction
+{ after(grammarAccess.getTermAccess().getFunctionParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getParenthesisParserRuleCall_6()); }
+	ruleParenthesis
+{ after(grammarAccess.getTermAccess().getParenthesisParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getLiteral_ImplParserRuleCall_7()); }
+	ruleLiteral_Impl
+{ after(grammarAccess.getTermAccess().getLiteral_ImplParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getStringLiteralParserRuleCall_8()); }
+	ruleStringLiteral
+{ after(grammarAccess.getTermAccess().getStringLiteralParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getBoolLiteralParserRuleCall_9()); }
+	ruleBoolLiteral
+{ after(grammarAccess.getTermAccess().getBoolLiteralParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getIntLiteralParserRuleCall_10()); }
+	ruleIntLiteral
+{ after(grammarAccess.getTermAccess().getIntLiteralParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getDoubleLiteralParserRuleCall_11()); }
+	ruleDoubleLiteral
+{ after(grammarAccess.getTermAccess().getDoubleLiteralParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getFormalParameterParserRuleCall_12()); }
+	ruleFormalParameter
+{ after(grammarAccess.getTermAccess().getFormalParameterParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getProbabilityMassFunctionParserRuleCall_13()); }
+	ruleProbabilityMassFunction
+{ after(grammarAccess.getTermAccess().getProbabilityMassFunctionParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getBoxedPDFParserRuleCall_14()); }
+	ruleBoxedPDF
+{ after(grammarAccess.getTermAccess().getBoxedPDFParserRuleCall_14()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getNormalDistributionParserRuleCall_15()); }
+	ruleNormalDistribution
+{ after(grammarAccess.getTermAccess().getNormalDistributionParserRuleCall_15()); }
+)
+
+    |(
+{ before(grammarAccess.getTermAccess().getExponentialDistributionParserRuleCall_16()); }
+	ruleExponentialDistribution
+{ after(grammarAccess.getTermAccess().getExponentialDistributionParserRuleCall_16()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Product__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductAccess().getProductExpressionParserRuleCall_0()); }
+	ruleProductExpression
+{ after(grammarAccess.getProductAccess().getProductExpressionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getPowerExpressionParserRuleCall_1()); }
+	rulePowerExpression
+{ after(grammarAccess.getProductAccess().getPowerExpressionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getNotExpressionParserRuleCall_2()); }
+	ruleNotExpression
+{ after(grammarAccess.getProductAccess().getNotExpressionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getNegativeExpressionParserRuleCall_3()); }
+	ruleNegativeExpression
+{ after(grammarAccess.getProductAccess().getNegativeExpressionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getFunctionParserRuleCall_4()); }
+	ruleFunction
+{ after(grammarAccess.getProductAccess().getFunctionParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getParenthesisParserRuleCall_5()); }
+	ruleParenthesis
+{ after(grammarAccess.getProductAccess().getParenthesisParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getLiteral_ImplParserRuleCall_6()); }
+	ruleLiteral_Impl
+{ after(grammarAccess.getProductAccess().getLiteral_ImplParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getStringLiteralParserRuleCall_7()); }
+	ruleStringLiteral
+{ after(grammarAccess.getProductAccess().getStringLiteralParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getBoolLiteralParserRuleCall_8()); }
+	ruleBoolLiteral
+{ after(grammarAccess.getProductAccess().getBoolLiteralParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getIntLiteralParserRuleCall_9()); }
+	ruleIntLiteral
+{ after(grammarAccess.getProductAccess().getIntLiteralParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getDoubleLiteralParserRuleCall_10()); }
+	ruleDoubleLiteral
+{ after(grammarAccess.getProductAccess().getDoubleLiteralParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getFormalParameterParserRuleCall_11()); }
+	ruleFormalParameter
+{ after(grammarAccess.getProductAccess().getFormalParameterParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getProbabilityMassFunctionParserRuleCall_12()); }
+	ruleProbabilityMassFunction
+{ after(grammarAccess.getProductAccess().getProbabilityMassFunctionParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getBoxedPDFParserRuleCall_13()); }
+	ruleBoxedPDF
+{ after(grammarAccess.getProductAccess().getBoxedPDFParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getNormalDistributionParserRuleCall_14()); }
+	ruleNormalDistribution
+{ after(grammarAccess.getProductAccess().getNormalDistributionParserRuleCall_14()); }
+)
+
+    |(
+{ before(grammarAccess.getProductAccess().getExponentialDistributionParserRuleCall_15()); }
+	ruleExponentialDistribution
+{ after(grammarAccess.getProductAccess().getExponentialDistributionParserRuleCall_15()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Power__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerAccess().getPowerExpressionParserRuleCall_0()); }
+	rulePowerExpression
+{ after(grammarAccess.getPowerAccess().getPowerExpressionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getNotExpressionParserRuleCall_1()); }
+	ruleNotExpression
+{ after(grammarAccess.getPowerAccess().getNotExpressionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getNegativeExpressionParserRuleCall_2()); }
+	ruleNegativeExpression
+{ after(grammarAccess.getPowerAccess().getNegativeExpressionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getFunctionParserRuleCall_3()); }
+	ruleFunction
+{ after(grammarAccess.getPowerAccess().getFunctionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getParenthesisParserRuleCall_4()); }
+	ruleParenthesis
+{ after(grammarAccess.getPowerAccess().getParenthesisParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getLiteral_ImplParserRuleCall_5()); }
+	ruleLiteral_Impl
+{ after(grammarAccess.getPowerAccess().getLiteral_ImplParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getStringLiteralParserRuleCall_6()); }
+	ruleStringLiteral
+{ after(grammarAccess.getPowerAccess().getStringLiteralParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getBoolLiteralParserRuleCall_7()); }
+	ruleBoolLiteral
+{ after(grammarAccess.getPowerAccess().getBoolLiteralParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getIntLiteralParserRuleCall_8()); }
+	ruleIntLiteral
+{ after(grammarAccess.getPowerAccess().getIntLiteralParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getDoubleLiteralParserRuleCall_9()); }
+	ruleDoubleLiteral
+{ after(grammarAccess.getPowerAccess().getDoubleLiteralParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getFormalParameterParserRuleCall_10()); }
+	ruleFormalParameter
+{ after(grammarAccess.getPowerAccess().getFormalParameterParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getProbabilityMassFunctionParserRuleCall_11()); }
+	ruleProbabilityMassFunction
+{ after(grammarAccess.getPowerAccess().getProbabilityMassFunctionParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getBoxedPDFParserRuleCall_12()); }
+	ruleBoxedPDF
+{ after(grammarAccess.getPowerAccess().getBoxedPDFParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getNormalDistributionParserRuleCall_13()); }
+	ruleNormalDistribution
+{ after(grammarAccess.getPowerAccess().getNormalDistributionParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getPowerAccess().getExponentialDistributionParserRuleCall_14()); }
+	ruleExponentialDistribution
+{ after(grammarAccess.getPowerAccess().getExponentialDistributionParserRuleCall_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Unary__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnaryAccess().getNotExpressionParserRuleCall_0()); }
+	ruleNotExpression
+{ after(grammarAccess.getUnaryAccess().getNotExpressionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getNegativeExpressionParserRuleCall_1()); }
+	ruleNegativeExpression
+{ after(grammarAccess.getUnaryAccess().getNegativeExpressionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getFunctionParserRuleCall_2()); }
+	ruleFunction
+{ after(grammarAccess.getUnaryAccess().getFunctionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getParenthesisParserRuleCall_3()); }
+	ruleParenthesis
+{ after(grammarAccess.getUnaryAccess().getParenthesisParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getLiteral_ImplParserRuleCall_4()); }
+	ruleLiteral_Impl
+{ after(grammarAccess.getUnaryAccess().getLiteral_ImplParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getStringLiteralParserRuleCall_5()); }
+	ruleStringLiteral
+{ after(grammarAccess.getUnaryAccess().getStringLiteralParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getBoolLiteralParserRuleCall_6()); }
+	ruleBoolLiteral
+{ after(grammarAccess.getUnaryAccess().getBoolLiteralParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getIntLiteralParserRuleCall_7()); }
+	ruleIntLiteral
+{ after(grammarAccess.getUnaryAccess().getIntLiteralParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getDoubleLiteralParserRuleCall_8()); }
+	ruleDoubleLiteral
+{ after(grammarAccess.getUnaryAccess().getDoubleLiteralParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getFormalParameterParserRuleCall_9()); }
+	ruleFormalParameter
+{ after(grammarAccess.getUnaryAccess().getFormalParameterParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getProbabilityMassFunctionParserRuleCall_10()); }
+	ruleProbabilityMassFunction
+{ after(grammarAccess.getUnaryAccess().getProbabilityMassFunctionParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getBoxedPDFParserRuleCall_11()); }
+	ruleBoxedPDF
+{ after(grammarAccess.getUnaryAccess().getBoxedPDFParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getNormalDistributionParserRuleCall_12()); }
+	ruleNormalDistribution
+{ after(grammarAccess.getUnaryAccess().getNormalDistributionParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getUnaryAccess().getExponentialDistributionParserRuleCall_13()); }
+	ruleExponentialDistribution
+{ after(grammarAccess.getUnaryAccess().getExponentialDistributionParserRuleCall_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanExpression__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanExpressionAccess().getTermExpressionParserRuleCall_0()); }
+	ruleTermExpression
+{ after(grammarAccess.getBooleanExpressionAccess().getTermExpressionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getProductExpressionParserRuleCall_1()); }
+	ruleProductExpression
+{ after(grammarAccess.getBooleanExpressionAccess().getProductExpressionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getCompareExpressionParserRuleCall_2()); }
+	ruleCompareExpression
+{ after(grammarAccess.getBooleanExpressionAccess().getCompareExpressionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getPowerExpressionParserRuleCall_3()); }
+	rulePowerExpression
+{ after(grammarAccess.getBooleanExpressionAccess().getPowerExpressionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); }
+	ruleBooleanOperatorExpression
+{ after(grammarAccess.getBooleanExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getNotExpressionParserRuleCall_5()); }
+	ruleNotExpression
+{ after(grammarAccess.getBooleanExpressionAccess().getNotExpressionParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getNegativeExpressionParserRuleCall_6()); }
+	ruleNegativeExpression
+{ after(grammarAccess.getBooleanExpressionAccess().getNegativeExpressionParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getFunctionParserRuleCall_7()); }
+	ruleFunction
+{ after(grammarAccess.getBooleanExpressionAccess().getFunctionParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getParenthesisParserRuleCall_8()); }
+	ruleParenthesis
+{ after(grammarAccess.getBooleanExpressionAccess().getParenthesisParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getLiteral_ImplParserRuleCall_9()); }
+	ruleLiteral_Impl
+{ after(grammarAccess.getBooleanExpressionAccess().getLiteral_ImplParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getStringLiteralParserRuleCall_10()); }
+	ruleStringLiteral
+{ after(grammarAccess.getBooleanExpressionAccess().getStringLiteralParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getBoolLiteralParserRuleCall_11()); }
+	ruleBoolLiteral
+{ after(grammarAccess.getBooleanExpressionAccess().getBoolLiteralParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getIntLiteralParserRuleCall_12()); }
+	ruleIntLiteral
+{ after(grammarAccess.getBooleanExpressionAccess().getIntLiteralParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getDoubleLiteralParserRuleCall_13()); }
+	ruleDoubleLiteral
+{ after(grammarAccess.getBooleanExpressionAccess().getDoubleLiteralParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getFormalParameterParserRuleCall_14()); }
+	ruleFormalParameter
+{ after(grammarAccess.getBooleanExpressionAccess().getFormalParameterParserRuleCall_14()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getProbabilityMassFunctionParserRuleCall_15()); }
+	ruleProbabilityMassFunction
+{ after(grammarAccess.getBooleanExpressionAccess().getProbabilityMassFunctionParserRuleCall_15()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getBoxedPDFParserRuleCall_16()); }
+	ruleBoxedPDF
+{ after(grammarAccess.getBooleanExpressionAccess().getBoxedPDFParserRuleCall_16()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getNormalDistributionParserRuleCall_17()); }
+	ruleNormalDistribution
+{ after(grammarAccess.getBooleanExpressionAccess().getNormalDistributionParserRuleCall_17()); }
+)
+
+    |(
+{ before(grammarAccess.getBooleanExpressionAccess().getExponentialDistributionParserRuleCall_18()); }
+	ruleExponentialDistribution
+{ after(grammarAccess.getBooleanExpressionAccess().getExponentialDistributionParserRuleCall_18()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EString__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); }
+	RULE_STRING
+{ after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); }
+	RULE_ID
+{ after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__ExplicitFunction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group__0__Impl
+	rule__ExplicitFunction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getExplicitFunctionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getExplicitFunctionAccess().getExplicitFunctionAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExplicitFunction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group__1__Impl
+	rule__ExplicitFunction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getExplicitFunctionKeyword_1()); }
+
+	'ExplicitFunction' 
+
+{ after(grammarAccess.getExplicitFunctionAccess().getExplicitFunctionKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExplicitFunction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group__2__Impl
+	rule__ExplicitFunction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getExplicitFunctionAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExplicitFunction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group__3__Impl
+	rule__ExplicitFunction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getGroup_3()); }
+(rule__ExplicitFunction__Group_3__0)?
+{ after(grammarAccess.getExplicitFunctionAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExplicitFunction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group__4__Impl
+	rule__ExplicitFunction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getGroup_4()); }
+(rule__ExplicitFunction__Group_4__0)?
+{ after(grammarAccess.getExplicitFunctionAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExplicitFunction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getExplicitFunctionAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ExplicitFunction__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group_3__0__Impl
+	rule__ExplicitFunction__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getSpecificationKeyword_3_0()); }
+
+	'specification' 
+
+{ after(grammarAccess.getExplicitFunctionAccess().getSpecificationKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExplicitFunction__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getSpecificationAssignment_3_1()); }
+(rule__ExplicitFunction__SpecificationAssignment_3_1)
+{ after(grammarAccess.getExplicitFunctionAccess().getSpecificationAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExplicitFunction__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group_4__0__Impl
+	rule__ExplicitFunction__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getExpressionKeyword_4_0()); }
+
+	'expression' 
+
+{ after(grammarAccess.getExplicitFunctionAccess().getExpressionKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExplicitFunction__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExplicitFunction__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getExpressionAssignment_4_1()); }
+(rule__ExplicitFunction__ExpressionAssignment_4_1)
+{ after(grammarAccess.getExplicitFunctionAccess().getExpressionAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TermExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression__Group__0__Impl
+	rule__TermExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getTermExpressionKeyword_0()); }
+
+	'TermExpression' 
+
+{ after(grammarAccess.getTermExpressionAccess().getTermExpressionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TermExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression__Group__1__Impl
+	rule__TermExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTermExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TermExpression__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression__Group__2__Impl
+	rule__TermExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getTermExpression2ParserRuleCall_2()); }
+	ruleTermExpression2
+{ after(grammarAccess.getTermExpressionAccess().getTermExpression2ParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TermExpression__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression__Group__3__Impl
+	rule__TermExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getGroup_3()); }
+(rule__TermExpression__Group_3__0)*
+{ after(grammarAccess.getTermExpressionAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TermExpression__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTermExpressionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TermExpression__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression__Group_3__0__Impl
+	rule__TermExpression__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getTermExpressionLeftAction_3_0()); }
+(
+
+)
+{ after(grammarAccess.getTermExpressionAccess().getTermExpressionLeftAction_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TermExpression__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression__Group_3__1__Impl
+	rule__TermExpression__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getOperationAssignment_3_1()); }
+(rule__TermExpression__OperationAssignment_3_1)
+{ after(grammarAccess.getTermExpressionAccess().getOperationAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TermExpression__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getRightAssignment_3_2()); }
+(rule__TermExpression__RightAssignment_3_2)
+{ after(grammarAccess.getTermExpressionAccess().getRightAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__TermExpression2__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression2__Group__0__Impl
+	rule__TermExpression2__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression2__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpression2Access().getLeftAssignment_0()); }
+(rule__TermExpression2__LeftAssignment_0)
+{ after(grammarAccess.getTermExpression2Access().getLeftAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TermExpression2__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression2__Group__1__Impl
+	rule__TermExpression2__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression2__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpression2Access().getOperationAssignment_1()); }
+(rule__TermExpression2__OperationAssignment_1)
+{ after(grammarAccess.getTermExpression2Access().getOperationAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TermExpression2__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TermExpression2__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression2__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpression2Access().getRightAssignment_2()); }
+(rule__TermExpression2__RightAssignment_2)
+{ after(grammarAccess.getTermExpression2Access().getRightAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ProductExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression__Group__0__Impl
+	rule__ProductExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getProductExpressionKeyword_0()); }
+
+	'ProductExpression' 
+
+{ after(grammarAccess.getProductExpressionAccess().getProductExpressionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProductExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression__Group__1__Impl
+	rule__ProductExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProductExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProductExpression__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression__Group__2__Impl
+	rule__ProductExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getProductExpression2ParserRuleCall_2()); }
+	ruleProductExpression2
+{ after(grammarAccess.getProductExpressionAccess().getProductExpression2ParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProductExpression__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression__Group__3__Impl
+	rule__ProductExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getGroup_3()); }
+(rule__ProductExpression__Group_3__0)*
+{ after(grammarAccess.getProductExpressionAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProductExpression__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProductExpressionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProductExpression__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression__Group_3__0__Impl
+	rule__ProductExpression__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getProductExpressionLeftAction_3_0()); }
+(
+
+)
+{ after(grammarAccess.getProductExpressionAccess().getProductExpressionLeftAction_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProductExpression__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression__Group_3__1__Impl
+	rule__ProductExpression__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getOperationAssignment_3_1()); }
+(rule__ProductExpression__OperationAssignment_3_1)
+{ after(grammarAccess.getProductExpressionAccess().getOperationAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProductExpression__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getRightAssignment_3_2()); }
+(rule__ProductExpression__RightAssignment_3_2)
+{ after(grammarAccess.getProductExpressionAccess().getRightAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ProductExpression2__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression2__Group__0__Impl
+	rule__ProductExpression2__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression2__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpression2Access().getLeftAssignment_0()); }
+(rule__ProductExpression2__LeftAssignment_0)
+{ after(grammarAccess.getProductExpression2Access().getLeftAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProductExpression2__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression2__Group__1__Impl
+	rule__ProductExpression2__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression2__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpression2Access().getOperationAssignment_1()); }
+(rule__ProductExpression2__OperationAssignment_1)
+{ after(grammarAccess.getProductExpression2Access().getOperationAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProductExpression2__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProductExpression2__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression2__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpression2Access().getRightAssignment_2()); }
+(rule__ProductExpression2__RightAssignment_2)
+{ after(grammarAccess.getProductExpression2Access().getRightAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CompareExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__0__Impl
+	rule__CompareExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getCompareExpressionKeyword_0()); }
+
+	'CompareExpression' 
+
+{ after(grammarAccess.getCompareExpressionAccess().getCompareExpressionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompareExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__1__Impl
+	rule__CompareExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCompareExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompareExpression__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__2__Impl
+	rule__CompareExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getOperationKeyword_2()); }
+
+	'operation' 
+
+{ after(grammarAccess.getCompareExpressionAccess().getOperationKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompareExpression__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__3__Impl
+	rule__CompareExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getOperationAssignment_3()); }
+(rule__CompareExpression__OperationAssignment_3)
+{ after(grammarAccess.getCompareExpressionAccess().getOperationAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompareExpression__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__4__Impl
+	rule__CompareExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getLeftKeyword_4()); }
+
+	'left' 
+
+{ after(grammarAccess.getCompareExpressionAccess().getLeftKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompareExpression__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__5__Impl
+	rule__CompareExpression__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getLeftAssignment_5()); }
+(rule__CompareExpression__LeftAssignment_5)
+{ after(grammarAccess.getCompareExpressionAccess().getLeftAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompareExpression__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__6__Impl
+	rule__CompareExpression__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getRightKeyword_6()); }
+
+	'right' 
+
+{ after(grammarAccess.getCompareExpressionAccess().getRightKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompareExpression__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__7__Impl
+	rule__CompareExpression__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getRightAssignment_7()); }
+(rule__CompareExpression__RightAssignment_7)
+{ after(grammarAccess.getCompareExpressionAccess().getRightAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CompareExpression__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CompareExpression__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getCompareExpressionAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PowerExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PowerExpression__Group__0__Impl
+	rule__PowerExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getPowerExpressionKeyword_0()); }
+
+	'PowerExpression' 
+
+{ after(grammarAccess.getPowerExpressionAccess().getPowerExpressionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PowerExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PowerExpression__Group__1__Impl
+	rule__PowerExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPowerExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PowerExpression__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PowerExpression__Group__2__Impl
+	rule__PowerExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getBaseKeyword_2()); }
+
+	'base' 
+
+{ after(grammarAccess.getPowerExpressionAccess().getBaseKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PowerExpression__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PowerExpression__Group__3__Impl
+	rule__PowerExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getBaseAssignment_3()); }
+(rule__PowerExpression__BaseAssignment_3)
+{ after(grammarAccess.getPowerExpressionAccess().getBaseAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PowerExpression__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PowerExpression__Group__4__Impl
+	rule__PowerExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getExponentKeyword_4()); }
+
+	'exponent' 
+
+{ after(grammarAccess.getPowerExpressionAccess().getExponentKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PowerExpression__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PowerExpression__Group__5__Impl
+	rule__PowerExpression__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getExponentAssignment_5()); }
+(rule__PowerExpression__ExponentAssignment_5)
+{ after(grammarAccess.getPowerExpressionAccess().getExponentAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PowerExpression__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PowerExpression__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getPowerExpressionAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__BooleanOperatorExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__0__Impl
+	rule__BooleanOperatorExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getBooleanOperatorExpressionKeyword_0()); }
+
+	'BooleanOperatorExpression' 
+
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getBooleanOperatorExpressionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BooleanOperatorExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__1__Impl
+	rule__BooleanOperatorExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BooleanOperatorExpression__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__2__Impl
+	rule__BooleanOperatorExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getOperationKeyword_2()); }
+
+	'operation' 
+
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getOperationKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BooleanOperatorExpression__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__3__Impl
+	rule__BooleanOperatorExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getOperationAssignment_3()); }
+(rule__BooleanOperatorExpression__OperationAssignment_3)
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getOperationAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BooleanOperatorExpression__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__4__Impl
+	rule__BooleanOperatorExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getLeftKeyword_4()); }
+
+	'left' 
+
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getLeftKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BooleanOperatorExpression__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__5__Impl
+	rule__BooleanOperatorExpression__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getLeftAssignment_5()); }
+(rule__BooleanOperatorExpression__LeftAssignment_5)
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getLeftAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BooleanOperatorExpression__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__6__Impl
+	rule__BooleanOperatorExpression__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getRightKeyword_6()); }
+
+	'right' 
+
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getRightKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BooleanOperatorExpression__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__7__Impl
+	rule__BooleanOperatorExpression__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getRightAssignment_7()); }
+(rule__BooleanOperatorExpression__RightAssignment_7)
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getRightAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BooleanOperatorExpression__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BooleanOperatorExpression__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getBooleanOperatorExpressionAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NotExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NotExpression__Group__0__Impl
+	rule__NotExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NotExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNotExpressionAccess().getNotExpressionKeyword_0()); }
+
+	'NotExpression' 
+
+{ after(grammarAccess.getNotExpressionAccess().getNotExpressionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NotExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NotExpression__Group__1__Impl
+	rule__NotExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NotExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNotExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNotExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NotExpression__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NotExpression__Group__2__Impl
+	rule__NotExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NotExpression__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNotExpressionAccess().getInnerKeyword_2()); }
+
+	'inner' 
+
+{ after(grammarAccess.getNotExpressionAccess().getInnerKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NotExpression__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NotExpression__Group__3__Impl
+	rule__NotExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NotExpression__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNotExpressionAccess().getInnerAssignment_3()); }
+(rule__NotExpression__InnerAssignment_3)
+{ after(grammarAccess.getNotExpressionAccess().getInnerAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NotExpression__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NotExpression__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NotExpression__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNotExpressionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNotExpressionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NegativeExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NegativeExpression__Group__0__Impl
+	rule__NegativeExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NegativeExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNegativeExpressionAccess().getNegativeExpressionKeyword_0()); }
+
+	'NegativeExpression' 
+
+{ after(grammarAccess.getNegativeExpressionAccess().getNegativeExpressionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NegativeExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NegativeExpression__Group__1__Impl
+	rule__NegativeExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NegativeExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNegativeExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNegativeExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NegativeExpression__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NegativeExpression__Group__2__Impl
+	rule__NegativeExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NegativeExpression__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNegativeExpressionAccess().getInnerKeyword_2()); }
+
+	'inner' 
+
+{ after(grammarAccess.getNegativeExpressionAccess().getInnerKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NegativeExpression__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NegativeExpression__Group__3__Impl
+	rule__NegativeExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NegativeExpression__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNegativeExpressionAccess().getInnerAssignment_3()); }
+(rule__NegativeExpression__InnerAssignment_3)
+{ after(grammarAccess.getNegativeExpressionAccess().getInnerAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NegativeExpression__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NegativeExpression__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NegativeExpression__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNegativeExpressionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNegativeExpressionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__IfElseExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__0__Impl
+	rule__IfElseExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getIfElseExpressionKeyword_0()); }
+
+	'IfElseExpression' 
+
+{ after(grammarAccess.getIfElseExpressionAccess().getIfElseExpressionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfElseExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__1__Impl
+	rule__IfElseExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getIfElseExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfElseExpression__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__2__Impl
+	rule__IfElseExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getIfExpressionKeyword_2()); }
+
+	'ifExpression' 
+
+{ after(grammarAccess.getIfElseExpressionAccess().getIfExpressionKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfElseExpression__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__3__Impl
+	rule__IfElseExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getIfExpressionAssignment_3()); }
+(rule__IfElseExpression__IfExpressionAssignment_3)
+{ after(grammarAccess.getIfElseExpressionAccess().getIfExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfElseExpression__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__4__Impl
+	rule__IfElseExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getElseExpressionKeyword_4()); }
+
+	'elseExpression' 
+
+{ after(grammarAccess.getIfElseExpressionAccess().getElseExpressionKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfElseExpression__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__5__Impl
+	rule__IfElseExpression__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getElseExpressionAssignment_5()); }
+(rule__IfElseExpression__ElseExpressionAssignment_5)
+{ after(grammarAccess.getIfElseExpressionAccess().getElseExpressionAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfElseExpression__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__6__Impl
+	rule__IfElseExpression__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getConditionExpressionKeyword_6()); }
+
+	'conditionExpression' 
+
+{ after(grammarAccess.getIfElseExpressionAccess().getConditionExpressionKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfElseExpression__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__7__Impl
+	rule__IfElseExpression__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getConditionExpressionAssignment_7()); }
+(rule__IfElseExpression__ConditionExpressionAssignment_7)
+{ after(grammarAccess.getIfElseExpressionAccess().getConditionExpressionAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IfElseExpression__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IfElseExpression__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getIfElseExpressionAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Function__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group__0__Impl
+	rule__Function__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getFunctionKeyword_0()); }
+
+	'Function' 
+
+{ after(grammarAccess.getFunctionAccess().getFunctionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group__1__Impl
+	rule__Function__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group__2__Impl
+	rule__Function__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getIdKeyword_2()); }
+
+	'id' 
+
+{ after(grammarAccess.getFunctionAccess().getIdKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group__3__Impl
+	rule__Function__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getIdAssignment_3()); }
+(rule__Function__IdAssignment_3)
+{ after(grammarAccess.getFunctionAccess().getIdAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group__4__Impl
+	rule__Function__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getGroup_4()); }
+(rule__Function__Group_4__0)?
+{ after(grammarAccess.getFunctionAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Function__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group_4__0__Impl
+	rule__Function__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getParametersKeyword_4_0()); }
+
+	'parameters' 
+
+{ after(grammarAccess.getFunctionAccess().getParametersKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group_4__1__Impl
+	rule__Function__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group_4__2__Impl
+	rule__Function__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getParametersAssignment_4_2()); }
+(rule__Function__ParametersAssignment_4_2)
+{ after(grammarAccess.getFunctionAccess().getParametersAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group_4__3__Impl
+	rule__Function__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getGroup_4_3()); }
+(rule__Function__Group_4_3__0)*
+{ after(grammarAccess.getFunctionAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Function__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group_4_3__0__Impl
+	rule__Function__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getFunctionAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Function__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Function__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getParametersAssignment_4_3_1()); }
+(rule__Function__ParametersAssignment_4_3_1)
+{ after(grammarAccess.getFunctionAccess().getParametersAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Parenthesis__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Parenthesis__Group__0__Impl
+	rule__Parenthesis__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parenthesis__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParenthesisAccess().getParenthesisKeyword_0()); }
+
+	'Parenthesis' 
+
+{ after(grammarAccess.getParenthesisAccess().getParenthesisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Parenthesis__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Parenthesis__Group__1__Impl
+	rule__Parenthesis__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parenthesis__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParenthesisAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getParenthesisAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Parenthesis__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Parenthesis__Group__2__Impl
+	rule__Parenthesis__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parenthesis__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParenthesisAccess().getInnerExpressionKeyword_2()); }
+
+	'innerExpression' 
+
+{ after(grammarAccess.getParenthesisAccess().getInnerExpressionKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Parenthesis__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Parenthesis__Group__3__Impl
+	rule__Parenthesis__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parenthesis__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParenthesisAccess().getInnerExpressionAssignment_3()); }
+(rule__Parenthesis__InnerExpressionAssignment_3)
+{ after(grammarAccess.getParenthesisAccess().getInnerExpressionAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Parenthesis__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Parenthesis__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parenthesis__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParenthesisAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getParenthesisAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Literal_Impl__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Literal_Impl__Group__0__Impl
+	rule__Literal_Impl__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Literal_Impl__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLiteral_ImplAccess().getLiteralAction_0()); }
+(
+
+)
+{ after(grammarAccess.getLiteral_ImplAccess().getLiteralAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Literal_Impl__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Literal_Impl__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Literal_Impl__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLiteral_ImplAccess().getLiteralKeyword_1()); }
+
+	'Literal' 
+
+{ after(grammarAccess.getLiteral_ImplAccess().getLiteralKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StringLiteral__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StringLiteral__Group__0__Impl
+	rule__StringLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteral__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralAccess().getStringLiteralKeyword_0()); }
+
+	'StringLiteral' 
+
+{ after(grammarAccess.getStringLiteralAccess().getStringLiteralKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StringLiteral__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StringLiteral__Group__1__Impl
+	rule__StringLiteral__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteral__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getStringLiteralAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StringLiteral__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StringLiteral__Group__2__Impl
+	rule__StringLiteral__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteral__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralAccess().getValueKeyword_2()); }
+
+	'value' 
+
+{ after(grammarAccess.getStringLiteralAccess().getValueKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StringLiteral__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StringLiteral__Group__3__Impl
+	rule__StringLiteral__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteral__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralAccess().getValueAssignment_3()); }
+(rule__StringLiteral__ValueAssignment_3)
+{ after(grammarAccess.getStringLiteralAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StringLiteral__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StringLiteral__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteral__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getStringLiteralAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__BoolLiteral__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoolLiteral__Group__0__Impl
+	rule__BoolLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoolLiteral__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoolLiteralAccess().getValueAssignment_0()); }
+(rule__BoolLiteral__ValueAssignment_0)
+{ after(grammarAccess.getBoolLiteralAccess().getValueAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoolLiteral__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoolLiteral__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoolLiteral__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoolLiteralAccess().getBoolLiteralKeyword_1()); }
+
+	'BoolLiteral' 
+
+{ after(grammarAccess.getBoolLiteralAccess().getBoolLiteralKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__IntLiteral__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntLiteral__Group__0__Impl
+	rule__IntLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntLiteral__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntLiteralAccess().getIntLiteralKeyword_0()); }
+
+	'IntLiteral' 
+
+{ after(grammarAccess.getIntLiteralAccess().getIntLiteralKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntLiteral__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntLiteral__Group__1__Impl
+	rule__IntLiteral__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntLiteral__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntLiteralAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getIntLiteralAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntLiteral__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntLiteral__Group__2__Impl
+	rule__IntLiteral__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntLiteral__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntLiteralAccess().getValueKeyword_2()); }
+
+	'value' 
+
+{ after(grammarAccess.getIntLiteralAccess().getValueKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntLiteral__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntLiteral__Group__3__Impl
+	rule__IntLiteral__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntLiteral__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntLiteralAccess().getValueAssignment_3()); }
+(rule__IntLiteral__ValueAssignment_3)
+{ after(grammarAccess.getIntLiteralAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntLiteral__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntLiteral__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntLiteral__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntLiteralAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getIntLiteralAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DoubleLiteral__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DoubleLiteral__Group__0__Impl
+	rule__DoubleLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DoubleLiteral__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDoubleLiteralAccess().getDoubleLiteralKeyword_0()); }
+
+	'DoubleLiteral' 
+
+{ after(grammarAccess.getDoubleLiteralAccess().getDoubleLiteralKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DoubleLiteral__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DoubleLiteral__Group__1__Impl
+	rule__DoubleLiteral__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DoubleLiteral__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDoubleLiteralAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDoubleLiteralAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DoubleLiteral__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DoubleLiteral__Group__2__Impl
+	rule__DoubleLiteral__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DoubleLiteral__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDoubleLiteralAccess().getValueKeyword_2()); }
+
+	'value' 
+
+{ after(grammarAccess.getDoubleLiteralAccess().getValueKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DoubleLiteral__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DoubleLiteral__Group__3__Impl
+	rule__DoubleLiteral__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DoubleLiteral__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDoubleLiteralAccess().getValueAssignment_3()); }
+(rule__DoubleLiteral__ValueAssignment_3)
+{ after(grammarAccess.getDoubleLiteralAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DoubleLiteral__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DoubleLiteral__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DoubleLiteral__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDoubleLiteralAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getDoubleLiteralAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__FormalParameter__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FormalParameter__Group__0__Impl
+	rule__FormalParameter__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FormalParameter__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFormalParameterAccess().getFormalParameterAction_0()); }
+(
+
+)
+{ after(grammarAccess.getFormalParameterAccess().getFormalParameterAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FormalParameter__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FormalParameter__Group__1__Impl
+	rule__FormalParameter__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FormalParameter__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFormalParameterAccess().getFormalParameterKeyword_1()); }
+
+	'FormalParameter' 
+
+{ after(grammarAccess.getFormalParameterAccess().getFormalParameterKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FormalParameter__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FormalParameter__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FormalParameter__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFormalParameterAccess().getNameAssignment_2()); }
+(rule__FormalParameter__NameAssignment_2)
+{ after(grammarAccess.getFormalParameterAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ProbabilityMassFunction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group__0__Impl
+	rule__ProbabilityMassFunction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group__1__Impl
+	rule__ProbabilityMassFunction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1()); }
+
+	'ProbabilityMassFunction' 
+
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group__2__Impl
+	rule__ProbabilityMassFunction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group__3__Impl
+	rule__ProbabilityMassFunction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3()); }
+(rule__ProbabilityMassFunction__Group_3__0)?
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProbabilityMassFunction__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group_3__0__Impl
+	rule__ProbabilityMassFunction__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0()); }
+
+	'sample' 
+
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group_3__1__Impl
+	rule__ProbabilityMassFunction__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group_3__2__Impl
+	rule__ProbabilityMassFunction__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_2()); }
+(rule__ProbabilityMassFunction__SampleAssignment_3_2)
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group_3__3__Impl
+	rule__ProbabilityMassFunction__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3_3()); }
+(rule__ProbabilityMassFunction__Group_3_3__0)*
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProbabilityMassFunction__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group_3_3__0__Impl
+	rule__ProbabilityMassFunction__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProbabilityMassFunction__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProbabilityMassFunction__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_3_1()); }
+(rule__ProbabilityMassFunction__SampleAssignment_3_3_1)
+{ after(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__BoxedPDF__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group__0__Impl
+	rule__BoxedPDF__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0()); }
+(
+
+)
+{ after(grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group__1__Impl
+	rule__BoxedPDF__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1()); }
+
+	'BoxedPDF' 
+
+{ after(grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group__2__Impl
+	rule__BoxedPDF__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group__3__Impl
+	rule__BoxedPDF__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getGroup_3()); }
+(rule__BoxedPDF__Group_3__0)?
+{ after(grammarAccess.getBoxedPDFAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__BoxedPDF__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group_3__0__Impl
+	rule__BoxedPDF__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0()); }
+
+	'sample' 
+
+{ after(grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group_3__1__Impl
+	rule__BoxedPDF__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group_3__2__Impl
+	rule__BoxedPDF__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_2()); }
+(rule__BoxedPDF__SampleAssignment_3_2)
+{ after(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group_3__3__Impl
+	rule__BoxedPDF__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getGroup_3_3()); }
+(rule__BoxedPDF__Group_3_3__0)*
+{ after(grammarAccess.getBoxedPDFAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__BoxedPDF__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group_3_3__0__Impl
+	rule__BoxedPDF__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BoxedPDF__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BoxedPDF__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_3_1()); }
+(rule__BoxedPDF__SampleAssignment_3_3_1)
+{ after(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NormalDistribution__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NormalDistribution__Group__0__Impl
+	rule__NormalDistribution__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0()); }
+
+	'NormalDistribution' 
+
+{ after(grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NormalDistribution__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NormalDistribution__Group__1__Impl
+	rule__NormalDistribution__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NormalDistribution__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NormalDistribution__Group__2__Impl
+	rule__NormalDistribution__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getMuKeyword_2()); }
+
+	'mu' 
+
+{ after(grammarAccess.getNormalDistributionAccess().getMuKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NormalDistribution__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NormalDistribution__Group__3__Impl
+	rule__NormalDistribution__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getMuAssignment_3()); }
+(rule__NormalDistribution__MuAssignment_3)
+{ after(grammarAccess.getNormalDistributionAccess().getMuAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NormalDistribution__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NormalDistribution__Group__4__Impl
+	rule__NormalDistribution__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4()); }
+
+	'sigma' 
+
+{ after(grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NormalDistribution__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NormalDistribution__Group__5__Impl
+	rule__NormalDistribution__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getSigmaAssignment_5()); }
+(rule__NormalDistribution__SigmaAssignment_5)
+{ after(grammarAccess.getNormalDistributionAccess().getSigmaAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NormalDistribution__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NormalDistribution__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ExponentialDistribution__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExponentialDistribution__Group__0__Impl
+	rule__ExponentialDistribution__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExponentialDistribution__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0()); }
+
+	'ExponentialDistribution' 
+
+{ after(grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExponentialDistribution__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExponentialDistribution__Group__1__Impl
+	rule__ExponentialDistribution__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExponentialDistribution__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExponentialDistribution__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExponentialDistribution__Group__2__Impl
+	rule__ExponentialDistribution__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExponentialDistribution__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExponentialDistributionAccess().getRateKeyword_2()); }
+
+	'rate' 
+
+{ after(grammarAccess.getExponentialDistributionAccess().getRateKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExponentialDistribution__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExponentialDistribution__Group__3__Impl
+	rule__ExponentialDistribution__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExponentialDistribution__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExponentialDistributionAccess().getRateAssignment_3()); }
+(rule__ExponentialDistribution__RateAssignment_3)
+{ after(grammarAccess.getExponentialDistributionAccess().getRateAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExponentialDistribution__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExponentialDistribution__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExponentialDistribution__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EBigInteger__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EBigInteger__Group__0__Impl
+	rule__EBigInteger__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EBigInteger__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEBigIntegerAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEBigIntegerAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EBigInteger__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EBigInteger__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EBigInteger__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEBigIntegerAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getEBigIntegerAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EBigDecimal__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EBigDecimal__Group__0__Impl
+	rule__EBigDecimal__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EBigDecimal__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_0()); }
+(	RULE_INT)?
+{ after(grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EBigDecimal__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EBigDecimal__Group__1__Impl
+	rule__EBigDecimal__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EBigDecimal__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEBigDecimalAccess().getFullStopKeyword_1()); }
+
+	'.' 
+
+{ after(grammarAccess.getEBigDecimalAccess().getFullStopKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EBigDecimal__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EBigDecimal__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EBigDecimal__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_2()); }
+	RULE_INT
+{ after(grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Sample__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Sample__Group__0__Impl
+	rule__Sample__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getSampleKeyword_0()); }
+
+	'Sample' 
+
+{ after(grammarAccess.getSampleAccess().getSampleKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Sample__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Sample__Group__1__Impl
+	rule__Sample__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Sample__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Sample__Group__2__Impl
+	rule__Sample__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getProbabilityKeyword_2()); }
+
+	'probability' 
+
+{ after(grammarAccess.getSampleAccess().getProbabilityKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Sample__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Sample__Group__3__Impl
+	rule__Sample__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getProbabilityAssignment_3()); }
+(rule__Sample__ProbabilityAssignment_3)
+{ after(grammarAccess.getSampleAccess().getProbabilityAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Sample__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Sample__Group__4__Impl
+	rule__Sample__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getValueKeyword_4()); }
+
+	'value' 
+
+{ after(grammarAccess.getSampleAccess().getValueKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Sample__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Sample__Group__5__Impl
+	rule__Sample__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getValueAssignment_5()); }
+(rule__Sample__ValueAssignment_5)
+{ after(grammarAccess.getSampleAccess().getValueAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Sample__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Sample__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ContinuousSample__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousSample__Group__0__Impl
+	rule__ContinuousSample__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0()); }
+
+	'ContinuousSample' 
+
+{ after(grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousSample__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousSample__Group__1__Impl
+	rule__ContinuousSample__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousSample__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousSample__Group__2__Impl
+	rule__ContinuousSample__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getValueKeyword_2()); }
+
+	'value' 
+
+{ after(grammarAccess.getContinuousSampleAccess().getValueKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousSample__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousSample__Group__3__Impl
+	rule__ContinuousSample__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getValueAssignment_3()); }
+(rule__ContinuousSample__ValueAssignment_3)
+{ after(grammarAccess.getContinuousSampleAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousSample__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousSample__Group__4__Impl
+	rule__ContinuousSample__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4()); }
+
+	'probability' 
+
+{ after(grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousSample__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousSample__Group__5__Impl
+	rule__ContinuousSample__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getProbabilityAssignment_5()); }
+(rule__ContinuousSample__ProbabilityAssignment_5)
+{ after(grammarAccess.getContinuousSampleAccess().getProbabilityAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousSample__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousSample__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ExplicitFunction__SpecificationAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getSpecificationEStringParserRuleCall_3_1_0()); }
+	ruleEString{ after(grammarAccess.getExplicitFunctionAccess().getSpecificationEStringParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExplicitFunction__ExpressionAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExplicitFunctionAccess().getExpressionExpressionParserRuleCall_4_1_0()); }
+	ruleExpression{ after(grammarAccess.getExplicitFunctionAccess().getExpressionExpressionParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__OperationAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getOperationTermOperationsParserRuleCall_3_1_0()); }
+	ruleTermOperations{ after(grammarAccess.getTermExpressionAccess().getOperationTermOperationsParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression__RightAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpressionAccess().getRightProductParserRuleCall_3_2_0()); }
+	ruleProduct{ after(grammarAccess.getTermExpressionAccess().getRightProductParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression2__LeftAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpression2Access().getLeftTermParserRuleCall_0_0()); }
+	ruleTerm{ after(grammarAccess.getTermExpression2Access().getLeftTermParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression2__OperationAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpression2Access().getOperationTermOperationsParserRuleCall_1_0()); }
+	ruleTermOperations{ after(grammarAccess.getTermExpression2Access().getOperationTermOperationsParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TermExpression2__RightAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTermExpression2Access().getRightProductParserRuleCall_2_0()); }
+	ruleProduct{ after(grammarAccess.getTermExpression2Access().getRightProductParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__OperationAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getOperationProductOperationsParserRuleCall_3_1_0()); }
+	ruleProductOperations{ after(grammarAccess.getProductExpressionAccess().getOperationProductOperationsParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression__RightAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpressionAccess().getRightPowerParserRuleCall_3_2_0()); }
+	rulePower{ after(grammarAccess.getProductExpressionAccess().getRightPowerParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression2__LeftAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpression2Access().getLeftProductParserRuleCall_0_0()); }
+	ruleProduct{ after(grammarAccess.getProductExpression2Access().getLeftProductParserRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression2__OperationAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpression2Access().getOperationProductOperationsParserRuleCall_1_0()); }
+	ruleProductOperations{ after(grammarAccess.getProductExpression2Access().getOperationProductOperationsParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProductExpression2__RightAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProductExpression2Access().getRightPowerParserRuleCall_2_0()); }
+	rulePower{ after(grammarAccess.getProductExpression2Access().getRightPowerParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__OperationAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getOperationCompareOperationsParserRuleCall_3_0()); }
+	ruleCompareOperations{ after(grammarAccess.getCompareExpressionAccess().getOperationCompareOperationsParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__LeftAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getLeftTermParserRuleCall_5_0()); }
+	ruleTerm{ after(grammarAccess.getCompareExpressionAccess().getLeftTermParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CompareExpression__RightAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCompareExpressionAccess().getRightTermParserRuleCall_7_0()); }
+	ruleTerm{ after(grammarAccess.getCompareExpressionAccess().getRightTermParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__BaseAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getBasePowerParserRuleCall_3_0()); }
+	rulePower{ after(grammarAccess.getPowerExpressionAccess().getBasePowerParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PowerExpression__ExponentAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPowerExpressionAccess().getExponentUnaryParserRuleCall_5_0()); }
+	ruleUnary{ after(grammarAccess.getPowerExpressionAccess().getExponentUnaryParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__OperationAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getOperationBooleanOperationsParserRuleCall_3_0()); }
+	ruleBooleanOperations{ after(grammarAccess.getBooleanOperatorExpressionAccess().getOperationBooleanOperationsParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__LeftAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getLeftBooleanExpressionParserRuleCall_5_0()); }
+	ruleBooleanExpression{ after(grammarAccess.getBooleanOperatorExpressionAccess().getLeftBooleanExpressionParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BooleanOperatorExpression__RightAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBooleanOperatorExpressionAccess().getRightBooleanExpressionParserRuleCall_7_0()); }
+	ruleBooleanExpression{ after(grammarAccess.getBooleanOperatorExpressionAccess().getRightBooleanExpressionParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NotExpression__InnerAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNotExpressionAccess().getInnerUnaryParserRuleCall_3_0()); }
+	ruleUnary{ after(grammarAccess.getNotExpressionAccess().getInnerUnaryParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NegativeExpression__InnerAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNegativeExpressionAccess().getInnerUnaryParserRuleCall_3_0()); }
+	ruleUnary{ after(grammarAccess.getNegativeExpressionAccess().getInnerUnaryParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__IfExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getIfExpressionBooleanExpressionParserRuleCall_3_0()); }
+	ruleBooleanExpression{ after(grammarAccess.getIfElseExpressionAccess().getIfExpressionBooleanExpressionParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__ElseExpressionAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getElseExpressionBooleanExpressionParserRuleCall_5_0()); }
+	ruleBooleanExpression{ after(grammarAccess.getIfElseExpressionAccess().getElseExpressionBooleanExpressionParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IfElseExpression__ConditionExpressionAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIfElseExpressionAccess().getConditionExpressionBooleanExpressionParserRuleCall_7_0()); }
+	ruleBooleanExpression{ after(grammarAccess.getIfElseExpressionAccess().getConditionExpressionBooleanExpressionParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__IdAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getIdEStringParserRuleCall_3_0()); }
+	ruleEString{ after(grammarAccess.getFunctionAccess().getIdEStringParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__ParametersAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_2_0()); }
+	ruleExpression{ after(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__ParametersAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_3_1_0()); }
+	ruleExpression{ after(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parenthesis__InnerExpressionAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParenthesisAccess().getInnerExpressionExpressionParserRuleCall_3_0()); }
+	ruleExpression{ after(grammarAccess.getParenthesisAccess().getInnerExpressionExpressionParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StringLiteral__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStringLiteralAccess().getValueEStringParserRuleCall_3_0()); }
+	ruleEString{ after(grammarAccess.getStringLiteralAccess().getValueEStringParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoolLiteral__ValueAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0()); }
+(
+{ before(grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0()); }
+
+	'value' 
+
+{ after(grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntLiteral__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntLiteralAccess().getValueEBigIntegerParserRuleCall_3_0()); }
+	ruleEBigInteger{ after(grammarAccess.getIntLiteralAccess().getValueEBigIntegerParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DoubleLiteral__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDoubleLiteralAccess().getValueEBigDecimalParserRuleCall_3_0()); }
+	ruleEBigDecimal{ after(grammarAccess.getDoubleLiteralAccess().getValueEBigDecimalParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FormalParameter__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFormalParameterAccess().getNameEStringParserRuleCall_2_0()); }
+	ruleEString{ after(grammarAccess.getFormalParameterAccess().getNameEStringParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__SampleAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0()); }
+	ruleSample{ after(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProbabilityMassFunction__SampleAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0()); }
+	ruleSample{ after(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__SampleAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0()); }
+	ruleContinuousSample{ after(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BoxedPDF__SampleAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0()); }
+	ruleContinuousSample{ after(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__MuAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0()); }
+	ruleEBigDecimal{ after(grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NormalDistribution__SigmaAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0()); }
+	ruleEBigDecimal{ after(grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExponentialDistribution__RateAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0()); }
+	ruleEBigDecimal{ after(grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__ProbabilityAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0()); }
+	ruleEBigDecimal{ after(grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Sample__ValueAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0()); }
+(
+{ before(grammarAccess.getSampleAccess().getValueEObjectEStringParserRuleCall_5_0_1()); }
+	ruleEString{ after(grammarAccess.getSampleAccess().getValueEObjectEStringParserRuleCall_5_0_1()); }
+)
+{ after(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0()); }
+	ruleEBigDecimal{ after(grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousSample__ProbabilityAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0()); }
+	ruleEBigDecimal{ after(grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.tokens b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.tokens
new file mode 100644
index 00000000..17e56726
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.tokens
@@ -0,0 +1,111 @@
+RULE_ID=5
+T__29=29
+T__28=28
+T__62=62
+T__27=27
+T__26=26
+T__25=25
+T__24=24
+T__23=23
+T__22=22
+RULE_ANY_OTHER=10
+T__21=21
+T__20=20
+T__61=61
+T__60=60
+T__55=55
+T__56=56
+T__19=19
+T__57=57
+T__58=58
+T__51=51
+T__16=16
+T__52=52
+T__15=15
+T__53=53
+T__18=18
+T__54=54
+T__17=17
+T__12=12
+T__11=11
+T__14=14
+T__13=13
+T__59=59
+RULE_INT=6
+T__50=50
+T__42=42
+T__43=43
+T__40=40
+T__41=41
+T__46=46
+T__47=47
+T__44=44
+T__45=45
+T__48=48
+T__49=49
+RULE_SL_COMMENT=8
+RULE_ML_COMMENT=7
+T__30=30
+T__31=31
+RULE_STRING=4
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+RULE_WS=9
+'ContinuousSample'=62
+'mu'=54
+'rate'=57
+'BooleanOperations'=14
+'IfElseExpression'=33
+'right'=25
+'base'=27
+'BoxedPDF'=52
+'conditionExpression'=36
+'value'=45
+'inner'=31
+'Parenthesis'=41
+'.'=59
+'StringLiteral'=44
+'{'=16
+'expression'=19
+'CompareExpression'=22
+'FormalParameter'=49
+'PowerExpression'=26
+'ProbabilityMassFunction'=50
+'-'=58
+'NotExpression'=30
+'DoubleLiteral'=48
+','=40
+'Sample'=60
+'Literal'=43
+'sample'=51
+'sigma'=55
+'NormalDistribution'=53
+'BooleanOperatorExpression'=29
+'Function'=37
+'ExponentialDistribution'=56
+'ExplicitFunction'=15
+'ProductExpression'=21
+'IntLiteral'=47
+'probability'=61
+'operation'=23
+'CompareOperations'=13
+'exponent'=28
+'specification'=18
+'BoolLiteral'=46
+'}'=17
+'parameters'=39
+'TermOperations'=11
+'elseExpression'=35
+'TermExpression'=20
+'id'=38
+'innerExpression'=42
+'ProductOperations'=12
+'NegativeExpression'=32
+'left'=24
+'ifExpression'=34
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1Lexer.java b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1Lexer.java
new file mode 100644
index 00000000..2124ffb8
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1Lexer.java
@@ -0,0 +1,2965 @@
+package org.xtext.example.mydsl1.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalMyDsl1Lexer extends Lexer {
+    public static final int RULE_ID=5;
+    public static final int T__29=29;
+    public static final int T__28=28;
+    public static final int T__27=27;
+    public static final int T__62=62;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int T__21=21;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__20=20;
+    public static final int T__61=61;
+    public static final int T__60=60;
+    public static final int EOF=-1;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__19=19;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__16=16;
+    public static final int T__52=52;
+    public static final int T__15=15;
+    public static final int T__53=53;
+    public static final int T__18=18;
+    public static final int T__54=54;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__59=59;
+    public static final int RULE_INT=6;
+    public static final int T__50=50;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int RULE_STRING=4;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+    public InternalMyDsl1Lexer() {;} 
+    public InternalMyDsl1Lexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalMyDsl1Lexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g"; }
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:11:7: ( 'TermOperations' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:11:9: 'TermOperations'
+            {
+            match("TermOperations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__11"
+
+    // $ANTLR start "T__12"
+    public final void mT__12() throws RecognitionException {
+        try {
+            int _type = T__12;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:12:7: ( 'ProductOperations' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:12:9: 'ProductOperations'
+            {
+            match("ProductOperations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__12"
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:13:7: ( 'CompareOperations' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:13:9: 'CompareOperations'
+            {
+            match("CompareOperations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:14:7: ( 'BooleanOperations' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:14:9: 'BooleanOperations'
+            {
+            match("BooleanOperations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:15:7: ( 'ExplicitFunction' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:15:9: 'ExplicitFunction'
+            {
+            match("ExplicitFunction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:16:7: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:16:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:17:7: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:17:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:18:7: ( 'specification' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:18:9: 'specification'
+            {
+            match("specification"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:19:7: ( 'expression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:19:9: 'expression'
+            {
+            match("expression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:20:7: ( 'TermExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:20:9: 'TermExpression'
+            {
+            match("TermExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:21:7: ( 'ProductExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:21:9: 'ProductExpression'
+            {
+            match("ProductExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:22:7: ( 'CompareExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:22:9: 'CompareExpression'
+            {
+            match("CompareExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:23:7: ( 'operation' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:23:9: 'operation'
+            {
+            match("operation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:24:7: ( 'left' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:24:9: 'left'
+            {
+            match("left"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:25:7: ( 'right' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:25:9: 'right'
+            {
+            match("right"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:26:7: ( 'PowerExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:26:9: 'PowerExpression'
+            {
+            match("PowerExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:27:7: ( 'base' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:27:9: 'base'
+            {
+            match("base"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:28:7: ( 'exponent' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:28:9: 'exponent'
+            {
+            match("exponent"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:29:7: ( 'BooleanOperatorExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:29:9: 'BooleanOperatorExpression'
+            {
+            match("BooleanOperatorExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:30:7: ( 'NotExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:30:9: 'NotExpression'
+            {
+            match("NotExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:31:7: ( 'inner' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:31:9: 'inner'
+            {
+            match("inner"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:32:7: ( 'NegativeExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:32:9: 'NegativeExpression'
+            {
+            match("NegativeExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:33:7: ( 'IfElseExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:33:9: 'IfElseExpression'
+            {
+            match("IfElseExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:34:7: ( 'ifExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:34:9: 'ifExpression'
+            {
+            match("ifExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:35:7: ( 'elseExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:35:9: 'elseExpression'
+            {
+            match("elseExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:36:7: ( 'conditionExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:36:9: 'conditionExpression'
+            {
+            match("conditionExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:37:7: ( 'Function' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:37:9: 'Function'
+            {
+            match("Function"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:38:7: ( 'id' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:38:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:39:7: ( 'parameters' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:39:9: 'parameters'
+            {
+            match("parameters"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:40:7: ( ',' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:40:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:41:7: ( 'Parenthesis' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:41:9: 'Parenthesis'
+            {
+            match("Parenthesis"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:42:7: ( 'innerExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:42:9: 'innerExpression'
+            {
+            match("innerExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:43:7: ( 'Literal' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:43:9: 'Literal'
+            {
+            match("Literal"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:44:7: ( 'StringLiteral' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:44:9: 'StringLiteral'
+            {
+            match("StringLiteral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:45:7: ( 'value' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:45:9: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:46:7: ( 'BoolLiteral' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:46:9: 'BoolLiteral'
+            {
+            match("BoolLiteral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:47:7: ( 'IntLiteral' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:47:9: 'IntLiteral'
+            {
+            match("IntLiteral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:48:7: ( 'DoubleLiteral' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:48:9: 'DoubleLiteral'
+            {
+            match("DoubleLiteral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:49:7: ( 'FormalParameter' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:49:9: 'FormalParameter'
+            {
+            match("FormalParameter"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:50:7: ( 'ProbabilityMassFunction' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:50:9: 'ProbabilityMassFunction'
+            {
+            match("ProbabilityMassFunction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:51:7: ( 'sample' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:51:9: 'sample'
+            {
+            match("sample"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:52:7: ( 'BoxedPDF' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:52:9: 'BoxedPDF'
+            {
+            match("BoxedPDF"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:53:7: ( 'NormalDistribution' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:53:9: 'NormalDistribution'
+            {
+            match("NormalDistribution"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:54:7: ( 'mu' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:54:9: 'mu'
+            {
+            match("mu"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:55:7: ( 'sigma' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:55:9: 'sigma'
+            {
+            match("sigma"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:56:7: ( 'ExponentialDistribution' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:56:9: 'ExponentialDistribution'
+            {
+            match("ExponentialDistribution"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:57:7: ( 'rate' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:57:9: 'rate'
+            {
+            match("rate"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:58:7: ( '-' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:58:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:59:7: ( '.' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:59:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:60:7: ( 'Sample' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:60:9: 'Sample'
+            {
+            match("Sample"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:61:7: ( 'probability' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:61:9: 'probability'
+            {
+            match("probability"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:62:7: ( 'ContinuousSample' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:62:9: 'ContinuousSample'
+            {
+            match("ContinuousSample"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8003:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8003:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8003:11: ( '^' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='^') ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8003:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8003:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8005:10: ( ( '0' .. '9' )+ )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8005:12: ( '0' .. '9' )+
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8005:12: ( '0' .. '9' )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8005:13: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0=='\"') ) {
+                alt6=1;
+            }
+            else if ( (LA6_0=='\'') ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop4:
+                    do {
+                        int alt4=3;
+                        int LA4_0 = input.LA(1);
+
+                        if ( (LA4_0=='\\') ) {
+                            alt4=1;
+                        }
+                        else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) {
+                            alt4=2;
+                        }
+
+
+                        switch (alt4) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:66: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop4;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop5:
+                    do {
+                        int alt5=3;
+                        int LA5_0 = input.LA(1);
+
+                        if ( (LA5_0=='\\') ) {
+                            alt5=1;
+                        }
+                        else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFF')) ) {
+                            alt5=2;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8007:137: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop5;
+                        }
+                    } while (true);
+
+                    match('\''); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8009:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8009:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8009:24: ( options {greedy=false; } : . )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0=='*') ) {
+                    int LA7_1 = input.LA(2);
+
+                    if ( (LA7_1=='/') ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFF')) ) {
+                        alt7=1;
+                    }
+
+
+                }
+                else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8009:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8011:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8011:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8011:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8011:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop8;
+                }
+            } while (true);
+
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8011:40: ( ( '\\r' )? '\\n' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8011:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8011:41: ( '\\r' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0=='\r') ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8011:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8013:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8013:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8013:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8015:16: ( . )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:8015:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=59;
+        alt12 = dfa12.predict(input);
+        switch (alt12) {
+            case 1 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:10: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:16: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:22: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:28: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:34: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:40: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:46: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:52: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:58: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:64: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:70: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:76: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:82: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:88: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:94: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:100: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:106: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:112: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:118: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:124: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:130: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:136: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:142: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:148: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:154: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:160: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:166: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:172: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:178: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:184: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:190: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:196: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:202: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:208: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:214: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:220: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:226: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:232: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:238: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:244: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:250: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:256: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:262: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:268: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:274: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:280: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:286: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:292: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:298: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:304: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:310: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:316: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:322: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:330: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:339: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:351: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:367: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:383: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1:391: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA12_eotS =
+        "\1\uffff\5\45\2\uffff\14\45\1\uffff\5\45\2\uffff\1\43\2\uffff\3"+
+        "\43\2\uffff\1\45\1\uffff\6\45\2\uffff\16\45\1\152\7\45\1\uffff\5"+
+        "\45\1\167\7\uffff\30\45\1\uffff\14\45\1\uffff\22\45\1\u00b3\1\45"+
+        "\1\u00b5\1\u00b6\40\45\1\u00d7\4\45\1\uffff\1\u00dc\2\uffff\3\45"+
+        "\1\u00e1\13\45\1\u00ed\17\45\1\u00fd\1\uffff\4\45\1\uffff\4\45\1"+
+        "\uffff\12\45\1\u0110\1\uffff\17\45\1\uffff\20\45\1\u0132\1\45\1"+
+        "\uffff\15\45\1\u0141\4\45\1\u0146\12\45\1\u0151\3\45\1\uffff\16"+
+        "\45\1\uffff\4\45\1\uffff\1\45\1\u0168\10\45\1\uffff\24\45\1\u0185"+
+        "\1\45\1\uffff\6\45\1\u018d\2\45\1\u0190\11\45\1\u019a\4\45\1\u019f"+
+        "\3\45\1\uffff\7\45\1\uffff\2\45\1\uffff\1\u01ac\10\45\1\uffff\4"+
+        "\45\1\uffff\10\45\1\u01c1\3\45\1\uffff\16\45\1\u01d4\1\45\1\u01d6"+
+        "\3\45\1\uffff\3\45\1\u01dd\1\u01de\1\u01df\1\u01e0\13\45\1\uffff"+
+        "\1\u01ec\1\uffff\6\45\4\uffff\3\45\1\u01f6\7\45\1\uffff\2\45\1\u0200"+
+        "\2\45\1\u0203\3\45\1\uffff\2\45\1\u0209\2\45\1\u020c\3\45\1\uffff"+
+        "\1\u0210\1\45\1\uffff\1\u0212\1\u0213\1\45\1\u0215\1\u0216\1\uffff"+
+        "\1\u0217\1\45\1\uffff\3\45\1\uffff\1\45\2\uffff\1\45\3\uffff\2\45"+
+        "\1\u0220\1\u0221\4\45\2\uffff\1\u0226\3\45\1\uffff\6\45\1\u0230"+
+        "\1\45\1\u0232\1\uffff\1\45\1\uffff\1\u0234\1\uffff";
+    static final String DFA12_eofS =
+        "\u0235\uffff";
+    static final String DFA12_minS =
+        "\1\0\1\145\1\141\2\157\1\170\2\uffff\1\141\1\154\1\160\1\145\2"+
+        "\141\1\145\1\144\1\146\2\157\1\141\1\uffff\1\151\2\141\1\157\1\165"+
+        "\2\uffff\1\101\2\uffff\2\0\1\52\2\uffff\1\162\1\uffff\1\157\1\167"+
+        "\1\162\1\155\1\157\1\160\2\uffff\1\145\1\155\1\147\1\160\1\163\1"+
+        "\145\1\146\1\147\1\164\1\163\1\162\1\147\1\156\1\105\1\60\1\105"+
+        "\1\164\2\156\2\162\1\157\1\uffff\1\164\1\162\1\155\1\154\1\165\1"+
+        "\60\7\uffff\1\155\1\142\2\145\1\160\1\164\1\154\1\145\1\154\1\143"+
+        "\1\160\1\155\1\157\1\145\1\162\1\164\1\150\2\145\1\105\1\155\1\141"+
+        "\1\145\1\170\1\uffff\1\154\1\114\1\144\1\143\1\155\1\141\1\142\1"+
+        "\145\1\151\1\160\1\165\1\142\1\uffff\1\105\1\165\1\141\1\162\1\156"+
+        "\1\141\1\151\1\114\1\144\1\151\1\156\1\151\1\154\1\141\1\145\1\156"+
+        "\1\105\1\141\1\60\1\164\2\60\1\170\1\141\1\164\1\162\1\160\1\163"+
+        "\2\151\1\164\1\141\1\155\1\141\1\162\1\156\1\154\1\145\1\154\1\160"+
+        "\1\170\1\143\1\142\1\105\1\164\1\162\1\156\1\141\1\151\1\120\1\143"+
+        "\1\145\1\146\1\145\1\60\1\163\1\145\1\170\1\164\1\uffff\1\60\2\uffff"+
+        "\1\160\1\154\1\151\1\60\1\162\1\145\2\164\1\151\1\154\1\145\1\142"+
+        "\1\141\1\147\1\145\1\60\2\145\1\160\1\164\1\151\1\170\1\150\1\145"+
+        "\1\165\1\156\1\164\1\104\1\151\1\156\1\151\1\60\1\uffff\1\163\1"+
+        "\156\1\160\1\151\1\uffff\1\162\1\104\1\166\1\170\1\uffff\1\145\1"+
+        "\105\1\145\1\151\1\157\1\120\1\164\1\151\1\154\1\114\1\60\1\uffff"+
+        "\1\114\2\162\1\105\1\154\1\160\1\145\1\105\1\157\1\117\1\145\1\106"+
+        "\2\164\1\143\1\uffff\1\151\1\164\1\162\1\157\1\145\1\151\1\145\1"+
+        "\160\1\163\1\170\1\162\1\157\1\156\1\141\1\145\1\154\1\60\1\151"+
+        "\1\uffff\1\151\1\141\1\145\1\160\1\170\1\151\1\162\1\163\1\160\1"+
+        "\170\1\165\1\160\1\162\1\60\1\106\1\151\1\141\1\157\1\60\1\145\1"+
+        "\156\2\163\1\105\1\162\1\163\1\160\1\141\1\156\1\60\2\162\1\151"+
+        "\1\uffff\3\164\1\163\1\145\1\160\1\164\1\145\1\151\1\145\1\160\1"+
+        "\163\1\145\1\141\1\uffff\1\165\1\141\1\164\1\156\1\uffff\1\163\1"+
+        "\60\1\163\1\164\1\170\1\145\1\151\1\162\1\154\1\105\1\uffff\1\141"+
+        "\1\163\1\164\2\145\1\151\1\163\2\162\1\171\2\163\2\162\1\123\1\162"+
+        "\1\154\1\156\1\154\1\151\1\60\1\163\1\uffff\1\151\1\162\1\160\1"+
+        "\163\1\157\1\145\1\60\1\170\1\155\1\60\1\171\2\162\1\157\1\151\1"+
+        "\141\1\145\1\115\1\163\1\60\1\141\1\145\2\141\1\60\1\143\1\104\1"+
+        "\157\1\uffff\1\151\1\157\1\151\1\162\1\163\1\156\1\163\1\uffff\1"+
+        "\160\1\145\1\uffff\1\60\2\141\1\156\1\157\1\164\1\163\1\141\1\151"+
+        "\1\uffff\1\164\1\163\1\155\1\164\1\uffff\1\164\1\151\1\156\1\157"+
+        "\1\156\1\142\1\145\1\151\1\60\1\163\1\162\1\164\1\uffff\2\154\1"+
+        "\163\1\156\1\151\2\163\1\157\1\151\1\163\1\160\2\151\1\163\1\60"+
+        "\1\156\1\60\1\165\1\163\1\157\1\uffff\1\151\2\145\4\60\1\157\1\151"+
+        "\1\163\1\156\1\157\1\151\1\154\1\157\1\162\1\157\1\164\1\uffff\1"+
+        "\60\1\uffff\1\164\1\163\1\156\1\157\1\163\1\162\4\uffff\1\156\1"+
+        "\157\1\106\1\60\1\156\1\157\1\145\1\156\1\105\1\156\1\162\1\uffff"+
+        "\2\151\1\60\1\156\1\163\1\60\1\163\1\156\1\165\1\uffff\1\163\1\156"+
+        "\1\60\1\163\1\170\1\60\1\151\2\157\1\uffff\1\60\1\151\1\uffff\2"+
+        "\60\1\156\2\60\1\uffff\1\60\1\160\1\uffff\1\142\2\156\1\uffff\1"+
+        "\157\2\uffff\1\143\3\uffff\1\162\1\165\2\60\1\156\1\164\1\145\1"+
+        "\164\2\uffff\1\60\1\151\1\163\1\151\1\uffff\1\157\1\163\1\157\1"+
+        "\156\1\151\1\156\1\60\1\157\1\60\1\uffff\1\156\1\uffff\1\60\1\uffff";
+    static final String DFA12_maxS =
+        "\1\uffff\1\145\1\162\2\157\1\170\2\uffff\1\160\1\170\1\160\1\145"+
+        "\1\151\1\141\1\157\2\156\1\157\1\165\1\162\1\uffff\1\151\1\164\1"+
+        "\141\1\157\1\165\2\uffff\1\172\2\uffff\2\uffff\1\57\2\uffff\1\162"+
+        "\1\uffff\1\157\1\167\1\162\1\156\1\170\1\160\2\uffff\1\145\1\155"+
+        "\1\147\1\160\1\163\1\145\1\146\1\147\1\164\1\163\1\164\1\147\1\156"+
+        "\1\105\1\172\1\105\1\164\2\156\2\162\1\157\1\uffff\1\164\1\162\1"+
+        "\155\1\154\1\165\1\172\7\uffff\1\155\1\144\2\145\1\160\1\164\1\154"+
+        "\1\145\1\157\1\143\1\160\1\155\1\162\1\145\1\162\1\164\1\150\2\145"+
+        "\1\105\1\155\1\141\1\145\1\170\1\uffff\1\154\1\114\1\144\1\143\1"+
+        "\155\1\141\1\142\1\145\1\151\1\160\1\165\1\142\1\uffff\1\117\1\165"+
+        "\1\141\1\162\1\156\1\141\1\151\1\145\1\144\1\151\1\156\1\151\1\154"+
+        "\1\141\1\145\1\156\1\105\1\141\1\172\1\164\2\172\1\170\1\141\1\164"+
+        "\1\162\1\160\1\163\2\151\1\164\1\141\1\155\1\141\1\162\1\156\1\154"+
+        "\1\145\1\154\1\160\1\170\1\143\1\142\1\105\1\164\1\162\1\156\1\141"+
+        "\1\151\1\120\1\143\1\145\1\146\1\145\1\172\1\163\1\145\1\170\1\164"+
+        "\1\uffff\1\172\2\uffff\1\160\1\154\1\151\1\172\1\162\1\145\2\164"+
+        "\1\151\1\154\1\145\1\142\1\141\1\147\1\145\1\172\2\145\1\160\1\164"+
+        "\1\151\1\170\1\150\1\145\1\165\1\156\1\164\1\104\1\151\1\156\1\151"+
+        "\1\172\1\uffff\1\163\1\156\1\160\1\151\1\uffff\1\162\1\104\1\166"+
+        "\1\170\1\uffff\1\145\1\105\1\145\1\151\1\157\1\120\1\164\1\151\1"+
+        "\154\1\114\1\172\1\uffff\1\114\2\162\1\117\1\154\1\160\1\145\1\117"+
+        "\1\157\1\117\1\145\1\106\2\164\1\143\1\uffff\1\151\1\164\1\162\1"+
+        "\157\1\145\1\151\1\145\1\160\1\163\1\170\1\162\1\157\1\156\1\141"+
+        "\1\145\1\154\1\172\1\151\1\uffff\1\151\1\141\1\145\1\160\1\170\1"+
+        "\151\1\162\1\163\1\160\1\170\1\165\1\160\1\162\1\172\1\106\1\151"+
+        "\1\141\1\157\1\172\1\145\1\156\2\163\1\105\1\162\1\163\1\160\1\141"+
+        "\1\156\1\172\2\162\1\151\1\uffff\3\164\1\163\1\145\1\160\1\164\1"+
+        "\145\1\151\1\145\1\160\1\163\1\145\1\141\1\uffff\1\165\1\141\1\164"+
+        "\1\156\1\uffff\1\163\1\172\1\163\1\164\1\170\1\145\1\151\1\162\1"+
+        "\154\1\105\1\uffff\1\141\1\163\1\164\2\145\1\151\1\163\2\162\1\171"+
+        "\2\163\2\162\1\123\1\162\1\154\1\156\1\154\1\151\1\172\1\163\1\uffff"+
+        "\1\151\1\162\1\160\1\163\1\157\1\145\1\172\1\170\1\155\1\172\1\171"+
+        "\2\162\1\157\1\151\1\141\1\145\1\115\1\163\1\172\1\141\1\145\2\141"+
+        "\1\172\1\143\1\104\1\157\1\uffff\1\151\1\157\1\151\1\162\1\163\1"+
+        "\156\1\163\1\uffff\1\160\1\145\1\uffff\1\172\2\141\1\156\1\157\1"+
+        "\164\1\163\1\141\1\151\1\uffff\1\164\1\163\1\155\1\164\1\uffff\1"+
+        "\164\1\151\1\156\1\157\1\156\1\142\1\145\1\151\1\172\1\163\1\162"+
+        "\1\164\1\uffff\2\154\1\163\1\156\1\151\2\163\1\157\1\151\1\163\1"+
+        "\160\1\157\1\151\1\163\1\172\1\156\1\172\1\165\1\163\1\157\1\uffff"+
+        "\1\151\2\145\4\172\1\157\1\151\1\163\1\156\1\157\1\151\1\154\1\157"+
+        "\1\162\1\157\1\164\1\uffff\1\172\1\uffff\1\164\1\163\1\156\1\157"+
+        "\1\163\1\162\4\uffff\1\156\1\157\1\106\1\172\1\156\1\157\1\145\1"+
+        "\156\1\105\1\156\1\162\1\uffff\2\151\1\172\1\156\1\163\1\172\1\163"+
+        "\1\156\1\165\1\uffff\1\163\1\156\1\172\1\163\1\170\1\172\1\151\2"+
+        "\157\1\uffff\1\172\1\151\1\uffff\2\172\1\156\2\172\1\uffff\1\172"+
+        "\1\160\1\uffff\1\142\2\156\1\uffff\1\157\2\uffff\1\143\3\uffff\1"+
+        "\162\1\165\2\172\1\156\1\164\1\145\1\164\2\uffff\1\172\1\151\1\163"+
+        "\1\151\1\uffff\1\157\1\163\1\157\1\156\1\151\1\156\1\172\1\157\1"+
+        "\172\1\uffff\1\156\1\uffff\1\172\1\uffff";
+    static final String DFA12_acceptS =
+        "\6\uffff\1\6\1\7\14\uffff\1\36\5\uffff\1\60\1\61\1\uffff\1\65\1"+
+        "\66\3\uffff\1\72\1\73\1\uffff\1\65\6\uffff\1\6\1\7\26\uffff\1\36"+
+        "\6\uffff\1\60\1\61\1\66\1\67\1\70\1\71\1\72\30\uffff\1\34\14\uffff"+
+        "\1\54\73\uffff\1\16\1\uffff\1\57\1\21\40\uffff\1\55\4\uffff\1\17"+
+        "\4\uffff\1\25\13\uffff\1\43\17\uffff\1\51\22\uffff\1\62\41\uffff"+
+        "\1\41\16\uffff\1\52\4\uffff\1\22\12\uffff\1\33\26\uffff\1\15\34"+
+        "\uffff\1\11\7\uffff\1\45\2\uffff\1\35\11\uffff\1\37\4\uffff\1\44"+
+        "\14\uffff\1\63\24\uffff\1\30\22\uffff\1\10\1\uffff\1\24\6\uffff"+
+        "\1\42\1\46\1\1\1\12\13\uffff\1\31\11\uffff\1\20\11\uffff\1\40\2"+
+        "\uffff\1\47\5\uffff\1\64\2\uffff\1\5\3\uffff\1\27\1\uffff\1\2\1"+
+        "\13\1\uffff\1\3\1\14\1\4\10\uffff\1\53\1\26\4\uffff\1\32\11\uffff"+
+        "\1\50\1\uffff\1\56\1\uffff\1\23";
+    static final String DFA12_specialS =
+        "\1\1\36\uffff\1\0\1\2\u0214\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\11\43\2\42\2\43\1\42\22\43\1\42\1\43\1\37\4\43\1\40\4\43\1"+
+            "\24\1\32\1\33\1\41\12\36\7\43\1\35\1\4\1\3\1\30\1\5\1\22\2\35"+
+            "\1\20\2\35\1\25\1\35\1\16\1\35\1\2\2\35\1\26\1\1\6\35\3\43\1"+
+            "\34\1\35\1\43\1\35\1\15\1\21\1\35\1\11\3\35\1\17\2\35\1\13\1"+
+            "\31\1\35\1\12\1\23\1\35\1\14\1\10\2\35\1\27\4\35\1\6\1\43\1"+
+            "\7\uff82\43",
+            "\1\44",
+            "\1\50\15\uffff\1\47\2\uffff\1\46",
+            "\1\51",
+            "\1\52",
+            "\1\53",
+            "",
+            "",
+            "\1\57\7\uffff\1\60\6\uffff\1\56",
+            "\1\62\13\uffff\1\61",
+            "\1\63",
+            "\1\64",
+            "\1\66\7\uffff\1\65",
+            "\1\67",
+            "\1\71\11\uffff\1\70",
+            "\1\74\1\uffff\1\73\7\uffff\1\72",
+            "\1\75\7\uffff\1\76",
+            "\1\77",
+            "\1\101\5\uffff\1\100",
+            "\1\102\20\uffff\1\103",
+            "",
+            "\1\105",
+            "\1\107\22\uffff\1\106",
+            "\1\110",
+            "\1\111",
+            "\1\112",
+            "",
+            "",
+            "\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "",
+            "\0\116",
+            "\0\116",
+            "\1\117\4\uffff\1\120",
+            "",
+            "",
+            "\1\122",
+            "",
+            "\1\123",
+            "\1\124",
+            "\1\125",
+            "\1\126\1\127",
+            "\1\130\10\uffff\1\131",
+            "\1\132",
+            "",
+            "",
+            "\1\133",
+            "\1\134",
+            "\1\135",
+            "\1\136",
+            "\1\137",
+            "\1\140",
+            "\1\141",
+            "\1\142",
+            "\1\143",
+            "\1\144",
+            "\1\146\1\uffff\1\145",
+            "\1\147",
+            "\1\150",
+            "\1\151",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\153",
+            "\1\154",
+            "\1\155",
+            "\1\156",
+            "\1\157",
+            "\1\160",
+            "\1\161",
+            "",
+            "\1\162",
+            "\1\163",
+            "\1\164",
+            "\1\165",
+            "\1\166",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\170",
+            "\1\172\1\uffff\1\171",
+            "\1\173",
+            "\1\174",
+            "\1\175",
+            "\1\176",
+            "\1\177",
+            "\1\u0080",
+            "\1\u0081\2\uffff\1\u0082",
+            "\1\u0083",
+            "\1\u0084",
+            "\1\u0085",
+            "\1\u0087\2\uffff\1\u0086",
+            "\1\u0088",
+            "\1\u0089",
+            "\1\u008a",
+            "\1\u008b",
+            "\1\u008c",
+            "\1\u008d",
+            "\1\u008e",
+            "\1\u008f",
+            "\1\u0090",
+            "\1\u0091",
+            "\1\u0092",
+            "",
+            "\1\u0093",
+            "\1\u0094",
+            "\1\u0095",
+            "\1\u0096",
+            "\1\u0097",
+            "\1\u0098",
+            "\1\u0099",
+            "\1\u009a",
+            "\1\u009b",
+            "\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
+            "",
+            "\1\u00a0\11\uffff\1\u009f",
+            "\1\u00a1",
+            "\1\u00a2",
+            "\1\u00a3",
+            "\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a8\30\uffff\1\u00a7",
+            "\1\u00a9",
+            "\1\u00aa",
+            "\1\u00ab",
+            "\1\u00ac",
+            "\1\u00ad",
+            "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\u00b2",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u00b4",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\12\45\7\uffff\4\45\1\u00e0\25\45\4\uffff\1\45\1\uffff\32"+
+            "\45",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1",
+            "\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\u0115\11\uffff\1\u0114",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\u011a\11\uffff\1\u0119",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0133",
+            "",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\u0150",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\u0166",
+            "",
+            "\1\u0167",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0186",
+            "",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u018e",
+            "\1\u018f",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u019b",
+            "\1\u019c",
+            "\1\u019d",
+            "\1\u019e",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "",
+            "\1\u01aa",
+            "\1\u01ab",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\u01b3",
+            "\1\u01b4",
+            "",
+            "\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8",
+            "",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0\5\uffff\1\u01d1",
+            "\1\u01d2",
+            "\1\u01d3",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01d5",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01d9",
+            "",
+            "\1\u01da",
+            "\1\u01db",
+            "\1\u01dc",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01e1",
+            "\1\u01e2",
+            "\1\u01e3",
+            "\1\u01e4",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "",
+            "",
+            "",
+            "",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01f7",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0201",
+            "\1\u0202",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0204",
+            "\1\u0205",
+            "\1\u0206",
+            "",
+            "\1\u0207",
+            "\1\u0208",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u020a",
+            "\1\u020b",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u020d",
+            "\1\u020e",
+            "\1\u020f",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0211",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0214",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0218",
+            "",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\u021b",
+            "",
+            "\1\u021c",
+            "",
+            "",
+            "\1\u021d",
+            "",
+            "",
+            "",
+            "\1\u021e",
+            "\1\u021f",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\u0225",
+            "",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0227",
+            "\1\u0228",
+            "\1\u0229",
+            "",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\u022c",
+            "\1\u022d",
+            "\1\u022e",
+            "\1\u022f",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0231",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\1\u0233",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    static class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA12_31 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_31>='\u0000' && LA12_31<='\uFFFF')) ) {s = 78;}
+
+                        else s = 35;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA12_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA12_0=='T') ) {s = 1;}
+
+                        else if ( (LA12_0=='P') ) {s = 2;}
+
+                        else if ( (LA12_0=='C') ) {s = 3;}
+
+                        else if ( (LA12_0=='B') ) {s = 4;}
+
+                        else if ( (LA12_0=='E') ) {s = 5;}
+
+                        else if ( (LA12_0=='{') ) {s = 6;}
+
+                        else if ( (LA12_0=='}') ) {s = 7;}
+
+                        else if ( (LA12_0=='s') ) {s = 8;}
+
+                        else if ( (LA12_0=='e') ) {s = 9;}
+
+                        else if ( (LA12_0=='o') ) {s = 10;}
+
+                        else if ( (LA12_0=='l') ) {s = 11;}
+
+                        else if ( (LA12_0=='r') ) {s = 12;}
+
+                        else if ( (LA12_0=='b') ) {s = 13;}
+
+                        else if ( (LA12_0=='N') ) {s = 14;}
+
+                        else if ( (LA12_0=='i') ) {s = 15;}
+
+                        else if ( (LA12_0=='I') ) {s = 16;}
+
+                        else if ( (LA12_0=='c') ) {s = 17;}
+
+                        else if ( (LA12_0=='F') ) {s = 18;}
+
+                        else if ( (LA12_0=='p') ) {s = 19;}
+
+                        else if ( (LA12_0==',') ) {s = 20;}
+
+                        else if ( (LA12_0=='L') ) {s = 21;}
+
+                        else if ( (LA12_0=='S') ) {s = 22;}
+
+                        else if ( (LA12_0=='v') ) {s = 23;}
+
+                        else if ( (LA12_0=='D') ) {s = 24;}
+
+                        else if ( (LA12_0=='m') ) {s = 25;}
+
+                        else if ( (LA12_0=='-') ) {s = 26;}
+
+                        else if ( (LA12_0=='.') ) {s = 27;}
+
+                        else if ( (LA12_0=='^') ) {s = 28;}
+
+                        else if ( (LA12_0=='A'||(LA12_0>='G' && LA12_0<='H')||(LA12_0>='J' && LA12_0<='K')||LA12_0=='M'||LA12_0=='O'||(LA12_0>='Q' && LA12_0<='R')||(LA12_0>='U' && LA12_0<='Z')||LA12_0=='_'||LA12_0=='a'||LA12_0=='d'||(LA12_0>='f' && LA12_0<='h')||(LA12_0>='j' && LA12_0<='k')||LA12_0=='n'||LA12_0=='q'||(LA12_0>='t' && LA12_0<='u')||(LA12_0>='w' && LA12_0<='z')) ) {s = 29;}
+
+                        else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 30;}
+
+                        else if ( (LA12_0=='\"') ) {s = 31;}
+
+                        else if ( (LA12_0=='\'') ) {s = 32;}
+
+                        else if ( (LA12_0=='/') ) {s = 33;}
+
+                        else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 34;}
+
+                        else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='#' && LA12_0<='&')||(LA12_0>='(' && LA12_0<='+')||(LA12_0>=':' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||LA12_0=='|'||(LA12_0>='~' && LA12_0<='\uFFFF')) ) {s = 35;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_32 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_32>='\u0000' && LA12_32<='\uFFFF')) ) {s = 78;}
+
+                        else s = 35;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1Parser.java b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1Parser.java
new file mode 100644
index 00000000..033b052f
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1Parser.java
@@ -0,0 +1,21690 @@
+package org.xtext.example.mydsl1.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.xtext.example.mydsl1.services.MyDsl1GrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalMyDsl1Parser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'TermOperations'", "'ProductOperations'", "'CompareOperations'", "'BooleanOperations'", "'ExplicitFunction'", "'{'", "'}'", "'specification'", "'expression'", "'TermExpression'", "'ProductExpression'", "'CompareExpression'", "'operation'", "'left'", "'right'", "'PowerExpression'", "'base'", "'exponent'", "'BooleanOperatorExpression'", "'NotExpression'", "'inner'", "'NegativeExpression'", "'IfElseExpression'", "'ifExpression'", "'elseExpression'", "'conditionExpression'", "'Function'", "'id'", "'parameters'", "','", "'Parenthesis'", "'innerExpression'", "'Literal'", "'StringLiteral'", "'value'", "'BoolLiteral'", "'IntLiteral'", "'DoubleLiteral'", "'FormalParameter'", "'ProbabilityMassFunction'", "'sample'", "'BoxedPDF'", "'NormalDistribution'", "'mu'", "'sigma'", "'ExponentialDistribution'", "'rate'", "'-'", "'.'", "'Sample'", "'probability'", "'ContinuousSample'"
+    };
+    public static final int RULE_ID=5;
+    public static final int T__29=29;
+    public static final int T__28=28;
+    public static final int T__62=62;
+    public static final int T__27=27;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int T__61=61;
+    public static final int T__60=60;
+    public static final int EOF=-1;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__19=19;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__16=16;
+    public static final int T__52=52;
+    public static final int T__15=15;
+    public static final int T__53=53;
+    public static final int T__18=18;
+    public static final int T__54=54;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__59=59;
+    public static final int RULE_INT=6;
+    public static final int T__50=50;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int RULE_STRING=4;
+    public static final int T__32=32;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+
+        public InternalMyDsl1Parser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalMyDsl1Parser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalMyDsl1Parser.tokenNames; }
+    public String getGrammarFileName() { return "../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g"; }
+
+
+     
+     	private MyDsl1GrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(MyDsl1GrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+    // $ANTLR start "entryRuleExplicitFunction"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:60:1: entryRuleExplicitFunction : ruleExplicitFunction EOF ;
+    public final void entryRuleExplicitFunction() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:61:1: ( ruleExplicitFunction EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:62:1: ruleExplicitFunction EOF
+            {
+             before(grammarAccess.getExplicitFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExplicitFunction_in_entryRuleExplicitFunction61);
+            ruleExplicitFunction();
+
+            state._fsp--;
+
+             after(grammarAccess.getExplicitFunctionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExplicitFunction68); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleExplicitFunction"
+
+
+    // $ANTLR start "ruleExplicitFunction"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:69:1: ruleExplicitFunction : ( ( rule__ExplicitFunction__Group__0 ) ) ;
+    public final void ruleExplicitFunction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:73:2: ( ( ( rule__ExplicitFunction__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:74:1: ( ( rule__ExplicitFunction__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:74:1: ( ( rule__ExplicitFunction__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:75:1: ( rule__ExplicitFunction__Group__0 )
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:76:1: ( rule__ExplicitFunction__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:76:2: rule__ExplicitFunction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__0_in_ruleExplicitFunction94);
+            rule__ExplicitFunction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExplicitFunctionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleExplicitFunction"
+
+
+    // $ANTLR start "entryRuleExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:88:1: entryRuleExpression : ruleExpression EOF ;
+    public final void entryRuleExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:89:1: ( ruleExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:90:1: ruleExpression EOF
+            {
+             before(grammarAccess.getExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_entryRuleExpression121);
+            ruleExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExpression128); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleExpression"
+
+
+    // $ANTLR start "ruleExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:97:1: ruleExpression : ( ( rule__Expression__Alternatives ) ) ;
+    public final void ruleExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:101:2: ( ( ( rule__Expression__Alternatives ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:102:1: ( ( rule__Expression__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:102:1: ( ( rule__Expression__Alternatives ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:103:1: ( rule__Expression__Alternatives )
+            {
+             before(grammarAccess.getExpressionAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:104:1: ( rule__Expression__Alternatives )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:104:2: rule__Expression__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Expression__Alternatives_in_ruleExpression154);
+            rule__Expression__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExpressionAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleExpression"
+
+
+    // $ANTLR start "entryRuleTerm"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:116:1: entryRuleTerm : ruleTerm EOF ;
+    public final void entryRuleTerm() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:117:1: ( ruleTerm EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:118:1: ruleTerm EOF
+            {
+             before(grammarAccess.getTermRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_entryRuleTerm181);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTerm188); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTerm"
+
+
+    // $ANTLR start "ruleTerm"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:125:1: ruleTerm : ( ( rule__Term__Alternatives ) ) ;
+    public final void ruleTerm() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:129:2: ( ( ( rule__Term__Alternatives ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:130:1: ( ( rule__Term__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:130:1: ( ( rule__Term__Alternatives ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:131:1: ( rule__Term__Alternatives )
+            {
+             before(grammarAccess.getTermAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:132:1: ( rule__Term__Alternatives )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:132:2: rule__Term__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Term__Alternatives_in_ruleTerm214);
+            rule__Term__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTerm"
+
+
+    // $ANTLR start "entryRuleProduct"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:144:1: entryRuleProduct : ruleProduct EOF ;
+    public final void entryRuleProduct() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:145:1: ( ruleProduct EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:146:1: ruleProduct EOF
+            {
+             before(grammarAccess.getProductRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProduct_in_entryRuleProduct241);
+            ruleProduct();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProduct248); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleProduct"
+
+
+    // $ANTLR start "ruleProduct"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:153:1: ruleProduct : ( ( rule__Product__Alternatives ) ) ;
+    public final void ruleProduct() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:157:2: ( ( ( rule__Product__Alternatives ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:158:1: ( ( rule__Product__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:158:1: ( ( rule__Product__Alternatives ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:159:1: ( rule__Product__Alternatives )
+            {
+             before(grammarAccess.getProductAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:160:1: ( rule__Product__Alternatives )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:160:2: rule__Product__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Product__Alternatives_in_ruleProduct274);
+            rule__Product__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProductAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleProduct"
+
+
+    // $ANTLR start "entryRulePower"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:172:1: entryRulePower : rulePower EOF ;
+    public final void entryRulePower() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:173:1: ( rulePower EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:174:1: rulePower EOF
+            {
+             before(grammarAccess.getPowerRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePower_in_entryRulePower301);
+            rulePower();
+
+            state._fsp--;
+
+             after(grammarAccess.getPowerRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePower308); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePower"
+
+
+    // $ANTLR start "rulePower"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:181:1: rulePower : ( ( rule__Power__Alternatives ) ) ;
+    public final void rulePower() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:185:2: ( ( ( rule__Power__Alternatives ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:186:1: ( ( rule__Power__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:186:1: ( ( rule__Power__Alternatives ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:187:1: ( rule__Power__Alternatives )
+            {
+             before(grammarAccess.getPowerAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:188:1: ( rule__Power__Alternatives )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:188:2: rule__Power__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Power__Alternatives_in_rulePower334);
+            rule__Power__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPowerAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePower"
+
+
+    // $ANTLR start "entryRuleUnary"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:200:1: entryRuleUnary : ruleUnary EOF ;
+    public final void entryRuleUnary() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:201:1: ( ruleUnary EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:202:1: ruleUnary EOF
+            {
+             before(grammarAccess.getUnaryRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleUnary_in_entryRuleUnary361);
+            ruleUnary();
+
+            state._fsp--;
+
+             after(grammarAccess.getUnaryRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnary368); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleUnary"
+
+
+    // $ANTLR start "ruleUnary"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:209:1: ruleUnary : ( ( rule__Unary__Alternatives ) ) ;
+    public final void ruleUnary() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:213:2: ( ( ( rule__Unary__Alternatives ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:214:1: ( ( rule__Unary__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:214:1: ( ( rule__Unary__Alternatives ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:215:1: ( rule__Unary__Alternatives )
+            {
+             before(grammarAccess.getUnaryAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:216:1: ( rule__Unary__Alternatives )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:216:2: rule__Unary__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Unary__Alternatives_in_ruleUnary394);
+            rule__Unary__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getUnaryAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleUnary"
+
+
+    // $ANTLR start "entryRuleBooleanExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:228:1: entryRuleBooleanExpression : ruleBooleanExpression EOF ;
+    public final void entryRuleBooleanExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:229:1: ( ruleBooleanExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:230:1: ruleBooleanExpression EOF
+            {
+             before(grammarAccess.getBooleanExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_entryRuleBooleanExpression421);
+            ruleBooleanExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getBooleanExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanExpression428); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleBooleanExpression"
+
+
+    // $ANTLR start "ruleBooleanExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:237:1: ruleBooleanExpression : ( ( rule__BooleanExpression__Alternatives ) ) ;
+    public final void ruleBooleanExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:241:2: ( ( ( rule__BooleanExpression__Alternatives ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:242:1: ( ( rule__BooleanExpression__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:242:1: ( ( rule__BooleanExpression__Alternatives ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:243:1: ( rule__BooleanExpression__Alternatives )
+            {
+             before(grammarAccess.getBooleanExpressionAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:244:1: ( rule__BooleanExpression__Alternatives )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:244:2: rule__BooleanExpression__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanExpression__Alternatives_in_ruleBooleanExpression454);
+            rule__BooleanExpression__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBooleanExpressionAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleBooleanExpression"
+
+
+    // $ANTLR start "entryRuleEString"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:256:1: entryRuleEString : ruleEString EOF ;
+    public final void entryRuleEString() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:257:1: ( ruleEString EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:258:1: ruleEString EOF
+            {
+             before(grammarAccess.getEStringRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_entryRuleEString481);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getEStringRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEString488); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEString"
+
+
+    // $ANTLR start "ruleEString"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:265:1: ruleEString : ( ( rule__EString__Alternatives ) ) ;
+    public final void ruleEString() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:269:2: ( ( ( rule__EString__Alternatives ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:270:1: ( ( rule__EString__Alternatives ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:270:1: ( ( rule__EString__Alternatives ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:271:1: ( rule__EString__Alternatives )
+            {
+             before(grammarAccess.getEStringAccess().getAlternatives()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:272:1: ( rule__EString__Alternatives )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:272:2: rule__EString__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EString__Alternatives_in_ruleEString514);
+            rule__EString__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEStringAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEString"
+
+
+    // $ANTLR start "entryRuleTermExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:284:1: entryRuleTermExpression : ruleTermExpression EOF ;
+    public final void entryRuleTermExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:285:1: ( ruleTermExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:286:1: ruleTermExpression EOF
+            {
+             before(grammarAccess.getTermExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermExpression_in_entryRuleTermExpression541);
+            ruleTermExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTermExpression548); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTermExpression"
+
+
+    // $ANTLR start "ruleTermExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:293:1: ruleTermExpression : ( ( rule__TermExpression__Group__0 ) ) ;
+    public final void ruleTermExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:297:2: ( ( ( rule__TermExpression__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:298:1: ( ( rule__TermExpression__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:298:1: ( ( rule__TermExpression__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:299:1: ( rule__TermExpression__Group__0 )
+            {
+             before(grammarAccess.getTermExpressionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:300:1: ( rule__TermExpression__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:300:2: rule__TermExpression__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__0_in_ruleTermExpression574);
+            rule__TermExpression__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermExpressionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTermExpression"
+
+
+    // $ANTLR start "entryRuleTermExpression2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:312:1: entryRuleTermExpression2 : ruleTermExpression2 EOF ;
+    public final void entryRuleTermExpression2() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:313:1: ( ruleTermExpression2 EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:314:1: ruleTermExpression2 EOF
+            {
+             before(grammarAccess.getTermExpression2Rule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermExpression2_in_entryRuleTermExpression2601);
+            ruleTermExpression2();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermExpression2Rule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTermExpression2608); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTermExpression2"
+
+
+    // $ANTLR start "ruleTermExpression2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:321:1: ruleTermExpression2 : ( ( rule__TermExpression2__Group__0 ) ) ;
+    public final void ruleTermExpression2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:325:2: ( ( ( rule__TermExpression2__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:326:1: ( ( rule__TermExpression2__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:326:1: ( ( rule__TermExpression2__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:327:1: ( rule__TermExpression2__Group__0 )
+            {
+             before(grammarAccess.getTermExpression2Access().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:328:1: ( rule__TermExpression2__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:328:2: rule__TermExpression2__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__Group__0_in_ruleTermExpression2634);
+            rule__TermExpression2__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermExpression2Access().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTermExpression2"
+
+
+    // $ANTLR start "entryRuleProductExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:340:1: entryRuleProductExpression : ruleProductExpression EOF ;
+    public final void entryRuleProductExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:341:1: ( ruleProductExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:342:1: ruleProductExpression EOF
+            {
+             before(grammarAccess.getProductExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_entryRuleProductExpression661);
+            ruleProductExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProductExpression668); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleProductExpression"
+
+
+    // $ANTLR start "ruleProductExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:349:1: ruleProductExpression : ( ( rule__ProductExpression__Group__0 ) ) ;
+    public final void ruleProductExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:353:2: ( ( ( rule__ProductExpression__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:354:1: ( ( rule__ProductExpression__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:354:1: ( ( rule__ProductExpression__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:355:1: ( rule__ProductExpression__Group__0 )
+            {
+             before(grammarAccess.getProductExpressionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:356:1: ( rule__ProductExpression__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:356:2: rule__ProductExpression__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__0_in_ruleProductExpression694);
+            rule__ProductExpression__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProductExpressionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleProductExpression"
+
+
+    // $ANTLR start "entryRuleProductExpression2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:368:1: entryRuleProductExpression2 : ruleProductExpression2 EOF ;
+    public final void entryRuleProductExpression2() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:369:1: ( ruleProductExpression2 EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:370:1: ruleProductExpression2 EOF
+            {
+             before(grammarAccess.getProductExpression2Rule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductExpression2_in_entryRuleProductExpression2721);
+            ruleProductExpression2();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductExpression2Rule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProductExpression2728); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleProductExpression2"
+
+
+    // $ANTLR start "ruleProductExpression2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:377:1: ruleProductExpression2 : ( ( rule__ProductExpression2__Group__0 ) ) ;
+    public final void ruleProductExpression2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:381:2: ( ( ( rule__ProductExpression2__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:382:1: ( ( rule__ProductExpression2__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:382:1: ( ( rule__ProductExpression2__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:383:1: ( rule__ProductExpression2__Group__0 )
+            {
+             before(grammarAccess.getProductExpression2Access().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:384:1: ( rule__ProductExpression2__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:384:2: rule__ProductExpression2__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__Group__0_in_ruleProductExpression2754);
+            rule__ProductExpression2__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProductExpression2Access().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleProductExpression2"
+
+
+    // $ANTLR start "entryRuleCompareExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:396:1: entryRuleCompareExpression : ruleCompareExpression EOF ;
+    public final void entryRuleCompareExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:397:1: ( ruleCompareExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:398:1: ruleCompareExpression EOF
+            {
+             before(grammarAccess.getCompareExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCompareExpression_in_entryRuleCompareExpression781);
+            ruleCompareExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getCompareExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCompareExpression788); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCompareExpression"
+
+
+    // $ANTLR start "ruleCompareExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:405:1: ruleCompareExpression : ( ( rule__CompareExpression__Group__0 ) ) ;
+    public final void ruleCompareExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:409:2: ( ( ( rule__CompareExpression__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:410:1: ( ( rule__CompareExpression__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:410:1: ( ( rule__CompareExpression__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:411:1: ( rule__CompareExpression__Group__0 )
+            {
+             before(grammarAccess.getCompareExpressionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:412:1: ( rule__CompareExpression__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:412:2: rule__CompareExpression__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__0_in_ruleCompareExpression814);
+            rule__CompareExpression__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getCompareExpressionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCompareExpression"
+
+
+    // $ANTLR start "entryRulePowerExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:424:1: entryRulePowerExpression : rulePowerExpression EOF ;
+    public final void entryRulePowerExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:425:1: ( rulePowerExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:426:1: rulePowerExpression EOF
+            {
+             before(grammarAccess.getPowerExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_entryRulePowerExpression841);
+            rulePowerExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getPowerExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePowerExpression848); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePowerExpression"
+
+
+    // $ANTLR start "rulePowerExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:433:1: rulePowerExpression : ( ( rule__PowerExpression__Group__0 ) ) ;
+    public final void rulePowerExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:437:2: ( ( ( rule__PowerExpression__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:438:1: ( ( rule__PowerExpression__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:438:1: ( ( rule__PowerExpression__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:439:1: ( rule__PowerExpression__Group__0 )
+            {
+             before(grammarAccess.getPowerExpressionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:440:1: ( rule__PowerExpression__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:440:2: rule__PowerExpression__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__0_in_rulePowerExpression874);
+            rule__PowerExpression__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPowerExpressionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePowerExpression"
+
+
+    // $ANTLR start "entryRuleBooleanOperatorExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:452:1: entryRuleBooleanOperatorExpression : ruleBooleanOperatorExpression EOF ;
+    public final void entryRuleBooleanOperatorExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:453:1: ( ruleBooleanOperatorExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:454:1: ruleBooleanOperatorExpression EOF
+            {
+             before(grammarAccess.getBooleanOperatorExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanOperatorExpression_in_entryRuleBooleanOperatorExpression901);
+            ruleBooleanOperatorExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getBooleanOperatorExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanOperatorExpression908); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleBooleanOperatorExpression"
+
+
+    // $ANTLR start "ruleBooleanOperatorExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:461:1: ruleBooleanOperatorExpression : ( ( rule__BooleanOperatorExpression__Group__0 ) ) ;
+    public final void ruleBooleanOperatorExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:465:2: ( ( ( rule__BooleanOperatorExpression__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:466:1: ( ( rule__BooleanOperatorExpression__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:466:1: ( ( rule__BooleanOperatorExpression__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:467:1: ( rule__BooleanOperatorExpression__Group__0 )
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:468:1: ( rule__BooleanOperatorExpression__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:468:2: rule__BooleanOperatorExpression__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__0_in_ruleBooleanOperatorExpression934);
+            rule__BooleanOperatorExpression__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleBooleanOperatorExpression"
+
+
+    // $ANTLR start "entryRuleNotExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:480:1: entryRuleNotExpression : ruleNotExpression EOF ;
+    public final void entryRuleNotExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:481:1: ( ruleNotExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:482:1: ruleNotExpression EOF
+            {
+             before(grammarAccess.getNotExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_entryRuleNotExpression961);
+            ruleNotExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getNotExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNotExpression968); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNotExpression"
+
+
+    // $ANTLR start "ruleNotExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:489:1: ruleNotExpression : ( ( rule__NotExpression__Group__0 ) ) ;
+    public final void ruleNotExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:493:2: ( ( ( rule__NotExpression__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:494:1: ( ( rule__NotExpression__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:494:1: ( ( rule__NotExpression__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:495:1: ( rule__NotExpression__Group__0 )
+            {
+             before(grammarAccess.getNotExpressionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:496:1: ( rule__NotExpression__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:496:2: rule__NotExpression__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__0_in_ruleNotExpression994);
+            rule__NotExpression__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNotExpressionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNotExpression"
+
+
+    // $ANTLR start "entryRuleNegativeExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:508:1: entryRuleNegativeExpression : ruleNegativeExpression EOF ;
+    public final void entryRuleNegativeExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:509:1: ( ruleNegativeExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:510:1: ruleNegativeExpression EOF
+            {
+             before(grammarAccess.getNegativeExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_entryRuleNegativeExpression1021);
+            ruleNegativeExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getNegativeExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNegativeExpression1028); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNegativeExpression"
+
+
+    // $ANTLR start "ruleNegativeExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:517:1: ruleNegativeExpression : ( ( rule__NegativeExpression__Group__0 ) ) ;
+    public final void ruleNegativeExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:521:2: ( ( ( rule__NegativeExpression__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:522:1: ( ( rule__NegativeExpression__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:522:1: ( ( rule__NegativeExpression__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:523:1: ( rule__NegativeExpression__Group__0 )
+            {
+             before(grammarAccess.getNegativeExpressionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:524:1: ( rule__NegativeExpression__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:524:2: rule__NegativeExpression__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__0_in_ruleNegativeExpression1054);
+            rule__NegativeExpression__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNegativeExpressionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNegativeExpression"
+
+
+    // $ANTLR start "entryRuleIfElseExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:536:1: entryRuleIfElseExpression : ruleIfElseExpression EOF ;
+    public final void entryRuleIfElseExpression() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:537:1: ( ruleIfElseExpression EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:538:1: ruleIfElseExpression EOF
+            {
+             before(grammarAccess.getIfElseExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleIfElseExpression_in_entryRuleIfElseExpression1081);
+            ruleIfElseExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getIfElseExpressionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIfElseExpression1088); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleIfElseExpression"
+
+
+    // $ANTLR start "ruleIfElseExpression"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:545:1: ruleIfElseExpression : ( ( rule__IfElseExpression__Group__0 ) ) ;
+    public final void ruleIfElseExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:549:2: ( ( ( rule__IfElseExpression__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:550:1: ( ( rule__IfElseExpression__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:550:1: ( ( rule__IfElseExpression__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:551:1: ( rule__IfElseExpression__Group__0 )
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:552:1: ( rule__IfElseExpression__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:552:2: rule__IfElseExpression__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__0_in_ruleIfElseExpression1114);
+            rule__IfElseExpression__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIfElseExpressionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleIfElseExpression"
+
+
+    // $ANTLR start "entryRuleFunction"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:564:1: entryRuleFunction : ruleFunction EOF ;
+    public final void entryRuleFunction() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:565:1: ( ruleFunction EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:566:1: ruleFunction EOF
+            {
+             before(grammarAccess.getFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleFunction_in_entryRuleFunction1141);
+            ruleFunction();
+
+            state._fsp--;
+
+             after(grammarAccess.getFunctionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunction1148); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunction"
+
+
+    // $ANTLR start "ruleFunction"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:573:1: ruleFunction : ( ( rule__Function__Group__0 ) ) ;
+    public final void ruleFunction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:577:2: ( ( ( rule__Function__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:578:1: ( ( rule__Function__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:578:1: ( ( rule__Function__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:579:1: ( rule__Function__Group__0 )
+            {
+             before(grammarAccess.getFunctionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:580:1: ( rule__Function__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:580:2: rule__Function__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__0_in_ruleFunction1174);
+            rule__Function__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFunctionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunction"
+
+
+    // $ANTLR start "entryRuleParenthesis"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:592:1: entryRuleParenthesis : ruleParenthesis EOF ;
+    public final void entryRuleParenthesis() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:593:1: ( ruleParenthesis EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:594:1: ruleParenthesis EOF
+            {
+             before(grammarAccess.getParenthesisRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_entryRuleParenthesis1201);
+            ruleParenthesis();
+
+            state._fsp--;
+
+             after(grammarAccess.getParenthesisRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleParenthesis1208); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleParenthesis"
+
+
+    // $ANTLR start "ruleParenthesis"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:601:1: ruleParenthesis : ( ( rule__Parenthesis__Group__0 ) ) ;
+    public final void ruleParenthesis() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:605:2: ( ( ( rule__Parenthesis__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:606:1: ( ( rule__Parenthesis__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:606:1: ( ( rule__Parenthesis__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:607:1: ( rule__Parenthesis__Group__0 )
+            {
+             before(grammarAccess.getParenthesisAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:608:1: ( rule__Parenthesis__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:608:2: rule__Parenthesis__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__0_in_ruleParenthesis1234);
+            rule__Parenthesis__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getParenthesisAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleParenthesis"
+
+
+    // $ANTLR start "entryRuleLiteral_Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:620:1: entryRuleLiteral_Impl : ruleLiteral_Impl EOF ;
+    public final void entryRuleLiteral_Impl() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:621:1: ( ruleLiteral_Impl EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:622:1: ruleLiteral_Impl EOF
+            {
+             before(grammarAccess.getLiteral_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_entryRuleLiteral_Impl1261);
+            ruleLiteral_Impl();
+
+            state._fsp--;
+
+             after(grammarAccess.getLiteral_ImplRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLiteral_Impl1268); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleLiteral_Impl"
+
+
+    // $ANTLR start "ruleLiteral_Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:629:1: ruleLiteral_Impl : ( ( rule__Literal_Impl__Group__0 ) ) ;
+    public final void ruleLiteral_Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:633:2: ( ( ( rule__Literal_Impl__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:634:1: ( ( rule__Literal_Impl__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:634:1: ( ( rule__Literal_Impl__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:635:1: ( rule__Literal_Impl__Group__0 )
+            {
+             before(grammarAccess.getLiteral_ImplAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:636:1: ( rule__Literal_Impl__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:636:2: rule__Literal_Impl__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Literal_Impl__Group__0_in_ruleLiteral_Impl1294);
+            rule__Literal_Impl__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getLiteral_ImplAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleLiteral_Impl"
+
+
+    // $ANTLR start "entryRuleStringLiteral"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:648:1: entryRuleStringLiteral : ruleStringLiteral EOF ;
+    public final void entryRuleStringLiteral() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:649:1: ( ruleStringLiteral EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:650:1: ruleStringLiteral EOF
+            {
+             before(grammarAccess.getStringLiteralRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral1321);
+            ruleStringLiteral();
+
+            state._fsp--;
+
+             after(grammarAccess.getStringLiteralRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStringLiteral1328); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleStringLiteral"
+
+
+    // $ANTLR start "ruleStringLiteral"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:657:1: ruleStringLiteral : ( ( rule__StringLiteral__Group__0 ) ) ;
+    public final void ruleStringLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:661:2: ( ( ( rule__StringLiteral__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:662:1: ( ( rule__StringLiteral__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:662:1: ( ( rule__StringLiteral__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:663:1: ( rule__StringLiteral__Group__0 )
+            {
+             before(grammarAccess.getStringLiteralAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:664:1: ( rule__StringLiteral__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:664:2: rule__StringLiteral__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__0_in_ruleStringLiteral1354);
+            rule__StringLiteral__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getStringLiteralAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleStringLiteral"
+
+
+    // $ANTLR start "entryRuleBoolLiteral"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:676:1: entryRuleBoolLiteral : ruleBoolLiteral EOF ;
+    public final void entryRuleBoolLiteral() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:677:1: ( ruleBoolLiteral EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:678:1: ruleBoolLiteral EOF
+            {
+             before(grammarAccess.getBoolLiteralRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_entryRuleBoolLiteral1381);
+            ruleBoolLiteral();
+
+            state._fsp--;
+
+             after(grammarAccess.getBoolLiteralRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBoolLiteral1388); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleBoolLiteral"
+
+
+    // $ANTLR start "ruleBoolLiteral"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:685:1: ruleBoolLiteral : ( ( rule__BoolLiteral__Group__0 ) ) ;
+    public final void ruleBoolLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:689:2: ( ( ( rule__BoolLiteral__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:690:1: ( ( rule__BoolLiteral__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:690:1: ( ( rule__BoolLiteral__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:691:1: ( rule__BoolLiteral__Group__0 )
+            {
+             before(grammarAccess.getBoolLiteralAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:692:1: ( rule__BoolLiteral__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:692:2: rule__BoolLiteral__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoolLiteral__Group__0_in_ruleBoolLiteral1414);
+            rule__BoolLiteral__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBoolLiteralAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleBoolLiteral"
+
+
+    // $ANTLR start "entryRuleIntLiteral"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:704:1: entryRuleIntLiteral : ruleIntLiteral EOF ;
+    public final void entryRuleIntLiteral() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:705:1: ( ruleIntLiteral EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:706:1: ruleIntLiteral EOF
+            {
+             before(grammarAccess.getIntLiteralRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_entryRuleIntLiteral1441);
+            ruleIntLiteral();
+
+            state._fsp--;
+
+             after(grammarAccess.getIntLiteralRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIntLiteral1448); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleIntLiteral"
+
+
+    // $ANTLR start "ruleIntLiteral"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:713:1: ruleIntLiteral : ( ( rule__IntLiteral__Group__0 ) ) ;
+    public final void ruleIntLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:717:2: ( ( ( rule__IntLiteral__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:718:1: ( ( rule__IntLiteral__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:718:1: ( ( rule__IntLiteral__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:719:1: ( rule__IntLiteral__Group__0 )
+            {
+             before(grammarAccess.getIntLiteralAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:720:1: ( rule__IntLiteral__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:720:2: rule__IntLiteral__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__0_in_ruleIntLiteral1474);
+            rule__IntLiteral__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIntLiteralAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleIntLiteral"
+
+
+    // $ANTLR start "entryRuleDoubleLiteral"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:732:1: entryRuleDoubleLiteral : ruleDoubleLiteral EOF ;
+    public final void entryRuleDoubleLiteral() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:733:1: ( ruleDoubleLiteral EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:734:1: ruleDoubleLiteral EOF
+            {
+             before(grammarAccess.getDoubleLiteralRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_entryRuleDoubleLiteral1501);
+            ruleDoubleLiteral();
+
+            state._fsp--;
+
+             after(grammarAccess.getDoubleLiteralRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDoubleLiteral1508); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDoubleLiteral"
+
+
+    // $ANTLR start "ruleDoubleLiteral"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:741:1: ruleDoubleLiteral : ( ( rule__DoubleLiteral__Group__0 ) ) ;
+    public final void ruleDoubleLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:745:2: ( ( ( rule__DoubleLiteral__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:746:1: ( ( rule__DoubleLiteral__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:746:1: ( ( rule__DoubleLiteral__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:747:1: ( rule__DoubleLiteral__Group__0 )
+            {
+             before(grammarAccess.getDoubleLiteralAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:748:1: ( rule__DoubleLiteral__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:748:2: rule__DoubleLiteral__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__0_in_ruleDoubleLiteral1534);
+            rule__DoubleLiteral__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDoubleLiteralAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDoubleLiteral"
+
+
+    // $ANTLR start "entryRuleFormalParameter"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:760:1: entryRuleFormalParameter : ruleFormalParameter EOF ;
+    public final void entryRuleFormalParameter() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:761:1: ( ruleFormalParameter EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:762:1: ruleFormalParameter EOF
+            {
+             before(grammarAccess.getFormalParameterRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_entryRuleFormalParameter1561);
+            ruleFormalParameter();
+
+            state._fsp--;
+
+             after(grammarAccess.getFormalParameterRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFormalParameter1568); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFormalParameter"
+
+
+    // $ANTLR start "ruleFormalParameter"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:769:1: ruleFormalParameter : ( ( rule__FormalParameter__Group__0 ) ) ;
+    public final void ruleFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:773:2: ( ( ( rule__FormalParameter__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:774:1: ( ( rule__FormalParameter__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:774:1: ( ( rule__FormalParameter__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:775:1: ( rule__FormalParameter__Group__0 )
+            {
+             before(grammarAccess.getFormalParameterAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:776:1: ( rule__FormalParameter__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:776:2: rule__FormalParameter__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__FormalParameter__Group__0_in_ruleFormalParameter1594);
+            rule__FormalParameter__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFormalParameterAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFormalParameter"
+
+
+    // $ANTLR start "entryRuleProbabilityMassFunction"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:788:1: entryRuleProbabilityMassFunction : ruleProbabilityMassFunction EOF ;
+    public final void entryRuleProbabilityMassFunction() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:789:1: ( ruleProbabilityMassFunction EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:790:1: ruleProbabilityMassFunction EOF
+            {
+             before(grammarAccess.getProbabilityMassFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_entryRuleProbabilityMassFunction1621);
+            ruleProbabilityMassFunction();
+
+            state._fsp--;
+
+             after(grammarAccess.getProbabilityMassFunctionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProbabilityMassFunction1628); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleProbabilityMassFunction"
+
+
+    // $ANTLR start "ruleProbabilityMassFunction"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:797:1: ruleProbabilityMassFunction : ( ( rule__ProbabilityMassFunction__Group__0 ) ) ;
+    public final void ruleProbabilityMassFunction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:801:2: ( ( ( rule__ProbabilityMassFunction__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:802:1: ( ( rule__ProbabilityMassFunction__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:802:1: ( ( rule__ProbabilityMassFunction__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:803:1: ( rule__ProbabilityMassFunction__Group__0 )
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:804:1: ( rule__ProbabilityMassFunction__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:804:2: rule__ProbabilityMassFunction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__0_in_ruleProbabilityMassFunction1654);
+            rule__ProbabilityMassFunction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProbabilityMassFunctionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleProbabilityMassFunction"
+
+
+    // $ANTLR start "entryRuleBoxedPDF"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:816:1: entryRuleBoxedPDF : ruleBoxedPDF EOF ;
+    public final void entryRuleBoxedPDF() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:817:1: ( ruleBoxedPDF EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:818:1: ruleBoxedPDF EOF
+            {
+             before(grammarAccess.getBoxedPDFRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_entryRuleBoxedPDF1681);
+            ruleBoxedPDF();
+
+            state._fsp--;
+
+             after(grammarAccess.getBoxedPDFRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBoxedPDF1688); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleBoxedPDF"
+
+
+    // $ANTLR start "ruleBoxedPDF"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:825:1: ruleBoxedPDF : ( ( rule__BoxedPDF__Group__0 ) ) ;
+    public final void ruleBoxedPDF() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:829:2: ( ( ( rule__BoxedPDF__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:830:1: ( ( rule__BoxedPDF__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:830:1: ( ( rule__BoxedPDF__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:831:1: ( rule__BoxedPDF__Group__0 )
+            {
+             before(grammarAccess.getBoxedPDFAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:832:1: ( rule__BoxedPDF__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:832:2: rule__BoxedPDF__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__0_in_ruleBoxedPDF1714);
+            rule__BoxedPDF__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBoxedPDFAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleBoxedPDF"
+
+
+    // $ANTLR start "entryRuleNormalDistribution"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:844:1: entryRuleNormalDistribution : ruleNormalDistribution EOF ;
+    public final void entryRuleNormalDistribution() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:845:1: ( ruleNormalDistribution EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:846:1: ruleNormalDistribution EOF
+            {
+             before(grammarAccess.getNormalDistributionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_entryRuleNormalDistribution1741);
+            ruleNormalDistribution();
+
+            state._fsp--;
+
+             after(grammarAccess.getNormalDistributionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNormalDistribution1748); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNormalDistribution"
+
+
+    // $ANTLR start "ruleNormalDistribution"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:853:1: ruleNormalDistribution : ( ( rule__NormalDistribution__Group__0 ) ) ;
+    public final void ruleNormalDistribution() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:857:2: ( ( ( rule__NormalDistribution__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:858:1: ( ( rule__NormalDistribution__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:858:1: ( ( rule__NormalDistribution__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:859:1: ( rule__NormalDistribution__Group__0 )
+            {
+             before(grammarAccess.getNormalDistributionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:860:1: ( rule__NormalDistribution__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:860:2: rule__NormalDistribution__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__0_in_ruleNormalDistribution1774);
+            rule__NormalDistribution__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNormalDistributionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNormalDistribution"
+
+
+    // $ANTLR start "entryRuleExponentialDistribution"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:872:1: entryRuleExponentialDistribution : ruleExponentialDistribution EOF ;
+    public final void entryRuleExponentialDistribution() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:873:1: ( ruleExponentialDistribution EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:874:1: ruleExponentialDistribution EOF
+            {
+             before(grammarAccess.getExponentialDistributionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_entryRuleExponentialDistribution1801);
+            ruleExponentialDistribution();
+
+            state._fsp--;
+
+             after(grammarAccess.getExponentialDistributionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExponentialDistribution1808); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleExponentialDistribution"
+
+
+    // $ANTLR start "ruleExponentialDistribution"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:881:1: ruleExponentialDistribution : ( ( rule__ExponentialDistribution__Group__0 ) ) ;
+    public final void ruleExponentialDistribution() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:885:2: ( ( ( rule__ExponentialDistribution__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:886:1: ( ( rule__ExponentialDistribution__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:886:1: ( ( rule__ExponentialDistribution__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:887:1: ( rule__ExponentialDistribution__Group__0 )
+            {
+             before(grammarAccess.getExponentialDistributionAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:888:1: ( rule__ExponentialDistribution__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:888:2: rule__ExponentialDistribution__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__0_in_ruleExponentialDistribution1834);
+            rule__ExponentialDistribution__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExponentialDistributionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleExponentialDistribution"
+
+
+    // $ANTLR start "entryRuleTermOperations"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:900:1: entryRuleTermOperations : ruleTermOperations EOF ;
+    public final void entryRuleTermOperations() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:901:1: ( ruleTermOperations EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:902:1: ruleTermOperations EOF
+            {
+             before(grammarAccess.getTermOperationsRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermOperations_in_entryRuleTermOperations1861);
+            ruleTermOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermOperationsRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTermOperations1868); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTermOperations"
+
+
+    // $ANTLR start "ruleTermOperations"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:909:1: ruleTermOperations : ( 'TermOperations' ) ;
+    public final void ruleTermOperations() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:913:2: ( ( 'TermOperations' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:914:1: ( 'TermOperations' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:914:1: ( 'TermOperations' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:915:1: 'TermOperations'
+            {
+             before(grammarAccess.getTermOperationsAccess().getTermOperationsKeyword()); 
+            match(input,11,FollowSets000.FOLLOW_11_in_ruleTermOperations1895); 
+             after(grammarAccess.getTermOperationsAccess().getTermOperationsKeyword()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTermOperations"
+
+
+    // $ANTLR start "entryRuleProductOperations"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:930:1: entryRuleProductOperations : ruleProductOperations EOF ;
+    public final void entryRuleProductOperations() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:931:1: ( ruleProductOperations EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:932:1: ruleProductOperations EOF
+            {
+             before(grammarAccess.getProductOperationsRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductOperations_in_entryRuleProductOperations1923);
+            ruleProductOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductOperationsRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProductOperations1930); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleProductOperations"
+
+
+    // $ANTLR start "ruleProductOperations"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:939:1: ruleProductOperations : ( 'ProductOperations' ) ;
+    public final void ruleProductOperations() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:943:2: ( ( 'ProductOperations' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:944:1: ( 'ProductOperations' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:944:1: ( 'ProductOperations' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:945:1: 'ProductOperations'
+            {
+             before(grammarAccess.getProductOperationsAccess().getProductOperationsKeyword()); 
+            match(input,12,FollowSets000.FOLLOW_12_in_ruleProductOperations1957); 
+             after(grammarAccess.getProductOperationsAccess().getProductOperationsKeyword()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleProductOperations"
+
+
+    // $ANTLR start "entryRuleCompareOperations"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:960:1: entryRuleCompareOperations : ruleCompareOperations EOF ;
+    public final void entryRuleCompareOperations() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:961:1: ( ruleCompareOperations EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:962:1: ruleCompareOperations EOF
+            {
+             before(grammarAccess.getCompareOperationsRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCompareOperations_in_entryRuleCompareOperations1985);
+            ruleCompareOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getCompareOperationsRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCompareOperations1992); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCompareOperations"
+
+
+    // $ANTLR start "ruleCompareOperations"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:969:1: ruleCompareOperations : ( 'CompareOperations' ) ;
+    public final void ruleCompareOperations() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:973:2: ( ( 'CompareOperations' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:974:1: ( 'CompareOperations' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:974:1: ( 'CompareOperations' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:975:1: 'CompareOperations'
+            {
+             before(grammarAccess.getCompareOperationsAccess().getCompareOperationsKeyword()); 
+            match(input,13,FollowSets000.FOLLOW_13_in_ruleCompareOperations2019); 
+             after(grammarAccess.getCompareOperationsAccess().getCompareOperationsKeyword()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCompareOperations"
+
+
+    // $ANTLR start "entryRuleBooleanOperations"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:990:1: entryRuleBooleanOperations : ruleBooleanOperations EOF ;
+    public final void entryRuleBooleanOperations() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:991:1: ( ruleBooleanOperations EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:992:1: ruleBooleanOperations EOF
+            {
+             before(grammarAccess.getBooleanOperationsRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanOperations_in_entryRuleBooleanOperations2047);
+            ruleBooleanOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getBooleanOperationsRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanOperations2054); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleBooleanOperations"
+
+
+    // $ANTLR start "ruleBooleanOperations"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:999:1: ruleBooleanOperations : ( 'BooleanOperations' ) ;
+    public final void ruleBooleanOperations() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1003:2: ( ( 'BooleanOperations' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1004:1: ( 'BooleanOperations' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1004:1: ( 'BooleanOperations' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1005:1: 'BooleanOperations'
+            {
+             before(grammarAccess.getBooleanOperationsAccess().getBooleanOperationsKeyword()); 
+            match(input,14,FollowSets000.FOLLOW_14_in_ruleBooleanOperations2081); 
+             after(grammarAccess.getBooleanOperationsAccess().getBooleanOperationsKeyword()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleBooleanOperations"
+
+
+    // $ANTLR start "entryRuleEBigInteger"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1022:1: entryRuleEBigInteger : ruleEBigInteger EOF ;
+    public final void entryRuleEBigInteger() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1023:1: ( ruleEBigInteger EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1024:1: ruleEBigInteger EOF
+            {
+             before(grammarAccess.getEBigIntegerRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigInteger_in_entryRuleEBigInteger2111);
+            ruleEBigInteger();
+
+            state._fsp--;
+
+             after(grammarAccess.getEBigIntegerRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEBigInteger2118); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEBigInteger"
+
+
+    // $ANTLR start "ruleEBigInteger"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1031:1: ruleEBigInteger : ( ( rule__EBigInteger__Group__0 ) ) ;
+    public final void ruleEBigInteger() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1035:2: ( ( ( rule__EBigInteger__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1036:1: ( ( rule__EBigInteger__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1036:1: ( ( rule__EBigInteger__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1037:1: ( rule__EBigInteger__Group__0 )
+            {
+             before(grammarAccess.getEBigIntegerAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1038:1: ( rule__EBigInteger__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1038:2: rule__EBigInteger__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EBigInteger__Group__0_in_ruleEBigInteger2144);
+            rule__EBigInteger__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEBigIntegerAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEBigInteger"
+
+
+    // $ANTLR start "entryRuleEBigDecimal"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1050:1: entryRuleEBigDecimal : ruleEBigDecimal EOF ;
+    public final void entryRuleEBigDecimal() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1051:1: ( ruleEBigDecimal EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1052:1: ruleEBigDecimal EOF
+            {
+             before(grammarAccess.getEBigDecimalRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_entryRuleEBigDecimal2171);
+            ruleEBigDecimal();
+
+            state._fsp--;
+
+             after(grammarAccess.getEBigDecimalRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEBigDecimal2178); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEBigDecimal"
+
+
+    // $ANTLR start "ruleEBigDecimal"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1059:1: ruleEBigDecimal : ( ( rule__EBigDecimal__Group__0 ) ) ;
+    public final void ruleEBigDecimal() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1063:2: ( ( ( rule__EBigDecimal__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1064:1: ( ( rule__EBigDecimal__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1064:1: ( ( rule__EBigDecimal__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1065:1: ( rule__EBigDecimal__Group__0 )
+            {
+             before(grammarAccess.getEBigDecimalAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1066:1: ( rule__EBigDecimal__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1066:2: rule__EBigDecimal__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EBigDecimal__Group__0_in_ruleEBigDecimal2204);
+            rule__EBigDecimal__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEBigDecimalAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEBigDecimal"
+
+
+    // $ANTLR start "entryRuleSample"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1078:1: entryRuleSample : ruleSample EOF ;
+    public final void entryRuleSample() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1079:1: ( ruleSample EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1080:1: ruleSample EOF
+            {
+             before(grammarAccess.getSampleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSample_in_entryRuleSample2231);
+            ruleSample();
+
+            state._fsp--;
+
+             after(grammarAccess.getSampleRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSample2238); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSample"
+
+
+    // $ANTLR start "ruleSample"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1087:1: ruleSample : ( ( rule__Sample__Group__0 ) ) ;
+    public final void ruleSample() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1091:2: ( ( ( rule__Sample__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1092:1: ( ( rule__Sample__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1092:1: ( ( rule__Sample__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1093:1: ( rule__Sample__Group__0 )
+            {
+             before(grammarAccess.getSampleAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1094:1: ( rule__Sample__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1094:2: rule__Sample__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__0_in_ruleSample2264);
+            rule__Sample__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSampleAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSample"
+
+
+    // $ANTLR start "entryRuleContinuousSample"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1108:1: entryRuleContinuousSample : ruleContinuousSample EOF ;
+    public final void entryRuleContinuousSample() throws RecognitionException {
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1109:1: ( ruleContinuousSample EOF )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1110:1: ruleContinuousSample EOF
+            {
+             before(grammarAccess.getContinuousSampleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_entryRuleContinuousSample2293);
+            ruleContinuousSample();
+
+            state._fsp--;
+
+             after(grammarAccess.getContinuousSampleRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleContinuousSample2300); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleContinuousSample"
+
+
+    // $ANTLR start "ruleContinuousSample"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1117:1: ruleContinuousSample : ( ( rule__ContinuousSample__Group__0 ) ) ;
+    public final void ruleContinuousSample() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1121:2: ( ( ( rule__ContinuousSample__Group__0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1122:1: ( ( rule__ContinuousSample__Group__0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1122:1: ( ( rule__ContinuousSample__Group__0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1123:1: ( rule__ContinuousSample__Group__0 )
+            {
+             before(grammarAccess.getContinuousSampleAccess().getGroup()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1124:1: ( rule__ContinuousSample__Group__0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1124:2: rule__ContinuousSample__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__0_in_ruleContinuousSample2326);
+            rule__ContinuousSample__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getContinuousSampleAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleContinuousSample"
+
+
+    // $ANTLR start "rule__Expression__Alternatives"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1136:1: rule__Expression__Alternatives : ( ( ruleTermExpression ) | ( ruleProductExpression ) | ( ruleCompareExpression ) | ( rulePowerExpression ) | ( ruleBooleanOperatorExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleIfElseExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) );
+    public final void rule__Expression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1140:1: ( ( ruleTermExpression ) | ( ruleProductExpression ) | ( ruleCompareExpression ) | ( rulePowerExpression ) | ( ruleBooleanOperatorExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleIfElseExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) )
+            int alt1=20;
+            switch ( input.LA(1) ) {
+            case 20:
+                {
+                alt1=1;
+                }
+                break;
+            case 21:
+                {
+                alt1=2;
+                }
+                break;
+            case 22:
+                {
+                alt1=3;
+                }
+                break;
+            case 26:
+                {
+                alt1=4;
+                }
+                break;
+            case 29:
+                {
+                alt1=5;
+                }
+                break;
+            case 30:
+                {
+                alt1=6;
+                }
+                break;
+            case 32:
+                {
+                alt1=7;
+                }
+                break;
+            case 33:
+                {
+                alt1=8;
+                }
+                break;
+            case 37:
+                {
+                alt1=9;
+                }
+                break;
+            case 41:
+                {
+                alt1=10;
+                }
+                break;
+            case 43:
+                {
+                alt1=11;
+                }
+                break;
+            case 44:
+                {
+                alt1=12;
+                }
+                break;
+            case 45:
+                {
+                alt1=13;
+                }
+                break;
+            case 47:
+                {
+                alt1=14;
+                }
+                break;
+            case 48:
+                {
+                alt1=15;
+                }
+                break;
+            case 49:
+                {
+                alt1=16;
+                }
+                break;
+            case 50:
+                {
+                alt1=17;
+                }
+                break;
+            case 52:
+                {
+                alt1=18;
+                }
+                break;
+            case 53:
+                {
+                alt1=19;
+                }
+                break;
+            case 56:
+                {
+                alt1=20;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt1) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1141:1: ( ruleTermExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1141:1: ( ruleTermExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1142:1: ruleTermExpression
+                    {
+                     before(grammarAccess.getExpressionAccess().getTermExpressionParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleTermExpression_in_rule__Expression__Alternatives2362);
+                    ruleTermExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getTermExpressionParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1147:6: ( ruleProductExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1147:6: ( ruleProductExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1148:1: ruleProductExpression
+                    {
+                     before(grammarAccess.getExpressionAccess().getProductExpressionParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_rule__Expression__Alternatives2379);
+                    ruleProductExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getProductExpressionParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1153:6: ( ruleCompareExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1153:6: ( ruleCompareExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1154:1: ruleCompareExpression
+                    {
+                     before(grammarAccess.getExpressionAccess().getCompareExpressionParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleCompareExpression_in_rule__Expression__Alternatives2396);
+                    ruleCompareExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getCompareExpressionParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1159:6: ( rulePowerExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1159:6: ( rulePowerExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1160:1: rulePowerExpression
+                    {
+                     before(grammarAccess.getExpressionAccess().getPowerExpressionParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_rule__Expression__Alternatives2413);
+                    rulePowerExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getPowerExpressionParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1165:6: ( ruleBooleanOperatorExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1165:6: ( ruleBooleanOperatorExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1166:1: ruleBooleanOperatorExpression
+                    {
+                     before(grammarAccess.getExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBooleanOperatorExpression_in_rule__Expression__Alternatives2430);
+                    ruleBooleanOperatorExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1171:6: ( ruleNotExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1171:6: ( ruleNotExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1172:1: ruleNotExpression
+                    {
+                     before(grammarAccess.getExpressionAccess().getNotExpressionParserRuleCall_5()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_rule__Expression__Alternatives2447);
+                    ruleNotExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getNotExpressionParserRuleCall_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1177:6: ( ruleNegativeExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1177:6: ( ruleNegativeExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1178:1: ruleNegativeExpression
+                    {
+                     before(grammarAccess.getExpressionAccess().getNegativeExpressionParserRuleCall_6()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_rule__Expression__Alternatives2464);
+                    ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getNegativeExpressionParserRuleCall_6()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1183:6: ( ruleIfElseExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1183:6: ( ruleIfElseExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1184:1: ruleIfElseExpression
+                    {
+                     before(grammarAccess.getExpressionAccess().getIfElseExpressionParserRuleCall_7()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleIfElseExpression_in_rule__Expression__Alternatives2481);
+                    ruleIfElseExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getIfElseExpressionParserRuleCall_7()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1189:6: ( ruleFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1189:6: ( ruleFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1190:1: ruleFunction
+                    {
+                     before(grammarAccess.getExpressionAccess().getFunctionParserRuleCall_8()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_rule__Expression__Alternatives2498);
+                    ruleFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getFunctionParserRuleCall_8()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1195:6: ( ruleParenthesis )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1195:6: ( ruleParenthesis )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1196:1: ruleParenthesis
+                    {
+                     before(grammarAccess.getExpressionAccess().getParenthesisParserRuleCall_9()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_rule__Expression__Alternatives2515);
+                    ruleParenthesis();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getParenthesisParserRuleCall_9()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1201:6: ( ruleLiteral_Impl )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1201:6: ( ruleLiteral_Impl )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1202:1: ruleLiteral_Impl
+                    {
+                     before(grammarAccess.getExpressionAccess().getLiteral_ImplParserRuleCall_10()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_rule__Expression__Alternatives2532);
+                    ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getLiteral_ImplParserRuleCall_10()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1207:6: ( ruleStringLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1207:6: ( ruleStringLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1208:1: ruleStringLiteral
+                    {
+                     before(grammarAccess.getExpressionAccess().getStringLiteralParserRuleCall_11()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_rule__Expression__Alternatives2549);
+                    ruleStringLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getStringLiteralParserRuleCall_11()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1213:6: ( ruleBoolLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1213:6: ( ruleBoolLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1214:1: ruleBoolLiteral
+                    {
+                     before(grammarAccess.getExpressionAccess().getBoolLiteralParserRuleCall_12()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_rule__Expression__Alternatives2566);
+                    ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getBoolLiteralParserRuleCall_12()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1219:6: ( ruleIntLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1219:6: ( ruleIntLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1220:1: ruleIntLiteral
+                    {
+                     before(grammarAccess.getExpressionAccess().getIntLiteralParserRuleCall_13()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_rule__Expression__Alternatives2583);
+                    ruleIntLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getIntLiteralParserRuleCall_13()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1225:6: ( ruleDoubleLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1225:6: ( ruleDoubleLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1226:1: ruleDoubleLiteral
+                    {
+                     before(grammarAccess.getExpressionAccess().getDoubleLiteralParserRuleCall_14()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_rule__Expression__Alternatives2600);
+                    ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getDoubleLiteralParserRuleCall_14()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1231:6: ( ruleFormalParameter )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1231:6: ( ruleFormalParameter )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1232:1: ruleFormalParameter
+                    {
+                     before(grammarAccess.getExpressionAccess().getFormalParameterParserRuleCall_15()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_rule__Expression__Alternatives2617);
+                    ruleFormalParameter();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getFormalParameterParserRuleCall_15()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 17 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1237:6: ( ruleProbabilityMassFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1237:6: ( ruleProbabilityMassFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1238:1: ruleProbabilityMassFunction
+                    {
+                     before(grammarAccess.getExpressionAccess().getProbabilityMassFunctionParserRuleCall_16()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_rule__Expression__Alternatives2634);
+                    ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getProbabilityMassFunctionParserRuleCall_16()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 18 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1243:6: ( ruleBoxedPDF )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1243:6: ( ruleBoxedPDF )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1244:1: ruleBoxedPDF
+                    {
+                     before(grammarAccess.getExpressionAccess().getBoxedPDFParserRuleCall_17()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_rule__Expression__Alternatives2651);
+                    ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getBoxedPDFParserRuleCall_17()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 19 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1249:6: ( ruleNormalDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1249:6: ( ruleNormalDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1250:1: ruleNormalDistribution
+                    {
+                     before(grammarAccess.getExpressionAccess().getNormalDistributionParserRuleCall_18()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_rule__Expression__Alternatives2668);
+                    ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getNormalDistributionParserRuleCall_18()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 20 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1255:6: ( ruleExponentialDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1255:6: ( ruleExponentialDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1256:1: ruleExponentialDistribution
+                    {
+                     before(grammarAccess.getExpressionAccess().getExponentialDistributionParserRuleCall_19()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_rule__Expression__Alternatives2685);
+                    ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getExpressionAccess().getExponentialDistributionParserRuleCall_19()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Expression__Alternatives"
+
+
+    // $ANTLR start "rule__Term__Alternatives"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1266:1: rule__Term__Alternatives : ( ( ruleTermExpression ) | ( ruleProductExpression ) | ( rulePowerExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) );
+    public final void rule__Term__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1270:1: ( ( ruleTermExpression ) | ( ruleProductExpression ) | ( rulePowerExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) )
+            int alt2=17;
+            switch ( input.LA(1) ) {
+            case 20:
+                {
+                alt2=1;
+                }
+                break;
+            case 21:
+                {
+                alt2=2;
+                }
+                break;
+            case 26:
+                {
+                alt2=3;
+                }
+                break;
+            case 30:
+                {
+                alt2=4;
+                }
+                break;
+            case 32:
+                {
+                alt2=5;
+                }
+                break;
+            case 37:
+                {
+                alt2=6;
+                }
+                break;
+            case 41:
+                {
+                alt2=7;
+                }
+                break;
+            case 43:
+                {
+                alt2=8;
+                }
+                break;
+            case 44:
+                {
+                alt2=9;
+                }
+                break;
+            case 45:
+                {
+                alt2=10;
+                }
+                break;
+            case 47:
+                {
+                alt2=11;
+                }
+                break;
+            case 48:
+                {
+                alt2=12;
+                }
+                break;
+            case 49:
+                {
+                alt2=13;
+                }
+                break;
+            case 50:
+                {
+                alt2=14;
+                }
+                break;
+            case 52:
+                {
+                alt2=15;
+                }
+                break;
+            case 53:
+                {
+                alt2=16;
+                }
+                break;
+            case 56:
+                {
+                alt2=17;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt2) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1271:1: ( ruleTermExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1271:1: ( ruleTermExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1272:1: ruleTermExpression
+                    {
+                     before(grammarAccess.getTermAccess().getTermExpressionParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleTermExpression_in_rule__Term__Alternatives2717);
+                    ruleTermExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getTermExpressionParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1277:6: ( ruleProductExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1277:6: ( ruleProductExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1278:1: ruleProductExpression
+                    {
+                     before(grammarAccess.getTermAccess().getProductExpressionParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_rule__Term__Alternatives2734);
+                    ruleProductExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getProductExpressionParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1283:6: ( rulePowerExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1283:6: ( rulePowerExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1284:1: rulePowerExpression
+                    {
+                     before(grammarAccess.getTermAccess().getPowerExpressionParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_rule__Term__Alternatives2751);
+                    rulePowerExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getPowerExpressionParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1289:6: ( ruleNotExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1289:6: ( ruleNotExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1290:1: ruleNotExpression
+                    {
+                     before(grammarAccess.getTermAccess().getNotExpressionParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_rule__Term__Alternatives2768);
+                    ruleNotExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getNotExpressionParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1295:6: ( ruleNegativeExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1295:6: ( ruleNegativeExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1296:1: ruleNegativeExpression
+                    {
+                     before(grammarAccess.getTermAccess().getNegativeExpressionParserRuleCall_4()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_rule__Term__Alternatives2785);
+                    ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getNegativeExpressionParserRuleCall_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1301:6: ( ruleFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1301:6: ( ruleFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1302:1: ruleFunction
+                    {
+                     before(grammarAccess.getTermAccess().getFunctionParserRuleCall_5()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_rule__Term__Alternatives2802);
+                    ruleFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getFunctionParserRuleCall_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1307:6: ( ruleParenthesis )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1307:6: ( ruleParenthesis )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1308:1: ruleParenthesis
+                    {
+                     before(grammarAccess.getTermAccess().getParenthesisParserRuleCall_6()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_rule__Term__Alternatives2819);
+                    ruleParenthesis();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getParenthesisParserRuleCall_6()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1313:6: ( ruleLiteral_Impl )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1313:6: ( ruleLiteral_Impl )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1314:1: ruleLiteral_Impl
+                    {
+                     before(grammarAccess.getTermAccess().getLiteral_ImplParserRuleCall_7()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_rule__Term__Alternatives2836);
+                    ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getLiteral_ImplParserRuleCall_7()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1319:6: ( ruleStringLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1319:6: ( ruleStringLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1320:1: ruleStringLiteral
+                    {
+                     before(grammarAccess.getTermAccess().getStringLiteralParserRuleCall_8()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_rule__Term__Alternatives2853);
+                    ruleStringLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getStringLiteralParserRuleCall_8()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1325:6: ( ruleBoolLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1325:6: ( ruleBoolLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1326:1: ruleBoolLiteral
+                    {
+                     before(grammarAccess.getTermAccess().getBoolLiteralParserRuleCall_9()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_rule__Term__Alternatives2870);
+                    ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getBoolLiteralParserRuleCall_9()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1331:6: ( ruleIntLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1331:6: ( ruleIntLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1332:1: ruleIntLiteral
+                    {
+                     before(grammarAccess.getTermAccess().getIntLiteralParserRuleCall_10()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_rule__Term__Alternatives2887);
+                    ruleIntLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getIntLiteralParserRuleCall_10()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1337:6: ( ruleDoubleLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1337:6: ( ruleDoubleLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1338:1: ruleDoubleLiteral
+                    {
+                     before(grammarAccess.getTermAccess().getDoubleLiteralParserRuleCall_11()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_rule__Term__Alternatives2904);
+                    ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getDoubleLiteralParserRuleCall_11()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1343:6: ( ruleFormalParameter )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1343:6: ( ruleFormalParameter )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1344:1: ruleFormalParameter
+                    {
+                     before(grammarAccess.getTermAccess().getFormalParameterParserRuleCall_12()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_rule__Term__Alternatives2921);
+                    ruleFormalParameter();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getFormalParameterParserRuleCall_12()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1349:6: ( ruleProbabilityMassFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1349:6: ( ruleProbabilityMassFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1350:1: ruleProbabilityMassFunction
+                    {
+                     before(grammarAccess.getTermAccess().getProbabilityMassFunctionParserRuleCall_13()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_rule__Term__Alternatives2938);
+                    ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getProbabilityMassFunctionParserRuleCall_13()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1355:6: ( ruleBoxedPDF )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1355:6: ( ruleBoxedPDF )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1356:1: ruleBoxedPDF
+                    {
+                     before(grammarAccess.getTermAccess().getBoxedPDFParserRuleCall_14()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_rule__Term__Alternatives2955);
+                    ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getBoxedPDFParserRuleCall_14()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1361:6: ( ruleNormalDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1361:6: ( ruleNormalDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1362:1: ruleNormalDistribution
+                    {
+                     before(grammarAccess.getTermAccess().getNormalDistributionParserRuleCall_15()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_rule__Term__Alternatives2972);
+                    ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getNormalDistributionParserRuleCall_15()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 17 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1367:6: ( ruleExponentialDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1367:6: ( ruleExponentialDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1368:1: ruleExponentialDistribution
+                    {
+                     before(grammarAccess.getTermAccess().getExponentialDistributionParserRuleCall_16()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_rule__Term__Alternatives2989);
+                    ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getTermAccess().getExponentialDistributionParserRuleCall_16()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Term__Alternatives"
+
+
+    // $ANTLR start "rule__Product__Alternatives"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1378:1: rule__Product__Alternatives : ( ( ruleProductExpression ) | ( rulePowerExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) );
+    public final void rule__Product__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1382:1: ( ( ruleProductExpression ) | ( rulePowerExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) )
+            int alt3=16;
+            switch ( input.LA(1) ) {
+            case 21:
+                {
+                alt3=1;
+                }
+                break;
+            case 26:
+                {
+                alt3=2;
+                }
+                break;
+            case 30:
+                {
+                alt3=3;
+                }
+                break;
+            case 32:
+                {
+                alt3=4;
+                }
+                break;
+            case 37:
+                {
+                alt3=5;
+                }
+                break;
+            case 41:
+                {
+                alt3=6;
+                }
+                break;
+            case 43:
+                {
+                alt3=7;
+                }
+                break;
+            case 44:
+                {
+                alt3=8;
+                }
+                break;
+            case 45:
+                {
+                alt3=9;
+                }
+                break;
+            case 47:
+                {
+                alt3=10;
+                }
+                break;
+            case 48:
+                {
+                alt3=11;
+                }
+                break;
+            case 49:
+                {
+                alt3=12;
+                }
+                break;
+            case 50:
+                {
+                alt3=13;
+                }
+                break;
+            case 52:
+                {
+                alt3=14;
+                }
+                break;
+            case 53:
+                {
+                alt3=15;
+                }
+                break;
+            case 56:
+                {
+                alt3=16;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt3) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1383:1: ( ruleProductExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1383:1: ( ruleProductExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1384:1: ruleProductExpression
+                    {
+                     before(grammarAccess.getProductAccess().getProductExpressionParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_rule__Product__Alternatives3021);
+                    ruleProductExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getProductExpressionParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1389:6: ( rulePowerExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1389:6: ( rulePowerExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1390:1: rulePowerExpression
+                    {
+                     before(grammarAccess.getProductAccess().getPowerExpressionParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_rule__Product__Alternatives3038);
+                    rulePowerExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getPowerExpressionParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1395:6: ( ruleNotExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1395:6: ( ruleNotExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1396:1: ruleNotExpression
+                    {
+                     before(grammarAccess.getProductAccess().getNotExpressionParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_rule__Product__Alternatives3055);
+                    ruleNotExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getNotExpressionParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1401:6: ( ruleNegativeExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1401:6: ( ruleNegativeExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1402:1: ruleNegativeExpression
+                    {
+                     before(grammarAccess.getProductAccess().getNegativeExpressionParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_rule__Product__Alternatives3072);
+                    ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getNegativeExpressionParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1407:6: ( ruleFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1407:6: ( ruleFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1408:1: ruleFunction
+                    {
+                     before(grammarAccess.getProductAccess().getFunctionParserRuleCall_4()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_rule__Product__Alternatives3089);
+                    ruleFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getFunctionParserRuleCall_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1413:6: ( ruleParenthesis )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1413:6: ( ruleParenthesis )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1414:1: ruleParenthesis
+                    {
+                     before(grammarAccess.getProductAccess().getParenthesisParserRuleCall_5()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_rule__Product__Alternatives3106);
+                    ruleParenthesis();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getParenthesisParserRuleCall_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1419:6: ( ruleLiteral_Impl )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1419:6: ( ruleLiteral_Impl )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1420:1: ruleLiteral_Impl
+                    {
+                     before(grammarAccess.getProductAccess().getLiteral_ImplParserRuleCall_6()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_rule__Product__Alternatives3123);
+                    ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getLiteral_ImplParserRuleCall_6()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1425:6: ( ruleStringLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1425:6: ( ruleStringLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1426:1: ruleStringLiteral
+                    {
+                     before(grammarAccess.getProductAccess().getStringLiteralParserRuleCall_7()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_rule__Product__Alternatives3140);
+                    ruleStringLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getStringLiteralParserRuleCall_7()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1431:6: ( ruleBoolLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1431:6: ( ruleBoolLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1432:1: ruleBoolLiteral
+                    {
+                     before(grammarAccess.getProductAccess().getBoolLiteralParserRuleCall_8()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_rule__Product__Alternatives3157);
+                    ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getBoolLiteralParserRuleCall_8()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1437:6: ( ruleIntLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1437:6: ( ruleIntLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1438:1: ruleIntLiteral
+                    {
+                     before(grammarAccess.getProductAccess().getIntLiteralParserRuleCall_9()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_rule__Product__Alternatives3174);
+                    ruleIntLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getIntLiteralParserRuleCall_9()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1443:6: ( ruleDoubleLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1443:6: ( ruleDoubleLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1444:1: ruleDoubleLiteral
+                    {
+                     before(grammarAccess.getProductAccess().getDoubleLiteralParserRuleCall_10()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_rule__Product__Alternatives3191);
+                    ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getDoubleLiteralParserRuleCall_10()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1449:6: ( ruleFormalParameter )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1449:6: ( ruleFormalParameter )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1450:1: ruleFormalParameter
+                    {
+                     before(grammarAccess.getProductAccess().getFormalParameterParserRuleCall_11()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_rule__Product__Alternatives3208);
+                    ruleFormalParameter();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getFormalParameterParserRuleCall_11()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1455:6: ( ruleProbabilityMassFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1455:6: ( ruleProbabilityMassFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1456:1: ruleProbabilityMassFunction
+                    {
+                     before(grammarAccess.getProductAccess().getProbabilityMassFunctionParserRuleCall_12()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_rule__Product__Alternatives3225);
+                    ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getProbabilityMassFunctionParserRuleCall_12()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1461:6: ( ruleBoxedPDF )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1461:6: ( ruleBoxedPDF )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1462:1: ruleBoxedPDF
+                    {
+                     before(grammarAccess.getProductAccess().getBoxedPDFParserRuleCall_13()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_rule__Product__Alternatives3242);
+                    ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getBoxedPDFParserRuleCall_13()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1467:6: ( ruleNormalDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1467:6: ( ruleNormalDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1468:1: ruleNormalDistribution
+                    {
+                     before(grammarAccess.getProductAccess().getNormalDistributionParserRuleCall_14()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_rule__Product__Alternatives3259);
+                    ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getNormalDistributionParserRuleCall_14()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1473:6: ( ruleExponentialDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1473:6: ( ruleExponentialDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1474:1: ruleExponentialDistribution
+                    {
+                     before(grammarAccess.getProductAccess().getExponentialDistributionParserRuleCall_15()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_rule__Product__Alternatives3276);
+                    ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getProductAccess().getExponentialDistributionParserRuleCall_15()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Product__Alternatives"
+
+
+    // $ANTLR start "rule__Power__Alternatives"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1484:1: rule__Power__Alternatives : ( ( rulePowerExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) );
+    public final void rule__Power__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1488:1: ( ( rulePowerExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) )
+            int alt4=15;
+            switch ( input.LA(1) ) {
+            case 26:
+                {
+                alt4=1;
+                }
+                break;
+            case 30:
+                {
+                alt4=2;
+                }
+                break;
+            case 32:
+                {
+                alt4=3;
+                }
+                break;
+            case 37:
+                {
+                alt4=4;
+                }
+                break;
+            case 41:
+                {
+                alt4=5;
+                }
+                break;
+            case 43:
+                {
+                alt4=6;
+                }
+                break;
+            case 44:
+                {
+                alt4=7;
+                }
+                break;
+            case 45:
+                {
+                alt4=8;
+                }
+                break;
+            case 47:
+                {
+                alt4=9;
+                }
+                break;
+            case 48:
+                {
+                alt4=10;
+                }
+                break;
+            case 49:
+                {
+                alt4=11;
+                }
+                break;
+            case 50:
+                {
+                alt4=12;
+                }
+                break;
+            case 52:
+                {
+                alt4=13;
+                }
+                break;
+            case 53:
+                {
+                alt4=14;
+                }
+                break;
+            case 56:
+                {
+                alt4=15;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt4) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1489:1: ( rulePowerExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1489:1: ( rulePowerExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1490:1: rulePowerExpression
+                    {
+                     before(grammarAccess.getPowerAccess().getPowerExpressionParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_rule__Power__Alternatives3308);
+                    rulePowerExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getPowerExpressionParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1495:6: ( ruleNotExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1495:6: ( ruleNotExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1496:1: ruleNotExpression
+                    {
+                     before(grammarAccess.getPowerAccess().getNotExpressionParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_rule__Power__Alternatives3325);
+                    ruleNotExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getNotExpressionParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1501:6: ( ruleNegativeExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1501:6: ( ruleNegativeExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1502:1: ruleNegativeExpression
+                    {
+                     before(grammarAccess.getPowerAccess().getNegativeExpressionParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_rule__Power__Alternatives3342);
+                    ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getNegativeExpressionParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1507:6: ( ruleFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1507:6: ( ruleFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1508:1: ruleFunction
+                    {
+                     before(grammarAccess.getPowerAccess().getFunctionParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_rule__Power__Alternatives3359);
+                    ruleFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getFunctionParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1513:6: ( ruleParenthesis )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1513:6: ( ruleParenthesis )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1514:1: ruleParenthesis
+                    {
+                     before(grammarAccess.getPowerAccess().getParenthesisParserRuleCall_4()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_rule__Power__Alternatives3376);
+                    ruleParenthesis();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getParenthesisParserRuleCall_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1519:6: ( ruleLiteral_Impl )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1519:6: ( ruleLiteral_Impl )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1520:1: ruleLiteral_Impl
+                    {
+                     before(grammarAccess.getPowerAccess().getLiteral_ImplParserRuleCall_5()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_rule__Power__Alternatives3393);
+                    ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getLiteral_ImplParserRuleCall_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1525:6: ( ruleStringLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1525:6: ( ruleStringLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1526:1: ruleStringLiteral
+                    {
+                     before(grammarAccess.getPowerAccess().getStringLiteralParserRuleCall_6()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_rule__Power__Alternatives3410);
+                    ruleStringLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getStringLiteralParserRuleCall_6()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1531:6: ( ruleBoolLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1531:6: ( ruleBoolLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1532:1: ruleBoolLiteral
+                    {
+                     before(grammarAccess.getPowerAccess().getBoolLiteralParserRuleCall_7()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_rule__Power__Alternatives3427);
+                    ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getBoolLiteralParserRuleCall_7()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1537:6: ( ruleIntLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1537:6: ( ruleIntLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1538:1: ruleIntLiteral
+                    {
+                     before(grammarAccess.getPowerAccess().getIntLiteralParserRuleCall_8()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_rule__Power__Alternatives3444);
+                    ruleIntLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getIntLiteralParserRuleCall_8()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1543:6: ( ruleDoubleLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1543:6: ( ruleDoubleLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1544:1: ruleDoubleLiteral
+                    {
+                     before(grammarAccess.getPowerAccess().getDoubleLiteralParserRuleCall_9()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_rule__Power__Alternatives3461);
+                    ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getDoubleLiteralParserRuleCall_9()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1549:6: ( ruleFormalParameter )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1549:6: ( ruleFormalParameter )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1550:1: ruleFormalParameter
+                    {
+                     before(grammarAccess.getPowerAccess().getFormalParameterParserRuleCall_10()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_rule__Power__Alternatives3478);
+                    ruleFormalParameter();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getFormalParameterParserRuleCall_10()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1555:6: ( ruleProbabilityMassFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1555:6: ( ruleProbabilityMassFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1556:1: ruleProbabilityMassFunction
+                    {
+                     before(grammarAccess.getPowerAccess().getProbabilityMassFunctionParserRuleCall_11()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_rule__Power__Alternatives3495);
+                    ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getProbabilityMassFunctionParserRuleCall_11()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1561:6: ( ruleBoxedPDF )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1561:6: ( ruleBoxedPDF )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1562:1: ruleBoxedPDF
+                    {
+                     before(grammarAccess.getPowerAccess().getBoxedPDFParserRuleCall_12()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_rule__Power__Alternatives3512);
+                    ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getBoxedPDFParserRuleCall_12()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1567:6: ( ruleNormalDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1567:6: ( ruleNormalDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1568:1: ruleNormalDistribution
+                    {
+                     before(grammarAccess.getPowerAccess().getNormalDistributionParserRuleCall_13()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_rule__Power__Alternatives3529);
+                    ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getNormalDistributionParserRuleCall_13()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1573:6: ( ruleExponentialDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1573:6: ( ruleExponentialDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1574:1: ruleExponentialDistribution
+                    {
+                     before(grammarAccess.getPowerAccess().getExponentialDistributionParserRuleCall_14()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_rule__Power__Alternatives3546);
+                    ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPowerAccess().getExponentialDistributionParserRuleCall_14()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Power__Alternatives"
+
+
+    // $ANTLR start "rule__Unary__Alternatives"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1584:1: rule__Unary__Alternatives : ( ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) );
+    public final void rule__Unary__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1588:1: ( ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) )
+            int alt5=14;
+            switch ( input.LA(1) ) {
+            case 30:
+                {
+                alt5=1;
+                }
+                break;
+            case 32:
+                {
+                alt5=2;
+                }
+                break;
+            case 37:
+                {
+                alt5=3;
+                }
+                break;
+            case 41:
+                {
+                alt5=4;
+                }
+                break;
+            case 43:
+                {
+                alt5=5;
+                }
+                break;
+            case 44:
+                {
+                alt5=6;
+                }
+                break;
+            case 45:
+                {
+                alt5=7;
+                }
+                break;
+            case 47:
+                {
+                alt5=8;
+                }
+                break;
+            case 48:
+                {
+                alt5=9;
+                }
+                break;
+            case 49:
+                {
+                alt5=10;
+                }
+                break;
+            case 50:
+                {
+                alt5=11;
+                }
+                break;
+            case 52:
+                {
+                alt5=12;
+                }
+                break;
+            case 53:
+                {
+                alt5=13;
+                }
+                break;
+            case 56:
+                {
+                alt5=14;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1589:1: ( ruleNotExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1589:1: ( ruleNotExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1590:1: ruleNotExpression
+                    {
+                     before(grammarAccess.getUnaryAccess().getNotExpressionParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_rule__Unary__Alternatives3578);
+                    ruleNotExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getNotExpressionParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1595:6: ( ruleNegativeExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1595:6: ( ruleNegativeExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1596:1: ruleNegativeExpression
+                    {
+                     before(grammarAccess.getUnaryAccess().getNegativeExpressionParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_rule__Unary__Alternatives3595);
+                    ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getNegativeExpressionParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1601:6: ( ruleFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1601:6: ( ruleFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1602:1: ruleFunction
+                    {
+                     before(grammarAccess.getUnaryAccess().getFunctionParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_rule__Unary__Alternatives3612);
+                    ruleFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getFunctionParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1607:6: ( ruleParenthesis )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1607:6: ( ruleParenthesis )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1608:1: ruleParenthesis
+                    {
+                     before(grammarAccess.getUnaryAccess().getParenthesisParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_rule__Unary__Alternatives3629);
+                    ruleParenthesis();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getParenthesisParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1613:6: ( ruleLiteral_Impl )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1613:6: ( ruleLiteral_Impl )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1614:1: ruleLiteral_Impl
+                    {
+                     before(grammarAccess.getUnaryAccess().getLiteral_ImplParserRuleCall_4()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_rule__Unary__Alternatives3646);
+                    ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getLiteral_ImplParserRuleCall_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1619:6: ( ruleStringLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1619:6: ( ruleStringLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1620:1: ruleStringLiteral
+                    {
+                     before(grammarAccess.getUnaryAccess().getStringLiteralParserRuleCall_5()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_rule__Unary__Alternatives3663);
+                    ruleStringLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getStringLiteralParserRuleCall_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1625:6: ( ruleBoolLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1625:6: ( ruleBoolLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1626:1: ruleBoolLiteral
+                    {
+                     before(grammarAccess.getUnaryAccess().getBoolLiteralParserRuleCall_6()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_rule__Unary__Alternatives3680);
+                    ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getBoolLiteralParserRuleCall_6()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1631:6: ( ruleIntLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1631:6: ( ruleIntLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1632:1: ruleIntLiteral
+                    {
+                     before(grammarAccess.getUnaryAccess().getIntLiteralParserRuleCall_7()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_rule__Unary__Alternatives3697);
+                    ruleIntLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getIntLiteralParserRuleCall_7()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1637:6: ( ruleDoubleLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1637:6: ( ruleDoubleLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1638:1: ruleDoubleLiteral
+                    {
+                     before(grammarAccess.getUnaryAccess().getDoubleLiteralParserRuleCall_8()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_rule__Unary__Alternatives3714);
+                    ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getDoubleLiteralParserRuleCall_8()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1643:6: ( ruleFormalParameter )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1643:6: ( ruleFormalParameter )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1644:1: ruleFormalParameter
+                    {
+                     before(grammarAccess.getUnaryAccess().getFormalParameterParserRuleCall_9()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_rule__Unary__Alternatives3731);
+                    ruleFormalParameter();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getFormalParameterParserRuleCall_9()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1649:6: ( ruleProbabilityMassFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1649:6: ( ruleProbabilityMassFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1650:1: ruleProbabilityMassFunction
+                    {
+                     before(grammarAccess.getUnaryAccess().getProbabilityMassFunctionParserRuleCall_10()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_rule__Unary__Alternatives3748);
+                    ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getProbabilityMassFunctionParserRuleCall_10()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1655:6: ( ruleBoxedPDF )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1655:6: ( ruleBoxedPDF )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1656:1: ruleBoxedPDF
+                    {
+                     before(grammarAccess.getUnaryAccess().getBoxedPDFParserRuleCall_11()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_rule__Unary__Alternatives3765);
+                    ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getBoxedPDFParserRuleCall_11()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1661:6: ( ruleNormalDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1661:6: ( ruleNormalDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1662:1: ruleNormalDistribution
+                    {
+                     before(grammarAccess.getUnaryAccess().getNormalDistributionParserRuleCall_12()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_rule__Unary__Alternatives3782);
+                    ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getNormalDistributionParserRuleCall_12()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1667:6: ( ruleExponentialDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1667:6: ( ruleExponentialDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1668:1: ruleExponentialDistribution
+                    {
+                     before(grammarAccess.getUnaryAccess().getExponentialDistributionParserRuleCall_13()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_rule__Unary__Alternatives3799);
+                    ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getUnaryAccess().getExponentialDistributionParserRuleCall_13()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Unary__Alternatives"
+
+
+    // $ANTLR start "rule__BooleanExpression__Alternatives"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1678:1: rule__BooleanExpression__Alternatives : ( ( ruleTermExpression ) | ( ruleProductExpression ) | ( ruleCompareExpression ) | ( rulePowerExpression ) | ( ruleBooleanOperatorExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) );
+    public final void rule__BooleanExpression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1682:1: ( ( ruleTermExpression ) | ( ruleProductExpression ) | ( ruleCompareExpression ) | ( rulePowerExpression ) | ( ruleBooleanOperatorExpression ) | ( ruleNotExpression ) | ( ruleNegativeExpression ) | ( ruleFunction ) | ( ruleParenthesis ) | ( ruleLiteral_Impl ) | ( ruleStringLiteral ) | ( ruleBoolLiteral ) | ( ruleIntLiteral ) | ( ruleDoubleLiteral ) | ( ruleFormalParameter ) | ( ruleProbabilityMassFunction ) | ( ruleBoxedPDF ) | ( ruleNormalDistribution ) | ( ruleExponentialDistribution ) )
+            int alt6=19;
+            switch ( input.LA(1) ) {
+            case 20:
+                {
+                alt6=1;
+                }
+                break;
+            case 21:
+                {
+                alt6=2;
+                }
+                break;
+            case 22:
+                {
+                alt6=3;
+                }
+                break;
+            case 26:
+                {
+                alt6=4;
+                }
+                break;
+            case 29:
+                {
+                alt6=5;
+                }
+                break;
+            case 30:
+                {
+                alt6=6;
+                }
+                break;
+            case 32:
+                {
+                alt6=7;
+                }
+                break;
+            case 37:
+                {
+                alt6=8;
+                }
+                break;
+            case 41:
+                {
+                alt6=9;
+                }
+                break;
+            case 43:
+                {
+                alt6=10;
+                }
+                break;
+            case 44:
+                {
+                alt6=11;
+                }
+                break;
+            case 45:
+                {
+                alt6=12;
+                }
+                break;
+            case 47:
+                {
+                alt6=13;
+                }
+                break;
+            case 48:
+                {
+                alt6=14;
+                }
+                break;
+            case 49:
+                {
+                alt6=15;
+                }
+                break;
+            case 50:
+                {
+                alt6=16;
+                }
+                break;
+            case 52:
+                {
+                alt6=17;
+                }
+                break;
+            case 53:
+                {
+                alt6=18;
+                }
+                break;
+            case 56:
+                {
+                alt6=19;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt6) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1683:1: ( ruleTermExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1683:1: ( ruleTermExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1684:1: ruleTermExpression
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getTermExpressionParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleTermExpression_in_rule__BooleanExpression__Alternatives3831);
+                    ruleTermExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getTermExpressionParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1689:6: ( ruleProductExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1689:6: ( ruleProductExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1690:1: ruleProductExpression
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getProductExpressionParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_rule__BooleanExpression__Alternatives3848);
+                    ruleProductExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getProductExpressionParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1695:6: ( ruleCompareExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1695:6: ( ruleCompareExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1696:1: ruleCompareExpression
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getCompareExpressionParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleCompareExpression_in_rule__BooleanExpression__Alternatives3865);
+                    ruleCompareExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getCompareExpressionParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1701:6: ( rulePowerExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1701:6: ( rulePowerExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1702:1: rulePowerExpression
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getPowerExpressionParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_rule__BooleanExpression__Alternatives3882);
+                    rulePowerExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getPowerExpressionParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1707:6: ( ruleBooleanOperatorExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1707:6: ( ruleBooleanOperatorExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1708:1: ruleBooleanOperatorExpression
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBooleanOperatorExpression_in_rule__BooleanExpression__Alternatives3899);
+                    ruleBooleanOperatorExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1713:6: ( ruleNotExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1713:6: ( ruleNotExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1714:1: ruleNotExpression
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getNotExpressionParserRuleCall_5()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_rule__BooleanExpression__Alternatives3916);
+                    ruleNotExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getNotExpressionParserRuleCall_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1719:6: ( ruleNegativeExpression )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1719:6: ( ruleNegativeExpression )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1720:1: ruleNegativeExpression
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getNegativeExpressionParserRuleCall_6()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_rule__BooleanExpression__Alternatives3933);
+                    ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getNegativeExpressionParserRuleCall_6()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1725:6: ( ruleFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1725:6: ( ruleFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1726:1: ruleFunction
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getFunctionParserRuleCall_7()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_rule__BooleanExpression__Alternatives3950);
+                    ruleFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getFunctionParserRuleCall_7()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1731:6: ( ruleParenthesis )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1731:6: ( ruleParenthesis )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1732:1: ruleParenthesis
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getParenthesisParserRuleCall_8()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_rule__BooleanExpression__Alternatives3967);
+                    ruleParenthesis();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getParenthesisParserRuleCall_8()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1737:6: ( ruleLiteral_Impl )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1737:6: ( ruleLiteral_Impl )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1738:1: ruleLiteral_Impl
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getLiteral_ImplParserRuleCall_9()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_rule__BooleanExpression__Alternatives3984);
+                    ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getLiteral_ImplParserRuleCall_9()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1743:6: ( ruleStringLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1743:6: ( ruleStringLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1744:1: ruleStringLiteral
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getStringLiteralParserRuleCall_10()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_rule__BooleanExpression__Alternatives4001);
+                    ruleStringLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getStringLiteralParserRuleCall_10()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1749:6: ( ruleBoolLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1749:6: ( ruleBoolLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1750:1: ruleBoolLiteral
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getBoolLiteralParserRuleCall_11()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_rule__BooleanExpression__Alternatives4018);
+                    ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getBoolLiteralParserRuleCall_11()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1755:6: ( ruleIntLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1755:6: ( ruleIntLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1756:1: ruleIntLiteral
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getIntLiteralParserRuleCall_12()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_rule__BooleanExpression__Alternatives4035);
+                    ruleIntLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getIntLiteralParserRuleCall_12()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1761:6: ( ruleDoubleLiteral )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1761:6: ( ruleDoubleLiteral )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1762:1: ruleDoubleLiteral
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getDoubleLiteralParserRuleCall_13()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_rule__BooleanExpression__Alternatives4052);
+                    ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getDoubleLiteralParserRuleCall_13()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1767:6: ( ruleFormalParameter )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1767:6: ( ruleFormalParameter )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1768:1: ruleFormalParameter
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getFormalParameterParserRuleCall_14()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_rule__BooleanExpression__Alternatives4069);
+                    ruleFormalParameter();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getFormalParameterParserRuleCall_14()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1773:6: ( ruleProbabilityMassFunction )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1773:6: ( ruleProbabilityMassFunction )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1774:1: ruleProbabilityMassFunction
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getProbabilityMassFunctionParserRuleCall_15()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_rule__BooleanExpression__Alternatives4086);
+                    ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getProbabilityMassFunctionParserRuleCall_15()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 17 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1779:6: ( ruleBoxedPDF )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1779:6: ( ruleBoxedPDF )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1780:1: ruleBoxedPDF
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getBoxedPDFParserRuleCall_16()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_rule__BooleanExpression__Alternatives4103);
+                    ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getBoxedPDFParserRuleCall_16()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 18 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1785:6: ( ruleNormalDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1785:6: ( ruleNormalDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1786:1: ruleNormalDistribution
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getNormalDistributionParserRuleCall_17()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_rule__BooleanExpression__Alternatives4120);
+                    ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getNormalDistributionParserRuleCall_17()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 19 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1791:6: ( ruleExponentialDistribution )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1791:6: ( ruleExponentialDistribution )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1792:1: ruleExponentialDistribution
+                    {
+                     before(grammarAccess.getBooleanExpressionAccess().getExponentialDistributionParserRuleCall_18()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_rule__BooleanExpression__Alternatives4137);
+                    ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getBooleanExpressionAccess().getExponentialDistributionParserRuleCall_18()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanExpression__Alternatives"
+
+
+    // $ANTLR start "rule__EString__Alternatives"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1802:1: rule__EString__Alternatives : ( ( RULE_STRING ) | ( RULE_ID ) );
+    public final void rule__EString__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1806:1: ( ( RULE_STRING ) | ( RULE_ID ) )
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==RULE_STRING) ) {
+                alt7=1;
+            }
+            else if ( (LA7_0==RULE_ID) ) {
+                alt7=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1807:1: ( RULE_STRING )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1807:1: ( RULE_STRING )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1808:1: RULE_STRING
+                    {
+                     before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
+                    match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_rule__EString__Alternatives4169); 
+                     after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1813:6: ( RULE_ID )
+                    {
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1813:6: ( RULE_ID )
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1814:1: RULE_ID
+                    {
+                     before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
+                    match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rule__EString__Alternatives4186); 
+                     after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EString__Alternatives"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1827:1: rule__ExplicitFunction__Group__0 : rule__ExplicitFunction__Group__0__Impl rule__ExplicitFunction__Group__1 ;
+    public final void rule__ExplicitFunction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1831:1: ( rule__ExplicitFunction__Group__0__Impl rule__ExplicitFunction__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1832:2: rule__ExplicitFunction__Group__0__Impl rule__ExplicitFunction__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__0__Impl_in_rule__ExplicitFunction__Group__04217);
+            rule__ExplicitFunction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__1_in_rule__ExplicitFunction__Group__04220);
+            rule__ExplicitFunction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__0"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1839:1: rule__ExplicitFunction__Group__0__Impl : ( () ) ;
+    public final void rule__ExplicitFunction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1843:1: ( ( () ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1844:1: ( () )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1844:1: ( () )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1845:1: ()
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getExplicitFunctionAction_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1846:1: ()
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1848:1: 
+            {
+            }
+
+             after(grammarAccess.getExplicitFunctionAccess().getExplicitFunctionAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1858:1: rule__ExplicitFunction__Group__1 : rule__ExplicitFunction__Group__1__Impl rule__ExplicitFunction__Group__2 ;
+    public final void rule__ExplicitFunction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1862:1: ( rule__ExplicitFunction__Group__1__Impl rule__ExplicitFunction__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1863:2: rule__ExplicitFunction__Group__1__Impl rule__ExplicitFunction__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__1__Impl_in_rule__ExplicitFunction__Group__14278);
+            rule__ExplicitFunction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__2_in_rule__ExplicitFunction__Group__14281);
+            rule__ExplicitFunction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__1"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1870:1: rule__ExplicitFunction__Group__1__Impl : ( 'ExplicitFunction' ) ;
+    public final void rule__ExplicitFunction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1874:1: ( ( 'ExplicitFunction' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1875:1: ( 'ExplicitFunction' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1875:1: ( 'ExplicitFunction' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1876:1: 'ExplicitFunction'
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getExplicitFunctionKeyword_1()); 
+            match(input,15,FollowSets000.FOLLOW_15_in_rule__ExplicitFunction__Group__1__Impl4309); 
+             after(grammarAccess.getExplicitFunctionAccess().getExplicitFunctionKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1889:1: rule__ExplicitFunction__Group__2 : rule__ExplicitFunction__Group__2__Impl rule__ExplicitFunction__Group__3 ;
+    public final void rule__ExplicitFunction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1893:1: ( rule__ExplicitFunction__Group__2__Impl rule__ExplicitFunction__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1894:2: rule__ExplicitFunction__Group__2__Impl rule__ExplicitFunction__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__2__Impl_in_rule__ExplicitFunction__Group__24340);
+            rule__ExplicitFunction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__3_in_rule__ExplicitFunction__Group__24343);
+            rule__ExplicitFunction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__2"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1901:1: rule__ExplicitFunction__Group__2__Impl : ( '{' ) ;
+    public final void rule__ExplicitFunction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1905:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1906:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1906:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1907:1: '{'
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__ExplicitFunction__Group__2__Impl4371); 
+             after(grammarAccess.getExplicitFunctionAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1920:1: rule__ExplicitFunction__Group__3 : rule__ExplicitFunction__Group__3__Impl rule__ExplicitFunction__Group__4 ;
+    public final void rule__ExplicitFunction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1924:1: ( rule__ExplicitFunction__Group__3__Impl rule__ExplicitFunction__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1925:2: rule__ExplicitFunction__Group__3__Impl rule__ExplicitFunction__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__3__Impl_in_rule__ExplicitFunction__Group__34402);
+            rule__ExplicitFunction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__4_in_rule__ExplicitFunction__Group__34405);
+            rule__ExplicitFunction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__3"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1932:1: rule__ExplicitFunction__Group__3__Impl : ( ( rule__ExplicitFunction__Group_3__0 )? ) ;
+    public final void rule__ExplicitFunction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1936:1: ( ( ( rule__ExplicitFunction__Group_3__0 )? ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1937:1: ( ( rule__ExplicitFunction__Group_3__0 )? )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1937:1: ( ( rule__ExplicitFunction__Group_3__0 )? )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1938:1: ( rule__ExplicitFunction__Group_3__0 )?
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getGroup_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1939:1: ( rule__ExplicitFunction__Group_3__0 )?
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==18) ) {
+                alt8=1;
+            }
+            switch (alt8) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1939:2: rule__ExplicitFunction__Group_3__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group_3__0_in_rule__ExplicitFunction__Group__3__Impl4432);
+                    rule__ExplicitFunction__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getExplicitFunctionAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1949:1: rule__ExplicitFunction__Group__4 : rule__ExplicitFunction__Group__4__Impl rule__ExplicitFunction__Group__5 ;
+    public final void rule__ExplicitFunction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1953:1: ( rule__ExplicitFunction__Group__4__Impl rule__ExplicitFunction__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1954:2: rule__ExplicitFunction__Group__4__Impl rule__ExplicitFunction__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__4__Impl_in_rule__ExplicitFunction__Group__44463);
+            rule__ExplicitFunction__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__5_in_rule__ExplicitFunction__Group__44466);
+            rule__ExplicitFunction__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__4"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1961:1: rule__ExplicitFunction__Group__4__Impl : ( ( rule__ExplicitFunction__Group_4__0 )? ) ;
+    public final void rule__ExplicitFunction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1965:1: ( ( ( rule__ExplicitFunction__Group_4__0 )? ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1966:1: ( ( rule__ExplicitFunction__Group_4__0 )? )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1966:1: ( ( rule__ExplicitFunction__Group_4__0 )? )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1967:1: ( rule__ExplicitFunction__Group_4__0 )?
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getGroup_4()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1968:1: ( rule__ExplicitFunction__Group_4__0 )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==19) ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1968:2: rule__ExplicitFunction__Group_4__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group_4__0_in_rule__ExplicitFunction__Group__4__Impl4493);
+                    rule__ExplicitFunction__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getExplicitFunctionAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1978:1: rule__ExplicitFunction__Group__5 : rule__ExplicitFunction__Group__5__Impl ;
+    public final void rule__ExplicitFunction__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1982:1: ( rule__ExplicitFunction__Group__5__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1983:2: rule__ExplicitFunction__Group__5__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group__5__Impl_in_rule__ExplicitFunction__Group__54524);
+            rule__ExplicitFunction__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__5"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1989:1: rule__ExplicitFunction__Group__5__Impl : ( '}' ) ;
+    public final void rule__ExplicitFunction__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1993:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1994:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1994:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:1995:1: '}'
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__ExplicitFunction__Group__5__Impl4552); 
+             after(grammarAccess.getExplicitFunctionAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group_3__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2020:1: rule__ExplicitFunction__Group_3__0 : rule__ExplicitFunction__Group_3__0__Impl rule__ExplicitFunction__Group_3__1 ;
+    public final void rule__ExplicitFunction__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2024:1: ( rule__ExplicitFunction__Group_3__0__Impl rule__ExplicitFunction__Group_3__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2025:2: rule__ExplicitFunction__Group_3__0__Impl rule__ExplicitFunction__Group_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group_3__0__Impl_in_rule__ExplicitFunction__Group_3__04595);
+            rule__ExplicitFunction__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group_3__1_in_rule__ExplicitFunction__Group_3__04598);
+            rule__ExplicitFunction__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group_3__0"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group_3__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2032:1: rule__ExplicitFunction__Group_3__0__Impl : ( 'specification' ) ;
+    public final void rule__ExplicitFunction__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2036:1: ( ( 'specification' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2037:1: ( 'specification' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2037:1: ( 'specification' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2038:1: 'specification'
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getSpecificationKeyword_3_0()); 
+            match(input,18,FollowSets000.FOLLOW_18_in_rule__ExplicitFunction__Group_3__0__Impl4626); 
+             after(grammarAccess.getExplicitFunctionAccess().getSpecificationKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group_3__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2051:1: rule__ExplicitFunction__Group_3__1 : rule__ExplicitFunction__Group_3__1__Impl ;
+    public final void rule__ExplicitFunction__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2055:1: ( rule__ExplicitFunction__Group_3__1__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2056:2: rule__ExplicitFunction__Group_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group_3__1__Impl_in_rule__ExplicitFunction__Group_3__14657);
+            rule__ExplicitFunction__Group_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group_3__1"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group_3__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2062:1: rule__ExplicitFunction__Group_3__1__Impl : ( ( rule__ExplicitFunction__SpecificationAssignment_3_1 ) ) ;
+    public final void rule__ExplicitFunction__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2066:1: ( ( ( rule__ExplicitFunction__SpecificationAssignment_3_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2067:1: ( ( rule__ExplicitFunction__SpecificationAssignment_3_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2067:1: ( ( rule__ExplicitFunction__SpecificationAssignment_3_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2068:1: ( rule__ExplicitFunction__SpecificationAssignment_3_1 )
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getSpecificationAssignment_3_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2069:1: ( rule__ExplicitFunction__SpecificationAssignment_3_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2069:2: rule__ExplicitFunction__SpecificationAssignment_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__SpecificationAssignment_3_1_in_rule__ExplicitFunction__Group_3__1__Impl4684);
+            rule__ExplicitFunction__SpecificationAssignment_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExplicitFunctionAccess().getSpecificationAssignment_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group_4__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2083:1: rule__ExplicitFunction__Group_4__0 : rule__ExplicitFunction__Group_4__0__Impl rule__ExplicitFunction__Group_4__1 ;
+    public final void rule__ExplicitFunction__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2087:1: ( rule__ExplicitFunction__Group_4__0__Impl rule__ExplicitFunction__Group_4__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2088:2: rule__ExplicitFunction__Group_4__0__Impl rule__ExplicitFunction__Group_4__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group_4__0__Impl_in_rule__ExplicitFunction__Group_4__04718);
+            rule__ExplicitFunction__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group_4__1_in_rule__ExplicitFunction__Group_4__04721);
+            rule__ExplicitFunction__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group_4__0"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group_4__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2095:1: rule__ExplicitFunction__Group_4__0__Impl : ( 'expression' ) ;
+    public final void rule__ExplicitFunction__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2099:1: ( ( 'expression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2100:1: ( 'expression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2100:1: ( 'expression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2101:1: 'expression'
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getExpressionKeyword_4_0()); 
+            match(input,19,FollowSets000.FOLLOW_19_in_rule__ExplicitFunction__Group_4__0__Impl4749); 
+             after(grammarAccess.getExplicitFunctionAccess().getExpressionKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group_4__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2114:1: rule__ExplicitFunction__Group_4__1 : rule__ExplicitFunction__Group_4__1__Impl ;
+    public final void rule__ExplicitFunction__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2118:1: ( rule__ExplicitFunction__Group_4__1__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2119:2: rule__ExplicitFunction__Group_4__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__Group_4__1__Impl_in_rule__ExplicitFunction__Group_4__14780);
+            rule__ExplicitFunction__Group_4__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group_4__1"
+
+
+    // $ANTLR start "rule__ExplicitFunction__Group_4__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2125:1: rule__ExplicitFunction__Group_4__1__Impl : ( ( rule__ExplicitFunction__ExpressionAssignment_4_1 ) ) ;
+    public final void rule__ExplicitFunction__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2129:1: ( ( ( rule__ExplicitFunction__ExpressionAssignment_4_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2130:1: ( ( rule__ExplicitFunction__ExpressionAssignment_4_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2130:1: ( ( rule__ExplicitFunction__ExpressionAssignment_4_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2131:1: ( rule__ExplicitFunction__ExpressionAssignment_4_1 )
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getExpressionAssignment_4_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2132:1: ( rule__ExplicitFunction__ExpressionAssignment_4_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2132:2: rule__ExplicitFunction__ExpressionAssignment_4_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExplicitFunction__ExpressionAssignment_4_1_in_rule__ExplicitFunction__Group_4__1__Impl4807);
+            rule__ExplicitFunction__ExpressionAssignment_4_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExplicitFunctionAccess().getExpressionAssignment_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__TermExpression__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2146:1: rule__TermExpression__Group__0 : rule__TermExpression__Group__0__Impl rule__TermExpression__Group__1 ;
+    public final void rule__TermExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2150:1: ( rule__TermExpression__Group__0__Impl rule__TermExpression__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2151:2: rule__TermExpression__Group__0__Impl rule__TermExpression__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__0__Impl_in_rule__TermExpression__Group__04841);
+            rule__TermExpression__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__1_in_rule__TermExpression__Group__04844);
+            rule__TermExpression__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__0"
+
+
+    // $ANTLR start "rule__TermExpression__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2158:1: rule__TermExpression__Group__0__Impl : ( 'TermExpression' ) ;
+    public final void rule__TermExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2162:1: ( ( 'TermExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2163:1: ( 'TermExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2163:1: ( 'TermExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2164:1: 'TermExpression'
+            {
+             before(grammarAccess.getTermExpressionAccess().getTermExpressionKeyword_0()); 
+            match(input,20,FollowSets000.FOLLOW_20_in_rule__TermExpression__Group__0__Impl4872); 
+             after(grammarAccess.getTermExpressionAccess().getTermExpressionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__TermExpression__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2177:1: rule__TermExpression__Group__1 : rule__TermExpression__Group__1__Impl rule__TermExpression__Group__2 ;
+    public final void rule__TermExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2181:1: ( rule__TermExpression__Group__1__Impl rule__TermExpression__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2182:2: rule__TermExpression__Group__1__Impl rule__TermExpression__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__1__Impl_in_rule__TermExpression__Group__14903);
+            rule__TermExpression__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__2_in_rule__TermExpression__Group__14906);
+            rule__TermExpression__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__1"
+
+
+    // $ANTLR start "rule__TermExpression__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2189:1: rule__TermExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__TermExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2193:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2194:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2194:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2195:1: '{'
+            {
+             before(grammarAccess.getTermExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__TermExpression__Group__1__Impl4934); 
+             after(grammarAccess.getTermExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__TermExpression__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2208:1: rule__TermExpression__Group__2 : rule__TermExpression__Group__2__Impl rule__TermExpression__Group__3 ;
+    public final void rule__TermExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2212:1: ( rule__TermExpression__Group__2__Impl rule__TermExpression__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2213:2: rule__TermExpression__Group__2__Impl rule__TermExpression__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__2__Impl_in_rule__TermExpression__Group__24965);
+            rule__TermExpression__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__3_in_rule__TermExpression__Group__24968);
+            rule__TermExpression__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__2"
+
+
+    // $ANTLR start "rule__TermExpression__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2220:1: rule__TermExpression__Group__2__Impl : ( ruleTermExpression2 ) ;
+    public final void rule__TermExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2224:1: ( ( ruleTermExpression2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2225:1: ( ruleTermExpression2 )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2225:1: ( ruleTermExpression2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2226:1: ruleTermExpression2
+            {
+             before(grammarAccess.getTermExpressionAccess().getTermExpression2ParserRuleCall_2()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermExpression2_in_rule__TermExpression__Group__2__Impl4995);
+            ruleTermExpression2();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermExpressionAccess().getTermExpression2ParserRuleCall_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__TermExpression__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2237:1: rule__TermExpression__Group__3 : rule__TermExpression__Group__3__Impl rule__TermExpression__Group__4 ;
+    public final void rule__TermExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2241:1: ( rule__TermExpression__Group__3__Impl rule__TermExpression__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2242:2: rule__TermExpression__Group__3__Impl rule__TermExpression__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__3__Impl_in_rule__TermExpression__Group__35024);
+            rule__TermExpression__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__4_in_rule__TermExpression__Group__35027);
+            rule__TermExpression__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__3"
+
+
+    // $ANTLR start "rule__TermExpression__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2249:1: rule__TermExpression__Group__3__Impl : ( ( rule__TermExpression__Group_3__0 )* ) ;
+    public final void rule__TermExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2253:1: ( ( ( rule__TermExpression__Group_3__0 )* ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2254:1: ( ( rule__TermExpression__Group_3__0 )* )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2254:1: ( ( rule__TermExpression__Group_3__0 )* )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2255:1: ( rule__TermExpression__Group_3__0 )*
+            {
+             before(grammarAccess.getTermExpressionAccess().getGroup_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2256:1: ( rule__TermExpression__Group_3__0 )*
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( (LA10_0==11) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2256:2: rule__TermExpression__Group_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group_3__0_in_rule__TermExpression__Group__3__Impl5054);
+            	    rule__TermExpression__Group_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop10;
+                }
+            } while (true);
+
+             after(grammarAccess.getTermExpressionAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__TermExpression__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2266:1: rule__TermExpression__Group__4 : rule__TermExpression__Group__4__Impl ;
+    public final void rule__TermExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2270:1: ( rule__TermExpression__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2271:2: rule__TermExpression__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group__4__Impl_in_rule__TermExpression__Group__45085);
+            rule__TermExpression__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__4"
+
+
+    // $ANTLR start "rule__TermExpression__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2277:1: rule__TermExpression__Group__4__Impl : ( '}' ) ;
+    public final void rule__TermExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2281:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2282:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2282:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2283:1: '}'
+            {
+             before(grammarAccess.getTermExpressionAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__TermExpression__Group__4__Impl5113); 
+             after(grammarAccess.getTermExpressionAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__TermExpression__Group_3__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2306:1: rule__TermExpression__Group_3__0 : rule__TermExpression__Group_3__0__Impl rule__TermExpression__Group_3__1 ;
+    public final void rule__TermExpression__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2310:1: ( rule__TermExpression__Group_3__0__Impl rule__TermExpression__Group_3__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2311:2: rule__TermExpression__Group_3__0__Impl rule__TermExpression__Group_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group_3__0__Impl_in_rule__TermExpression__Group_3__05154);
+            rule__TermExpression__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group_3__1_in_rule__TermExpression__Group_3__05157);
+            rule__TermExpression__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group_3__0"
+
+
+    // $ANTLR start "rule__TermExpression__Group_3__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2318:1: rule__TermExpression__Group_3__0__Impl : ( () ) ;
+    public final void rule__TermExpression__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2322:1: ( ( () ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2323:1: ( () )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2323:1: ( () )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2324:1: ()
+            {
+             before(grammarAccess.getTermExpressionAccess().getTermExpressionLeftAction_3_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2325:1: ()
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2327:1: 
+            {
+            }
+
+             after(grammarAccess.getTermExpressionAccess().getTermExpressionLeftAction_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__TermExpression__Group_3__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2337:1: rule__TermExpression__Group_3__1 : rule__TermExpression__Group_3__1__Impl rule__TermExpression__Group_3__2 ;
+    public final void rule__TermExpression__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2341:1: ( rule__TermExpression__Group_3__1__Impl rule__TermExpression__Group_3__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2342:2: rule__TermExpression__Group_3__1__Impl rule__TermExpression__Group_3__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group_3__1__Impl_in_rule__TermExpression__Group_3__15215);
+            rule__TermExpression__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group_3__2_in_rule__TermExpression__Group_3__15218);
+            rule__TermExpression__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group_3__1"
+
+
+    // $ANTLR start "rule__TermExpression__Group_3__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2349:1: rule__TermExpression__Group_3__1__Impl : ( ( rule__TermExpression__OperationAssignment_3_1 ) ) ;
+    public final void rule__TermExpression__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2353:1: ( ( ( rule__TermExpression__OperationAssignment_3_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2354:1: ( ( rule__TermExpression__OperationAssignment_3_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2354:1: ( ( rule__TermExpression__OperationAssignment_3_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2355:1: ( rule__TermExpression__OperationAssignment_3_1 )
+            {
+             before(grammarAccess.getTermExpressionAccess().getOperationAssignment_3_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2356:1: ( rule__TermExpression__OperationAssignment_3_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2356:2: rule__TermExpression__OperationAssignment_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__OperationAssignment_3_1_in_rule__TermExpression__Group_3__1__Impl5245);
+            rule__TermExpression__OperationAssignment_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermExpressionAccess().getOperationAssignment_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__TermExpression__Group_3__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2366:1: rule__TermExpression__Group_3__2 : rule__TermExpression__Group_3__2__Impl ;
+    public final void rule__TermExpression__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2370:1: ( rule__TermExpression__Group_3__2__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2371:2: rule__TermExpression__Group_3__2__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__Group_3__2__Impl_in_rule__TermExpression__Group_3__25275);
+            rule__TermExpression__Group_3__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group_3__2"
+
+
+    // $ANTLR start "rule__TermExpression__Group_3__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2377:1: rule__TermExpression__Group_3__2__Impl : ( ( rule__TermExpression__RightAssignment_3_2 ) ) ;
+    public final void rule__TermExpression__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2381:1: ( ( ( rule__TermExpression__RightAssignment_3_2 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2382:1: ( ( rule__TermExpression__RightAssignment_3_2 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2382:1: ( ( rule__TermExpression__RightAssignment_3_2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2383:1: ( rule__TermExpression__RightAssignment_3_2 )
+            {
+             before(grammarAccess.getTermExpressionAccess().getRightAssignment_3_2()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2384:1: ( rule__TermExpression__RightAssignment_3_2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2384:2: rule__TermExpression__RightAssignment_3_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression__RightAssignment_3_2_in_rule__TermExpression__Group_3__2__Impl5302);
+            rule__TermExpression__RightAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermExpressionAccess().getRightAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__TermExpression2__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2400:1: rule__TermExpression2__Group__0 : rule__TermExpression2__Group__0__Impl rule__TermExpression2__Group__1 ;
+    public final void rule__TermExpression2__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2404:1: ( rule__TermExpression2__Group__0__Impl rule__TermExpression2__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2405:2: rule__TermExpression2__Group__0__Impl rule__TermExpression2__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__Group__0__Impl_in_rule__TermExpression2__Group__05338);
+            rule__TermExpression2__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__Group__1_in_rule__TermExpression2__Group__05341);
+            rule__TermExpression2__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__Group__0"
+
+
+    // $ANTLR start "rule__TermExpression2__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2412:1: rule__TermExpression2__Group__0__Impl : ( ( rule__TermExpression2__LeftAssignment_0 ) ) ;
+    public final void rule__TermExpression2__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2416:1: ( ( ( rule__TermExpression2__LeftAssignment_0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2417:1: ( ( rule__TermExpression2__LeftAssignment_0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2417:1: ( ( rule__TermExpression2__LeftAssignment_0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2418:1: ( rule__TermExpression2__LeftAssignment_0 )
+            {
+             before(grammarAccess.getTermExpression2Access().getLeftAssignment_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2419:1: ( rule__TermExpression2__LeftAssignment_0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2419:2: rule__TermExpression2__LeftAssignment_0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__LeftAssignment_0_in_rule__TermExpression2__Group__0__Impl5368);
+            rule__TermExpression2__LeftAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermExpression2Access().getLeftAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__Group__0__Impl"
+
+
+    // $ANTLR start "rule__TermExpression2__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2429:1: rule__TermExpression2__Group__1 : rule__TermExpression2__Group__1__Impl rule__TermExpression2__Group__2 ;
+    public final void rule__TermExpression2__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2433:1: ( rule__TermExpression2__Group__1__Impl rule__TermExpression2__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2434:2: rule__TermExpression2__Group__1__Impl rule__TermExpression2__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__Group__1__Impl_in_rule__TermExpression2__Group__15398);
+            rule__TermExpression2__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__Group__2_in_rule__TermExpression2__Group__15401);
+            rule__TermExpression2__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__Group__1"
+
+
+    // $ANTLR start "rule__TermExpression2__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2441:1: rule__TermExpression2__Group__1__Impl : ( ( rule__TermExpression2__OperationAssignment_1 ) ) ;
+    public final void rule__TermExpression2__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2445:1: ( ( ( rule__TermExpression2__OperationAssignment_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2446:1: ( ( rule__TermExpression2__OperationAssignment_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2446:1: ( ( rule__TermExpression2__OperationAssignment_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2447:1: ( rule__TermExpression2__OperationAssignment_1 )
+            {
+             before(grammarAccess.getTermExpression2Access().getOperationAssignment_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2448:1: ( rule__TermExpression2__OperationAssignment_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2448:2: rule__TermExpression2__OperationAssignment_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__OperationAssignment_1_in_rule__TermExpression2__Group__1__Impl5428);
+            rule__TermExpression2__OperationAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermExpression2Access().getOperationAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__Group__1__Impl"
+
+
+    // $ANTLR start "rule__TermExpression2__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2458:1: rule__TermExpression2__Group__2 : rule__TermExpression2__Group__2__Impl ;
+    public final void rule__TermExpression2__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2462:1: ( rule__TermExpression2__Group__2__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2463:2: rule__TermExpression2__Group__2__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__Group__2__Impl_in_rule__TermExpression2__Group__25458);
+            rule__TermExpression2__Group__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__Group__2"
+
+
+    // $ANTLR start "rule__TermExpression2__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2469:1: rule__TermExpression2__Group__2__Impl : ( ( rule__TermExpression2__RightAssignment_2 ) ) ;
+    public final void rule__TermExpression2__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2473:1: ( ( ( rule__TermExpression2__RightAssignment_2 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2474:1: ( ( rule__TermExpression2__RightAssignment_2 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2474:1: ( ( rule__TermExpression2__RightAssignment_2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2475:1: ( rule__TermExpression2__RightAssignment_2 )
+            {
+             before(grammarAccess.getTermExpression2Access().getRightAssignment_2()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2476:1: ( rule__TermExpression2__RightAssignment_2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2476:2: rule__TermExpression2__RightAssignment_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TermExpression2__RightAssignment_2_in_rule__TermExpression2__Group__2__Impl5485);
+            rule__TermExpression2__RightAssignment_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTermExpression2Access().getRightAssignment_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2492:1: rule__ProductExpression__Group__0 : rule__ProductExpression__Group__0__Impl rule__ProductExpression__Group__1 ;
+    public final void rule__ProductExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2496:1: ( rule__ProductExpression__Group__0__Impl rule__ProductExpression__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2497:2: rule__ProductExpression__Group__0__Impl rule__ProductExpression__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__0__Impl_in_rule__ProductExpression__Group__05521);
+            rule__ProductExpression__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__1_in_rule__ProductExpression__Group__05524);
+            rule__ProductExpression__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__0"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2504:1: rule__ProductExpression__Group__0__Impl : ( 'ProductExpression' ) ;
+    public final void rule__ProductExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2508:1: ( ( 'ProductExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2509:1: ( 'ProductExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2509:1: ( 'ProductExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2510:1: 'ProductExpression'
+            {
+             before(grammarAccess.getProductExpressionAccess().getProductExpressionKeyword_0()); 
+            match(input,21,FollowSets000.FOLLOW_21_in_rule__ProductExpression__Group__0__Impl5552); 
+             after(grammarAccess.getProductExpressionAccess().getProductExpressionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2523:1: rule__ProductExpression__Group__1 : rule__ProductExpression__Group__1__Impl rule__ProductExpression__Group__2 ;
+    public final void rule__ProductExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2527:1: ( rule__ProductExpression__Group__1__Impl rule__ProductExpression__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2528:2: rule__ProductExpression__Group__1__Impl rule__ProductExpression__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__1__Impl_in_rule__ProductExpression__Group__15583);
+            rule__ProductExpression__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__2_in_rule__ProductExpression__Group__15586);
+            rule__ProductExpression__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__1"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2535:1: rule__ProductExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__ProductExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2539:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2540:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2540:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2541:1: '{'
+            {
+             before(grammarAccess.getProductExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__ProductExpression__Group__1__Impl5614); 
+             after(grammarAccess.getProductExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2554:1: rule__ProductExpression__Group__2 : rule__ProductExpression__Group__2__Impl rule__ProductExpression__Group__3 ;
+    public final void rule__ProductExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2558:1: ( rule__ProductExpression__Group__2__Impl rule__ProductExpression__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2559:2: rule__ProductExpression__Group__2__Impl rule__ProductExpression__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__2__Impl_in_rule__ProductExpression__Group__25645);
+            rule__ProductExpression__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__3_in_rule__ProductExpression__Group__25648);
+            rule__ProductExpression__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__2"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2566:1: rule__ProductExpression__Group__2__Impl : ( ruleProductExpression2 ) ;
+    public final void rule__ProductExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2570:1: ( ( ruleProductExpression2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2571:1: ( ruleProductExpression2 )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2571:1: ( ruleProductExpression2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2572:1: ruleProductExpression2
+            {
+             before(grammarAccess.getProductExpressionAccess().getProductExpression2ParserRuleCall_2()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductExpression2_in_rule__ProductExpression__Group__2__Impl5675);
+            ruleProductExpression2();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductExpressionAccess().getProductExpression2ParserRuleCall_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2583:1: rule__ProductExpression__Group__3 : rule__ProductExpression__Group__3__Impl rule__ProductExpression__Group__4 ;
+    public final void rule__ProductExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2587:1: ( rule__ProductExpression__Group__3__Impl rule__ProductExpression__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2588:2: rule__ProductExpression__Group__3__Impl rule__ProductExpression__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__3__Impl_in_rule__ProductExpression__Group__35704);
+            rule__ProductExpression__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__4_in_rule__ProductExpression__Group__35707);
+            rule__ProductExpression__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__3"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2595:1: rule__ProductExpression__Group__3__Impl : ( ( rule__ProductExpression__Group_3__0 )* ) ;
+    public final void rule__ProductExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2599:1: ( ( ( rule__ProductExpression__Group_3__0 )* ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2600:1: ( ( rule__ProductExpression__Group_3__0 )* )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2600:1: ( ( rule__ProductExpression__Group_3__0 )* )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2601:1: ( rule__ProductExpression__Group_3__0 )*
+            {
+             before(grammarAccess.getProductExpressionAccess().getGroup_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2602:1: ( rule__ProductExpression__Group_3__0 )*
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( (LA11_0==12) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2602:2: rule__ProductExpression__Group_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group_3__0_in_rule__ProductExpression__Group__3__Impl5734);
+            	    rule__ProductExpression__Group_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop11;
+                }
+            } while (true);
+
+             after(grammarAccess.getProductExpressionAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2612:1: rule__ProductExpression__Group__4 : rule__ProductExpression__Group__4__Impl ;
+    public final void rule__ProductExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2616:1: ( rule__ProductExpression__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2617:2: rule__ProductExpression__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group__4__Impl_in_rule__ProductExpression__Group__45765);
+            rule__ProductExpression__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__4"
+
+
+    // $ANTLR start "rule__ProductExpression__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2623:1: rule__ProductExpression__Group__4__Impl : ( '}' ) ;
+    public final void rule__ProductExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2627:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2628:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2628:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2629:1: '}'
+            {
+             before(grammarAccess.getProductExpressionAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__ProductExpression__Group__4__Impl5793); 
+             after(grammarAccess.getProductExpressionAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression__Group_3__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2652:1: rule__ProductExpression__Group_3__0 : rule__ProductExpression__Group_3__0__Impl rule__ProductExpression__Group_3__1 ;
+    public final void rule__ProductExpression__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2656:1: ( rule__ProductExpression__Group_3__0__Impl rule__ProductExpression__Group_3__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2657:2: rule__ProductExpression__Group_3__0__Impl rule__ProductExpression__Group_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group_3__0__Impl_in_rule__ProductExpression__Group_3__05834);
+            rule__ProductExpression__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group_3__1_in_rule__ProductExpression__Group_3__05837);
+            rule__ProductExpression__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group_3__0"
+
+
+    // $ANTLR start "rule__ProductExpression__Group_3__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2664:1: rule__ProductExpression__Group_3__0__Impl : ( () ) ;
+    public final void rule__ProductExpression__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2668:1: ( ( () ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2669:1: ( () )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2669:1: ( () )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2670:1: ()
+            {
+             before(grammarAccess.getProductExpressionAccess().getProductExpressionLeftAction_3_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2671:1: ()
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2673:1: 
+            {
+            }
+
+             after(grammarAccess.getProductExpressionAccess().getProductExpressionLeftAction_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression__Group_3__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2683:1: rule__ProductExpression__Group_3__1 : rule__ProductExpression__Group_3__1__Impl rule__ProductExpression__Group_3__2 ;
+    public final void rule__ProductExpression__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2687:1: ( rule__ProductExpression__Group_3__1__Impl rule__ProductExpression__Group_3__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2688:2: rule__ProductExpression__Group_3__1__Impl rule__ProductExpression__Group_3__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group_3__1__Impl_in_rule__ProductExpression__Group_3__15895);
+            rule__ProductExpression__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group_3__2_in_rule__ProductExpression__Group_3__15898);
+            rule__ProductExpression__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group_3__1"
+
+
+    // $ANTLR start "rule__ProductExpression__Group_3__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2695:1: rule__ProductExpression__Group_3__1__Impl : ( ( rule__ProductExpression__OperationAssignment_3_1 ) ) ;
+    public final void rule__ProductExpression__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2699:1: ( ( ( rule__ProductExpression__OperationAssignment_3_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2700:1: ( ( rule__ProductExpression__OperationAssignment_3_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2700:1: ( ( rule__ProductExpression__OperationAssignment_3_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2701:1: ( rule__ProductExpression__OperationAssignment_3_1 )
+            {
+             before(grammarAccess.getProductExpressionAccess().getOperationAssignment_3_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2702:1: ( rule__ProductExpression__OperationAssignment_3_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2702:2: rule__ProductExpression__OperationAssignment_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__OperationAssignment_3_1_in_rule__ProductExpression__Group_3__1__Impl5925);
+            rule__ProductExpression__OperationAssignment_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProductExpressionAccess().getOperationAssignment_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression__Group_3__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2712:1: rule__ProductExpression__Group_3__2 : rule__ProductExpression__Group_3__2__Impl ;
+    public final void rule__ProductExpression__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2716:1: ( rule__ProductExpression__Group_3__2__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2717:2: rule__ProductExpression__Group_3__2__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__Group_3__2__Impl_in_rule__ProductExpression__Group_3__25955);
+            rule__ProductExpression__Group_3__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group_3__2"
+
+
+    // $ANTLR start "rule__ProductExpression__Group_3__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2723:1: rule__ProductExpression__Group_3__2__Impl : ( ( rule__ProductExpression__RightAssignment_3_2 ) ) ;
+    public final void rule__ProductExpression__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2727:1: ( ( ( rule__ProductExpression__RightAssignment_3_2 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2728:1: ( ( rule__ProductExpression__RightAssignment_3_2 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2728:1: ( ( rule__ProductExpression__RightAssignment_3_2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2729:1: ( rule__ProductExpression__RightAssignment_3_2 )
+            {
+             before(grammarAccess.getProductExpressionAccess().getRightAssignment_3_2()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2730:1: ( rule__ProductExpression__RightAssignment_3_2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2730:2: rule__ProductExpression__RightAssignment_3_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression__RightAssignment_3_2_in_rule__ProductExpression__Group_3__2__Impl5982);
+            rule__ProductExpression__RightAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProductExpressionAccess().getRightAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression2__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2746:1: rule__ProductExpression2__Group__0 : rule__ProductExpression2__Group__0__Impl rule__ProductExpression2__Group__1 ;
+    public final void rule__ProductExpression2__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2750:1: ( rule__ProductExpression2__Group__0__Impl rule__ProductExpression2__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2751:2: rule__ProductExpression2__Group__0__Impl rule__ProductExpression2__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__Group__0__Impl_in_rule__ProductExpression2__Group__06018);
+            rule__ProductExpression2__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__Group__1_in_rule__ProductExpression2__Group__06021);
+            rule__ProductExpression2__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__Group__0"
+
+
+    // $ANTLR start "rule__ProductExpression2__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2758:1: rule__ProductExpression2__Group__0__Impl : ( ( rule__ProductExpression2__LeftAssignment_0 ) ) ;
+    public final void rule__ProductExpression2__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2762:1: ( ( ( rule__ProductExpression2__LeftAssignment_0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2763:1: ( ( rule__ProductExpression2__LeftAssignment_0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2763:1: ( ( rule__ProductExpression2__LeftAssignment_0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2764:1: ( rule__ProductExpression2__LeftAssignment_0 )
+            {
+             before(grammarAccess.getProductExpression2Access().getLeftAssignment_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2765:1: ( rule__ProductExpression2__LeftAssignment_0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2765:2: rule__ProductExpression2__LeftAssignment_0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__LeftAssignment_0_in_rule__ProductExpression2__Group__0__Impl6048);
+            rule__ProductExpression2__LeftAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProductExpression2Access().getLeftAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression2__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2775:1: rule__ProductExpression2__Group__1 : rule__ProductExpression2__Group__1__Impl rule__ProductExpression2__Group__2 ;
+    public final void rule__ProductExpression2__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2779:1: ( rule__ProductExpression2__Group__1__Impl rule__ProductExpression2__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2780:2: rule__ProductExpression2__Group__1__Impl rule__ProductExpression2__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__Group__1__Impl_in_rule__ProductExpression2__Group__16078);
+            rule__ProductExpression2__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__Group__2_in_rule__ProductExpression2__Group__16081);
+            rule__ProductExpression2__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__Group__1"
+
+
+    // $ANTLR start "rule__ProductExpression2__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2787:1: rule__ProductExpression2__Group__1__Impl : ( ( rule__ProductExpression2__OperationAssignment_1 ) ) ;
+    public final void rule__ProductExpression2__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2791:1: ( ( ( rule__ProductExpression2__OperationAssignment_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2792:1: ( ( rule__ProductExpression2__OperationAssignment_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2792:1: ( ( rule__ProductExpression2__OperationAssignment_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2793:1: ( rule__ProductExpression2__OperationAssignment_1 )
+            {
+             before(grammarAccess.getProductExpression2Access().getOperationAssignment_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2794:1: ( rule__ProductExpression2__OperationAssignment_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2794:2: rule__ProductExpression2__OperationAssignment_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__OperationAssignment_1_in_rule__ProductExpression2__Group__1__Impl6108);
+            rule__ProductExpression2__OperationAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProductExpression2Access().getOperationAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ProductExpression2__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2804:1: rule__ProductExpression2__Group__2 : rule__ProductExpression2__Group__2__Impl ;
+    public final void rule__ProductExpression2__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2808:1: ( rule__ProductExpression2__Group__2__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2809:2: rule__ProductExpression2__Group__2__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__Group__2__Impl_in_rule__ProductExpression2__Group__26138);
+            rule__ProductExpression2__Group__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__Group__2"
+
+
+    // $ANTLR start "rule__ProductExpression2__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2815:1: rule__ProductExpression2__Group__2__Impl : ( ( rule__ProductExpression2__RightAssignment_2 ) ) ;
+    public final void rule__ProductExpression2__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2819:1: ( ( ( rule__ProductExpression2__RightAssignment_2 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2820:1: ( ( rule__ProductExpression2__RightAssignment_2 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2820:1: ( ( rule__ProductExpression2__RightAssignment_2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2821:1: ( rule__ProductExpression2__RightAssignment_2 )
+            {
+             before(grammarAccess.getProductExpression2Access().getRightAssignment_2()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2822:1: ( rule__ProductExpression2__RightAssignment_2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2822:2: rule__ProductExpression2__RightAssignment_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProductExpression2__RightAssignment_2_in_rule__ProductExpression2__Group__2__Impl6165);
+            rule__ProductExpression2__RightAssignment_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProductExpression2Access().getRightAssignment_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2838:1: rule__CompareExpression__Group__0 : rule__CompareExpression__Group__0__Impl rule__CompareExpression__Group__1 ;
+    public final void rule__CompareExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2842:1: ( rule__CompareExpression__Group__0__Impl rule__CompareExpression__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2843:2: rule__CompareExpression__Group__0__Impl rule__CompareExpression__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__0__Impl_in_rule__CompareExpression__Group__06201);
+            rule__CompareExpression__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__1_in_rule__CompareExpression__Group__06204);
+            rule__CompareExpression__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__0"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2850:1: rule__CompareExpression__Group__0__Impl : ( 'CompareExpression' ) ;
+    public final void rule__CompareExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2854:1: ( ( 'CompareExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2855:1: ( 'CompareExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2855:1: ( 'CompareExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2856:1: 'CompareExpression'
+            {
+             before(grammarAccess.getCompareExpressionAccess().getCompareExpressionKeyword_0()); 
+            match(input,22,FollowSets000.FOLLOW_22_in_rule__CompareExpression__Group__0__Impl6232); 
+             after(grammarAccess.getCompareExpressionAccess().getCompareExpressionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2869:1: rule__CompareExpression__Group__1 : rule__CompareExpression__Group__1__Impl rule__CompareExpression__Group__2 ;
+    public final void rule__CompareExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2873:1: ( rule__CompareExpression__Group__1__Impl rule__CompareExpression__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2874:2: rule__CompareExpression__Group__1__Impl rule__CompareExpression__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__1__Impl_in_rule__CompareExpression__Group__16263);
+            rule__CompareExpression__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__2_in_rule__CompareExpression__Group__16266);
+            rule__CompareExpression__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__1"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2881:1: rule__CompareExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__CompareExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2885:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2886:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2886:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2887:1: '{'
+            {
+             before(grammarAccess.getCompareExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__CompareExpression__Group__1__Impl6294); 
+             after(grammarAccess.getCompareExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2900:1: rule__CompareExpression__Group__2 : rule__CompareExpression__Group__2__Impl rule__CompareExpression__Group__3 ;
+    public final void rule__CompareExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2904:1: ( rule__CompareExpression__Group__2__Impl rule__CompareExpression__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2905:2: rule__CompareExpression__Group__2__Impl rule__CompareExpression__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__2__Impl_in_rule__CompareExpression__Group__26325);
+            rule__CompareExpression__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__3_in_rule__CompareExpression__Group__26328);
+            rule__CompareExpression__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__2"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2912:1: rule__CompareExpression__Group__2__Impl : ( 'operation' ) ;
+    public final void rule__CompareExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2916:1: ( ( 'operation' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2917:1: ( 'operation' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2917:1: ( 'operation' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2918:1: 'operation'
+            {
+             before(grammarAccess.getCompareExpressionAccess().getOperationKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__CompareExpression__Group__2__Impl6356); 
+             after(grammarAccess.getCompareExpressionAccess().getOperationKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2931:1: rule__CompareExpression__Group__3 : rule__CompareExpression__Group__3__Impl rule__CompareExpression__Group__4 ;
+    public final void rule__CompareExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2935:1: ( rule__CompareExpression__Group__3__Impl rule__CompareExpression__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2936:2: rule__CompareExpression__Group__3__Impl rule__CompareExpression__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__3__Impl_in_rule__CompareExpression__Group__36387);
+            rule__CompareExpression__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__4_in_rule__CompareExpression__Group__36390);
+            rule__CompareExpression__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__3"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2943:1: rule__CompareExpression__Group__3__Impl : ( ( rule__CompareExpression__OperationAssignment_3 ) ) ;
+    public final void rule__CompareExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2947:1: ( ( ( rule__CompareExpression__OperationAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2948:1: ( ( rule__CompareExpression__OperationAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2948:1: ( ( rule__CompareExpression__OperationAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2949:1: ( rule__CompareExpression__OperationAssignment_3 )
+            {
+             before(grammarAccess.getCompareExpressionAccess().getOperationAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2950:1: ( rule__CompareExpression__OperationAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2950:2: rule__CompareExpression__OperationAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__OperationAssignment_3_in_rule__CompareExpression__Group__3__Impl6417);
+            rule__CompareExpression__OperationAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getCompareExpressionAccess().getOperationAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2960:1: rule__CompareExpression__Group__4 : rule__CompareExpression__Group__4__Impl rule__CompareExpression__Group__5 ;
+    public final void rule__CompareExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2964:1: ( rule__CompareExpression__Group__4__Impl rule__CompareExpression__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2965:2: rule__CompareExpression__Group__4__Impl rule__CompareExpression__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__4__Impl_in_rule__CompareExpression__Group__46447);
+            rule__CompareExpression__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__5_in_rule__CompareExpression__Group__46450);
+            rule__CompareExpression__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__4"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2972:1: rule__CompareExpression__Group__4__Impl : ( 'left' ) ;
+    public final void rule__CompareExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2976:1: ( ( 'left' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2977:1: ( 'left' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2977:1: ( 'left' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2978:1: 'left'
+            {
+             before(grammarAccess.getCompareExpressionAccess().getLeftKeyword_4()); 
+            match(input,24,FollowSets000.FOLLOW_24_in_rule__CompareExpression__Group__4__Impl6478); 
+             after(grammarAccess.getCompareExpressionAccess().getLeftKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2991:1: rule__CompareExpression__Group__5 : rule__CompareExpression__Group__5__Impl rule__CompareExpression__Group__6 ;
+    public final void rule__CompareExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2995:1: ( rule__CompareExpression__Group__5__Impl rule__CompareExpression__Group__6 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:2996:2: rule__CompareExpression__Group__5__Impl rule__CompareExpression__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__5__Impl_in_rule__CompareExpression__Group__56509);
+            rule__CompareExpression__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__6_in_rule__CompareExpression__Group__56512);
+            rule__CompareExpression__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__5"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3003:1: rule__CompareExpression__Group__5__Impl : ( ( rule__CompareExpression__LeftAssignment_5 ) ) ;
+    public final void rule__CompareExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3007:1: ( ( ( rule__CompareExpression__LeftAssignment_5 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3008:1: ( ( rule__CompareExpression__LeftAssignment_5 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3008:1: ( ( rule__CompareExpression__LeftAssignment_5 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3009:1: ( rule__CompareExpression__LeftAssignment_5 )
+            {
+             before(grammarAccess.getCompareExpressionAccess().getLeftAssignment_5()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3010:1: ( rule__CompareExpression__LeftAssignment_5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3010:2: rule__CompareExpression__LeftAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__LeftAssignment_5_in_rule__CompareExpression__Group__5__Impl6539);
+            rule__CompareExpression__LeftAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getCompareExpressionAccess().getLeftAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__6"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3020:1: rule__CompareExpression__Group__6 : rule__CompareExpression__Group__6__Impl rule__CompareExpression__Group__7 ;
+    public final void rule__CompareExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3024:1: ( rule__CompareExpression__Group__6__Impl rule__CompareExpression__Group__7 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3025:2: rule__CompareExpression__Group__6__Impl rule__CompareExpression__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__6__Impl_in_rule__CompareExpression__Group__66569);
+            rule__CompareExpression__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__7_in_rule__CompareExpression__Group__66572);
+            rule__CompareExpression__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__6"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__6__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3032:1: rule__CompareExpression__Group__6__Impl : ( 'right' ) ;
+    public final void rule__CompareExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3036:1: ( ( 'right' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3037:1: ( 'right' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3037:1: ( 'right' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3038:1: 'right'
+            {
+             before(grammarAccess.getCompareExpressionAccess().getRightKeyword_6()); 
+            match(input,25,FollowSets000.FOLLOW_25_in_rule__CompareExpression__Group__6__Impl6600); 
+             after(grammarAccess.getCompareExpressionAccess().getRightKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__6__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__7"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3051:1: rule__CompareExpression__Group__7 : rule__CompareExpression__Group__7__Impl rule__CompareExpression__Group__8 ;
+    public final void rule__CompareExpression__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3055:1: ( rule__CompareExpression__Group__7__Impl rule__CompareExpression__Group__8 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3056:2: rule__CompareExpression__Group__7__Impl rule__CompareExpression__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__7__Impl_in_rule__CompareExpression__Group__76631);
+            rule__CompareExpression__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__8_in_rule__CompareExpression__Group__76634);
+            rule__CompareExpression__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__7"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__7__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3063:1: rule__CompareExpression__Group__7__Impl : ( ( rule__CompareExpression__RightAssignment_7 ) ) ;
+    public final void rule__CompareExpression__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3067:1: ( ( ( rule__CompareExpression__RightAssignment_7 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3068:1: ( ( rule__CompareExpression__RightAssignment_7 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3068:1: ( ( rule__CompareExpression__RightAssignment_7 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3069:1: ( rule__CompareExpression__RightAssignment_7 )
+            {
+             before(grammarAccess.getCompareExpressionAccess().getRightAssignment_7()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3070:1: ( rule__CompareExpression__RightAssignment_7 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3070:2: rule__CompareExpression__RightAssignment_7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__RightAssignment_7_in_rule__CompareExpression__Group__7__Impl6661);
+            rule__CompareExpression__RightAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getCompareExpressionAccess().getRightAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__7__Impl"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__8"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3080:1: rule__CompareExpression__Group__8 : rule__CompareExpression__Group__8__Impl ;
+    public final void rule__CompareExpression__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3084:1: ( rule__CompareExpression__Group__8__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3085:2: rule__CompareExpression__Group__8__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__CompareExpression__Group__8__Impl_in_rule__CompareExpression__Group__86691);
+            rule__CompareExpression__Group__8__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__8"
+
+
+    // $ANTLR start "rule__CompareExpression__Group__8__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3091:1: rule__CompareExpression__Group__8__Impl : ( '}' ) ;
+    public final void rule__CompareExpression__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3095:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3096:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3096:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3097:1: '}'
+            {
+             before(grammarAccess.getCompareExpressionAccess().getRightCurlyBracketKeyword_8()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__CompareExpression__Group__8__Impl6719); 
+             after(grammarAccess.getCompareExpressionAccess().getRightCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__Group__8__Impl"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3128:1: rule__PowerExpression__Group__0 : rule__PowerExpression__Group__0__Impl rule__PowerExpression__Group__1 ;
+    public final void rule__PowerExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3132:1: ( rule__PowerExpression__Group__0__Impl rule__PowerExpression__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3133:2: rule__PowerExpression__Group__0__Impl rule__PowerExpression__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__0__Impl_in_rule__PowerExpression__Group__06768);
+            rule__PowerExpression__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__1_in_rule__PowerExpression__Group__06771);
+            rule__PowerExpression__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__0"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3140:1: rule__PowerExpression__Group__0__Impl : ( 'PowerExpression' ) ;
+    public final void rule__PowerExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3144:1: ( ( 'PowerExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3145:1: ( 'PowerExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3145:1: ( 'PowerExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3146:1: 'PowerExpression'
+            {
+             before(grammarAccess.getPowerExpressionAccess().getPowerExpressionKeyword_0()); 
+            match(input,26,FollowSets000.FOLLOW_26_in_rule__PowerExpression__Group__0__Impl6799); 
+             after(grammarAccess.getPowerExpressionAccess().getPowerExpressionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3159:1: rule__PowerExpression__Group__1 : rule__PowerExpression__Group__1__Impl rule__PowerExpression__Group__2 ;
+    public final void rule__PowerExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3163:1: ( rule__PowerExpression__Group__1__Impl rule__PowerExpression__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3164:2: rule__PowerExpression__Group__1__Impl rule__PowerExpression__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__1__Impl_in_rule__PowerExpression__Group__16830);
+            rule__PowerExpression__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__2_in_rule__PowerExpression__Group__16833);
+            rule__PowerExpression__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__1"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3171:1: rule__PowerExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__PowerExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3175:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3176:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3176:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3177:1: '{'
+            {
+             before(grammarAccess.getPowerExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__PowerExpression__Group__1__Impl6861); 
+             after(grammarAccess.getPowerExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3190:1: rule__PowerExpression__Group__2 : rule__PowerExpression__Group__2__Impl rule__PowerExpression__Group__3 ;
+    public final void rule__PowerExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3194:1: ( rule__PowerExpression__Group__2__Impl rule__PowerExpression__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3195:2: rule__PowerExpression__Group__2__Impl rule__PowerExpression__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__2__Impl_in_rule__PowerExpression__Group__26892);
+            rule__PowerExpression__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__3_in_rule__PowerExpression__Group__26895);
+            rule__PowerExpression__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__2"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3202:1: rule__PowerExpression__Group__2__Impl : ( 'base' ) ;
+    public final void rule__PowerExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3206:1: ( ( 'base' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3207:1: ( 'base' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3207:1: ( 'base' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3208:1: 'base'
+            {
+             before(grammarAccess.getPowerExpressionAccess().getBaseKeyword_2()); 
+            match(input,27,FollowSets000.FOLLOW_27_in_rule__PowerExpression__Group__2__Impl6923); 
+             after(grammarAccess.getPowerExpressionAccess().getBaseKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3221:1: rule__PowerExpression__Group__3 : rule__PowerExpression__Group__3__Impl rule__PowerExpression__Group__4 ;
+    public final void rule__PowerExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3225:1: ( rule__PowerExpression__Group__3__Impl rule__PowerExpression__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3226:2: rule__PowerExpression__Group__3__Impl rule__PowerExpression__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__3__Impl_in_rule__PowerExpression__Group__36954);
+            rule__PowerExpression__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__4_in_rule__PowerExpression__Group__36957);
+            rule__PowerExpression__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__3"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3233:1: rule__PowerExpression__Group__3__Impl : ( ( rule__PowerExpression__BaseAssignment_3 ) ) ;
+    public final void rule__PowerExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3237:1: ( ( ( rule__PowerExpression__BaseAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3238:1: ( ( rule__PowerExpression__BaseAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3238:1: ( ( rule__PowerExpression__BaseAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3239:1: ( rule__PowerExpression__BaseAssignment_3 )
+            {
+             before(grammarAccess.getPowerExpressionAccess().getBaseAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3240:1: ( rule__PowerExpression__BaseAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3240:2: rule__PowerExpression__BaseAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__BaseAssignment_3_in_rule__PowerExpression__Group__3__Impl6984);
+            rule__PowerExpression__BaseAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPowerExpressionAccess().getBaseAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3250:1: rule__PowerExpression__Group__4 : rule__PowerExpression__Group__4__Impl rule__PowerExpression__Group__5 ;
+    public final void rule__PowerExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3254:1: ( rule__PowerExpression__Group__4__Impl rule__PowerExpression__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3255:2: rule__PowerExpression__Group__4__Impl rule__PowerExpression__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__4__Impl_in_rule__PowerExpression__Group__47014);
+            rule__PowerExpression__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__5_in_rule__PowerExpression__Group__47017);
+            rule__PowerExpression__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__4"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3262:1: rule__PowerExpression__Group__4__Impl : ( 'exponent' ) ;
+    public final void rule__PowerExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3266:1: ( ( 'exponent' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3267:1: ( 'exponent' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3267:1: ( 'exponent' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3268:1: 'exponent'
+            {
+             before(grammarAccess.getPowerExpressionAccess().getExponentKeyword_4()); 
+            match(input,28,FollowSets000.FOLLOW_28_in_rule__PowerExpression__Group__4__Impl7045); 
+             after(grammarAccess.getPowerExpressionAccess().getExponentKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3281:1: rule__PowerExpression__Group__5 : rule__PowerExpression__Group__5__Impl rule__PowerExpression__Group__6 ;
+    public final void rule__PowerExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3285:1: ( rule__PowerExpression__Group__5__Impl rule__PowerExpression__Group__6 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3286:2: rule__PowerExpression__Group__5__Impl rule__PowerExpression__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__5__Impl_in_rule__PowerExpression__Group__57076);
+            rule__PowerExpression__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__6_in_rule__PowerExpression__Group__57079);
+            rule__PowerExpression__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__5"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3293:1: rule__PowerExpression__Group__5__Impl : ( ( rule__PowerExpression__ExponentAssignment_5 ) ) ;
+    public final void rule__PowerExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3297:1: ( ( ( rule__PowerExpression__ExponentAssignment_5 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3298:1: ( ( rule__PowerExpression__ExponentAssignment_5 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3298:1: ( ( rule__PowerExpression__ExponentAssignment_5 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3299:1: ( rule__PowerExpression__ExponentAssignment_5 )
+            {
+             before(grammarAccess.getPowerExpressionAccess().getExponentAssignment_5()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3300:1: ( rule__PowerExpression__ExponentAssignment_5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3300:2: rule__PowerExpression__ExponentAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__ExponentAssignment_5_in_rule__PowerExpression__Group__5__Impl7106);
+            rule__PowerExpression__ExponentAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPowerExpressionAccess().getExponentAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__6"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3310:1: rule__PowerExpression__Group__6 : rule__PowerExpression__Group__6__Impl ;
+    public final void rule__PowerExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3314:1: ( rule__PowerExpression__Group__6__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3315:2: rule__PowerExpression__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PowerExpression__Group__6__Impl_in_rule__PowerExpression__Group__67136);
+            rule__PowerExpression__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__6"
+
+
+    // $ANTLR start "rule__PowerExpression__Group__6__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3321:1: rule__PowerExpression__Group__6__Impl : ( '}' ) ;
+    public final void rule__PowerExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3325:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3326:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3326:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3327:1: '}'
+            {
+             before(grammarAccess.getPowerExpressionAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__PowerExpression__Group__6__Impl7164); 
+             after(grammarAccess.getPowerExpressionAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__Group__6__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3354:1: rule__BooleanOperatorExpression__Group__0 : rule__BooleanOperatorExpression__Group__0__Impl rule__BooleanOperatorExpression__Group__1 ;
+    public final void rule__BooleanOperatorExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3358:1: ( rule__BooleanOperatorExpression__Group__0__Impl rule__BooleanOperatorExpression__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3359:2: rule__BooleanOperatorExpression__Group__0__Impl rule__BooleanOperatorExpression__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__0__Impl_in_rule__BooleanOperatorExpression__Group__07209);
+            rule__BooleanOperatorExpression__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__1_in_rule__BooleanOperatorExpression__Group__07212);
+            rule__BooleanOperatorExpression__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__0"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3366:1: rule__BooleanOperatorExpression__Group__0__Impl : ( 'BooleanOperatorExpression' ) ;
+    public final void rule__BooleanOperatorExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3370:1: ( ( 'BooleanOperatorExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3371:1: ( 'BooleanOperatorExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3371:1: ( 'BooleanOperatorExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3372:1: 'BooleanOperatorExpression'
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getBooleanOperatorExpressionKeyword_0()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__BooleanOperatorExpression__Group__0__Impl7240); 
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getBooleanOperatorExpressionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3385:1: rule__BooleanOperatorExpression__Group__1 : rule__BooleanOperatorExpression__Group__1__Impl rule__BooleanOperatorExpression__Group__2 ;
+    public final void rule__BooleanOperatorExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3389:1: ( rule__BooleanOperatorExpression__Group__1__Impl rule__BooleanOperatorExpression__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3390:2: rule__BooleanOperatorExpression__Group__1__Impl rule__BooleanOperatorExpression__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__1__Impl_in_rule__BooleanOperatorExpression__Group__17271);
+            rule__BooleanOperatorExpression__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__2_in_rule__BooleanOperatorExpression__Group__17274);
+            rule__BooleanOperatorExpression__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__1"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3397:1: rule__BooleanOperatorExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__BooleanOperatorExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3401:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3402:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3402:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3403:1: '{'
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__BooleanOperatorExpression__Group__1__Impl7302); 
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3416:1: rule__BooleanOperatorExpression__Group__2 : rule__BooleanOperatorExpression__Group__2__Impl rule__BooleanOperatorExpression__Group__3 ;
+    public final void rule__BooleanOperatorExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3420:1: ( rule__BooleanOperatorExpression__Group__2__Impl rule__BooleanOperatorExpression__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3421:2: rule__BooleanOperatorExpression__Group__2__Impl rule__BooleanOperatorExpression__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__2__Impl_in_rule__BooleanOperatorExpression__Group__27333);
+            rule__BooleanOperatorExpression__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__3_in_rule__BooleanOperatorExpression__Group__27336);
+            rule__BooleanOperatorExpression__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__2"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3428:1: rule__BooleanOperatorExpression__Group__2__Impl : ( 'operation' ) ;
+    public final void rule__BooleanOperatorExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3432:1: ( ( 'operation' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3433:1: ( 'operation' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3433:1: ( 'operation' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3434:1: 'operation'
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getOperationKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__BooleanOperatorExpression__Group__2__Impl7364); 
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getOperationKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3447:1: rule__BooleanOperatorExpression__Group__3 : rule__BooleanOperatorExpression__Group__3__Impl rule__BooleanOperatorExpression__Group__4 ;
+    public final void rule__BooleanOperatorExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3451:1: ( rule__BooleanOperatorExpression__Group__3__Impl rule__BooleanOperatorExpression__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3452:2: rule__BooleanOperatorExpression__Group__3__Impl rule__BooleanOperatorExpression__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__3__Impl_in_rule__BooleanOperatorExpression__Group__37395);
+            rule__BooleanOperatorExpression__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__4_in_rule__BooleanOperatorExpression__Group__37398);
+            rule__BooleanOperatorExpression__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__3"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3459:1: rule__BooleanOperatorExpression__Group__3__Impl : ( ( rule__BooleanOperatorExpression__OperationAssignment_3 ) ) ;
+    public final void rule__BooleanOperatorExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3463:1: ( ( ( rule__BooleanOperatorExpression__OperationAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3464:1: ( ( rule__BooleanOperatorExpression__OperationAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3464:1: ( ( rule__BooleanOperatorExpression__OperationAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3465:1: ( rule__BooleanOperatorExpression__OperationAssignment_3 )
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getOperationAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3466:1: ( rule__BooleanOperatorExpression__OperationAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3466:2: rule__BooleanOperatorExpression__OperationAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__OperationAssignment_3_in_rule__BooleanOperatorExpression__Group__3__Impl7425);
+            rule__BooleanOperatorExpression__OperationAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getOperationAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3476:1: rule__BooleanOperatorExpression__Group__4 : rule__BooleanOperatorExpression__Group__4__Impl rule__BooleanOperatorExpression__Group__5 ;
+    public final void rule__BooleanOperatorExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3480:1: ( rule__BooleanOperatorExpression__Group__4__Impl rule__BooleanOperatorExpression__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3481:2: rule__BooleanOperatorExpression__Group__4__Impl rule__BooleanOperatorExpression__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__4__Impl_in_rule__BooleanOperatorExpression__Group__47455);
+            rule__BooleanOperatorExpression__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__5_in_rule__BooleanOperatorExpression__Group__47458);
+            rule__BooleanOperatorExpression__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__4"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3488:1: rule__BooleanOperatorExpression__Group__4__Impl : ( 'left' ) ;
+    public final void rule__BooleanOperatorExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3492:1: ( ( 'left' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3493:1: ( 'left' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3493:1: ( 'left' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3494:1: 'left'
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getLeftKeyword_4()); 
+            match(input,24,FollowSets000.FOLLOW_24_in_rule__BooleanOperatorExpression__Group__4__Impl7486); 
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getLeftKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3507:1: rule__BooleanOperatorExpression__Group__5 : rule__BooleanOperatorExpression__Group__5__Impl rule__BooleanOperatorExpression__Group__6 ;
+    public final void rule__BooleanOperatorExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3511:1: ( rule__BooleanOperatorExpression__Group__5__Impl rule__BooleanOperatorExpression__Group__6 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3512:2: rule__BooleanOperatorExpression__Group__5__Impl rule__BooleanOperatorExpression__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__5__Impl_in_rule__BooleanOperatorExpression__Group__57517);
+            rule__BooleanOperatorExpression__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__6_in_rule__BooleanOperatorExpression__Group__57520);
+            rule__BooleanOperatorExpression__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__5"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3519:1: rule__BooleanOperatorExpression__Group__5__Impl : ( ( rule__BooleanOperatorExpression__LeftAssignment_5 ) ) ;
+    public final void rule__BooleanOperatorExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3523:1: ( ( ( rule__BooleanOperatorExpression__LeftAssignment_5 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3524:1: ( ( rule__BooleanOperatorExpression__LeftAssignment_5 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3524:1: ( ( rule__BooleanOperatorExpression__LeftAssignment_5 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3525:1: ( rule__BooleanOperatorExpression__LeftAssignment_5 )
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getLeftAssignment_5()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3526:1: ( rule__BooleanOperatorExpression__LeftAssignment_5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3526:2: rule__BooleanOperatorExpression__LeftAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__LeftAssignment_5_in_rule__BooleanOperatorExpression__Group__5__Impl7547);
+            rule__BooleanOperatorExpression__LeftAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getLeftAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__6"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3536:1: rule__BooleanOperatorExpression__Group__6 : rule__BooleanOperatorExpression__Group__6__Impl rule__BooleanOperatorExpression__Group__7 ;
+    public final void rule__BooleanOperatorExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3540:1: ( rule__BooleanOperatorExpression__Group__6__Impl rule__BooleanOperatorExpression__Group__7 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3541:2: rule__BooleanOperatorExpression__Group__6__Impl rule__BooleanOperatorExpression__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__6__Impl_in_rule__BooleanOperatorExpression__Group__67577);
+            rule__BooleanOperatorExpression__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__7_in_rule__BooleanOperatorExpression__Group__67580);
+            rule__BooleanOperatorExpression__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__6"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__6__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3548:1: rule__BooleanOperatorExpression__Group__6__Impl : ( 'right' ) ;
+    public final void rule__BooleanOperatorExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3552:1: ( ( 'right' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3553:1: ( 'right' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3553:1: ( 'right' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3554:1: 'right'
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getRightKeyword_6()); 
+            match(input,25,FollowSets000.FOLLOW_25_in_rule__BooleanOperatorExpression__Group__6__Impl7608); 
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getRightKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__6__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__7"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3567:1: rule__BooleanOperatorExpression__Group__7 : rule__BooleanOperatorExpression__Group__7__Impl rule__BooleanOperatorExpression__Group__8 ;
+    public final void rule__BooleanOperatorExpression__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3571:1: ( rule__BooleanOperatorExpression__Group__7__Impl rule__BooleanOperatorExpression__Group__8 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3572:2: rule__BooleanOperatorExpression__Group__7__Impl rule__BooleanOperatorExpression__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__7__Impl_in_rule__BooleanOperatorExpression__Group__77639);
+            rule__BooleanOperatorExpression__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__8_in_rule__BooleanOperatorExpression__Group__77642);
+            rule__BooleanOperatorExpression__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__7"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__7__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3579:1: rule__BooleanOperatorExpression__Group__7__Impl : ( ( rule__BooleanOperatorExpression__RightAssignment_7 ) ) ;
+    public final void rule__BooleanOperatorExpression__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3583:1: ( ( ( rule__BooleanOperatorExpression__RightAssignment_7 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3584:1: ( ( rule__BooleanOperatorExpression__RightAssignment_7 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3584:1: ( ( rule__BooleanOperatorExpression__RightAssignment_7 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3585:1: ( rule__BooleanOperatorExpression__RightAssignment_7 )
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getRightAssignment_7()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3586:1: ( rule__BooleanOperatorExpression__RightAssignment_7 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3586:2: rule__BooleanOperatorExpression__RightAssignment_7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__RightAssignment_7_in_rule__BooleanOperatorExpression__Group__7__Impl7669);
+            rule__BooleanOperatorExpression__RightAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getRightAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__7__Impl"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__8"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3596:1: rule__BooleanOperatorExpression__Group__8 : rule__BooleanOperatorExpression__Group__8__Impl ;
+    public final void rule__BooleanOperatorExpression__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3600:1: ( rule__BooleanOperatorExpression__Group__8__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3601:2: rule__BooleanOperatorExpression__Group__8__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BooleanOperatorExpression__Group__8__Impl_in_rule__BooleanOperatorExpression__Group__87699);
+            rule__BooleanOperatorExpression__Group__8__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__8"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__Group__8__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3607:1: rule__BooleanOperatorExpression__Group__8__Impl : ( '}' ) ;
+    public final void rule__BooleanOperatorExpression__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3611:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3612:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3612:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3613:1: '}'
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getRightCurlyBracketKeyword_8()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__BooleanOperatorExpression__Group__8__Impl7727); 
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getRightCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__Group__8__Impl"
+
+
+    // $ANTLR start "rule__NotExpression__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3644:1: rule__NotExpression__Group__0 : rule__NotExpression__Group__0__Impl rule__NotExpression__Group__1 ;
+    public final void rule__NotExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3648:1: ( rule__NotExpression__Group__0__Impl rule__NotExpression__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3649:2: rule__NotExpression__Group__0__Impl rule__NotExpression__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__0__Impl_in_rule__NotExpression__Group__07776);
+            rule__NotExpression__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__1_in_rule__NotExpression__Group__07779);
+            rule__NotExpression__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__0"
+
+
+    // $ANTLR start "rule__NotExpression__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3656:1: rule__NotExpression__Group__0__Impl : ( 'NotExpression' ) ;
+    public final void rule__NotExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3660:1: ( ( 'NotExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3661:1: ( 'NotExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3661:1: ( 'NotExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3662:1: 'NotExpression'
+            {
+             before(grammarAccess.getNotExpressionAccess().getNotExpressionKeyword_0()); 
+            match(input,30,FollowSets000.FOLLOW_30_in_rule__NotExpression__Group__0__Impl7807); 
+             after(grammarAccess.getNotExpressionAccess().getNotExpressionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__NotExpression__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3675:1: rule__NotExpression__Group__1 : rule__NotExpression__Group__1__Impl rule__NotExpression__Group__2 ;
+    public final void rule__NotExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3679:1: ( rule__NotExpression__Group__1__Impl rule__NotExpression__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3680:2: rule__NotExpression__Group__1__Impl rule__NotExpression__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__1__Impl_in_rule__NotExpression__Group__17838);
+            rule__NotExpression__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__2_in_rule__NotExpression__Group__17841);
+            rule__NotExpression__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__1"
+
+
+    // $ANTLR start "rule__NotExpression__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3687:1: rule__NotExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__NotExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3691:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3692:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3692:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3693:1: '{'
+            {
+             before(grammarAccess.getNotExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__NotExpression__Group__1__Impl7869); 
+             after(grammarAccess.getNotExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__NotExpression__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3706:1: rule__NotExpression__Group__2 : rule__NotExpression__Group__2__Impl rule__NotExpression__Group__3 ;
+    public final void rule__NotExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3710:1: ( rule__NotExpression__Group__2__Impl rule__NotExpression__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3711:2: rule__NotExpression__Group__2__Impl rule__NotExpression__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__2__Impl_in_rule__NotExpression__Group__27900);
+            rule__NotExpression__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__3_in_rule__NotExpression__Group__27903);
+            rule__NotExpression__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__2"
+
+
+    // $ANTLR start "rule__NotExpression__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3718:1: rule__NotExpression__Group__2__Impl : ( 'inner' ) ;
+    public final void rule__NotExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3722:1: ( ( 'inner' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3723:1: ( 'inner' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3723:1: ( 'inner' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3724:1: 'inner'
+            {
+             before(grammarAccess.getNotExpressionAccess().getInnerKeyword_2()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__NotExpression__Group__2__Impl7931); 
+             after(grammarAccess.getNotExpressionAccess().getInnerKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__NotExpression__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3737:1: rule__NotExpression__Group__3 : rule__NotExpression__Group__3__Impl rule__NotExpression__Group__4 ;
+    public final void rule__NotExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3741:1: ( rule__NotExpression__Group__3__Impl rule__NotExpression__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3742:2: rule__NotExpression__Group__3__Impl rule__NotExpression__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__3__Impl_in_rule__NotExpression__Group__37962);
+            rule__NotExpression__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__4_in_rule__NotExpression__Group__37965);
+            rule__NotExpression__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__3"
+
+
+    // $ANTLR start "rule__NotExpression__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3749:1: rule__NotExpression__Group__3__Impl : ( ( rule__NotExpression__InnerAssignment_3 ) ) ;
+    public final void rule__NotExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3753:1: ( ( ( rule__NotExpression__InnerAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3754:1: ( ( rule__NotExpression__InnerAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3754:1: ( ( rule__NotExpression__InnerAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3755:1: ( rule__NotExpression__InnerAssignment_3 )
+            {
+             before(grammarAccess.getNotExpressionAccess().getInnerAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3756:1: ( rule__NotExpression__InnerAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3756:2: rule__NotExpression__InnerAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__InnerAssignment_3_in_rule__NotExpression__Group__3__Impl7992);
+            rule__NotExpression__InnerAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNotExpressionAccess().getInnerAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__NotExpression__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3766:1: rule__NotExpression__Group__4 : rule__NotExpression__Group__4__Impl ;
+    public final void rule__NotExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3770:1: ( rule__NotExpression__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3771:2: rule__NotExpression__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NotExpression__Group__4__Impl_in_rule__NotExpression__Group__48022);
+            rule__NotExpression__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__4"
+
+
+    // $ANTLR start "rule__NotExpression__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3777:1: rule__NotExpression__Group__4__Impl : ( '}' ) ;
+    public final void rule__NotExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3781:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3782:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3782:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3783:1: '}'
+            {
+             before(grammarAccess.getNotExpressionAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__NotExpression__Group__4__Impl8050); 
+             after(grammarAccess.getNotExpressionAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3806:1: rule__NegativeExpression__Group__0 : rule__NegativeExpression__Group__0__Impl rule__NegativeExpression__Group__1 ;
+    public final void rule__NegativeExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3810:1: ( rule__NegativeExpression__Group__0__Impl rule__NegativeExpression__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3811:2: rule__NegativeExpression__Group__0__Impl rule__NegativeExpression__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__0__Impl_in_rule__NegativeExpression__Group__08091);
+            rule__NegativeExpression__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__1_in_rule__NegativeExpression__Group__08094);
+            rule__NegativeExpression__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__0"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3818:1: rule__NegativeExpression__Group__0__Impl : ( 'NegativeExpression' ) ;
+    public final void rule__NegativeExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3822:1: ( ( 'NegativeExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3823:1: ( 'NegativeExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3823:1: ( 'NegativeExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3824:1: 'NegativeExpression'
+            {
+             before(grammarAccess.getNegativeExpressionAccess().getNegativeExpressionKeyword_0()); 
+            match(input,32,FollowSets000.FOLLOW_32_in_rule__NegativeExpression__Group__0__Impl8122); 
+             after(grammarAccess.getNegativeExpressionAccess().getNegativeExpressionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3837:1: rule__NegativeExpression__Group__1 : rule__NegativeExpression__Group__1__Impl rule__NegativeExpression__Group__2 ;
+    public final void rule__NegativeExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3841:1: ( rule__NegativeExpression__Group__1__Impl rule__NegativeExpression__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3842:2: rule__NegativeExpression__Group__1__Impl rule__NegativeExpression__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__1__Impl_in_rule__NegativeExpression__Group__18153);
+            rule__NegativeExpression__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__2_in_rule__NegativeExpression__Group__18156);
+            rule__NegativeExpression__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__1"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3849:1: rule__NegativeExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__NegativeExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3853:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3854:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3854:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3855:1: '{'
+            {
+             before(grammarAccess.getNegativeExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__NegativeExpression__Group__1__Impl8184); 
+             after(grammarAccess.getNegativeExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3868:1: rule__NegativeExpression__Group__2 : rule__NegativeExpression__Group__2__Impl rule__NegativeExpression__Group__3 ;
+    public final void rule__NegativeExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3872:1: ( rule__NegativeExpression__Group__2__Impl rule__NegativeExpression__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3873:2: rule__NegativeExpression__Group__2__Impl rule__NegativeExpression__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__2__Impl_in_rule__NegativeExpression__Group__28215);
+            rule__NegativeExpression__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__3_in_rule__NegativeExpression__Group__28218);
+            rule__NegativeExpression__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__2"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3880:1: rule__NegativeExpression__Group__2__Impl : ( 'inner' ) ;
+    public final void rule__NegativeExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3884:1: ( ( 'inner' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3885:1: ( 'inner' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3885:1: ( 'inner' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3886:1: 'inner'
+            {
+             before(grammarAccess.getNegativeExpressionAccess().getInnerKeyword_2()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__NegativeExpression__Group__2__Impl8246); 
+             after(grammarAccess.getNegativeExpressionAccess().getInnerKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3899:1: rule__NegativeExpression__Group__3 : rule__NegativeExpression__Group__3__Impl rule__NegativeExpression__Group__4 ;
+    public final void rule__NegativeExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3903:1: ( rule__NegativeExpression__Group__3__Impl rule__NegativeExpression__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3904:2: rule__NegativeExpression__Group__3__Impl rule__NegativeExpression__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__3__Impl_in_rule__NegativeExpression__Group__38277);
+            rule__NegativeExpression__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__4_in_rule__NegativeExpression__Group__38280);
+            rule__NegativeExpression__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__3"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3911:1: rule__NegativeExpression__Group__3__Impl : ( ( rule__NegativeExpression__InnerAssignment_3 ) ) ;
+    public final void rule__NegativeExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3915:1: ( ( ( rule__NegativeExpression__InnerAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3916:1: ( ( rule__NegativeExpression__InnerAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3916:1: ( ( rule__NegativeExpression__InnerAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3917:1: ( rule__NegativeExpression__InnerAssignment_3 )
+            {
+             before(grammarAccess.getNegativeExpressionAccess().getInnerAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3918:1: ( rule__NegativeExpression__InnerAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3918:2: rule__NegativeExpression__InnerAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__InnerAssignment_3_in_rule__NegativeExpression__Group__3__Impl8307);
+            rule__NegativeExpression__InnerAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNegativeExpressionAccess().getInnerAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3928:1: rule__NegativeExpression__Group__4 : rule__NegativeExpression__Group__4__Impl ;
+    public final void rule__NegativeExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3932:1: ( rule__NegativeExpression__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3933:2: rule__NegativeExpression__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NegativeExpression__Group__4__Impl_in_rule__NegativeExpression__Group__48337);
+            rule__NegativeExpression__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__4"
+
+
+    // $ANTLR start "rule__NegativeExpression__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3939:1: rule__NegativeExpression__Group__4__Impl : ( '}' ) ;
+    public final void rule__NegativeExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3943:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3944:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3944:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3945:1: '}'
+            {
+             before(grammarAccess.getNegativeExpressionAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__NegativeExpression__Group__4__Impl8365); 
+             after(grammarAccess.getNegativeExpressionAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3968:1: rule__IfElseExpression__Group__0 : rule__IfElseExpression__Group__0__Impl rule__IfElseExpression__Group__1 ;
+    public final void rule__IfElseExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3972:1: ( rule__IfElseExpression__Group__0__Impl rule__IfElseExpression__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3973:2: rule__IfElseExpression__Group__0__Impl rule__IfElseExpression__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__0__Impl_in_rule__IfElseExpression__Group__08406);
+            rule__IfElseExpression__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__1_in_rule__IfElseExpression__Group__08409);
+            rule__IfElseExpression__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__0"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3980:1: rule__IfElseExpression__Group__0__Impl : ( 'IfElseExpression' ) ;
+    public final void rule__IfElseExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3984:1: ( ( 'IfElseExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3985:1: ( 'IfElseExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3985:1: ( 'IfElseExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3986:1: 'IfElseExpression'
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getIfElseExpressionKeyword_0()); 
+            match(input,33,FollowSets000.FOLLOW_33_in_rule__IfElseExpression__Group__0__Impl8437); 
+             after(grammarAccess.getIfElseExpressionAccess().getIfElseExpressionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:3999:1: rule__IfElseExpression__Group__1 : rule__IfElseExpression__Group__1__Impl rule__IfElseExpression__Group__2 ;
+    public final void rule__IfElseExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4003:1: ( rule__IfElseExpression__Group__1__Impl rule__IfElseExpression__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4004:2: rule__IfElseExpression__Group__1__Impl rule__IfElseExpression__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__1__Impl_in_rule__IfElseExpression__Group__18468);
+            rule__IfElseExpression__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__2_in_rule__IfElseExpression__Group__18471);
+            rule__IfElseExpression__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__1"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4011:1: rule__IfElseExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__IfElseExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4015:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4016:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4016:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4017:1: '{'
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__IfElseExpression__Group__1__Impl8499); 
+             after(grammarAccess.getIfElseExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4030:1: rule__IfElseExpression__Group__2 : rule__IfElseExpression__Group__2__Impl rule__IfElseExpression__Group__3 ;
+    public final void rule__IfElseExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4034:1: ( rule__IfElseExpression__Group__2__Impl rule__IfElseExpression__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4035:2: rule__IfElseExpression__Group__2__Impl rule__IfElseExpression__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__2__Impl_in_rule__IfElseExpression__Group__28530);
+            rule__IfElseExpression__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__3_in_rule__IfElseExpression__Group__28533);
+            rule__IfElseExpression__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__2"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4042:1: rule__IfElseExpression__Group__2__Impl : ( 'ifExpression' ) ;
+    public final void rule__IfElseExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4046:1: ( ( 'ifExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4047:1: ( 'ifExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4047:1: ( 'ifExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4048:1: 'ifExpression'
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getIfExpressionKeyword_2()); 
+            match(input,34,FollowSets000.FOLLOW_34_in_rule__IfElseExpression__Group__2__Impl8561); 
+             after(grammarAccess.getIfElseExpressionAccess().getIfExpressionKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4061:1: rule__IfElseExpression__Group__3 : rule__IfElseExpression__Group__3__Impl rule__IfElseExpression__Group__4 ;
+    public final void rule__IfElseExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4065:1: ( rule__IfElseExpression__Group__3__Impl rule__IfElseExpression__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4066:2: rule__IfElseExpression__Group__3__Impl rule__IfElseExpression__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__3__Impl_in_rule__IfElseExpression__Group__38592);
+            rule__IfElseExpression__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__4_in_rule__IfElseExpression__Group__38595);
+            rule__IfElseExpression__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__3"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4073:1: rule__IfElseExpression__Group__3__Impl : ( ( rule__IfElseExpression__IfExpressionAssignment_3 ) ) ;
+    public final void rule__IfElseExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4077:1: ( ( ( rule__IfElseExpression__IfExpressionAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4078:1: ( ( rule__IfElseExpression__IfExpressionAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4078:1: ( ( rule__IfElseExpression__IfExpressionAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4079:1: ( rule__IfElseExpression__IfExpressionAssignment_3 )
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getIfExpressionAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4080:1: ( rule__IfElseExpression__IfExpressionAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4080:2: rule__IfElseExpression__IfExpressionAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__IfExpressionAssignment_3_in_rule__IfElseExpression__Group__3__Impl8622);
+            rule__IfElseExpression__IfExpressionAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIfElseExpressionAccess().getIfExpressionAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4090:1: rule__IfElseExpression__Group__4 : rule__IfElseExpression__Group__4__Impl rule__IfElseExpression__Group__5 ;
+    public final void rule__IfElseExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4094:1: ( rule__IfElseExpression__Group__4__Impl rule__IfElseExpression__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4095:2: rule__IfElseExpression__Group__4__Impl rule__IfElseExpression__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__4__Impl_in_rule__IfElseExpression__Group__48652);
+            rule__IfElseExpression__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__5_in_rule__IfElseExpression__Group__48655);
+            rule__IfElseExpression__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__4"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4102:1: rule__IfElseExpression__Group__4__Impl : ( 'elseExpression' ) ;
+    public final void rule__IfElseExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4106:1: ( ( 'elseExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4107:1: ( 'elseExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4107:1: ( 'elseExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4108:1: 'elseExpression'
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getElseExpressionKeyword_4()); 
+            match(input,35,FollowSets000.FOLLOW_35_in_rule__IfElseExpression__Group__4__Impl8683); 
+             after(grammarAccess.getIfElseExpressionAccess().getElseExpressionKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4121:1: rule__IfElseExpression__Group__5 : rule__IfElseExpression__Group__5__Impl rule__IfElseExpression__Group__6 ;
+    public final void rule__IfElseExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4125:1: ( rule__IfElseExpression__Group__5__Impl rule__IfElseExpression__Group__6 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4126:2: rule__IfElseExpression__Group__5__Impl rule__IfElseExpression__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__5__Impl_in_rule__IfElseExpression__Group__58714);
+            rule__IfElseExpression__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__6_in_rule__IfElseExpression__Group__58717);
+            rule__IfElseExpression__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__5"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4133:1: rule__IfElseExpression__Group__5__Impl : ( ( rule__IfElseExpression__ElseExpressionAssignment_5 ) ) ;
+    public final void rule__IfElseExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4137:1: ( ( ( rule__IfElseExpression__ElseExpressionAssignment_5 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4138:1: ( ( rule__IfElseExpression__ElseExpressionAssignment_5 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4138:1: ( ( rule__IfElseExpression__ElseExpressionAssignment_5 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4139:1: ( rule__IfElseExpression__ElseExpressionAssignment_5 )
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getElseExpressionAssignment_5()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4140:1: ( rule__IfElseExpression__ElseExpressionAssignment_5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4140:2: rule__IfElseExpression__ElseExpressionAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__ElseExpressionAssignment_5_in_rule__IfElseExpression__Group__5__Impl8744);
+            rule__IfElseExpression__ElseExpressionAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIfElseExpressionAccess().getElseExpressionAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__6"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4150:1: rule__IfElseExpression__Group__6 : rule__IfElseExpression__Group__6__Impl rule__IfElseExpression__Group__7 ;
+    public final void rule__IfElseExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4154:1: ( rule__IfElseExpression__Group__6__Impl rule__IfElseExpression__Group__7 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4155:2: rule__IfElseExpression__Group__6__Impl rule__IfElseExpression__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__6__Impl_in_rule__IfElseExpression__Group__68774);
+            rule__IfElseExpression__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__7_in_rule__IfElseExpression__Group__68777);
+            rule__IfElseExpression__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__6"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__6__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4162:1: rule__IfElseExpression__Group__6__Impl : ( 'conditionExpression' ) ;
+    public final void rule__IfElseExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4166:1: ( ( 'conditionExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4167:1: ( 'conditionExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4167:1: ( 'conditionExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4168:1: 'conditionExpression'
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getConditionExpressionKeyword_6()); 
+            match(input,36,FollowSets000.FOLLOW_36_in_rule__IfElseExpression__Group__6__Impl8805); 
+             after(grammarAccess.getIfElseExpressionAccess().getConditionExpressionKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__6__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__7"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4181:1: rule__IfElseExpression__Group__7 : rule__IfElseExpression__Group__7__Impl rule__IfElseExpression__Group__8 ;
+    public final void rule__IfElseExpression__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4185:1: ( rule__IfElseExpression__Group__7__Impl rule__IfElseExpression__Group__8 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4186:2: rule__IfElseExpression__Group__7__Impl rule__IfElseExpression__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__7__Impl_in_rule__IfElseExpression__Group__78836);
+            rule__IfElseExpression__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__8_in_rule__IfElseExpression__Group__78839);
+            rule__IfElseExpression__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__7"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__7__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4193:1: rule__IfElseExpression__Group__7__Impl : ( ( rule__IfElseExpression__ConditionExpressionAssignment_7 ) ) ;
+    public final void rule__IfElseExpression__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4197:1: ( ( ( rule__IfElseExpression__ConditionExpressionAssignment_7 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4198:1: ( ( rule__IfElseExpression__ConditionExpressionAssignment_7 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4198:1: ( ( rule__IfElseExpression__ConditionExpressionAssignment_7 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4199:1: ( rule__IfElseExpression__ConditionExpressionAssignment_7 )
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getConditionExpressionAssignment_7()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4200:1: ( rule__IfElseExpression__ConditionExpressionAssignment_7 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4200:2: rule__IfElseExpression__ConditionExpressionAssignment_7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__ConditionExpressionAssignment_7_in_rule__IfElseExpression__Group__7__Impl8866);
+            rule__IfElseExpression__ConditionExpressionAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIfElseExpressionAccess().getConditionExpressionAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__7__Impl"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__8"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4210:1: rule__IfElseExpression__Group__8 : rule__IfElseExpression__Group__8__Impl ;
+    public final void rule__IfElseExpression__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4214:1: ( rule__IfElseExpression__Group__8__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4215:2: rule__IfElseExpression__Group__8__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IfElseExpression__Group__8__Impl_in_rule__IfElseExpression__Group__88896);
+            rule__IfElseExpression__Group__8__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__8"
+
+
+    // $ANTLR start "rule__IfElseExpression__Group__8__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4221:1: rule__IfElseExpression__Group__8__Impl : ( '}' ) ;
+    public final void rule__IfElseExpression__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4225:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4226:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4226:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4227:1: '}'
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getRightCurlyBracketKeyword_8()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__IfElseExpression__Group__8__Impl8924); 
+             after(grammarAccess.getIfElseExpressionAccess().getRightCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__Group__8__Impl"
+
+
+    // $ANTLR start "rule__Function__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4258:1: rule__Function__Group__0 : rule__Function__Group__0__Impl rule__Function__Group__1 ;
+    public final void rule__Function__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4262:1: ( rule__Function__Group__0__Impl rule__Function__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4263:2: rule__Function__Group__0__Impl rule__Function__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__0__Impl_in_rule__Function__Group__08973);
+            rule__Function__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__1_in_rule__Function__Group__08976);
+            rule__Function__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__0"
+
+
+    // $ANTLR start "rule__Function__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4270:1: rule__Function__Group__0__Impl : ( 'Function' ) ;
+    public final void rule__Function__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4274:1: ( ( 'Function' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4275:1: ( 'Function' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4275:1: ( 'Function' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4276:1: 'Function'
+            {
+             before(grammarAccess.getFunctionAccess().getFunctionKeyword_0()); 
+            match(input,37,FollowSets000.FOLLOW_37_in_rule__Function__Group__0__Impl9004); 
+             after(grammarAccess.getFunctionAccess().getFunctionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Function__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4289:1: rule__Function__Group__1 : rule__Function__Group__1__Impl rule__Function__Group__2 ;
+    public final void rule__Function__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4293:1: ( rule__Function__Group__1__Impl rule__Function__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4294:2: rule__Function__Group__1__Impl rule__Function__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__1__Impl_in_rule__Function__Group__19035);
+            rule__Function__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__2_in_rule__Function__Group__19038);
+            rule__Function__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__1"
+
+
+    // $ANTLR start "rule__Function__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4301:1: rule__Function__Group__1__Impl : ( '{' ) ;
+    public final void rule__Function__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4305:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4306:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4306:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4307:1: '{'
+            {
+             before(grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__Function__Group__1__Impl9066); 
+             after(grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Function__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4320:1: rule__Function__Group__2 : rule__Function__Group__2__Impl rule__Function__Group__3 ;
+    public final void rule__Function__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4324:1: ( rule__Function__Group__2__Impl rule__Function__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4325:2: rule__Function__Group__2__Impl rule__Function__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__2__Impl_in_rule__Function__Group__29097);
+            rule__Function__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__3_in_rule__Function__Group__29100);
+            rule__Function__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__2"
+
+
+    // $ANTLR start "rule__Function__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4332:1: rule__Function__Group__2__Impl : ( 'id' ) ;
+    public final void rule__Function__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4336:1: ( ( 'id' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4337:1: ( 'id' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4337:1: ( 'id' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4338:1: 'id'
+            {
+             before(grammarAccess.getFunctionAccess().getIdKeyword_2()); 
+            match(input,38,FollowSets000.FOLLOW_38_in_rule__Function__Group__2__Impl9128); 
+             after(grammarAccess.getFunctionAccess().getIdKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Function__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4351:1: rule__Function__Group__3 : rule__Function__Group__3__Impl rule__Function__Group__4 ;
+    public final void rule__Function__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4355:1: ( rule__Function__Group__3__Impl rule__Function__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4356:2: rule__Function__Group__3__Impl rule__Function__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__3__Impl_in_rule__Function__Group__39159);
+            rule__Function__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__4_in_rule__Function__Group__39162);
+            rule__Function__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__3"
+
+
+    // $ANTLR start "rule__Function__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4363:1: rule__Function__Group__3__Impl : ( ( rule__Function__IdAssignment_3 ) ) ;
+    public final void rule__Function__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4367:1: ( ( ( rule__Function__IdAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4368:1: ( ( rule__Function__IdAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4368:1: ( ( rule__Function__IdAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4369:1: ( rule__Function__IdAssignment_3 )
+            {
+             before(grammarAccess.getFunctionAccess().getIdAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4370:1: ( rule__Function__IdAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4370:2: rule__Function__IdAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__IdAssignment_3_in_rule__Function__Group__3__Impl9189);
+            rule__Function__IdAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFunctionAccess().getIdAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Function__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4380:1: rule__Function__Group__4 : rule__Function__Group__4__Impl rule__Function__Group__5 ;
+    public final void rule__Function__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4384:1: ( rule__Function__Group__4__Impl rule__Function__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4385:2: rule__Function__Group__4__Impl rule__Function__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__4__Impl_in_rule__Function__Group__49219);
+            rule__Function__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__5_in_rule__Function__Group__49222);
+            rule__Function__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__4"
+
+
+    // $ANTLR start "rule__Function__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4392:1: rule__Function__Group__4__Impl : ( ( rule__Function__Group_4__0 )? ) ;
+    public final void rule__Function__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4396:1: ( ( ( rule__Function__Group_4__0 )? ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4397:1: ( ( rule__Function__Group_4__0 )? )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4397:1: ( ( rule__Function__Group_4__0 )? )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4398:1: ( rule__Function__Group_4__0 )?
+            {
+             before(grammarAccess.getFunctionAccess().getGroup_4()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4399:1: ( rule__Function__Group_4__0 )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==39) ) {
+                alt12=1;
+            }
+            switch (alt12) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4399:2: rule__Function__Group_4__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__0_in_rule__Function__Group__4__Impl9249);
+                    rule__Function__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getFunctionAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Function__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4409:1: rule__Function__Group__5 : rule__Function__Group__5__Impl ;
+    public final void rule__Function__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4413:1: ( rule__Function__Group__5__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4414:2: rule__Function__Group__5__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group__5__Impl_in_rule__Function__Group__59280);
+            rule__Function__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__5"
+
+
+    // $ANTLR start "rule__Function__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4420:1: rule__Function__Group__5__Impl : ( '}' ) ;
+    public final void rule__Function__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4424:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4425:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4425:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4426:1: '}'
+            {
+             before(grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__Function__Group__5__Impl9308); 
+             after(grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group__5__Impl"
+
+
+    // $ANTLR start "rule__Function__Group_4__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4451:1: rule__Function__Group_4__0 : rule__Function__Group_4__0__Impl rule__Function__Group_4__1 ;
+    public final void rule__Function__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4455:1: ( rule__Function__Group_4__0__Impl rule__Function__Group_4__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4456:2: rule__Function__Group_4__0__Impl rule__Function__Group_4__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__0__Impl_in_rule__Function__Group_4__09351);
+            rule__Function__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__1_in_rule__Function__Group_4__09354);
+            rule__Function__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__0"
+
+
+    // $ANTLR start "rule__Function__Group_4__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4463:1: rule__Function__Group_4__0__Impl : ( 'parameters' ) ;
+    public final void rule__Function__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4467:1: ( ( 'parameters' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4468:1: ( 'parameters' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4468:1: ( 'parameters' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4469:1: 'parameters'
+            {
+             before(grammarAccess.getFunctionAccess().getParametersKeyword_4_0()); 
+            match(input,39,FollowSets000.FOLLOW_39_in_rule__Function__Group_4__0__Impl9382); 
+             after(grammarAccess.getFunctionAccess().getParametersKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__Function__Group_4__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4482:1: rule__Function__Group_4__1 : rule__Function__Group_4__1__Impl rule__Function__Group_4__2 ;
+    public final void rule__Function__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4486:1: ( rule__Function__Group_4__1__Impl rule__Function__Group_4__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4487:2: rule__Function__Group_4__1__Impl rule__Function__Group_4__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__1__Impl_in_rule__Function__Group_4__19413);
+            rule__Function__Group_4__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__2_in_rule__Function__Group_4__19416);
+            rule__Function__Group_4__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__1"
+
+
+    // $ANTLR start "rule__Function__Group_4__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4494:1: rule__Function__Group_4__1__Impl : ( '{' ) ;
+    public final void rule__Function__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4498:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4499:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4499:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4500:1: '{'
+            {
+             before(grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_4_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__Function__Group_4__1__Impl9444); 
+             after(grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__Function__Group_4__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4513:1: rule__Function__Group_4__2 : rule__Function__Group_4__2__Impl rule__Function__Group_4__3 ;
+    public final void rule__Function__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4517:1: ( rule__Function__Group_4__2__Impl rule__Function__Group_4__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4518:2: rule__Function__Group_4__2__Impl rule__Function__Group_4__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__2__Impl_in_rule__Function__Group_4__29475);
+            rule__Function__Group_4__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__3_in_rule__Function__Group_4__29478);
+            rule__Function__Group_4__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__2"
+
+
+    // $ANTLR start "rule__Function__Group_4__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4525:1: rule__Function__Group_4__2__Impl : ( ( rule__Function__ParametersAssignment_4_2 ) ) ;
+    public final void rule__Function__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4529:1: ( ( ( rule__Function__ParametersAssignment_4_2 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4530:1: ( ( rule__Function__ParametersAssignment_4_2 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4530:1: ( ( rule__Function__ParametersAssignment_4_2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4531:1: ( rule__Function__ParametersAssignment_4_2 )
+            {
+             before(grammarAccess.getFunctionAccess().getParametersAssignment_4_2()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4532:1: ( rule__Function__ParametersAssignment_4_2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4532:2: rule__Function__ParametersAssignment_4_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__ParametersAssignment_4_2_in_rule__Function__Group_4__2__Impl9505);
+            rule__Function__ParametersAssignment_4_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFunctionAccess().getParametersAssignment_4_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__Function__Group_4__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4542:1: rule__Function__Group_4__3 : rule__Function__Group_4__3__Impl rule__Function__Group_4__4 ;
+    public final void rule__Function__Group_4__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4546:1: ( rule__Function__Group_4__3__Impl rule__Function__Group_4__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4547:2: rule__Function__Group_4__3__Impl rule__Function__Group_4__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__3__Impl_in_rule__Function__Group_4__39535);
+            rule__Function__Group_4__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__4_in_rule__Function__Group_4__39538);
+            rule__Function__Group_4__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__3"
+
+
+    // $ANTLR start "rule__Function__Group_4__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4554:1: rule__Function__Group_4__3__Impl : ( ( rule__Function__Group_4_3__0 )* ) ;
+    public final void rule__Function__Group_4__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4558:1: ( ( ( rule__Function__Group_4_3__0 )* ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4559:1: ( ( rule__Function__Group_4_3__0 )* )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4559:1: ( ( rule__Function__Group_4_3__0 )* )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4560:1: ( rule__Function__Group_4_3__0 )*
+            {
+             before(grammarAccess.getFunctionAccess().getGroup_4_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4561:1: ( rule__Function__Group_4_3__0 )*
+            loop13:
+            do {
+                int alt13=2;
+                int LA13_0 = input.LA(1);
+
+                if ( (LA13_0==40) ) {
+                    alt13=1;
+                }
+
+
+                switch (alt13) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4561:2: rule__Function__Group_4_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4_3__0_in_rule__Function__Group_4__3__Impl9565);
+            	    rule__Function__Group_4_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop13;
+                }
+            } while (true);
+
+             after(grammarAccess.getFunctionAccess().getGroup_4_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__3__Impl"
+
+
+    // $ANTLR start "rule__Function__Group_4__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4571:1: rule__Function__Group_4__4 : rule__Function__Group_4__4__Impl ;
+    public final void rule__Function__Group_4__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4575:1: ( rule__Function__Group_4__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4576:2: rule__Function__Group_4__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4__4__Impl_in_rule__Function__Group_4__49596);
+            rule__Function__Group_4__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__4"
+
+
+    // $ANTLR start "rule__Function__Group_4__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4582:1: rule__Function__Group_4__4__Impl : ( '}' ) ;
+    public final void rule__Function__Group_4__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4586:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4587:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4587:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4588:1: '}'
+            {
+             before(grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_4_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__Function__Group_4__4__Impl9624); 
+             after(grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_4_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4__4__Impl"
+
+
+    // $ANTLR start "rule__Function__Group_4_3__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4611:1: rule__Function__Group_4_3__0 : rule__Function__Group_4_3__0__Impl rule__Function__Group_4_3__1 ;
+    public final void rule__Function__Group_4_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4615:1: ( rule__Function__Group_4_3__0__Impl rule__Function__Group_4_3__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4616:2: rule__Function__Group_4_3__0__Impl rule__Function__Group_4_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4_3__0__Impl_in_rule__Function__Group_4_3__09665);
+            rule__Function__Group_4_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4_3__1_in_rule__Function__Group_4_3__09668);
+            rule__Function__Group_4_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4_3__0"
+
+
+    // $ANTLR start "rule__Function__Group_4_3__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4623:1: rule__Function__Group_4_3__0__Impl : ( ',' ) ;
+    public final void rule__Function__Group_4_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4627:1: ( ( ',' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4628:1: ( ',' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4628:1: ( ',' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4629:1: ','
+            {
+             before(grammarAccess.getFunctionAccess().getCommaKeyword_4_3_0()); 
+            match(input,40,FollowSets000.FOLLOW_40_in_rule__Function__Group_4_3__0__Impl9696); 
+             after(grammarAccess.getFunctionAccess().getCommaKeyword_4_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4_3__0__Impl"
+
+
+    // $ANTLR start "rule__Function__Group_4_3__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4642:1: rule__Function__Group_4_3__1 : rule__Function__Group_4_3__1__Impl ;
+    public final void rule__Function__Group_4_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4646:1: ( rule__Function__Group_4_3__1__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4647:2: rule__Function__Group_4_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Group_4_3__1__Impl_in_rule__Function__Group_4_3__19727);
+            rule__Function__Group_4_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4_3__1"
+
+
+    // $ANTLR start "rule__Function__Group_4_3__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4653:1: rule__Function__Group_4_3__1__Impl : ( ( rule__Function__ParametersAssignment_4_3_1 ) ) ;
+    public final void rule__Function__Group_4_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4657:1: ( ( ( rule__Function__ParametersAssignment_4_3_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4658:1: ( ( rule__Function__ParametersAssignment_4_3_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4658:1: ( ( rule__Function__ParametersAssignment_4_3_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4659:1: ( rule__Function__ParametersAssignment_4_3_1 )
+            {
+             before(grammarAccess.getFunctionAccess().getParametersAssignment_4_3_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4660:1: ( rule__Function__ParametersAssignment_4_3_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4660:2: rule__Function__ParametersAssignment_4_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__ParametersAssignment_4_3_1_in_rule__Function__Group_4_3__1__Impl9754);
+            rule__Function__ParametersAssignment_4_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFunctionAccess().getParametersAssignment_4_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Group_4_3__1__Impl"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4674:1: rule__Parenthesis__Group__0 : rule__Parenthesis__Group__0__Impl rule__Parenthesis__Group__1 ;
+    public final void rule__Parenthesis__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4678:1: ( rule__Parenthesis__Group__0__Impl rule__Parenthesis__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4679:2: rule__Parenthesis__Group__0__Impl rule__Parenthesis__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__0__Impl_in_rule__Parenthesis__Group__09788);
+            rule__Parenthesis__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__1_in_rule__Parenthesis__Group__09791);
+            rule__Parenthesis__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__0"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4686:1: rule__Parenthesis__Group__0__Impl : ( 'Parenthesis' ) ;
+    public final void rule__Parenthesis__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4690:1: ( ( 'Parenthesis' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4691:1: ( 'Parenthesis' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4691:1: ( 'Parenthesis' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4692:1: 'Parenthesis'
+            {
+             before(grammarAccess.getParenthesisAccess().getParenthesisKeyword_0()); 
+            match(input,41,FollowSets000.FOLLOW_41_in_rule__Parenthesis__Group__0__Impl9819); 
+             after(grammarAccess.getParenthesisAccess().getParenthesisKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4705:1: rule__Parenthesis__Group__1 : rule__Parenthesis__Group__1__Impl rule__Parenthesis__Group__2 ;
+    public final void rule__Parenthesis__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4709:1: ( rule__Parenthesis__Group__1__Impl rule__Parenthesis__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4710:2: rule__Parenthesis__Group__1__Impl rule__Parenthesis__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__1__Impl_in_rule__Parenthesis__Group__19850);
+            rule__Parenthesis__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__2_in_rule__Parenthesis__Group__19853);
+            rule__Parenthesis__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__1"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4717:1: rule__Parenthesis__Group__1__Impl : ( '{' ) ;
+    public final void rule__Parenthesis__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4721:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4722:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4722:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4723:1: '{'
+            {
+             before(grammarAccess.getParenthesisAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__Parenthesis__Group__1__Impl9881); 
+             after(grammarAccess.getParenthesisAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4736:1: rule__Parenthesis__Group__2 : rule__Parenthesis__Group__2__Impl rule__Parenthesis__Group__3 ;
+    public final void rule__Parenthesis__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4740:1: ( rule__Parenthesis__Group__2__Impl rule__Parenthesis__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4741:2: rule__Parenthesis__Group__2__Impl rule__Parenthesis__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__2__Impl_in_rule__Parenthesis__Group__29912);
+            rule__Parenthesis__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__3_in_rule__Parenthesis__Group__29915);
+            rule__Parenthesis__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__2"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4748:1: rule__Parenthesis__Group__2__Impl : ( 'innerExpression' ) ;
+    public final void rule__Parenthesis__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4752:1: ( ( 'innerExpression' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4753:1: ( 'innerExpression' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4753:1: ( 'innerExpression' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4754:1: 'innerExpression'
+            {
+             before(grammarAccess.getParenthesisAccess().getInnerExpressionKeyword_2()); 
+            match(input,42,FollowSets000.FOLLOW_42_in_rule__Parenthesis__Group__2__Impl9943); 
+             after(grammarAccess.getParenthesisAccess().getInnerExpressionKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4767:1: rule__Parenthesis__Group__3 : rule__Parenthesis__Group__3__Impl rule__Parenthesis__Group__4 ;
+    public final void rule__Parenthesis__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4771:1: ( rule__Parenthesis__Group__3__Impl rule__Parenthesis__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4772:2: rule__Parenthesis__Group__3__Impl rule__Parenthesis__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__3__Impl_in_rule__Parenthesis__Group__39974);
+            rule__Parenthesis__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__4_in_rule__Parenthesis__Group__39977);
+            rule__Parenthesis__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__3"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4779:1: rule__Parenthesis__Group__3__Impl : ( ( rule__Parenthesis__InnerExpressionAssignment_3 ) ) ;
+    public final void rule__Parenthesis__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4783:1: ( ( ( rule__Parenthesis__InnerExpressionAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4784:1: ( ( rule__Parenthesis__InnerExpressionAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4784:1: ( ( rule__Parenthesis__InnerExpressionAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4785:1: ( rule__Parenthesis__InnerExpressionAssignment_3 )
+            {
+             before(grammarAccess.getParenthesisAccess().getInnerExpressionAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4786:1: ( rule__Parenthesis__InnerExpressionAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4786:2: rule__Parenthesis__InnerExpressionAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__InnerExpressionAssignment_3_in_rule__Parenthesis__Group__3__Impl10004);
+            rule__Parenthesis__InnerExpressionAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getParenthesisAccess().getInnerExpressionAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4796:1: rule__Parenthesis__Group__4 : rule__Parenthesis__Group__4__Impl ;
+    public final void rule__Parenthesis__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4800:1: ( rule__Parenthesis__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4801:2: rule__Parenthesis__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Parenthesis__Group__4__Impl_in_rule__Parenthesis__Group__410034);
+            rule__Parenthesis__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__4"
+
+
+    // $ANTLR start "rule__Parenthesis__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4807:1: rule__Parenthesis__Group__4__Impl : ( '}' ) ;
+    public final void rule__Parenthesis__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4811:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4812:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4812:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4813:1: '}'
+            {
+             before(grammarAccess.getParenthesisAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__Parenthesis__Group__4__Impl10062); 
+             after(grammarAccess.getParenthesisAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Literal_Impl__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4836:1: rule__Literal_Impl__Group__0 : rule__Literal_Impl__Group__0__Impl rule__Literal_Impl__Group__1 ;
+    public final void rule__Literal_Impl__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4840:1: ( rule__Literal_Impl__Group__0__Impl rule__Literal_Impl__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4841:2: rule__Literal_Impl__Group__0__Impl rule__Literal_Impl__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Literal_Impl__Group__0__Impl_in_rule__Literal_Impl__Group__010103);
+            rule__Literal_Impl__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Literal_Impl__Group__1_in_rule__Literal_Impl__Group__010106);
+            rule__Literal_Impl__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Literal_Impl__Group__0"
+
+
+    // $ANTLR start "rule__Literal_Impl__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4848:1: rule__Literal_Impl__Group__0__Impl : ( () ) ;
+    public final void rule__Literal_Impl__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4852:1: ( ( () ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4853:1: ( () )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4853:1: ( () )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4854:1: ()
+            {
+             before(grammarAccess.getLiteral_ImplAccess().getLiteralAction_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4855:1: ()
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4857:1: 
+            {
+            }
+
+             after(grammarAccess.getLiteral_ImplAccess().getLiteralAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Literal_Impl__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Literal_Impl__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4867:1: rule__Literal_Impl__Group__1 : rule__Literal_Impl__Group__1__Impl ;
+    public final void rule__Literal_Impl__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4871:1: ( rule__Literal_Impl__Group__1__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4872:2: rule__Literal_Impl__Group__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Literal_Impl__Group__1__Impl_in_rule__Literal_Impl__Group__110164);
+            rule__Literal_Impl__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Literal_Impl__Group__1"
+
+
+    // $ANTLR start "rule__Literal_Impl__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4878:1: rule__Literal_Impl__Group__1__Impl : ( 'Literal' ) ;
+    public final void rule__Literal_Impl__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4882:1: ( ( 'Literal' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4883:1: ( 'Literal' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4883:1: ( 'Literal' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4884:1: 'Literal'
+            {
+             before(grammarAccess.getLiteral_ImplAccess().getLiteralKeyword_1()); 
+            match(input,43,FollowSets000.FOLLOW_43_in_rule__Literal_Impl__Group__1__Impl10192); 
+             after(grammarAccess.getLiteral_ImplAccess().getLiteralKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Literal_Impl__Group__1__Impl"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4901:1: rule__StringLiteral__Group__0 : rule__StringLiteral__Group__0__Impl rule__StringLiteral__Group__1 ;
+    public final void rule__StringLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4905:1: ( rule__StringLiteral__Group__0__Impl rule__StringLiteral__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4906:2: rule__StringLiteral__Group__0__Impl rule__StringLiteral__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__0__Impl_in_rule__StringLiteral__Group__010227);
+            rule__StringLiteral__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__1_in_rule__StringLiteral__Group__010230);
+            rule__StringLiteral__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__0"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4913:1: rule__StringLiteral__Group__0__Impl : ( 'StringLiteral' ) ;
+    public final void rule__StringLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4917:1: ( ( 'StringLiteral' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4918:1: ( 'StringLiteral' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4918:1: ( 'StringLiteral' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4919:1: 'StringLiteral'
+            {
+             before(grammarAccess.getStringLiteralAccess().getStringLiteralKeyword_0()); 
+            match(input,44,FollowSets000.FOLLOW_44_in_rule__StringLiteral__Group__0__Impl10258); 
+             after(grammarAccess.getStringLiteralAccess().getStringLiteralKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4932:1: rule__StringLiteral__Group__1 : rule__StringLiteral__Group__1__Impl rule__StringLiteral__Group__2 ;
+    public final void rule__StringLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4936:1: ( rule__StringLiteral__Group__1__Impl rule__StringLiteral__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4937:2: rule__StringLiteral__Group__1__Impl rule__StringLiteral__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__1__Impl_in_rule__StringLiteral__Group__110289);
+            rule__StringLiteral__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__2_in_rule__StringLiteral__Group__110292);
+            rule__StringLiteral__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__1"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4944:1: rule__StringLiteral__Group__1__Impl : ( '{' ) ;
+    public final void rule__StringLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4948:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4949:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4949:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4950:1: '{'
+            {
+             before(grammarAccess.getStringLiteralAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__StringLiteral__Group__1__Impl10320); 
+             after(grammarAccess.getStringLiteralAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4963:1: rule__StringLiteral__Group__2 : rule__StringLiteral__Group__2__Impl rule__StringLiteral__Group__3 ;
+    public final void rule__StringLiteral__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4967:1: ( rule__StringLiteral__Group__2__Impl rule__StringLiteral__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4968:2: rule__StringLiteral__Group__2__Impl rule__StringLiteral__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__2__Impl_in_rule__StringLiteral__Group__210351);
+            rule__StringLiteral__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__3_in_rule__StringLiteral__Group__210354);
+            rule__StringLiteral__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__2"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4975:1: rule__StringLiteral__Group__2__Impl : ( 'value' ) ;
+    public final void rule__StringLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4979:1: ( ( 'value' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4980:1: ( 'value' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4980:1: ( 'value' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4981:1: 'value'
+            {
+             before(grammarAccess.getStringLiteralAccess().getValueKeyword_2()); 
+            match(input,45,FollowSets000.FOLLOW_45_in_rule__StringLiteral__Group__2__Impl10382); 
+             after(grammarAccess.getStringLiteralAccess().getValueKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__2__Impl"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4994:1: rule__StringLiteral__Group__3 : rule__StringLiteral__Group__3__Impl rule__StringLiteral__Group__4 ;
+    public final void rule__StringLiteral__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4998:1: ( rule__StringLiteral__Group__3__Impl rule__StringLiteral__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:4999:2: rule__StringLiteral__Group__3__Impl rule__StringLiteral__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__3__Impl_in_rule__StringLiteral__Group__310413);
+            rule__StringLiteral__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__4_in_rule__StringLiteral__Group__310416);
+            rule__StringLiteral__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__3"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5006:1: rule__StringLiteral__Group__3__Impl : ( ( rule__StringLiteral__ValueAssignment_3 ) ) ;
+    public final void rule__StringLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5010:1: ( ( ( rule__StringLiteral__ValueAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5011:1: ( ( rule__StringLiteral__ValueAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5011:1: ( ( rule__StringLiteral__ValueAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5012:1: ( rule__StringLiteral__ValueAssignment_3 )
+            {
+             before(grammarAccess.getStringLiteralAccess().getValueAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5013:1: ( rule__StringLiteral__ValueAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5013:2: rule__StringLiteral__ValueAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__ValueAssignment_3_in_rule__StringLiteral__Group__3__Impl10443);
+            rule__StringLiteral__ValueAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getStringLiteralAccess().getValueAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__3__Impl"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5023:1: rule__StringLiteral__Group__4 : rule__StringLiteral__Group__4__Impl ;
+    public final void rule__StringLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5027:1: ( rule__StringLiteral__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5028:2: rule__StringLiteral__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StringLiteral__Group__4__Impl_in_rule__StringLiteral__Group__410473);
+            rule__StringLiteral__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__4"
+
+
+    // $ANTLR start "rule__StringLiteral__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5034:1: rule__StringLiteral__Group__4__Impl : ( '}' ) ;
+    public final void rule__StringLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5038:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5039:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5039:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5040:1: '}'
+            {
+             before(grammarAccess.getStringLiteralAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__StringLiteral__Group__4__Impl10501); 
+             after(grammarAccess.getStringLiteralAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__Group__4__Impl"
+
+
+    // $ANTLR start "rule__BoolLiteral__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5063:1: rule__BoolLiteral__Group__0 : rule__BoolLiteral__Group__0__Impl rule__BoolLiteral__Group__1 ;
+    public final void rule__BoolLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5067:1: ( rule__BoolLiteral__Group__0__Impl rule__BoolLiteral__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5068:2: rule__BoolLiteral__Group__0__Impl rule__BoolLiteral__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoolLiteral__Group__0__Impl_in_rule__BoolLiteral__Group__010542);
+            rule__BoolLiteral__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoolLiteral__Group__1_in_rule__BoolLiteral__Group__010545);
+            rule__BoolLiteral__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoolLiteral__Group__0"
+
+
+    // $ANTLR start "rule__BoolLiteral__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5075:1: rule__BoolLiteral__Group__0__Impl : ( ( rule__BoolLiteral__ValueAssignment_0 ) ) ;
+    public final void rule__BoolLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5079:1: ( ( ( rule__BoolLiteral__ValueAssignment_0 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5080:1: ( ( rule__BoolLiteral__ValueAssignment_0 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5080:1: ( ( rule__BoolLiteral__ValueAssignment_0 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5081:1: ( rule__BoolLiteral__ValueAssignment_0 )
+            {
+             before(grammarAccess.getBoolLiteralAccess().getValueAssignment_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5082:1: ( rule__BoolLiteral__ValueAssignment_0 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5082:2: rule__BoolLiteral__ValueAssignment_0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoolLiteral__ValueAssignment_0_in_rule__BoolLiteral__Group__0__Impl10572);
+            rule__BoolLiteral__ValueAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBoolLiteralAccess().getValueAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoolLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__BoolLiteral__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5092:1: rule__BoolLiteral__Group__1 : rule__BoolLiteral__Group__1__Impl ;
+    public final void rule__BoolLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5096:1: ( rule__BoolLiteral__Group__1__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5097:2: rule__BoolLiteral__Group__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoolLiteral__Group__1__Impl_in_rule__BoolLiteral__Group__110602);
+            rule__BoolLiteral__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoolLiteral__Group__1"
+
+
+    // $ANTLR start "rule__BoolLiteral__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5103:1: rule__BoolLiteral__Group__1__Impl : ( 'BoolLiteral' ) ;
+    public final void rule__BoolLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5107:1: ( ( 'BoolLiteral' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5108:1: ( 'BoolLiteral' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5108:1: ( 'BoolLiteral' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5109:1: 'BoolLiteral'
+            {
+             before(grammarAccess.getBoolLiteralAccess().getBoolLiteralKeyword_1()); 
+            match(input,46,FollowSets000.FOLLOW_46_in_rule__BoolLiteral__Group__1__Impl10630); 
+             after(grammarAccess.getBoolLiteralAccess().getBoolLiteralKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoolLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5126:1: rule__IntLiteral__Group__0 : rule__IntLiteral__Group__0__Impl rule__IntLiteral__Group__1 ;
+    public final void rule__IntLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5130:1: ( rule__IntLiteral__Group__0__Impl rule__IntLiteral__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5131:2: rule__IntLiteral__Group__0__Impl rule__IntLiteral__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__0__Impl_in_rule__IntLiteral__Group__010665);
+            rule__IntLiteral__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__1_in_rule__IntLiteral__Group__010668);
+            rule__IntLiteral__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__0"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5138:1: rule__IntLiteral__Group__0__Impl : ( 'IntLiteral' ) ;
+    public final void rule__IntLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5142:1: ( ( 'IntLiteral' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5143:1: ( 'IntLiteral' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5143:1: ( 'IntLiteral' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5144:1: 'IntLiteral'
+            {
+             before(grammarAccess.getIntLiteralAccess().getIntLiteralKeyword_0()); 
+            match(input,47,FollowSets000.FOLLOW_47_in_rule__IntLiteral__Group__0__Impl10696); 
+             after(grammarAccess.getIntLiteralAccess().getIntLiteralKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5157:1: rule__IntLiteral__Group__1 : rule__IntLiteral__Group__1__Impl rule__IntLiteral__Group__2 ;
+    public final void rule__IntLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5161:1: ( rule__IntLiteral__Group__1__Impl rule__IntLiteral__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5162:2: rule__IntLiteral__Group__1__Impl rule__IntLiteral__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__1__Impl_in_rule__IntLiteral__Group__110727);
+            rule__IntLiteral__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__2_in_rule__IntLiteral__Group__110730);
+            rule__IntLiteral__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__1"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5169:1: rule__IntLiteral__Group__1__Impl : ( '{' ) ;
+    public final void rule__IntLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5173:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5174:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5174:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5175:1: '{'
+            {
+             before(grammarAccess.getIntLiteralAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__IntLiteral__Group__1__Impl10758); 
+             after(grammarAccess.getIntLiteralAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5188:1: rule__IntLiteral__Group__2 : rule__IntLiteral__Group__2__Impl rule__IntLiteral__Group__3 ;
+    public final void rule__IntLiteral__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5192:1: ( rule__IntLiteral__Group__2__Impl rule__IntLiteral__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5193:2: rule__IntLiteral__Group__2__Impl rule__IntLiteral__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__2__Impl_in_rule__IntLiteral__Group__210789);
+            rule__IntLiteral__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__3_in_rule__IntLiteral__Group__210792);
+            rule__IntLiteral__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__2"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5200:1: rule__IntLiteral__Group__2__Impl : ( 'value' ) ;
+    public final void rule__IntLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5204:1: ( ( 'value' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5205:1: ( 'value' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5205:1: ( 'value' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5206:1: 'value'
+            {
+             before(grammarAccess.getIntLiteralAccess().getValueKeyword_2()); 
+            match(input,45,FollowSets000.FOLLOW_45_in_rule__IntLiteral__Group__2__Impl10820); 
+             after(grammarAccess.getIntLiteralAccess().getValueKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__2__Impl"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5219:1: rule__IntLiteral__Group__3 : rule__IntLiteral__Group__3__Impl rule__IntLiteral__Group__4 ;
+    public final void rule__IntLiteral__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5223:1: ( rule__IntLiteral__Group__3__Impl rule__IntLiteral__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5224:2: rule__IntLiteral__Group__3__Impl rule__IntLiteral__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__3__Impl_in_rule__IntLiteral__Group__310851);
+            rule__IntLiteral__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__4_in_rule__IntLiteral__Group__310854);
+            rule__IntLiteral__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__3"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5231:1: rule__IntLiteral__Group__3__Impl : ( ( rule__IntLiteral__ValueAssignment_3 ) ) ;
+    public final void rule__IntLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5235:1: ( ( ( rule__IntLiteral__ValueAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5236:1: ( ( rule__IntLiteral__ValueAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5236:1: ( ( rule__IntLiteral__ValueAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5237:1: ( rule__IntLiteral__ValueAssignment_3 )
+            {
+             before(grammarAccess.getIntLiteralAccess().getValueAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5238:1: ( rule__IntLiteral__ValueAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5238:2: rule__IntLiteral__ValueAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__ValueAssignment_3_in_rule__IntLiteral__Group__3__Impl10881);
+            rule__IntLiteral__ValueAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIntLiteralAccess().getValueAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__3__Impl"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5248:1: rule__IntLiteral__Group__4 : rule__IntLiteral__Group__4__Impl ;
+    public final void rule__IntLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5252:1: ( rule__IntLiteral__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5253:2: rule__IntLiteral__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntLiteral__Group__4__Impl_in_rule__IntLiteral__Group__410911);
+            rule__IntLiteral__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__4"
+
+
+    // $ANTLR start "rule__IntLiteral__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5259:1: rule__IntLiteral__Group__4__Impl : ( '}' ) ;
+    public final void rule__IntLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5263:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5264:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5264:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5265:1: '}'
+            {
+             before(grammarAccess.getIntLiteralAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__IntLiteral__Group__4__Impl10939); 
+             after(grammarAccess.getIntLiteralAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__Group__4__Impl"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5288:1: rule__DoubleLiteral__Group__0 : rule__DoubleLiteral__Group__0__Impl rule__DoubleLiteral__Group__1 ;
+    public final void rule__DoubleLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5292:1: ( rule__DoubleLiteral__Group__0__Impl rule__DoubleLiteral__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5293:2: rule__DoubleLiteral__Group__0__Impl rule__DoubleLiteral__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__0__Impl_in_rule__DoubleLiteral__Group__010980);
+            rule__DoubleLiteral__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__1_in_rule__DoubleLiteral__Group__010983);
+            rule__DoubleLiteral__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__0"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5300:1: rule__DoubleLiteral__Group__0__Impl : ( 'DoubleLiteral' ) ;
+    public final void rule__DoubleLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5304:1: ( ( 'DoubleLiteral' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5305:1: ( 'DoubleLiteral' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5305:1: ( 'DoubleLiteral' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5306:1: 'DoubleLiteral'
+            {
+             before(grammarAccess.getDoubleLiteralAccess().getDoubleLiteralKeyword_0()); 
+            match(input,48,FollowSets000.FOLLOW_48_in_rule__DoubleLiteral__Group__0__Impl11011); 
+             after(grammarAccess.getDoubleLiteralAccess().getDoubleLiteralKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5319:1: rule__DoubleLiteral__Group__1 : rule__DoubleLiteral__Group__1__Impl rule__DoubleLiteral__Group__2 ;
+    public final void rule__DoubleLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5323:1: ( rule__DoubleLiteral__Group__1__Impl rule__DoubleLiteral__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5324:2: rule__DoubleLiteral__Group__1__Impl rule__DoubleLiteral__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__1__Impl_in_rule__DoubleLiteral__Group__111042);
+            rule__DoubleLiteral__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__2_in_rule__DoubleLiteral__Group__111045);
+            rule__DoubleLiteral__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__1"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5331:1: rule__DoubleLiteral__Group__1__Impl : ( '{' ) ;
+    public final void rule__DoubleLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5335:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5336:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5336:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5337:1: '{'
+            {
+             before(grammarAccess.getDoubleLiteralAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__DoubleLiteral__Group__1__Impl11073); 
+             after(grammarAccess.getDoubleLiteralAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5350:1: rule__DoubleLiteral__Group__2 : rule__DoubleLiteral__Group__2__Impl rule__DoubleLiteral__Group__3 ;
+    public final void rule__DoubleLiteral__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5354:1: ( rule__DoubleLiteral__Group__2__Impl rule__DoubleLiteral__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5355:2: rule__DoubleLiteral__Group__2__Impl rule__DoubleLiteral__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__2__Impl_in_rule__DoubleLiteral__Group__211104);
+            rule__DoubleLiteral__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__3_in_rule__DoubleLiteral__Group__211107);
+            rule__DoubleLiteral__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__2"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5362:1: rule__DoubleLiteral__Group__2__Impl : ( 'value' ) ;
+    public final void rule__DoubleLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5366:1: ( ( 'value' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5367:1: ( 'value' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5367:1: ( 'value' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5368:1: 'value'
+            {
+             before(grammarAccess.getDoubleLiteralAccess().getValueKeyword_2()); 
+            match(input,45,FollowSets000.FOLLOW_45_in_rule__DoubleLiteral__Group__2__Impl11135); 
+             after(grammarAccess.getDoubleLiteralAccess().getValueKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__2__Impl"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5381:1: rule__DoubleLiteral__Group__3 : rule__DoubleLiteral__Group__3__Impl rule__DoubleLiteral__Group__4 ;
+    public final void rule__DoubleLiteral__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5385:1: ( rule__DoubleLiteral__Group__3__Impl rule__DoubleLiteral__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5386:2: rule__DoubleLiteral__Group__3__Impl rule__DoubleLiteral__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__3__Impl_in_rule__DoubleLiteral__Group__311166);
+            rule__DoubleLiteral__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__4_in_rule__DoubleLiteral__Group__311169);
+            rule__DoubleLiteral__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__3"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5393:1: rule__DoubleLiteral__Group__3__Impl : ( ( rule__DoubleLiteral__ValueAssignment_3 ) ) ;
+    public final void rule__DoubleLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5397:1: ( ( ( rule__DoubleLiteral__ValueAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5398:1: ( ( rule__DoubleLiteral__ValueAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5398:1: ( ( rule__DoubleLiteral__ValueAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5399:1: ( rule__DoubleLiteral__ValueAssignment_3 )
+            {
+             before(grammarAccess.getDoubleLiteralAccess().getValueAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5400:1: ( rule__DoubleLiteral__ValueAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5400:2: rule__DoubleLiteral__ValueAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__ValueAssignment_3_in_rule__DoubleLiteral__Group__3__Impl11196);
+            rule__DoubleLiteral__ValueAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDoubleLiteralAccess().getValueAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__3__Impl"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5410:1: rule__DoubleLiteral__Group__4 : rule__DoubleLiteral__Group__4__Impl ;
+    public final void rule__DoubleLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5414:1: ( rule__DoubleLiteral__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5415:2: rule__DoubleLiteral__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DoubleLiteral__Group__4__Impl_in_rule__DoubleLiteral__Group__411226);
+            rule__DoubleLiteral__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__4"
+
+
+    // $ANTLR start "rule__DoubleLiteral__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5421:1: rule__DoubleLiteral__Group__4__Impl : ( '}' ) ;
+    public final void rule__DoubleLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5425:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5426:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5426:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5427:1: '}'
+            {
+             before(grammarAccess.getDoubleLiteralAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__DoubleLiteral__Group__4__Impl11254); 
+             after(grammarAccess.getDoubleLiteralAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__Group__4__Impl"
+
+
+    // $ANTLR start "rule__FormalParameter__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5450:1: rule__FormalParameter__Group__0 : rule__FormalParameter__Group__0__Impl rule__FormalParameter__Group__1 ;
+    public final void rule__FormalParameter__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5454:1: ( rule__FormalParameter__Group__0__Impl rule__FormalParameter__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5455:2: rule__FormalParameter__Group__0__Impl rule__FormalParameter__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__FormalParameter__Group__0__Impl_in_rule__FormalParameter__Group__011295);
+            rule__FormalParameter__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__FormalParameter__Group__1_in_rule__FormalParameter__Group__011298);
+            rule__FormalParameter__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FormalParameter__Group__0"
+
+
+    // $ANTLR start "rule__FormalParameter__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5462:1: rule__FormalParameter__Group__0__Impl : ( () ) ;
+    public final void rule__FormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5466:1: ( ( () ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5467:1: ( () )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5467:1: ( () )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5468:1: ()
+            {
+             before(grammarAccess.getFormalParameterAccess().getFormalParameterAction_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5469:1: ()
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5471:1: 
+            {
+            }
+
+             after(grammarAccess.getFormalParameterAccess().getFormalParameterAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FormalParameter__Group__0__Impl"
+
+
+    // $ANTLR start "rule__FormalParameter__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5481:1: rule__FormalParameter__Group__1 : rule__FormalParameter__Group__1__Impl rule__FormalParameter__Group__2 ;
+    public final void rule__FormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5485:1: ( rule__FormalParameter__Group__1__Impl rule__FormalParameter__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5486:2: rule__FormalParameter__Group__1__Impl rule__FormalParameter__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__FormalParameter__Group__1__Impl_in_rule__FormalParameter__Group__111356);
+            rule__FormalParameter__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__FormalParameter__Group__2_in_rule__FormalParameter__Group__111359);
+            rule__FormalParameter__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FormalParameter__Group__1"
+
+
+    // $ANTLR start "rule__FormalParameter__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5493:1: rule__FormalParameter__Group__1__Impl : ( 'FormalParameter' ) ;
+    public final void rule__FormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5497:1: ( ( 'FormalParameter' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5498:1: ( 'FormalParameter' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5498:1: ( 'FormalParameter' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5499:1: 'FormalParameter'
+            {
+             before(grammarAccess.getFormalParameterAccess().getFormalParameterKeyword_1()); 
+            match(input,49,FollowSets000.FOLLOW_49_in_rule__FormalParameter__Group__1__Impl11387); 
+             after(grammarAccess.getFormalParameterAccess().getFormalParameterKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FormalParameter__Group__1__Impl"
+
+
+    // $ANTLR start "rule__FormalParameter__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5512:1: rule__FormalParameter__Group__2 : rule__FormalParameter__Group__2__Impl ;
+    public final void rule__FormalParameter__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5516:1: ( rule__FormalParameter__Group__2__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5517:2: rule__FormalParameter__Group__2__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__FormalParameter__Group__2__Impl_in_rule__FormalParameter__Group__211418);
+            rule__FormalParameter__Group__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FormalParameter__Group__2"
+
+
+    // $ANTLR start "rule__FormalParameter__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5523:1: rule__FormalParameter__Group__2__Impl : ( ( rule__FormalParameter__NameAssignment_2 ) ) ;
+    public final void rule__FormalParameter__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5527:1: ( ( ( rule__FormalParameter__NameAssignment_2 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5528:1: ( ( rule__FormalParameter__NameAssignment_2 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5528:1: ( ( rule__FormalParameter__NameAssignment_2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5529:1: ( rule__FormalParameter__NameAssignment_2 )
+            {
+             before(grammarAccess.getFormalParameterAccess().getNameAssignment_2()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5530:1: ( rule__FormalParameter__NameAssignment_2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5530:2: rule__FormalParameter__NameAssignment_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__FormalParameter__NameAssignment_2_in_rule__FormalParameter__Group__2__Impl11445);
+            rule__FormalParameter__NameAssignment_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFormalParameterAccess().getNameAssignment_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FormalParameter__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5546:1: rule__ProbabilityMassFunction__Group__0 : rule__ProbabilityMassFunction__Group__0__Impl rule__ProbabilityMassFunction__Group__1 ;
+    public final void rule__ProbabilityMassFunction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5550:1: ( rule__ProbabilityMassFunction__Group__0__Impl rule__ProbabilityMassFunction__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5551:2: rule__ProbabilityMassFunction__Group__0__Impl rule__ProbabilityMassFunction__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__0__Impl_in_rule__ProbabilityMassFunction__Group__011481);
+            rule__ProbabilityMassFunction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__1_in_rule__ProbabilityMassFunction__Group__011484);
+            rule__ProbabilityMassFunction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__0"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5558:1: rule__ProbabilityMassFunction__Group__0__Impl : ( () ) ;
+    public final void rule__ProbabilityMassFunction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5562:1: ( ( () ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5563:1: ( () )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5563:1: ( () )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5564:1: ()
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5565:1: ()
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5567:1: 
+            {
+            }
+
+             after(grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5577:1: rule__ProbabilityMassFunction__Group__1 : rule__ProbabilityMassFunction__Group__1__Impl rule__ProbabilityMassFunction__Group__2 ;
+    public final void rule__ProbabilityMassFunction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5581:1: ( rule__ProbabilityMassFunction__Group__1__Impl rule__ProbabilityMassFunction__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5582:2: rule__ProbabilityMassFunction__Group__1__Impl rule__ProbabilityMassFunction__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__1__Impl_in_rule__ProbabilityMassFunction__Group__111542);
+            rule__ProbabilityMassFunction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__2_in_rule__ProbabilityMassFunction__Group__111545);
+            rule__ProbabilityMassFunction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__1"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5589:1: rule__ProbabilityMassFunction__Group__1__Impl : ( 'ProbabilityMassFunction' ) ;
+    public final void rule__ProbabilityMassFunction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5593:1: ( ( 'ProbabilityMassFunction' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5594:1: ( 'ProbabilityMassFunction' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5594:1: ( 'ProbabilityMassFunction' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5595:1: 'ProbabilityMassFunction'
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1()); 
+            match(input,50,FollowSets000.FOLLOW_50_in_rule__ProbabilityMassFunction__Group__1__Impl11573); 
+             after(grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5608:1: rule__ProbabilityMassFunction__Group__2 : rule__ProbabilityMassFunction__Group__2__Impl rule__ProbabilityMassFunction__Group__3 ;
+    public final void rule__ProbabilityMassFunction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5612:1: ( rule__ProbabilityMassFunction__Group__2__Impl rule__ProbabilityMassFunction__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5613:2: rule__ProbabilityMassFunction__Group__2__Impl rule__ProbabilityMassFunction__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__2__Impl_in_rule__ProbabilityMassFunction__Group__211604);
+            rule__ProbabilityMassFunction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__3_in_rule__ProbabilityMassFunction__Group__211607);
+            rule__ProbabilityMassFunction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__2"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5620:1: rule__ProbabilityMassFunction__Group__2__Impl : ( '{' ) ;
+    public final void rule__ProbabilityMassFunction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5624:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5625:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5625:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5626:1: '{'
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__ProbabilityMassFunction__Group__2__Impl11635); 
+             after(grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5639:1: rule__ProbabilityMassFunction__Group__3 : rule__ProbabilityMassFunction__Group__3__Impl rule__ProbabilityMassFunction__Group__4 ;
+    public final void rule__ProbabilityMassFunction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5643:1: ( rule__ProbabilityMassFunction__Group__3__Impl rule__ProbabilityMassFunction__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5644:2: rule__ProbabilityMassFunction__Group__3__Impl rule__ProbabilityMassFunction__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__3__Impl_in_rule__ProbabilityMassFunction__Group__311666);
+            rule__ProbabilityMassFunction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__4_in_rule__ProbabilityMassFunction__Group__311669);
+            rule__ProbabilityMassFunction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__3"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5651:1: rule__ProbabilityMassFunction__Group__3__Impl : ( ( rule__ProbabilityMassFunction__Group_3__0 )? ) ;
+    public final void rule__ProbabilityMassFunction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5655:1: ( ( ( rule__ProbabilityMassFunction__Group_3__0 )? ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5656:1: ( ( rule__ProbabilityMassFunction__Group_3__0 )? )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5656:1: ( ( rule__ProbabilityMassFunction__Group_3__0 )? )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5657:1: ( rule__ProbabilityMassFunction__Group_3__0 )?
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5658:1: ( rule__ProbabilityMassFunction__Group_3__0 )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==51) ) {
+                alt14=1;
+            }
+            switch (alt14) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5658:2: rule__ProbabilityMassFunction__Group_3__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__0_in_rule__ProbabilityMassFunction__Group__3__Impl11696);
+                    rule__ProbabilityMassFunction__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5668:1: rule__ProbabilityMassFunction__Group__4 : rule__ProbabilityMassFunction__Group__4__Impl ;
+    public final void rule__ProbabilityMassFunction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5672:1: ( rule__ProbabilityMassFunction__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5673:2: rule__ProbabilityMassFunction__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group__4__Impl_in_rule__ProbabilityMassFunction__Group__411727);
+            rule__ProbabilityMassFunction__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__4"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5679:1: rule__ProbabilityMassFunction__Group__4__Impl : ( '}' ) ;
+    public final void rule__ProbabilityMassFunction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5683:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5684:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5684:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5685:1: '}'
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__ProbabilityMassFunction__Group__4__Impl11755); 
+             after(grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5708:1: rule__ProbabilityMassFunction__Group_3__0 : rule__ProbabilityMassFunction__Group_3__0__Impl rule__ProbabilityMassFunction__Group_3__1 ;
+    public final void rule__ProbabilityMassFunction__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5712:1: ( rule__ProbabilityMassFunction__Group_3__0__Impl rule__ProbabilityMassFunction__Group_3__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5713:2: rule__ProbabilityMassFunction__Group_3__0__Impl rule__ProbabilityMassFunction__Group_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__0__Impl_in_rule__ProbabilityMassFunction__Group_3__011796);
+            rule__ProbabilityMassFunction__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__1_in_rule__ProbabilityMassFunction__Group_3__011799);
+            rule__ProbabilityMassFunction__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__0"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5720:1: rule__ProbabilityMassFunction__Group_3__0__Impl : ( 'sample' ) ;
+    public final void rule__ProbabilityMassFunction__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5724:1: ( ( 'sample' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5725:1: ( 'sample' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5725:1: ( 'sample' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5726:1: 'sample'
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0()); 
+            match(input,51,FollowSets000.FOLLOW_51_in_rule__ProbabilityMassFunction__Group_3__0__Impl11827); 
+             after(grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5739:1: rule__ProbabilityMassFunction__Group_3__1 : rule__ProbabilityMassFunction__Group_3__1__Impl rule__ProbabilityMassFunction__Group_3__2 ;
+    public final void rule__ProbabilityMassFunction__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5743:1: ( rule__ProbabilityMassFunction__Group_3__1__Impl rule__ProbabilityMassFunction__Group_3__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5744:2: rule__ProbabilityMassFunction__Group_3__1__Impl rule__ProbabilityMassFunction__Group_3__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__1__Impl_in_rule__ProbabilityMassFunction__Group_3__111858);
+            rule__ProbabilityMassFunction__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__2_in_rule__ProbabilityMassFunction__Group_3__111861);
+            rule__ProbabilityMassFunction__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__1"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5751:1: rule__ProbabilityMassFunction__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__ProbabilityMassFunction__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5755:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5756:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5756:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5757:1: '{'
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__ProbabilityMassFunction__Group_3__1__Impl11889); 
+             after(grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5770:1: rule__ProbabilityMassFunction__Group_3__2 : rule__ProbabilityMassFunction__Group_3__2__Impl rule__ProbabilityMassFunction__Group_3__3 ;
+    public final void rule__ProbabilityMassFunction__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5774:1: ( rule__ProbabilityMassFunction__Group_3__2__Impl rule__ProbabilityMassFunction__Group_3__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5775:2: rule__ProbabilityMassFunction__Group_3__2__Impl rule__ProbabilityMassFunction__Group_3__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__2__Impl_in_rule__ProbabilityMassFunction__Group_3__211920);
+            rule__ProbabilityMassFunction__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__3_in_rule__ProbabilityMassFunction__Group_3__211923);
+            rule__ProbabilityMassFunction__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__2"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5782:1: rule__ProbabilityMassFunction__Group_3__2__Impl : ( ( rule__ProbabilityMassFunction__SampleAssignment_3_2 ) ) ;
+    public final void rule__ProbabilityMassFunction__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5786:1: ( ( ( rule__ProbabilityMassFunction__SampleAssignment_3_2 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5787:1: ( ( rule__ProbabilityMassFunction__SampleAssignment_3_2 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5787:1: ( ( rule__ProbabilityMassFunction__SampleAssignment_3_2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5788:1: ( rule__ProbabilityMassFunction__SampleAssignment_3_2 )
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_2()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5789:1: ( rule__ProbabilityMassFunction__SampleAssignment_3_2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5789:2: rule__ProbabilityMassFunction__SampleAssignment_3_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__SampleAssignment_3_2_in_rule__ProbabilityMassFunction__Group_3__2__Impl11950);
+            rule__ProbabilityMassFunction__SampleAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5799:1: rule__ProbabilityMassFunction__Group_3__3 : rule__ProbabilityMassFunction__Group_3__3__Impl rule__ProbabilityMassFunction__Group_3__4 ;
+    public final void rule__ProbabilityMassFunction__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5803:1: ( rule__ProbabilityMassFunction__Group_3__3__Impl rule__ProbabilityMassFunction__Group_3__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5804:2: rule__ProbabilityMassFunction__Group_3__3__Impl rule__ProbabilityMassFunction__Group_3__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__3__Impl_in_rule__ProbabilityMassFunction__Group_3__311980);
+            rule__ProbabilityMassFunction__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__4_in_rule__ProbabilityMassFunction__Group_3__311983);
+            rule__ProbabilityMassFunction__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__3"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5811:1: rule__ProbabilityMassFunction__Group_3__3__Impl : ( ( rule__ProbabilityMassFunction__Group_3_3__0 )* ) ;
+    public final void rule__ProbabilityMassFunction__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5815:1: ( ( ( rule__ProbabilityMassFunction__Group_3_3__0 )* ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5816:1: ( ( rule__ProbabilityMassFunction__Group_3_3__0 )* )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5816:1: ( ( rule__ProbabilityMassFunction__Group_3_3__0 )* )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5817:1: ( rule__ProbabilityMassFunction__Group_3_3__0 )*
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5818:1: ( rule__ProbabilityMassFunction__Group_3_3__0 )*
+            loop15:
+            do {
+                int alt15=2;
+                int LA15_0 = input.LA(1);
+
+                if ( (LA15_0==40) ) {
+                    alt15=1;
+                }
+
+
+                switch (alt15) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5818:2: rule__ProbabilityMassFunction__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3_3__0_in_rule__ProbabilityMassFunction__Group_3__3__Impl12010);
+            	    rule__ProbabilityMassFunction__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop15;
+                }
+            } while (true);
+
+             after(grammarAccess.getProbabilityMassFunctionAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5828:1: rule__ProbabilityMassFunction__Group_3__4 : rule__ProbabilityMassFunction__Group_3__4__Impl ;
+    public final void rule__ProbabilityMassFunction__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5832:1: ( rule__ProbabilityMassFunction__Group_3__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5833:2: rule__ProbabilityMassFunction__Group_3__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3__4__Impl_in_rule__ProbabilityMassFunction__Group_3__412041);
+            rule__ProbabilityMassFunction__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__4"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5839:1: rule__ProbabilityMassFunction__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__ProbabilityMassFunction__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5843:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5844:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5844:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5845:1: '}'
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__ProbabilityMassFunction__Group_3__4__Impl12069); 
+             after(grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3_3__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5868:1: rule__ProbabilityMassFunction__Group_3_3__0 : rule__ProbabilityMassFunction__Group_3_3__0__Impl rule__ProbabilityMassFunction__Group_3_3__1 ;
+    public final void rule__ProbabilityMassFunction__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5872:1: ( rule__ProbabilityMassFunction__Group_3_3__0__Impl rule__ProbabilityMassFunction__Group_3_3__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5873:2: rule__ProbabilityMassFunction__Group_3_3__0__Impl rule__ProbabilityMassFunction__Group_3_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3_3__0__Impl_in_rule__ProbabilityMassFunction__Group_3_3__012110);
+            rule__ProbabilityMassFunction__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3_3__1_in_rule__ProbabilityMassFunction__Group_3_3__012113);
+            rule__ProbabilityMassFunction__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3_3__0"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3_3__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5880:1: rule__ProbabilityMassFunction__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__ProbabilityMassFunction__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5884:1: ( ( ',' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5885:1: ( ',' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5885:1: ( ',' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5886:1: ','
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0()); 
+            match(input,40,FollowSets000.FOLLOW_40_in_rule__ProbabilityMassFunction__Group_3_3__0__Impl12141); 
+             after(grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3_3__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5899:1: rule__ProbabilityMassFunction__Group_3_3__1 : rule__ProbabilityMassFunction__Group_3_3__1__Impl ;
+    public final void rule__ProbabilityMassFunction__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5903:1: ( rule__ProbabilityMassFunction__Group_3_3__1__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5904:2: rule__ProbabilityMassFunction__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__Group_3_3__1__Impl_in_rule__ProbabilityMassFunction__Group_3_3__112172);
+            rule__ProbabilityMassFunction__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3_3__1"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__Group_3_3__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5910:1: rule__ProbabilityMassFunction__Group_3_3__1__Impl : ( ( rule__ProbabilityMassFunction__SampleAssignment_3_3_1 ) ) ;
+    public final void rule__ProbabilityMassFunction__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5914:1: ( ( ( rule__ProbabilityMassFunction__SampleAssignment_3_3_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5915:1: ( ( rule__ProbabilityMassFunction__SampleAssignment_3_3_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5915:1: ( ( rule__ProbabilityMassFunction__SampleAssignment_3_3_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5916:1: ( rule__ProbabilityMassFunction__SampleAssignment_3_3_1 )
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_3_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5917:1: ( rule__ProbabilityMassFunction__SampleAssignment_3_3_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5917:2: rule__ProbabilityMassFunction__SampleAssignment_3_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProbabilityMassFunction__SampleAssignment_3_3_1_in_rule__ProbabilityMassFunction__Group_3_3__1__Impl12199);
+            rule__ProbabilityMassFunction__SampleAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5931:1: rule__BoxedPDF__Group__0 : rule__BoxedPDF__Group__0__Impl rule__BoxedPDF__Group__1 ;
+    public final void rule__BoxedPDF__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5935:1: ( rule__BoxedPDF__Group__0__Impl rule__BoxedPDF__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5936:2: rule__BoxedPDF__Group__0__Impl rule__BoxedPDF__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__0__Impl_in_rule__BoxedPDF__Group__012233);
+            rule__BoxedPDF__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__1_in_rule__BoxedPDF__Group__012236);
+            rule__BoxedPDF__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__0"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5943:1: rule__BoxedPDF__Group__0__Impl : ( () ) ;
+    public final void rule__BoxedPDF__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5947:1: ( ( () ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5948:1: ( () )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5948:1: ( () )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5949:1: ()
+            {
+             before(grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5950:1: ()
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5952:1: 
+            {
+            }
+
+             after(grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__0__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5962:1: rule__BoxedPDF__Group__1 : rule__BoxedPDF__Group__1__Impl rule__BoxedPDF__Group__2 ;
+    public final void rule__BoxedPDF__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5966:1: ( rule__BoxedPDF__Group__1__Impl rule__BoxedPDF__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5967:2: rule__BoxedPDF__Group__1__Impl rule__BoxedPDF__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__1__Impl_in_rule__BoxedPDF__Group__112294);
+            rule__BoxedPDF__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__2_in_rule__BoxedPDF__Group__112297);
+            rule__BoxedPDF__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__1"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5974:1: rule__BoxedPDF__Group__1__Impl : ( 'BoxedPDF' ) ;
+    public final void rule__BoxedPDF__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5978:1: ( ( 'BoxedPDF' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5979:1: ( 'BoxedPDF' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5979:1: ( 'BoxedPDF' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5980:1: 'BoxedPDF'
+            {
+             before(grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1()); 
+            match(input,52,FollowSets000.FOLLOW_52_in_rule__BoxedPDF__Group__1__Impl12325); 
+             after(grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__1__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5993:1: rule__BoxedPDF__Group__2 : rule__BoxedPDF__Group__2__Impl rule__BoxedPDF__Group__3 ;
+    public final void rule__BoxedPDF__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5997:1: ( rule__BoxedPDF__Group__2__Impl rule__BoxedPDF__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:5998:2: rule__BoxedPDF__Group__2__Impl rule__BoxedPDF__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__2__Impl_in_rule__BoxedPDF__Group__212356);
+            rule__BoxedPDF__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__3_in_rule__BoxedPDF__Group__212359);
+            rule__BoxedPDF__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__2"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6005:1: rule__BoxedPDF__Group__2__Impl : ( '{' ) ;
+    public final void rule__BoxedPDF__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6009:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6010:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6010:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6011:1: '{'
+            {
+             before(grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__BoxedPDF__Group__2__Impl12387); 
+             after(grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__2__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6024:1: rule__BoxedPDF__Group__3 : rule__BoxedPDF__Group__3__Impl rule__BoxedPDF__Group__4 ;
+    public final void rule__BoxedPDF__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6028:1: ( rule__BoxedPDF__Group__3__Impl rule__BoxedPDF__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6029:2: rule__BoxedPDF__Group__3__Impl rule__BoxedPDF__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__3__Impl_in_rule__BoxedPDF__Group__312418);
+            rule__BoxedPDF__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__4_in_rule__BoxedPDF__Group__312421);
+            rule__BoxedPDF__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__3"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6036:1: rule__BoxedPDF__Group__3__Impl : ( ( rule__BoxedPDF__Group_3__0 )? ) ;
+    public final void rule__BoxedPDF__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6040:1: ( ( ( rule__BoxedPDF__Group_3__0 )? ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6041:1: ( ( rule__BoxedPDF__Group_3__0 )? )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6041:1: ( ( rule__BoxedPDF__Group_3__0 )? )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6042:1: ( rule__BoxedPDF__Group_3__0 )?
+            {
+             before(grammarAccess.getBoxedPDFAccess().getGroup_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6043:1: ( rule__BoxedPDF__Group_3__0 )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
+
+            if ( (LA16_0==51) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6043:2: rule__BoxedPDF__Group_3__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__0_in_rule__BoxedPDF__Group__3__Impl12448);
+                    rule__BoxedPDF__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getBoxedPDFAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__3__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6053:1: rule__BoxedPDF__Group__4 : rule__BoxedPDF__Group__4__Impl ;
+    public final void rule__BoxedPDF__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6057:1: ( rule__BoxedPDF__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6058:2: rule__BoxedPDF__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group__4__Impl_in_rule__BoxedPDF__Group__412479);
+            rule__BoxedPDF__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__4"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6064:1: rule__BoxedPDF__Group__4__Impl : ( '}' ) ;
+    public final void rule__BoxedPDF__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6068:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6069:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6069:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6070:1: '}'
+            {
+             before(grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__BoxedPDF__Group__4__Impl12507); 
+             after(grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group__4__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6093:1: rule__BoxedPDF__Group_3__0 : rule__BoxedPDF__Group_3__0__Impl rule__BoxedPDF__Group_3__1 ;
+    public final void rule__BoxedPDF__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6097:1: ( rule__BoxedPDF__Group_3__0__Impl rule__BoxedPDF__Group_3__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6098:2: rule__BoxedPDF__Group_3__0__Impl rule__BoxedPDF__Group_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__0__Impl_in_rule__BoxedPDF__Group_3__012548);
+            rule__BoxedPDF__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__1_in_rule__BoxedPDF__Group_3__012551);
+            rule__BoxedPDF__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__0"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6105:1: rule__BoxedPDF__Group_3__0__Impl : ( 'sample' ) ;
+    public final void rule__BoxedPDF__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6109:1: ( ( 'sample' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6110:1: ( 'sample' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6110:1: ( 'sample' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6111:1: 'sample'
+            {
+             before(grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0()); 
+            match(input,51,FollowSets000.FOLLOW_51_in_rule__BoxedPDF__Group_3__0__Impl12579); 
+             after(grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6124:1: rule__BoxedPDF__Group_3__1 : rule__BoxedPDF__Group_3__1__Impl rule__BoxedPDF__Group_3__2 ;
+    public final void rule__BoxedPDF__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6128:1: ( rule__BoxedPDF__Group_3__1__Impl rule__BoxedPDF__Group_3__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6129:2: rule__BoxedPDF__Group_3__1__Impl rule__BoxedPDF__Group_3__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__1__Impl_in_rule__BoxedPDF__Group_3__112610);
+            rule__BoxedPDF__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__2_in_rule__BoxedPDF__Group_3__112613);
+            rule__BoxedPDF__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__1"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6136:1: rule__BoxedPDF__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__BoxedPDF__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6140:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6141:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6141:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6142:1: '{'
+            {
+             before(grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__BoxedPDF__Group_3__1__Impl12641); 
+             after(grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6155:1: rule__BoxedPDF__Group_3__2 : rule__BoxedPDF__Group_3__2__Impl rule__BoxedPDF__Group_3__3 ;
+    public final void rule__BoxedPDF__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6159:1: ( rule__BoxedPDF__Group_3__2__Impl rule__BoxedPDF__Group_3__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6160:2: rule__BoxedPDF__Group_3__2__Impl rule__BoxedPDF__Group_3__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__2__Impl_in_rule__BoxedPDF__Group_3__212672);
+            rule__BoxedPDF__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__3_in_rule__BoxedPDF__Group_3__212675);
+            rule__BoxedPDF__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__2"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6167:1: rule__BoxedPDF__Group_3__2__Impl : ( ( rule__BoxedPDF__SampleAssignment_3_2 ) ) ;
+    public final void rule__BoxedPDF__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6171:1: ( ( ( rule__BoxedPDF__SampleAssignment_3_2 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6172:1: ( ( rule__BoxedPDF__SampleAssignment_3_2 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6172:1: ( ( rule__BoxedPDF__SampleAssignment_3_2 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6173:1: ( rule__BoxedPDF__SampleAssignment_3_2 )
+            {
+             before(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_2()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6174:1: ( rule__BoxedPDF__SampleAssignment_3_2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6174:2: rule__BoxedPDF__SampleAssignment_3_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__SampleAssignment_3_2_in_rule__BoxedPDF__Group_3__2__Impl12702);
+            rule__BoxedPDF__SampleAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6184:1: rule__BoxedPDF__Group_3__3 : rule__BoxedPDF__Group_3__3__Impl rule__BoxedPDF__Group_3__4 ;
+    public final void rule__BoxedPDF__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6188:1: ( rule__BoxedPDF__Group_3__3__Impl rule__BoxedPDF__Group_3__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6189:2: rule__BoxedPDF__Group_3__3__Impl rule__BoxedPDF__Group_3__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__3__Impl_in_rule__BoxedPDF__Group_3__312732);
+            rule__BoxedPDF__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__4_in_rule__BoxedPDF__Group_3__312735);
+            rule__BoxedPDF__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__3"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6196:1: rule__BoxedPDF__Group_3__3__Impl : ( ( rule__BoxedPDF__Group_3_3__0 )* ) ;
+    public final void rule__BoxedPDF__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6200:1: ( ( ( rule__BoxedPDF__Group_3_3__0 )* ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6201:1: ( ( rule__BoxedPDF__Group_3_3__0 )* )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6201:1: ( ( rule__BoxedPDF__Group_3_3__0 )* )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6202:1: ( rule__BoxedPDF__Group_3_3__0 )*
+            {
+             before(grammarAccess.getBoxedPDFAccess().getGroup_3_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6203:1: ( rule__BoxedPDF__Group_3_3__0 )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( (LA17_0==40) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6203:2: rule__BoxedPDF__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3_3__0_in_rule__BoxedPDF__Group_3__3__Impl12762);
+            	    rule__BoxedPDF__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+             after(grammarAccess.getBoxedPDFAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6213:1: rule__BoxedPDF__Group_3__4 : rule__BoxedPDF__Group_3__4__Impl ;
+    public final void rule__BoxedPDF__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6217:1: ( rule__BoxedPDF__Group_3__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6218:2: rule__BoxedPDF__Group_3__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3__4__Impl_in_rule__BoxedPDF__Group_3__412793);
+            rule__BoxedPDF__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__4"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6224:1: rule__BoxedPDF__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__BoxedPDF__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6228:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6229:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6229:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6230:1: '}'
+            {
+             before(grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__BoxedPDF__Group_3__4__Impl12821); 
+             after(grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3_3__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6253:1: rule__BoxedPDF__Group_3_3__0 : rule__BoxedPDF__Group_3_3__0__Impl rule__BoxedPDF__Group_3_3__1 ;
+    public final void rule__BoxedPDF__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6257:1: ( rule__BoxedPDF__Group_3_3__0__Impl rule__BoxedPDF__Group_3_3__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6258:2: rule__BoxedPDF__Group_3_3__0__Impl rule__BoxedPDF__Group_3_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3_3__0__Impl_in_rule__BoxedPDF__Group_3_3__012862);
+            rule__BoxedPDF__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3_3__1_in_rule__BoxedPDF__Group_3_3__012865);
+            rule__BoxedPDF__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3_3__0"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3_3__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6265:1: rule__BoxedPDF__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__BoxedPDF__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6269:1: ( ( ',' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6270:1: ( ',' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6270:1: ( ',' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6271:1: ','
+            {
+             before(grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0()); 
+            match(input,40,FollowSets000.FOLLOW_40_in_rule__BoxedPDF__Group_3_3__0__Impl12893); 
+             after(grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3_3__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6284:1: rule__BoxedPDF__Group_3_3__1 : rule__BoxedPDF__Group_3_3__1__Impl ;
+    public final void rule__BoxedPDF__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6288:1: ( rule__BoxedPDF__Group_3_3__1__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6289:2: rule__BoxedPDF__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__Group_3_3__1__Impl_in_rule__BoxedPDF__Group_3_3__112924);
+            rule__BoxedPDF__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3_3__1"
+
+
+    // $ANTLR start "rule__BoxedPDF__Group_3_3__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6295:1: rule__BoxedPDF__Group_3_3__1__Impl : ( ( rule__BoxedPDF__SampleAssignment_3_3_1 ) ) ;
+    public final void rule__BoxedPDF__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6299:1: ( ( ( rule__BoxedPDF__SampleAssignment_3_3_1 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6300:1: ( ( rule__BoxedPDF__SampleAssignment_3_3_1 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6300:1: ( ( rule__BoxedPDF__SampleAssignment_3_3_1 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6301:1: ( rule__BoxedPDF__SampleAssignment_3_3_1 )
+            {
+             before(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_3_1()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6302:1: ( rule__BoxedPDF__SampleAssignment_3_3_1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6302:2: rule__BoxedPDF__SampleAssignment_3_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BoxedPDF__SampleAssignment_3_3_1_in_rule__BoxedPDF__Group_3_3__1__Impl12951);
+            rule__BoxedPDF__SampleAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6316:1: rule__NormalDistribution__Group__0 : rule__NormalDistribution__Group__0__Impl rule__NormalDistribution__Group__1 ;
+    public final void rule__NormalDistribution__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6320:1: ( rule__NormalDistribution__Group__0__Impl rule__NormalDistribution__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6321:2: rule__NormalDistribution__Group__0__Impl rule__NormalDistribution__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__0__Impl_in_rule__NormalDistribution__Group__012985);
+            rule__NormalDistribution__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__1_in_rule__NormalDistribution__Group__012988);
+            rule__NormalDistribution__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__0"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6328:1: rule__NormalDistribution__Group__0__Impl : ( 'NormalDistribution' ) ;
+    public final void rule__NormalDistribution__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6332:1: ( ( 'NormalDistribution' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6333:1: ( 'NormalDistribution' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6333:1: ( 'NormalDistribution' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6334:1: 'NormalDistribution'
+            {
+             before(grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0()); 
+            match(input,53,FollowSets000.FOLLOW_53_in_rule__NormalDistribution__Group__0__Impl13016); 
+             after(grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__0__Impl"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6347:1: rule__NormalDistribution__Group__1 : rule__NormalDistribution__Group__1__Impl rule__NormalDistribution__Group__2 ;
+    public final void rule__NormalDistribution__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6351:1: ( rule__NormalDistribution__Group__1__Impl rule__NormalDistribution__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6352:2: rule__NormalDistribution__Group__1__Impl rule__NormalDistribution__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__1__Impl_in_rule__NormalDistribution__Group__113047);
+            rule__NormalDistribution__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__2_in_rule__NormalDistribution__Group__113050);
+            rule__NormalDistribution__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__1"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6359:1: rule__NormalDistribution__Group__1__Impl : ( '{' ) ;
+    public final void rule__NormalDistribution__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6363:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6364:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6364:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6365:1: '{'
+            {
+             before(grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__NormalDistribution__Group__1__Impl13078); 
+             after(grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__1__Impl"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6378:1: rule__NormalDistribution__Group__2 : rule__NormalDistribution__Group__2__Impl rule__NormalDistribution__Group__3 ;
+    public final void rule__NormalDistribution__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6382:1: ( rule__NormalDistribution__Group__2__Impl rule__NormalDistribution__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6383:2: rule__NormalDistribution__Group__2__Impl rule__NormalDistribution__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__2__Impl_in_rule__NormalDistribution__Group__213109);
+            rule__NormalDistribution__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__3_in_rule__NormalDistribution__Group__213112);
+            rule__NormalDistribution__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__2"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6390:1: rule__NormalDistribution__Group__2__Impl : ( 'mu' ) ;
+    public final void rule__NormalDistribution__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6394:1: ( ( 'mu' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6395:1: ( 'mu' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6395:1: ( 'mu' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6396:1: 'mu'
+            {
+             before(grammarAccess.getNormalDistributionAccess().getMuKeyword_2()); 
+            match(input,54,FollowSets000.FOLLOW_54_in_rule__NormalDistribution__Group__2__Impl13140); 
+             after(grammarAccess.getNormalDistributionAccess().getMuKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__2__Impl"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6409:1: rule__NormalDistribution__Group__3 : rule__NormalDistribution__Group__3__Impl rule__NormalDistribution__Group__4 ;
+    public final void rule__NormalDistribution__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6413:1: ( rule__NormalDistribution__Group__3__Impl rule__NormalDistribution__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6414:2: rule__NormalDistribution__Group__3__Impl rule__NormalDistribution__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__3__Impl_in_rule__NormalDistribution__Group__313171);
+            rule__NormalDistribution__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__4_in_rule__NormalDistribution__Group__313174);
+            rule__NormalDistribution__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__3"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6421:1: rule__NormalDistribution__Group__3__Impl : ( ( rule__NormalDistribution__MuAssignment_3 ) ) ;
+    public final void rule__NormalDistribution__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6425:1: ( ( ( rule__NormalDistribution__MuAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6426:1: ( ( rule__NormalDistribution__MuAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6426:1: ( ( rule__NormalDistribution__MuAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6427:1: ( rule__NormalDistribution__MuAssignment_3 )
+            {
+             before(grammarAccess.getNormalDistributionAccess().getMuAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6428:1: ( rule__NormalDistribution__MuAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6428:2: rule__NormalDistribution__MuAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__MuAssignment_3_in_rule__NormalDistribution__Group__3__Impl13201);
+            rule__NormalDistribution__MuAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNormalDistributionAccess().getMuAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__3__Impl"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6438:1: rule__NormalDistribution__Group__4 : rule__NormalDistribution__Group__4__Impl rule__NormalDistribution__Group__5 ;
+    public final void rule__NormalDistribution__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6442:1: ( rule__NormalDistribution__Group__4__Impl rule__NormalDistribution__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6443:2: rule__NormalDistribution__Group__4__Impl rule__NormalDistribution__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__4__Impl_in_rule__NormalDistribution__Group__413231);
+            rule__NormalDistribution__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__5_in_rule__NormalDistribution__Group__413234);
+            rule__NormalDistribution__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__4"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6450:1: rule__NormalDistribution__Group__4__Impl : ( 'sigma' ) ;
+    public final void rule__NormalDistribution__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6454:1: ( ( 'sigma' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6455:1: ( 'sigma' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6455:1: ( 'sigma' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6456:1: 'sigma'
+            {
+             before(grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4()); 
+            match(input,55,FollowSets000.FOLLOW_55_in_rule__NormalDistribution__Group__4__Impl13262); 
+             after(grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__4__Impl"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6469:1: rule__NormalDistribution__Group__5 : rule__NormalDistribution__Group__5__Impl rule__NormalDistribution__Group__6 ;
+    public final void rule__NormalDistribution__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6473:1: ( rule__NormalDistribution__Group__5__Impl rule__NormalDistribution__Group__6 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6474:2: rule__NormalDistribution__Group__5__Impl rule__NormalDistribution__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__5__Impl_in_rule__NormalDistribution__Group__513293);
+            rule__NormalDistribution__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__6_in_rule__NormalDistribution__Group__513296);
+            rule__NormalDistribution__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__5"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6481:1: rule__NormalDistribution__Group__5__Impl : ( ( rule__NormalDistribution__SigmaAssignment_5 ) ) ;
+    public final void rule__NormalDistribution__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6485:1: ( ( ( rule__NormalDistribution__SigmaAssignment_5 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6486:1: ( ( rule__NormalDistribution__SigmaAssignment_5 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6486:1: ( ( rule__NormalDistribution__SigmaAssignment_5 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6487:1: ( rule__NormalDistribution__SigmaAssignment_5 )
+            {
+             before(grammarAccess.getNormalDistributionAccess().getSigmaAssignment_5()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6488:1: ( rule__NormalDistribution__SigmaAssignment_5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6488:2: rule__NormalDistribution__SigmaAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__SigmaAssignment_5_in_rule__NormalDistribution__Group__5__Impl13323);
+            rule__NormalDistribution__SigmaAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNormalDistributionAccess().getSigmaAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__5__Impl"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__6"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6498:1: rule__NormalDistribution__Group__6 : rule__NormalDistribution__Group__6__Impl ;
+    public final void rule__NormalDistribution__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6502:1: ( rule__NormalDistribution__Group__6__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6503:2: rule__NormalDistribution__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NormalDistribution__Group__6__Impl_in_rule__NormalDistribution__Group__613353);
+            rule__NormalDistribution__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__6"
+
+
+    // $ANTLR start "rule__NormalDistribution__Group__6__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6509:1: rule__NormalDistribution__Group__6__Impl : ( '}' ) ;
+    public final void rule__NormalDistribution__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6513:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6514:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6514:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6515:1: '}'
+            {
+             before(grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__NormalDistribution__Group__6__Impl13381); 
+             after(grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6542:1: rule__ExponentialDistribution__Group__0 : rule__ExponentialDistribution__Group__0__Impl rule__ExponentialDistribution__Group__1 ;
+    public final void rule__ExponentialDistribution__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6546:1: ( rule__ExponentialDistribution__Group__0__Impl rule__ExponentialDistribution__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6547:2: rule__ExponentialDistribution__Group__0__Impl rule__ExponentialDistribution__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__0__Impl_in_rule__ExponentialDistribution__Group__013426);
+            rule__ExponentialDistribution__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__1_in_rule__ExponentialDistribution__Group__013429);
+            rule__ExponentialDistribution__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__0"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6554:1: rule__ExponentialDistribution__Group__0__Impl : ( 'ExponentialDistribution' ) ;
+    public final void rule__ExponentialDistribution__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6558:1: ( ( 'ExponentialDistribution' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6559:1: ( 'ExponentialDistribution' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6559:1: ( 'ExponentialDistribution' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6560:1: 'ExponentialDistribution'
+            {
+             before(grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0()); 
+            match(input,56,FollowSets000.FOLLOW_56_in_rule__ExponentialDistribution__Group__0__Impl13457); 
+             after(grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6573:1: rule__ExponentialDistribution__Group__1 : rule__ExponentialDistribution__Group__1__Impl rule__ExponentialDistribution__Group__2 ;
+    public final void rule__ExponentialDistribution__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6577:1: ( rule__ExponentialDistribution__Group__1__Impl rule__ExponentialDistribution__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6578:2: rule__ExponentialDistribution__Group__1__Impl rule__ExponentialDistribution__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__1__Impl_in_rule__ExponentialDistribution__Group__113488);
+            rule__ExponentialDistribution__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__2_in_rule__ExponentialDistribution__Group__113491);
+            rule__ExponentialDistribution__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__1"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6585:1: rule__ExponentialDistribution__Group__1__Impl : ( '{' ) ;
+    public final void rule__ExponentialDistribution__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6589:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6590:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6590:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6591:1: '{'
+            {
+             before(grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__ExponentialDistribution__Group__1__Impl13519); 
+             after(grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6604:1: rule__ExponentialDistribution__Group__2 : rule__ExponentialDistribution__Group__2__Impl rule__ExponentialDistribution__Group__3 ;
+    public final void rule__ExponentialDistribution__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6608:1: ( rule__ExponentialDistribution__Group__2__Impl rule__ExponentialDistribution__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6609:2: rule__ExponentialDistribution__Group__2__Impl rule__ExponentialDistribution__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__2__Impl_in_rule__ExponentialDistribution__Group__213550);
+            rule__ExponentialDistribution__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__3_in_rule__ExponentialDistribution__Group__213553);
+            rule__ExponentialDistribution__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__2"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6616:1: rule__ExponentialDistribution__Group__2__Impl : ( 'rate' ) ;
+    public final void rule__ExponentialDistribution__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6620:1: ( ( 'rate' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6621:1: ( 'rate' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6621:1: ( 'rate' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6622:1: 'rate'
+            {
+             before(grammarAccess.getExponentialDistributionAccess().getRateKeyword_2()); 
+            match(input,57,FollowSets000.FOLLOW_57_in_rule__ExponentialDistribution__Group__2__Impl13581); 
+             after(grammarAccess.getExponentialDistributionAccess().getRateKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6635:1: rule__ExponentialDistribution__Group__3 : rule__ExponentialDistribution__Group__3__Impl rule__ExponentialDistribution__Group__4 ;
+    public final void rule__ExponentialDistribution__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6639:1: ( rule__ExponentialDistribution__Group__3__Impl rule__ExponentialDistribution__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6640:2: rule__ExponentialDistribution__Group__3__Impl rule__ExponentialDistribution__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__3__Impl_in_rule__ExponentialDistribution__Group__313612);
+            rule__ExponentialDistribution__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__4_in_rule__ExponentialDistribution__Group__313615);
+            rule__ExponentialDistribution__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__3"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6647:1: rule__ExponentialDistribution__Group__3__Impl : ( ( rule__ExponentialDistribution__RateAssignment_3 ) ) ;
+    public final void rule__ExponentialDistribution__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6651:1: ( ( ( rule__ExponentialDistribution__RateAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6652:1: ( ( rule__ExponentialDistribution__RateAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6652:1: ( ( rule__ExponentialDistribution__RateAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6653:1: ( rule__ExponentialDistribution__RateAssignment_3 )
+            {
+             before(grammarAccess.getExponentialDistributionAccess().getRateAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6654:1: ( rule__ExponentialDistribution__RateAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6654:2: rule__ExponentialDistribution__RateAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__RateAssignment_3_in_rule__ExponentialDistribution__Group__3__Impl13642);
+            rule__ExponentialDistribution__RateAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExponentialDistributionAccess().getRateAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6664:1: rule__ExponentialDistribution__Group__4 : rule__ExponentialDistribution__Group__4__Impl ;
+    public final void rule__ExponentialDistribution__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6668:1: ( rule__ExponentialDistribution__Group__4__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6669:2: rule__ExponentialDistribution__Group__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExponentialDistribution__Group__4__Impl_in_rule__ExponentialDistribution__Group__413672);
+            rule__ExponentialDistribution__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__4"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6675:1: rule__ExponentialDistribution__Group__4__Impl : ( '}' ) ;
+    public final void rule__ExponentialDistribution__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6679:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6680:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6680:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6681:1: '}'
+            {
+             before(grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__ExponentialDistribution__Group__4__Impl13700); 
+             after(grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__Group__4__Impl"
+
+
+    // $ANTLR start "rule__EBigInteger__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6704:1: rule__EBigInteger__Group__0 : rule__EBigInteger__Group__0__Impl rule__EBigInteger__Group__1 ;
+    public final void rule__EBigInteger__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6708:1: ( rule__EBigInteger__Group__0__Impl rule__EBigInteger__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6709:2: rule__EBigInteger__Group__0__Impl rule__EBigInteger__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EBigInteger__Group__0__Impl_in_rule__EBigInteger__Group__013741);
+            rule__EBigInteger__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EBigInteger__Group__1_in_rule__EBigInteger__Group__013744);
+            rule__EBigInteger__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigInteger__Group__0"
+
+
+    // $ANTLR start "rule__EBigInteger__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6716:1: rule__EBigInteger__Group__0__Impl : ( ( '-' )? ) ;
+    public final void rule__EBigInteger__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6720:1: ( ( ( '-' )? ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6721:1: ( ( '-' )? )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6721:1: ( ( '-' )? )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6722:1: ( '-' )?
+            {
+             before(grammarAccess.getEBigIntegerAccess().getHyphenMinusKeyword_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6723:1: ( '-' )?
+            int alt18=2;
+            int LA18_0 = input.LA(1);
+
+            if ( (LA18_0==58) ) {
+                alt18=1;
+            }
+            switch (alt18) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6724:2: '-'
+                    {
+                    match(input,58,FollowSets000.FOLLOW_58_in_rule__EBigInteger__Group__0__Impl13773); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEBigIntegerAccess().getHyphenMinusKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigInteger__Group__0__Impl"
+
+
+    // $ANTLR start "rule__EBigInteger__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6735:1: rule__EBigInteger__Group__1 : rule__EBigInteger__Group__1__Impl ;
+    public final void rule__EBigInteger__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6739:1: ( rule__EBigInteger__Group__1__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6740:2: rule__EBigInteger__Group__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EBigInteger__Group__1__Impl_in_rule__EBigInteger__Group__113806);
+            rule__EBigInteger__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigInteger__Group__1"
+
+
+    // $ANTLR start "rule__EBigInteger__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6746:1: rule__EBigInteger__Group__1__Impl : ( RULE_INT ) ;
+    public final void rule__EBigInteger__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6750:1: ( ( RULE_INT ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6751:1: ( RULE_INT )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6751:1: ( RULE_INT )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6752:1: RULE_INT
+            {
+             before(grammarAccess.getEBigIntegerAccess().getINTTerminalRuleCall_1()); 
+            match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_rule__EBigInteger__Group__1__Impl13833); 
+             after(grammarAccess.getEBigIntegerAccess().getINTTerminalRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigInteger__Group__1__Impl"
+
+
+    // $ANTLR start "rule__EBigDecimal__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6767:1: rule__EBigDecimal__Group__0 : rule__EBigDecimal__Group__0__Impl rule__EBigDecimal__Group__1 ;
+    public final void rule__EBigDecimal__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6771:1: ( rule__EBigDecimal__Group__0__Impl rule__EBigDecimal__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6772:2: rule__EBigDecimal__Group__0__Impl rule__EBigDecimal__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EBigDecimal__Group__0__Impl_in_rule__EBigDecimal__Group__013866);
+            rule__EBigDecimal__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EBigDecimal__Group__1_in_rule__EBigDecimal__Group__013869);
+            rule__EBigDecimal__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigDecimal__Group__0"
+
+
+    // $ANTLR start "rule__EBigDecimal__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6779:1: rule__EBigDecimal__Group__0__Impl : ( ( RULE_INT )? ) ;
+    public final void rule__EBigDecimal__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6783:1: ( ( ( RULE_INT )? ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6784:1: ( ( RULE_INT )? )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6784:1: ( ( RULE_INT )? )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6785:1: ( RULE_INT )?
+            {
+             before(grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6786:1: ( RULE_INT )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==RULE_INT) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6786:3: RULE_INT
+                    {
+                    match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_rule__EBigDecimal__Group__0__Impl13897); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigDecimal__Group__0__Impl"
+
+
+    // $ANTLR start "rule__EBigDecimal__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6796:1: rule__EBigDecimal__Group__1 : rule__EBigDecimal__Group__1__Impl rule__EBigDecimal__Group__2 ;
+    public final void rule__EBigDecimal__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6800:1: ( rule__EBigDecimal__Group__1__Impl rule__EBigDecimal__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6801:2: rule__EBigDecimal__Group__1__Impl rule__EBigDecimal__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EBigDecimal__Group__1__Impl_in_rule__EBigDecimal__Group__113928);
+            rule__EBigDecimal__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EBigDecimal__Group__2_in_rule__EBigDecimal__Group__113931);
+            rule__EBigDecimal__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigDecimal__Group__1"
+
+
+    // $ANTLR start "rule__EBigDecimal__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6808:1: rule__EBigDecimal__Group__1__Impl : ( '.' ) ;
+    public final void rule__EBigDecimal__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6812:1: ( ( '.' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6813:1: ( '.' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6813:1: ( '.' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6814:1: '.'
+            {
+             before(grammarAccess.getEBigDecimalAccess().getFullStopKeyword_1()); 
+            match(input,59,FollowSets000.FOLLOW_59_in_rule__EBigDecimal__Group__1__Impl13959); 
+             after(grammarAccess.getEBigDecimalAccess().getFullStopKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigDecimal__Group__1__Impl"
+
+
+    // $ANTLR start "rule__EBigDecimal__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6827:1: rule__EBigDecimal__Group__2 : rule__EBigDecimal__Group__2__Impl ;
+    public final void rule__EBigDecimal__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6831:1: ( rule__EBigDecimal__Group__2__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6832:2: rule__EBigDecimal__Group__2__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EBigDecimal__Group__2__Impl_in_rule__EBigDecimal__Group__213990);
+            rule__EBigDecimal__Group__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigDecimal__Group__2"
+
+
+    // $ANTLR start "rule__EBigDecimal__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6838:1: rule__EBigDecimal__Group__2__Impl : ( RULE_INT ) ;
+    public final void rule__EBigDecimal__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6842:1: ( ( RULE_INT ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6843:1: ( RULE_INT )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6843:1: ( RULE_INT )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6844:1: RULE_INT
+            {
+             before(grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_2()); 
+            match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_rule__EBigDecimal__Group__2__Impl14017); 
+             after(grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBigDecimal__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Sample__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6861:1: rule__Sample__Group__0 : rule__Sample__Group__0__Impl rule__Sample__Group__1 ;
+    public final void rule__Sample__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6865:1: ( rule__Sample__Group__0__Impl rule__Sample__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6866:2: rule__Sample__Group__0__Impl rule__Sample__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__0__Impl_in_rule__Sample__Group__014052);
+            rule__Sample__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__1_in_rule__Sample__Group__014055);
+            rule__Sample__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__0"
+
+
+    // $ANTLR start "rule__Sample__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6873:1: rule__Sample__Group__0__Impl : ( 'Sample' ) ;
+    public final void rule__Sample__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6877:1: ( ( 'Sample' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6878:1: ( 'Sample' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6878:1: ( 'Sample' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6879:1: 'Sample'
+            {
+             before(grammarAccess.getSampleAccess().getSampleKeyword_0()); 
+            match(input,60,FollowSets000.FOLLOW_60_in_rule__Sample__Group__0__Impl14083); 
+             after(grammarAccess.getSampleAccess().getSampleKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Sample__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6892:1: rule__Sample__Group__1 : rule__Sample__Group__1__Impl rule__Sample__Group__2 ;
+    public final void rule__Sample__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6896:1: ( rule__Sample__Group__1__Impl rule__Sample__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6897:2: rule__Sample__Group__1__Impl rule__Sample__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__1__Impl_in_rule__Sample__Group__114114);
+            rule__Sample__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__2_in_rule__Sample__Group__114117);
+            rule__Sample__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__1"
+
+
+    // $ANTLR start "rule__Sample__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6904:1: rule__Sample__Group__1__Impl : ( '{' ) ;
+    public final void rule__Sample__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6908:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6909:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6909:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6910:1: '{'
+            {
+             before(grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__Sample__Group__1__Impl14145); 
+             after(grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Sample__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6923:1: rule__Sample__Group__2 : rule__Sample__Group__2__Impl rule__Sample__Group__3 ;
+    public final void rule__Sample__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6927:1: ( rule__Sample__Group__2__Impl rule__Sample__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6928:2: rule__Sample__Group__2__Impl rule__Sample__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__2__Impl_in_rule__Sample__Group__214176);
+            rule__Sample__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__3_in_rule__Sample__Group__214179);
+            rule__Sample__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__2"
+
+
+    // $ANTLR start "rule__Sample__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6935:1: rule__Sample__Group__2__Impl : ( 'probability' ) ;
+    public final void rule__Sample__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6939:1: ( ( 'probability' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6940:1: ( 'probability' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6940:1: ( 'probability' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6941:1: 'probability'
+            {
+             before(grammarAccess.getSampleAccess().getProbabilityKeyword_2()); 
+            match(input,61,FollowSets000.FOLLOW_61_in_rule__Sample__Group__2__Impl14207); 
+             after(grammarAccess.getSampleAccess().getProbabilityKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Sample__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6954:1: rule__Sample__Group__3 : rule__Sample__Group__3__Impl rule__Sample__Group__4 ;
+    public final void rule__Sample__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6958:1: ( rule__Sample__Group__3__Impl rule__Sample__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6959:2: rule__Sample__Group__3__Impl rule__Sample__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__3__Impl_in_rule__Sample__Group__314238);
+            rule__Sample__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__4_in_rule__Sample__Group__314241);
+            rule__Sample__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__3"
+
+
+    // $ANTLR start "rule__Sample__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6966:1: rule__Sample__Group__3__Impl : ( ( rule__Sample__ProbabilityAssignment_3 ) ) ;
+    public final void rule__Sample__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6970:1: ( ( ( rule__Sample__ProbabilityAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6971:1: ( ( rule__Sample__ProbabilityAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6971:1: ( ( rule__Sample__ProbabilityAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6972:1: ( rule__Sample__ProbabilityAssignment_3 )
+            {
+             before(grammarAccess.getSampleAccess().getProbabilityAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6973:1: ( rule__Sample__ProbabilityAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6973:2: rule__Sample__ProbabilityAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__ProbabilityAssignment_3_in_rule__Sample__Group__3__Impl14268);
+            rule__Sample__ProbabilityAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSampleAccess().getProbabilityAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Sample__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6983:1: rule__Sample__Group__4 : rule__Sample__Group__4__Impl rule__Sample__Group__5 ;
+    public final void rule__Sample__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6987:1: ( rule__Sample__Group__4__Impl rule__Sample__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6988:2: rule__Sample__Group__4__Impl rule__Sample__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__4__Impl_in_rule__Sample__Group__414298);
+            rule__Sample__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__5_in_rule__Sample__Group__414301);
+            rule__Sample__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__4"
+
+
+    // $ANTLR start "rule__Sample__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6995:1: rule__Sample__Group__4__Impl : ( 'value' ) ;
+    public final void rule__Sample__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:6999:1: ( ( 'value' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7000:1: ( 'value' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7000:1: ( 'value' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7001:1: 'value'
+            {
+             before(grammarAccess.getSampleAccess().getValueKeyword_4()); 
+            match(input,45,FollowSets000.FOLLOW_45_in_rule__Sample__Group__4__Impl14329); 
+             after(grammarAccess.getSampleAccess().getValueKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Sample__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7014:1: rule__Sample__Group__5 : rule__Sample__Group__5__Impl rule__Sample__Group__6 ;
+    public final void rule__Sample__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7018:1: ( rule__Sample__Group__5__Impl rule__Sample__Group__6 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7019:2: rule__Sample__Group__5__Impl rule__Sample__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__5__Impl_in_rule__Sample__Group__514360);
+            rule__Sample__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__6_in_rule__Sample__Group__514363);
+            rule__Sample__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__5"
+
+
+    // $ANTLR start "rule__Sample__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7026:1: rule__Sample__Group__5__Impl : ( ( rule__Sample__ValueAssignment_5 ) ) ;
+    public final void rule__Sample__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7030:1: ( ( ( rule__Sample__ValueAssignment_5 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7031:1: ( ( rule__Sample__ValueAssignment_5 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7031:1: ( ( rule__Sample__ValueAssignment_5 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7032:1: ( rule__Sample__ValueAssignment_5 )
+            {
+             before(grammarAccess.getSampleAccess().getValueAssignment_5()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7033:1: ( rule__Sample__ValueAssignment_5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7033:2: rule__Sample__ValueAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__ValueAssignment_5_in_rule__Sample__Group__5__Impl14390);
+            rule__Sample__ValueAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSampleAccess().getValueAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__5__Impl"
+
+
+    // $ANTLR start "rule__Sample__Group__6"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7043:1: rule__Sample__Group__6 : rule__Sample__Group__6__Impl ;
+    public final void rule__Sample__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7047:1: ( rule__Sample__Group__6__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7048:2: rule__Sample__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Sample__Group__6__Impl_in_rule__Sample__Group__614420);
+            rule__Sample__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__6"
+
+
+    // $ANTLR start "rule__Sample__Group__6__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7054:1: rule__Sample__Group__6__Impl : ( '}' ) ;
+    public final void rule__Sample__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7058:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7059:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7059:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7060:1: '}'
+            {
+             before(grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__Sample__Group__6__Impl14448); 
+             after(grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7088:1: rule__ContinuousSample__Group__0 : rule__ContinuousSample__Group__0__Impl rule__ContinuousSample__Group__1 ;
+    public final void rule__ContinuousSample__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7092:1: ( rule__ContinuousSample__Group__0__Impl rule__ContinuousSample__Group__1 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7093:2: rule__ContinuousSample__Group__0__Impl rule__ContinuousSample__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__0__Impl_in_rule__ContinuousSample__Group__014494);
+            rule__ContinuousSample__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__1_in_rule__ContinuousSample__Group__014497);
+            rule__ContinuousSample__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__0"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__0__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7100:1: rule__ContinuousSample__Group__0__Impl : ( 'ContinuousSample' ) ;
+    public final void rule__ContinuousSample__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7104:1: ( ( 'ContinuousSample' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7105:1: ( 'ContinuousSample' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7105:1: ( 'ContinuousSample' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7106:1: 'ContinuousSample'
+            {
+             before(grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0()); 
+            match(input,62,FollowSets000.FOLLOW_62_in_rule__ContinuousSample__Group__0__Impl14525); 
+             after(grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7119:1: rule__ContinuousSample__Group__1 : rule__ContinuousSample__Group__1__Impl rule__ContinuousSample__Group__2 ;
+    public final void rule__ContinuousSample__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7123:1: ( rule__ContinuousSample__Group__1__Impl rule__ContinuousSample__Group__2 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7124:2: rule__ContinuousSample__Group__1__Impl rule__ContinuousSample__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__1__Impl_in_rule__ContinuousSample__Group__114556);
+            rule__ContinuousSample__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__2_in_rule__ContinuousSample__Group__114559);
+            rule__ContinuousSample__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__1"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__1__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7131:1: rule__ContinuousSample__Group__1__Impl : ( '{' ) ;
+    public final void rule__ContinuousSample__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7135:1: ( ( '{' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7136:1: ( '{' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7136:1: ( '{' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7137:1: '{'
+            {
+             before(grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,16,FollowSets000.FOLLOW_16_in_rule__ContinuousSample__Group__1__Impl14587); 
+             after(grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7150:1: rule__ContinuousSample__Group__2 : rule__ContinuousSample__Group__2__Impl rule__ContinuousSample__Group__3 ;
+    public final void rule__ContinuousSample__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7154:1: ( rule__ContinuousSample__Group__2__Impl rule__ContinuousSample__Group__3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7155:2: rule__ContinuousSample__Group__2__Impl rule__ContinuousSample__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__2__Impl_in_rule__ContinuousSample__Group__214618);
+            rule__ContinuousSample__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__3_in_rule__ContinuousSample__Group__214621);
+            rule__ContinuousSample__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__2"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__2__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7162:1: rule__ContinuousSample__Group__2__Impl : ( 'value' ) ;
+    public final void rule__ContinuousSample__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7166:1: ( ( 'value' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7167:1: ( 'value' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7167:1: ( 'value' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7168:1: 'value'
+            {
+             before(grammarAccess.getContinuousSampleAccess().getValueKeyword_2()); 
+            match(input,45,FollowSets000.FOLLOW_45_in_rule__ContinuousSample__Group__2__Impl14649); 
+             after(grammarAccess.getContinuousSampleAccess().getValueKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7181:1: rule__ContinuousSample__Group__3 : rule__ContinuousSample__Group__3__Impl rule__ContinuousSample__Group__4 ;
+    public final void rule__ContinuousSample__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7185:1: ( rule__ContinuousSample__Group__3__Impl rule__ContinuousSample__Group__4 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7186:2: rule__ContinuousSample__Group__3__Impl rule__ContinuousSample__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__3__Impl_in_rule__ContinuousSample__Group__314680);
+            rule__ContinuousSample__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__4_in_rule__ContinuousSample__Group__314683);
+            rule__ContinuousSample__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__3"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__3__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7193:1: rule__ContinuousSample__Group__3__Impl : ( ( rule__ContinuousSample__ValueAssignment_3 ) ) ;
+    public final void rule__ContinuousSample__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7197:1: ( ( ( rule__ContinuousSample__ValueAssignment_3 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7198:1: ( ( rule__ContinuousSample__ValueAssignment_3 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7198:1: ( ( rule__ContinuousSample__ValueAssignment_3 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7199:1: ( rule__ContinuousSample__ValueAssignment_3 )
+            {
+             before(grammarAccess.getContinuousSampleAccess().getValueAssignment_3()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7200:1: ( rule__ContinuousSample__ValueAssignment_3 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7200:2: rule__ContinuousSample__ValueAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__ValueAssignment_3_in_rule__ContinuousSample__Group__3__Impl14710);
+            rule__ContinuousSample__ValueAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getContinuousSampleAccess().getValueAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__4"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7210:1: rule__ContinuousSample__Group__4 : rule__ContinuousSample__Group__4__Impl rule__ContinuousSample__Group__5 ;
+    public final void rule__ContinuousSample__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7214:1: ( rule__ContinuousSample__Group__4__Impl rule__ContinuousSample__Group__5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7215:2: rule__ContinuousSample__Group__4__Impl rule__ContinuousSample__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__4__Impl_in_rule__ContinuousSample__Group__414740);
+            rule__ContinuousSample__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__5_in_rule__ContinuousSample__Group__414743);
+            rule__ContinuousSample__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__4"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__4__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7222:1: rule__ContinuousSample__Group__4__Impl : ( 'probability' ) ;
+    public final void rule__ContinuousSample__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7226:1: ( ( 'probability' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7227:1: ( 'probability' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7227:1: ( 'probability' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7228:1: 'probability'
+            {
+             before(grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4()); 
+            match(input,61,FollowSets000.FOLLOW_61_in_rule__ContinuousSample__Group__4__Impl14771); 
+             after(grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7241:1: rule__ContinuousSample__Group__5 : rule__ContinuousSample__Group__5__Impl rule__ContinuousSample__Group__6 ;
+    public final void rule__ContinuousSample__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7245:1: ( rule__ContinuousSample__Group__5__Impl rule__ContinuousSample__Group__6 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7246:2: rule__ContinuousSample__Group__5__Impl rule__ContinuousSample__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__5__Impl_in_rule__ContinuousSample__Group__514802);
+            rule__ContinuousSample__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__6_in_rule__ContinuousSample__Group__514805);
+            rule__ContinuousSample__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__5"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__5__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7253:1: rule__ContinuousSample__Group__5__Impl : ( ( rule__ContinuousSample__ProbabilityAssignment_5 ) ) ;
+    public final void rule__ContinuousSample__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7257:1: ( ( ( rule__ContinuousSample__ProbabilityAssignment_5 ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7258:1: ( ( rule__ContinuousSample__ProbabilityAssignment_5 ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7258:1: ( ( rule__ContinuousSample__ProbabilityAssignment_5 ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7259:1: ( rule__ContinuousSample__ProbabilityAssignment_5 )
+            {
+             before(grammarAccess.getContinuousSampleAccess().getProbabilityAssignment_5()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7260:1: ( rule__ContinuousSample__ProbabilityAssignment_5 )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7260:2: rule__ContinuousSample__ProbabilityAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__ProbabilityAssignment_5_in_rule__ContinuousSample__Group__5__Impl14832);
+            rule__ContinuousSample__ProbabilityAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getContinuousSampleAccess().getProbabilityAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__6"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7270:1: rule__ContinuousSample__Group__6 : rule__ContinuousSample__Group__6__Impl ;
+    public final void rule__ContinuousSample__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7274:1: ( rule__ContinuousSample__Group__6__Impl )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7275:2: rule__ContinuousSample__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousSample__Group__6__Impl_in_rule__ContinuousSample__Group__614862);
+            rule__ContinuousSample__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__6"
+
+
+    // $ANTLR start "rule__ContinuousSample__Group__6__Impl"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7281:1: rule__ContinuousSample__Group__6__Impl : ( '}' ) ;
+    public final void rule__ContinuousSample__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7285:1: ( ( '}' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7286:1: ( '}' )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7286:1: ( '}' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7287:1: '}'
+            {
+             before(grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,17,FollowSets000.FOLLOW_17_in_rule__ContinuousSample__Group__6__Impl14890); 
+             after(grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ExplicitFunction__SpecificationAssignment_3_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7315:1: rule__ExplicitFunction__SpecificationAssignment_3_1 : ( ruleEString ) ;
+    public final void rule__ExplicitFunction__SpecificationAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7319:1: ( ( ruleEString ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7320:1: ( ruleEString )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7320:1: ( ruleEString )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7321:1: ruleEString
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getSpecificationEStringParserRuleCall_3_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rule__ExplicitFunction__SpecificationAssignment_3_114940);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getExplicitFunctionAccess().getSpecificationEStringParserRuleCall_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__SpecificationAssignment_3_1"
+
+
+    // $ANTLR start "rule__ExplicitFunction__ExpressionAssignment_4_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7330:1: rule__ExplicitFunction__ExpressionAssignment_4_1 : ( ruleExpression ) ;
+    public final void rule__ExplicitFunction__ExpressionAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7334:1: ( ( ruleExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7335:1: ( ruleExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7335:1: ( ruleExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7336:1: ruleExpression
+            {
+             before(grammarAccess.getExplicitFunctionAccess().getExpressionExpressionParserRuleCall_4_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_rule__ExplicitFunction__ExpressionAssignment_4_114971);
+            ruleExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getExplicitFunctionAccess().getExpressionExpressionParserRuleCall_4_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExplicitFunction__ExpressionAssignment_4_1"
+
+
+    // $ANTLR start "rule__TermExpression__OperationAssignment_3_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7345:1: rule__TermExpression__OperationAssignment_3_1 : ( ruleTermOperations ) ;
+    public final void rule__TermExpression__OperationAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7349:1: ( ( ruleTermOperations ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7350:1: ( ruleTermOperations )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7350:1: ( ruleTermOperations )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7351:1: ruleTermOperations
+            {
+             before(grammarAccess.getTermExpressionAccess().getOperationTermOperationsParserRuleCall_3_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermOperations_in_rule__TermExpression__OperationAssignment_3_115002);
+            ruleTermOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermExpressionAccess().getOperationTermOperationsParserRuleCall_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__OperationAssignment_3_1"
+
+
+    // $ANTLR start "rule__TermExpression__RightAssignment_3_2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7360:1: rule__TermExpression__RightAssignment_3_2 : ( ruleProduct ) ;
+    public final void rule__TermExpression__RightAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7364:1: ( ( ruleProduct ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7365:1: ( ruleProduct )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7365:1: ( ruleProduct )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7366:1: ruleProduct
+            {
+             before(grammarAccess.getTermExpressionAccess().getRightProductParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProduct_in_rule__TermExpression__RightAssignment_3_215033);
+            ruleProduct();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermExpressionAccess().getRightProductParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression__RightAssignment_3_2"
+
+
+    // $ANTLR start "rule__TermExpression2__LeftAssignment_0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7375:1: rule__TermExpression2__LeftAssignment_0 : ( ruleTerm ) ;
+    public final void rule__TermExpression2__LeftAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7379:1: ( ( ruleTerm ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7380:1: ( ruleTerm )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7380:1: ( ruleTerm )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7381:1: ruleTerm
+            {
+             before(grammarAccess.getTermExpression2Access().getLeftTermParserRuleCall_0_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_rule__TermExpression2__LeftAssignment_015064);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermExpression2Access().getLeftTermParserRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__LeftAssignment_0"
+
+
+    // $ANTLR start "rule__TermExpression2__OperationAssignment_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7390:1: rule__TermExpression2__OperationAssignment_1 : ( ruleTermOperations ) ;
+    public final void rule__TermExpression2__OperationAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7394:1: ( ( ruleTermOperations ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7395:1: ( ruleTermOperations )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7395:1: ( ruleTermOperations )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7396:1: ruleTermOperations
+            {
+             before(grammarAccess.getTermExpression2Access().getOperationTermOperationsParserRuleCall_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermOperations_in_rule__TermExpression2__OperationAssignment_115095);
+            ruleTermOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermExpression2Access().getOperationTermOperationsParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__OperationAssignment_1"
+
+
+    // $ANTLR start "rule__TermExpression2__RightAssignment_2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7405:1: rule__TermExpression2__RightAssignment_2 : ( ruleProduct ) ;
+    public final void rule__TermExpression2__RightAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7409:1: ( ( ruleProduct ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7410:1: ( ruleProduct )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7410:1: ( ruleProduct )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7411:1: ruleProduct
+            {
+             before(grammarAccess.getTermExpression2Access().getRightProductParserRuleCall_2_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProduct_in_rule__TermExpression2__RightAssignment_215126);
+            ruleProduct();
+
+            state._fsp--;
+
+             after(grammarAccess.getTermExpression2Access().getRightProductParserRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TermExpression2__RightAssignment_2"
+
+
+    // $ANTLR start "rule__ProductExpression__OperationAssignment_3_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7420:1: rule__ProductExpression__OperationAssignment_3_1 : ( ruleProductOperations ) ;
+    public final void rule__ProductExpression__OperationAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7424:1: ( ( ruleProductOperations ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7425:1: ( ruleProductOperations )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7425:1: ( ruleProductOperations )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7426:1: ruleProductOperations
+            {
+             before(grammarAccess.getProductExpressionAccess().getOperationProductOperationsParserRuleCall_3_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductOperations_in_rule__ProductExpression__OperationAssignment_3_115157);
+            ruleProductOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductExpressionAccess().getOperationProductOperationsParserRuleCall_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__OperationAssignment_3_1"
+
+
+    // $ANTLR start "rule__ProductExpression__RightAssignment_3_2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7435:1: rule__ProductExpression__RightAssignment_3_2 : ( rulePower ) ;
+    public final void rule__ProductExpression__RightAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7439:1: ( ( rulePower ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7440:1: ( rulePower )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7440:1: ( rulePower )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7441:1: rulePower
+            {
+             before(grammarAccess.getProductExpressionAccess().getRightPowerParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets000.FOLLOW_rulePower_in_rule__ProductExpression__RightAssignment_3_215188);
+            rulePower();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductExpressionAccess().getRightPowerParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression__RightAssignment_3_2"
+
+
+    // $ANTLR start "rule__ProductExpression2__LeftAssignment_0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7450:1: rule__ProductExpression2__LeftAssignment_0 : ( ruleProduct ) ;
+    public final void rule__ProductExpression2__LeftAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7454:1: ( ( ruleProduct ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7455:1: ( ruleProduct )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7455:1: ( ruleProduct )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7456:1: ruleProduct
+            {
+             before(grammarAccess.getProductExpression2Access().getLeftProductParserRuleCall_0_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProduct_in_rule__ProductExpression2__LeftAssignment_015219);
+            ruleProduct();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductExpression2Access().getLeftProductParserRuleCall_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__LeftAssignment_0"
+
+
+    // $ANTLR start "rule__ProductExpression2__OperationAssignment_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7465:1: rule__ProductExpression2__OperationAssignment_1 : ( ruleProductOperations ) ;
+    public final void rule__ProductExpression2__OperationAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7469:1: ( ( ruleProductOperations ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7470:1: ( ruleProductOperations )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7470:1: ( ruleProductOperations )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7471:1: ruleProductOperations
+            {
+             before(grammarAccess.getProductExpression2Access().getOperationProductOperationsParserRuleCall_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductOperations_in_rule__ProductExpression2__OperationAssignment_115250);
+            ruleProductOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductExpression2Access().getOperationProductOperationsParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__OperationAssignment_1"
+
+
+    // $ANTLR start "rule__ProductExpression2__RightAssignment_2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7480:1: rule__ProductExpression2__RightAssignment_2 : ( rulePower ) ;
+    public final void rule__ProductExpression2__RightAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7484:1: ( ( rulePower ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7485:1: ( rulePower )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7485:1: ( rulePower )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7486:1: rulePower
+            {
+             before(grammarAccess.getProductExpression2Access().getRightPowerParserRuleCall_2_0()); 
+            pushFollow(FollowSets000.FOLLOW_rulePower_in_rule__ProductExpression2__RightAssignment_215281);
+            rulePower();
+
+            state._fsp--;
+
+             after(grammarAccess.getProductExpression2Access().getRightPowerParserRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProductExpression2__RightAssignment_2"
+
+
+    // $ANTLR start "rule__CompareExpression__OperationAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7495:1: rule__CompareExpression__OperationAssignment_3 : ( ruleCompareOperations ) ;
+    public final void rule__CompareExpression__OperationAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7499:1: ( ( ruleCompareOperations ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7500:1: ( ruleCompareOperations )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7500:1: ( ruleCompareOperations )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7501:1: ruleCompareOperations
+            {
+             before(grammarAccess.getCompareExpressionAccess().getOperationCompareOperationsParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCompareOperations_in_rule__CompareExpression__OperationAssignment_315312);
+            ruleCompareOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getCompareExpressionAccess().getOperationCompareOperationsParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__OperationAssignment_3"
+
+
+    // $ANTLR start "rule__CompareExpression__LeftAssignment_5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7510:1: rule__CompareExpression__LeftAssignment_5 : ( ruleTerm ) ;
+    public final void rule__CompareExpression__LeftAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7514:1: ( ( ruleTerm ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7515:1: ( ruleTerm )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7515:1: ( ruleTerm )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7516:1: ruleTerm
+            {
+             before(grammarAccess.getCompareExpressionAccess().getLeftTermParserRuleCall_5_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_rule__CompareExpression__LeftAssignment_515343);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getCompareExpressionAccess().getLeftTermParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__LeftAssignment_5"
+
+
+    // $ANTLR start "rule__CompareExpression__RightAssignment_7"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7525:1: rule__CompareExpression__RightAssignment_7 : ( ruleTerm ) ;
+    public final void rule__CompareExpression__RightAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7529:1: ( ( ruleTerm ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7530:1: ( ruleTerm )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7530:1: ( ruleTerm )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7531:1: ruleTerm
+            {
+             before(grammarAccess.getCompareExpressionAccess().getRightTermParserRuleCall_7_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_rule__CompareExpression__RightAssignment_715374);
+            ruleTerm();
+
+            state._fsp--;
+
+             after(grammarAccess.getCompareExpressionAccess().getRightTermParserRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CompareExpression__RightAssignment_7"
+
+
+    // $ANTLR start "rule__PowerExpression__BaseAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7540:1: rule__PowerExpression__BaseAssignment_3 : ( rulePower ) ;
+    public final void rule__PowerExpression__BaseAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7544:1: ( ( rulePower ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7545:1: ( rulePower )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7545:1: ( rulePower )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7546:1: rulePower
+            {
+             before(grammarAccess.getPowerExpressionAccess().getBasePowerParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_rulePower_in_rule__PowerExpression__BaseAssignment_315405);
+            rulePower();
+
+            state._fsp--;
+
+             after(grammarAccess.getPowerExpressionAccess().getBasePowerParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__BaseAssignment_3"
+
+
+    // $ANTLR start "rule__PowerExpression__ExponentAssignment_5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7555:1: rule__PowerExpression__ExponentAssignment_5 : ( ruleUnary ) ;
+    public final void rule__PowerExpression__ExponentAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7559:1: ( ( ruleUnary ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7560:1: ( ruleUnary )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7560:1: ( ruleUnary )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7561:1: ruleUnary
+            {
+             before(grammarAccess.getPowerExpressionAccess().getExponentUnaryParserRuleCall_5_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleUnary_in_rule__PowerExpression__ExponentAssignment_515436);
+            ruleUnary();
+
+            state._fsp--;
+
+             after(grammarAccess.getPowerExpressionAccess().getExponentUnaryParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PowerExpression__ExponentAssignment_5"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__OperationAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7570:1: rule__BooleanOperatorExpression__OperationAssignment_3 : ( ruleBooleanOperations ) ;
+    public final void rule__BooleanOperatorExpression__OperationAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7574:1: ( ( ruleBooleanOperations ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7575:1: ( ruleBooleanOperations )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7575:1: ( ruleBooleanOperations )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7576:1: ruleBooleanOperations
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getOperationBooleanOperationsParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanOperations_in_rule__BooleanOperatorExpression__OperationAssignment_315467);
+            ruleBooleanOperations();
+
+            state._fsp--;
+
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getOperationBooleanOperationsParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__OperationAssignment_3"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__LeftAssignment_5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7585:1: rule__BooleanOperatorExpression__LeftAssignment_5 : ( ruleBooleanExpression ) ;
+    public final void rule__BooleanOperatorExpression__LeftAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7589:1: ( ( ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7590:1: ( ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7590:1: ( ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7591:1: ruleBooleanExpression
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getLeftBooleanExpressionParserRuleCall_5_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_rule__BooleanOperatorExpression__LeftAssignment_515498);
+            ruleBooleanExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getLeftBooleanExpressionParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__LeftAssignment_5"
+
+
+    // $ANTLR start "rule__BooleanOperatorExpression__RightAssignment_7"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7600:1: rule__BooleanOperatorExpression__RightAssignment_7 : ( ruleBooleanExpression ) ;
+    public final void rule__BooleanOperatorExpression__RightAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7604:1: ( ( ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7605:1: ( ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7605:1: ( ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7606:1: ruleBooleanExpression
+            {
+             before(grammarAccess.getBooleanOperatorExpressionAccess().getRightBooleanExpressionParserRuleCall_7_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_rule__BooleanOperatorExpression__RightAssignment_715529);
+            ruleBooleanExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getBooleanOperatorExpressionAccess().getRightBooleanExpressionParserRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BooleanOperatorExpression__RightAssignment_7"
+
+
+    // $ANTLR start "rule__NotExpression__InnerAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7615:1: rule__NotExpression__InnerAssignment_3 : ( ruleUnary ) ;
+    public final void rule__NotExpression__InnerAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7619:1: ( ( ruleUnary ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7620:1: ( ruleUnary )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7620:1: ( ruleUnary )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7621:1: ruleUnary
+            {
+             before(grammarAccess.getNotExpressionAccess().getInnerUnaryParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleUnary_in_rule__NotExpression__InnerAssignment_315560);
+            ruleUnary();
+
+            state._fsp--;
+
+             after(grammarAccess.getNotExpressionAccess().getInnerUnaryParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NotExpression__InnerAssignment_3"
+
+
+    // $ANTLR start "rule__NegativeExpression__InnerAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7630:1: rule__NegativeExpression__InnerAssignment_3 : ( ruleUnary ) ;
+    public final void rule__NegativeExpression__InnerAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7634:1: ( ( ruleUnary ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7635:1: ( ruleUnary )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7635:1: ( ruleUnary )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7636:1: ruleUnary
+            {
+             before(grammarAccess.getNegativeExpressionAccess().getInnerUnaryParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleUnary_in_rule__NegativeExpression__InnerAssignment_315591);
+            ruleUnary();
+
+            state._fsp--;
+
+             after(grammarAccess.getNegativeExpressionAccess().getInnerUnaryParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NegativeExpression__InnerAssignment_3"
+
+
+    // $ANTLR start "rule__IfElseExpression__IfExpressionAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7645:1: rule__IfElseExpression__IfExpressionAssignment_3 : ( ruleBooleanExpression ) ;
+    public final void rule__IfElseExpression__IfExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7649:1: ( ( ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7650:1: ( ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7650:1: ( ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7651:1: ruleBooleanExpression
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getIfExpressionBooleanExpressionParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_rule__IfElseExpression__IfExpressionAssignment_315622);
+            ruleBooleanExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getIfElseExpressionAccess().getIfExpressionBooleanExpressionParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__IfExpressionAssignment_3"
+
+
+    // $ANTLR start "rule__IfElseExpression__ElseExpressionAssignment_5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7660:1: rule__IfElseExpression__ElseExpressionAssignment_5 : ( ruleBooleanExpression ) ;
+    public final void rule__IfElseExpression__ElseExpressionAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7664:1: ( ( ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7665:1: ( ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7665:1: ( ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7666:1: ruleBooleanExpression
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getElseExpressionBooleanExpressionParserRuleCall_5_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_rule__IfElseExpression__ElseExpressionAssignment_515653);
+            ruleBooleanExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getIfElseExpressionAccess().getElseExpressionBooleanExpressionParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__ElseExpressionAssignment_5"
+
+
+    // $ANTLR start "rule__IfElseExpression__ConditionExpressionAssignment_7"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7675:1: rule__IfElseExpression__ConditionExpressionAssignment_7 : ( ruleBooleanExpression ) ;
+    public final void rule__IfElseExpression__ConditionExpressionAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7679:1: ( ( ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7680:1: ( ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7680:1: ( ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7681:1: ruleBooleanExpression
+            {
+             before(grammarAccess.getIfElseExpressionAccess().getConditionExpressionBooleanExpressionParserRuleCall_7_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_rule__IfElseExpression__ConditionExpressionAssignment_715684);
+            ruleBooleanExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getIfElseExpressionAccess().getConditionExpressionBooleanExpressionParserRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IfElseExpression__ConditionExpressionAssignment_7"
+
+
+    // $ANTLR start "rule__Function__IdAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7690:1: rule__Function__IdAssignment_3 : ( ruleEString ) ;
+    public final void rule__Function__IdAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7694:1: ( ( ruleEString ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7695:1: ( ruleEString )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7695:1: ( ruleEString )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7696:1: ruleEString
+            {
+             before(grammarAccess.getFunctionAccess().getIdEStringParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rule__Function__IdAssignment_315715);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getFunctionAccess().getIdEStringParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__IdAssignment_3"
+
+
+    // $ANTLR start "rule__Function__ParametersAssignment_4_2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7705:1: rule__Function__ParametersAssignment_4_2 : ( ruleExpression ) ;
+    public final void rule__Function__ParametersAssignment_4_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7709:1: ( ( ruleExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7710:1: ( ruleExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7710:1: ( ruleExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7711:1: ruleExpression
+            {
+             before(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_2_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_rule__Function__ParametersAssignment_4_215746);
+            ruleExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__ParametersAssignment_4_2"
+
+
+    // $ANTLR start "rule__Function__ParametersAssignment_4_3_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7720:1: rule__Function__ParametersAssignment_4_3_1 : ( ruleExpression ) ;
+    public final void rule__Function__ParametersAssignment_4_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7724:1: ( ( ruleExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7725:1: ( ruleExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7725:1: ( ruleExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7726:1: ruleExpression
+            {
+             before(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_3_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_rule__Function__ParametersAssignment_4_3_115777);
+            ruleExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__ParametersAssignment_4_3_1"
+
+
+    // $ANTLR start "rule__Parenthesis__InnerExpressionAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7735:1: rule__Parenthesis__InnerExpressionAssignment_3 : ( ruleExpression ) ;
+    public final void rule__Parenthesis__InnerExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7739:1: ( ( ruleExpression ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7740:1: ( ruleExpression )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7740:1: ( ruleExpression )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7741:1: ruleExpression
+            {
+             before(grammarAccess.getParenthesisAccess().getInnerExpressionExpressionParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_rule__Parenthesis__InnerExpressionAssignment_315808);
+            ruleExpression();
+
+            state._fsp--;
+
+             after(grammarAccess.getParenthesisAccess().getInnerExpressionExpressionParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parenthesis__InnerExpressionAssignment_3"
+
+
+    // $ANTLR start "rule__StringLiteral__ValueAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7750:1: rule__StringLiteral__ValueAssignment_3 : ( ruleEString ) ;
+    public final void rule__StringLiteral__ValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7754:1: ( ( ruleEString ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7755:1: ( ruleEString )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7755:1: ( ruleEString )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7756:1: ruleEString
+            {
+             before(grammarAccess.getStringLiteralAccess().getValueEStringParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rule__StringLiteral__ValueAssignment_315839);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getStringLiteralAccess().getValueEStringParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StringLiteral__ValueAssignment_3"
+
+
+    // $ANTLR start "rule__BoolLiteral__ValueAssignment_0"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7765:1: rule__BoolLiteral__ValueAssignment_0 : ( ( 'value' ) ) ;
+    public final void rule__BoolLiteral__ValueAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7769:1: ( ( ( 'value' ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7770:1: ( ( 'value' ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7770:1: ( ( 'value' ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7771:1: ( 'value' )
+            {
+             before(grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7772:1: ( 'value' )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7773:1: 'value'
+            {
+             before(grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0()); 
+            match(input,45,FollowSets000.FOLLOW_45_in_rule__BoolLiteral__ValueAssignment_015875); 
+             after(grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0()); 
+
+            }
+
+             after(grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoolLiteral__ValueAssignment_0"
+
+
+    // $ANTLR start "rule__IntLiteral__ValueAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7788:1: rule__IntLiteral__ValueAssignment_3 : ( ruleEBigInteger ) ;
+    public final void rule__IntLiteral__ValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7792:1: ( ( ruleEBigInteger ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7793:1: ( ruleEBigInteger )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7793:1: ( ruleEBigInteger )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7794:1: ruleEBigInteger
+            {
+             before(grammarAccess.getIntLiteralAccess().getValueEBigIntegerParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigInteger_in_rule__IntLiteral__ValueAssignment_315914);
+            ruleEBigInteger();
+
+            state._fsp--;
+
+             after(grammarAccess.getIntLiteralAccess().getValueEBigIntegerParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntLiteral__ValueAssignment_3"
+
+
+    // $ANTLR start "rule__DoubleLiteral__ValueAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7803:1: rule__DoubleLiteral__ValueAssignment_3 : ( ruleEBigDecimal ) ;
+    public final void rule__DoubleLiteral__ValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7807:1: ( ( ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7808:1: ( ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7808:1: ( ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7809:1: ruleEBigDecimal
+            {
+             before(grammarAccess.getDoubleLiteralAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_rule__DoubleLiteral__ValueAssignment_315945);
+            ruleEBigDecimal();
+
+            state._fsp--;
+
+             after(grammarAccess.getDoubleLiteralAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DoubleLiteral__ValueAssignment_3"
+
+
+    // $ANTLR start "rule__FormalParameter__NameAssignment_2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7818:1: rule__FormalParameter__NameAssignment_2 : ( ruleEString ) ;
+    public final void rule__FormalParameter__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7822:1: ( ( ruleEString ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7823:1: ( ruleEString )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7823:1: ( ruleEString )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7824:1: ruleEString
+            {
+             before(grammarAccess.getFormalParameterAccess().getNameEStringParserRuleCall_2_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rule__FormalParameter__NameAssignment_215976);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getFormalParameterAccess().getNameEStringParserRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FormalParameter__NameAssignment_2"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__SampleAssignment_3_2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7833:1: rule__ProbabilityMassFunction__SampleAssignment_3_2 : ( ruleSample ) ;
+    public final void rule__ProbabilityMassFunction__SampleAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7837:1: ( ( ruleSample ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7838:1: ( ruleSample )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7838:1: ( ruleSample )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7839:1: ruleSample
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSample_in_rule__ProbabilityMassFunction__SampleAssignment_3_216007);
+            ruleSample();
+
+            state._fsp--;
+
+             after(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__SampleAssignment_3_2"
+
+
+    // $ANTLR start "rule__ProbabilityMassFunction__SampleAssignment_3_3_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7848:1: rule__ProbabilityMassFunction__SampleAssignment_3_3_1 : ( ruleSample ) ;
+    public final void rule__ProbabilityMassFunction__SampleAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7852:1: ( ( ruleSample ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7853:1: ( ruleSample )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7853:1: ( ruleSample )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7854:1: ruleSample
+            {
+             before(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSample_in_rule__ProbabilityMassFunction__SampleAssignment_3_3_116038);
+            ruleSample();
+
+            state._fsp--;
+
+             after(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProbabilityMassFunction__SampleAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__BoxedPDF__SampleAssignment_3_2"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7863:1: rule__BoxedPDF__SampleAssignment_3_2 : ( ruleContinuousSample ) ;
+    public final void rule__BoxedPDF__SampleAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7867:1: ( ( ruleContinuousSample ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7868:1: ( ruleContinuousSample )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7868:1: ( ruleContinuousSample )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7869:1: ruleContinuousSample
+            {
+             before(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_rule__BoxedPDF__SampleAssignment_3_216069);
+            ruleContinuousSample();
+
+            state._fsp--;
+
+             after(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__SampleAssignment_3_2"
+
+
+    // $ANTLR start "rule__BoxedPDF__SampleAssignment_3_3_1"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7878:1: rule__BoxedPDF__SampleAssignment_3_3_1 : ( ruleContinuousSample ) ;
+    public final void rule__BoxedPDF__SampleAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7882:1: ( ( ruleContinuousSample ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7883:1: ( ruleContinuousSample )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7883:1: ( ruleContinuousSample )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7884:1: ruleContinuousSample
+            {
+             before(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_rule__BoxedPDF__SampleAssignment_3_3_116100);
+            ruleContinuousSample();
+
+            state._fsp--;
+
+             after(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BoxedPDF__SampleAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__NormalDistribution__MuAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7893:1: rule__NormalDistribution__MuAssignment_3 : ( ruleEBigDecimal ) ;
+    public final void rule__NormalDistribution__MuAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7897:1: ( ( ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7898:1: ( ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7898:1: ( ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7899:1: ruleEBigDecimal
+            {
+             before(grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_rule__NormalDistribution__MuAssignment_316131);
+            ruleEBigDecimal();
+
+            state._fsp--;
+
+             after(grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__MuAssignment_3"
+
+
+    // $ANTLR start "rule__NormalDistribution__SigmaAssignment_5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7908:1: rule__NormalDistribution__SigmaAssignment_5 : ( ruleEBigDecimal ) ;
+    public final void rule__NormalDistribution__SigmaAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7912:1: ( ( ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7913:1: ( ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7913:1: ( ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7914:1: ruleEBigDecimal
+            {
+             before(grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_rule__NormalDistribution__SigmaAssignment_516162);
+            ruleEBigDecimal();
+
+            state._fsp--;
+
+             after(grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NormalDistribution__SigmaAssignment_5"
+
+
+    // $ANTLR start "rule__ExponentialDistribution__RateAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7923:1: rule__ExponentialDistribution__RateAssignment_3 : ( ruleEBigDecimal ) ;
+    public final void rule__ExponentialDistribution__RateAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7927:1: ( ( ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7928:1: ( ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7928:1: ( ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7929:1: ruleEBigDecimal
+            {
+             before(grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_rule__ExponentialDistribution__RateAssignment_316193);
+            ruleEBigDecimal();
+
+            state._fsp--;
+
+             after(grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExponentialDistribution__RateAssignment_3"
+
+
+    // $ANTLR start "rule__Sample__ProbabilityAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7938:1: rule__Sample__ProbabilityAssignment_3 : ( ruleEBigDecimal ) ;
+    public final void rule__Sample__ProbabilityAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7942:1: ( ( ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7943:1: ( ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7943:1: ( ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7944:1: ruleEBigDecimal
+            {
+             before(grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_rule__Sample__ProbabilityAssignment_316224);
+            ruleEBigDecimal();
+
+            state._fsp--;
+
+             after(grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__ProbabilityAssignment_3"
+
+
+    // $ANTLR start "rule__Sample__ValueAssignment_5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7953:1: rule__Sample__ValueAssignment_5 : ( ( ruleEString ) ) ;
+    public final void rule__Sample__ValueAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7957:1: ( ( ( ruleEString ) ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7958:1: ( ( ruleEString ) )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7958:1: ( ( ruleEString ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7959:1: ( ruleEString )
+            {
+             before(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0()); 
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7960:1: ( ruleEString )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7961:1: ruleEString
+            {
+             before(grammarAccess.getSampleAccess().getValueEObjectEStringParserRuleCall_5_0_1()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rule__Sample__ValueAssignment_516259);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getSampleAccess().getValueEObjectEStringParserRuleCall_5_0_1()); 
+
+            }
+
+             after(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Sample__ValueAssignment_5"
+
+
+    // $ANTLR start "rule__ContinuousSample__ValueAssignment_3"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7972:1: rule__ContinuousSample__ValueAssignment_3 : ( ruleEBigDecimal ) ;
+    public final void rule__ContinuousSample__ValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7976:1: ( ( ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7977:1: ( ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7977:1: ( ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7978:1: ruleEBigDecimal
+            {
+             before(grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_rule__ContinuousSample__ValueAssignment_316294);
+            ruleEBigDecimal();
+
+            state._fsp--;
+
+             after(grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__ValueAssignment_3"
+
+
+    // $ANTLR start "rule__ContinuousSample__ProbabilityAssignment_5"
+    // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7987:1: rule__ContinuousSample__ProbabilityAssignment_5 : ( ruleEBigDecimal ) ;
+    public final void rule__ContinuousSample__ProbabilityAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7991:1: ( ( ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7992:1: ( ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7992:1: ( ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/contentassist/antlr/internal/InternalMyDsl1.g:7993:1: ruleEBigDecimal
+            {
+             before(grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_rule__ContinuousSample__ProbabilityAssignment_516325);
+            ruleEBigDecimal();
+
+            state._fsp--;
+
+             after(grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousSample__ProbabilityAssignment_5"
+
+    // Delegated rules
+
+
+ 
+
+    
+    private static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleExplicitFunction_in_entryRuleExplicitFunction61 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExplicitFunction68 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__0_in_ruleExplicitFunction94 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression121 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExpression128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Expression__Alternatives_in_ruleExpression154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm181 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTerm188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Term__Alternatives_in_ruleTerm214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProduct_in_entryRuleProduct241 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProduct248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Product__Alternatives_in_ruleProduct274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePower_in_entryRulePower301 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePower308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Power__Alternatives_in_rulePower334 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnary_in_entryRuleUnary361 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUnary368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Unary__Alternatives_in_ruleUnary394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_entryRuleBooleanExpression421 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanExpression428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanExpression__Alternatives_in_ruleBooleanExpression454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_entryRuleEString481 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEString488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EString__Alternatives_in_ruleEString514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression_in_entryRuleTermExpression541 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTermExpression548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__0_in_ruleTermExpression574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression2_in_entryRuleTermExpression2601 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTermExpression2608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression2__Group__0_in_ruleTermExpression2634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_entryRuleProductExpression661 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProductExpression668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__0_in_ruleProductExpression694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression2_in_entryRuleProductExpression2721 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProductExpression2728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__Group__0_in_ruleProductExpression2754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareExpression_in_entryRuleCompareExpression781 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCompareExpression788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__0_in_ruleCompareExpression814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_entryRulePowerExpression841 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePowerExpression848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__0_in_rulePowerExpression874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperatorExpression_in_entryRuleBooleanOperatorExpression901 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanOperatorExpression908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__0_in_ruleBooleanOperatorExpression934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_entryRuleNotExpression961 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNotExpression968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__0_in_ruleNotExpression994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_entryRuleNegativeExpression1021 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNegativeExpression1028 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__0_in_ruleNegativeExpression1054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIfElseExpression_in_entryRuleIfElseExpression1081 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIfElseExpression1088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__0_in_ruleIfElseExpression1114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction1141 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFunction1148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group__0_in_ruleFunction1174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_entryRuleParenthesis1201 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleParenthesis1208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__0_in_ruleParenthesis1234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_entryRuleLiteral_Impl1261 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLiteral_Impl1268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Literal_Impl__Group__0_in_ruleLiteral_Impl1294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral1321 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteral1328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__0_in_ruleStringLiteral1354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_entryRuleBoolLiteral1381 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBoolLiteral1388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoolLiteral__Group__0_in_ruleBoolLiteral1414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_entryRuleIntLiteral1441 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIntLiteral1448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__0_in_ruleIntLiteral1474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_entryRuleDoubleLiteral1501 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDoubleLiteral1508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__0_in_ruleDoubleLiteral1534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_entryRuleFormalParameter1561 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFormalParameter1568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FormalParameter__Group__0_in_ruleFormalParameter1594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_entryRuleProbabilityMassFunction1621 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProbabilityMassFunction1628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__0_in_ruleProbabilityMassFunction1654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_entryRuleBoxedPDF1681 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBoxedPDF1688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__0_in_ruleBoxedPDF1714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_entryRuleNormalDistribution1741 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNormalDistribution1748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__0_in_ruleNormalDistribution1774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_entryRuleExponentialDistribution1801 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExponentialDistribution1808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__0_in_ruleExponentialDistribution1834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermOperations_in_entryRuleTermOperations1861 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTermOperations1868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_11_in_ruleTermOperations1895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductOperations_in_entryRuleProductOperations1923 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProductOperations1930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_12_in_ruleProductOperations1957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareOperations_in_entryRuleCompareOperations1985 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCompareOperations1992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_ruleCompareOperations2019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperations_in_entryRuleBooleanOperations2047 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanOperations2054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_14_in_ruleBooleanOperations2081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigInteger_in_entryRuleEBigInteger2111 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEBigInteger2118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EBigInteger__Group__0_in_ruleEBigInteger2144 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_entryRuleEBigDecimal2171 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEBigDecimal2178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EBigDecimal__Group__0_in_ruleEBigDecimal2204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSample_in_entryRuleSample2231 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSample2238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__Group__0_in_ruleSample2264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_entryRuleContinuousSample2293 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleContinuousSample2300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__0_in_ruleContinuousSample2326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression_in_rule__Expression__Alternatives2362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_rule__Expression__Alternatives2379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareExpression_in_rule__Expression__Alternatives2396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_rule__Expression__Alternatives2413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperatorExpression_in_rule__Expression__Alternatives2430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_rule__Expression__Alternatives2447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_rule__Expression__Alternatives2464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIfElseExpression_in_rule__Expression__Alternatives2481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_rule__Expression__Alternatives2498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_rule__Expression__Alternatives2515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_rule__Expression__Alternatives2532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__Expression__Alternatives2549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_rule__Expression__Alternatives2566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_rule__Expression__Alternatives2583 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_rule__Expression__Alternatives2600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_rule__Expression__Alternatives2617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_rule__Expression__Alternatives2634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_rule__Expression__Alternatives2651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_rule__Expression__Alternatives2668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_rule__Expression__Alternatives2685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression_in_rule__Term__Alternatives2717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_rule__Term__Alternatives2734 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_rule__Term__Alternatives2751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_rule__Term__Alternatives2768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_rule__Term__Alternatives2785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_rule__Term__Alternatives2802 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_rule__Term__Alternatives2819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_rule__Term__Alternatives2836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__Term__Alternatives2853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_rule__Term__Alternatives2870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_rule__Term__Alternatives2887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_rule__Term__Alternatives2904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_rule__Term__Alternatives2921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_rule__Term__Alternatives2938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_rule__Term__Alternatives2955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_rule__Term__Alternatives2972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_rule__Term__Alternatives2989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_rule__Product__Alternatives3021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_rule__Product__Alternatives3038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_rule__Product__Alternatives3055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_rule__Product__Alternatives3072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_rule__Product__Alternatives3089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_rule__Product__Alternatives3106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_rule__Product__Alternatives3123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__Product__Alternatives3140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_rule__Product__Alternatives3157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_rule__Product__Alternatives3174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_rule__Product__Alternatives3191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_rule__Product__Alternatives3208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_rule__Product__Alternatives3225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_rule__Product__Alternatives3242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_rule__Product__Alternatives3259 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_rule__Product__Alternatives3276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_rule__Power__Alternatives3308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_rule__Power__Alternatives3325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_rule__Power__Alternatives3342 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_rule__Power__Alternatives3359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_rule__Power__Alternatives3376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_rule__Power__Alternatives3393 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__Power__Alternatives3410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_rule__Power__Alternatives3427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_rule__Power__Alternatives3444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_rule__Power__Alternatives3461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_rule__Power__Alternatives3478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_rule__Power__Alternatives3495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_rule__Power__Alternatives3512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_rule__Power__Alternatives3529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_rule__Power__Alternatives3546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_rule__Unary__Alternatives3578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_rule__Unary__Alternatives3595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_rule__Unary__Alternatives3612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_rule__Unary__Alternatives3629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_rule__Unary__Alternatives3646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__Unary__Alternatives3663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_rule__Unary__Alternatives3680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_rule__Unary__Alternatives3697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_rule__Unary__Alternatives3714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_rule__Unary__Alternatives3731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_rule__Unary__Alternatives3748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_rule__Unary__Alternatives3765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_rule__Unary__Alternatives3782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_rule__Unary__Alternatives3799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression_in_rule__BooleanExpression__Alternatives3831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_rule__BooleanExpression__Alternatives3848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareExpression_in_rule__BooleanExpression__Alternatives3865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_rule__BooleanExpression__Alternatives3882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperatorExpression_in_rule__BooleanExpression__Alternatives3899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_rule__BooleanExpression__Alternatives3916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_rule__BooleanExpression__Alternatives3933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_rule__BooleanExpression__Alternatives3950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_rule__BooleanExpression__Alternatives3967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_rule__BooleanExpression__Alternatives3984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rule__BooleanExpression__Alternatives4001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_rule__BooleanExpression__Alternatives4018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_rule__BooleanExpression__Alternatives4035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_rule__BooleanExpression__Alternatives4052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_rule__BooleanExpression__Alternatives4069 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_rule__BooleanExpression__Alternatives4086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_rule__BooleanExpression__Alternatives4103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_rule__BooleanExpression__Alternatives4120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_rule__BooleanExpression__Alternatives4137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_rule__EString__Alternatives4169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__EString__Alternatives4186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__0__Impl_in_rule__ExplicitFunction__Group__04217 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__1_in_rule__ExplicitFunction__Group__04220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__1__Impl_in_rule__ExplicitFunction__Group__14278 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__2_in_rule__ExplicitFunction__Group__14281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_15_in_rule__ExplicitFunction__Group__1__Impl4309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__2__Impl_in_rule__ExplicitFunction__Group__24340 = new BitSet(new long[]{0x00000000000E0000L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__3_in_rule__ExplicitFunction__Group__24343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ExplicitFunction__Group__2__Impl4371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__3__Impl_in_rule__ExplicitFunction__Group__34402 = new BitSet(new long[]{0x00000000000E0000L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__4_in_rule__ExplicitFunction__Group__34405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group_3__0_in_rule__ExplicitFunction__Group__3__Impl4432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__4__Impl_in_rule__ExplicitFunction__Group__44463 = new BitSet(new long[]{0x00000000000E0000L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__5_in_rule__ExplicitFunction__Group__44466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group_4__0_in_rule__ExplicitFunction__Group__4__Impl4493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group__5__Impl_in_rule__ExplicitFunction__Group__54524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ExplicitFunction__Group__5__Impl4552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group_3__0__Impl_in_rule__ExplicitFunction__Group_3__04595 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group_3__1_in_rule__ExplicitFunction__Group_3__04598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_18_in_rule__ExplicitFunction__Group_3__0__Impl4626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group_3__1__Impl_in_rule__ExplicitFunction__Group_3__14657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__SpecificationAssignment_3_1_in_rule__ExplicitFunction__Group_3__1__Impl4684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group_4__0__Impl_in_rule__ExplicitFunction__Group_4__04718 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group_4__1_in_rule__ExplicitFunction__Group_4__04721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_19_in_rule__ExplicitFunction__Group_4__0__Impl4749 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__Group_4__1__Impl_in_rule__ExplicitFunction__Group_4__14780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExplicitFunction__ExpressionAssignment_4_1_in_rule__ExplicitFunction__Group_4__1__Impl4807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__0__Impl_in_rule__TermExpression__Group__04841 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__1_in_rule__TermExpression__Group__04844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_rule__TermExpression__Group__0__Impl4872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__1__Impl_in_rule__TermExpression__Group__14903 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__2_in_rule__TermExpression__Group__14906 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__TermExpression__Group__1__Impl4934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__2__Impl_in_rule__TermExpression__Group__24965 = new BitSet(new long[]{0x0000000000020800L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__3_in_rule__TermExpression__Group__24968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression2_in_rule__TermExpression__Group__2__Impl4995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__3__Impl_in_rule__TermExpression__Group__35024 = new BitSet(new long[]{0x0000000000020800L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__4_in_rule__TermExpression__Group__35027 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group_3__0_in_rule__TermExpression__Group__3__Impl5054 = new BitSet(new long[]{0x0000000000000802L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group__4__Impl_in_rule__TermExpression__Group__45085 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__TermExpression__Group__4__Impl5113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group_3__0__Impl_in_rule__TermExpression__Group_3__05154 = new BitSet(new long[]{0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group_3__1_in_rule__TermExpression__Group_3__05157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group_3__1__Impl_in_rule__TermExpression__Group_3__15215 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group_3__2_in_rule__TermExpression__Group_3__15218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__OperationAssignment_3_1_in_rule__TermExpression__Group_3__1__Impl5245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__Group_3__2__Impl_in_rule__TermExpression__Group_3__25275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression__RightAssignment_3_2_in_rule__TermExpression__Group_3__2__Impl5302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression2__Group__0__Impl_in_rule__TermExpression2__Group__05338 = new BitSet(new long[]{0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__TermExpression2__Group__1_in_rule__TermExpression2__Group__05341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression2__LeftAssignment_0_in_rule__TermExpression2__Group__0__Impl5368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression2__Group__1__Impl_in_rule__TermExpression2__Group__15398 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__TermExpression2__Group__2_in_rule__TermExpression2__Group__15401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression2__OperationAssignment_1_in_rule__TermExpression2__Group__1__Impl5428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression2__Group__2__Impl_in_rule__TermExpression2__Group__25458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TermExpression2__RightAssignment_2_in_rule__TermExpression2__Group__2__Impl5485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__0__Impl_in_rule__ProductExpression__Group__05521 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__1_in_rule__ProductExpression__Group__05524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_rule__ProductExpression__Group__0__Impl5552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__1__Impl_in_rule__ProductExpression__Group__15583 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__2_in_rule__ProductExpression__Group__15586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ProductExpression__Group__1__Impl5614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__2__Impl_in_rule__ProductExpression__Group__25645 = new BitSet(new long[]{0x0000000000021000L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__3_in_rule__ProductExpression__Group__25648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression2_in_rule__ProductExpression__Group__2__Impl5675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__3__Impl_in_rule__ProductExpression__Group__35704 = new BitSet(new long[]{0x0000000000021000L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__4_in_rule__ProductExpression__Group__35707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group_3__0_in_rule__ProductExpression__Group__3__Impl5734 = new BitSet(new long[]{0x0000000000001002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group__4__Impl_in_rule__ProductExpression__Group__45765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ProductExpression__Group__4__Impl5793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group_3__0__Impl_in_rule__ProductExpression__Group_3__05834 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group_3__1_in_rule__ProductExpression__Group_3__05837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group_3__1__Impl_in_rule__ProductExpression__Group_3__15895 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group_3__2_in_rule__ProductExpression__Group_3__15898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__OperationAssignment_3_1_in_rule__ProductExpression__Group_3__1__Impl5925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__Group_3__2__Impl_in_rule__ProductExpression__Group_3__25955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression__RightAssignment_3_2_in_rule__ProductExpression__Group_3__2__Impl5982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__Group__0__Impl_in_rule__ProductExpression2__Group__06018 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__Group__1_in_rule__ProductExpression2__Group__06021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__LeftAssignment_0_in_rule__ProductExpression2__Group__0__Impl6048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__Group__1__Impl_in_rule__ProductExpression2__Group__16078 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__Group__2_in_rule__ProductExpression2__Group__16081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__OperationAssignment_1_in_rule__ProductExpression2__Group__1__Impl6108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__Group__2__Impl_in_rule__ProductExpression2__Group__26138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProductExpression2__RightAssignment_2_in_rule__ProductExpression2__Group__2__Impl6165 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__0__Impl_in_rule__CompareExpression__Group__06201 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__1_in_rule__CompareExpression__Group__06204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_22_in_rule__CompareExpression__Group__0__Impl6232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__1__Impl_in_rule__CompareExpression__Group__16263 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__2_in_rule__CompareExpression__Group__16266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__CompareExpression__Group__1__Impl6294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__2__Impl_in_rule__CompareExpression__Group__26325 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__3_in_rule__CompareExpression__Group__26328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__CompareExpression__Group__2__Impl6356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__3__Impl_in_rule__CompareExpression__Group__36387 = new BitSet(new long[]{0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__4_in_rule__CompareExpression__Group__36390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__OperationAssignment_3_in_rule__CompareExpression__Group__3__Impl6417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__4__Impl_in_rule__CompareExpression__Group__46447 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__5_in_rule__CompareExpression__Group__46450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_rule__CompareExpression__Group__4__Impl6478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__5__Impl_in_rule__CompareExpression__Group__56509 = new BitSet(new long[]{0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__6_in_rule__CompareExpression__Group__56512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__LeftAssignment_5_in_rule__CompareExpression__Group__5__Impl6539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__6__Impl_in_rule__CompareExpression__Group__66569 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__7_in_rule__CompareExpression__Group__66572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__CompareExpression__Group__6__Impl6600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__7__Impl_in_rule__CompareExpression__Group__76631 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__8_in_rule__CompareExpression__Group__76634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__RightAssignment_7_in_rule__CompareExpression__Group__7__Impl6661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__CompareExpression__Group__8__Impl_in_rule__CompareExpression__Group__86691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__CompareExpression__Group__8__Impl6719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__0__Impl_in_rule__PowerExpression__Group__06768 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__1_in_rule__PowerExpression__Group__06771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__PowerExpression__Group__0__Impl6799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__1__Impl_in_rule__PowerExpression__Group__16830 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__2_in_rule__PowerExpression__Group__16833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__PowerExpression__Group__1__Impl6861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__2__Impl_in_rule__PowerExpression__Group__26892 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__3_in_rule__PowerExpression__Group__26895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__PowerExpression__Group__2__Impl6923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__3__Impl_in_rule__PowerExpression__Group__36954 = new BitSet(new long[]{0x0000000010000000L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__4_in_rule__PowerExpression__Group__36957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__BaseAssignment_3_in_rule__PowerExpression__Group__3__Impl6984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__4__Impl_in_rule__PowerExpression__Group__47014 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__5_in_rule__PowerExpression__Group__47017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_rule__PowerExpression__Group__4__Impl7045 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__5__Impl_in_rule__PowerExpression__Group__57076 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__6_in_rule__PowerExpression__Group__57079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__ExponentAssignment_5_in_rule__PowerExpression__Group__5__Impl7106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PowerExpression__Group__6__Impl_in_rule__PowerExpression__Group__67136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__PowerExpression__Group__6__Impl7164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__0__Impl_in_rule__BooleanOperatorExpression__Group__07209 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__1_in_rule__BooleanOperatorExpression__Group__07212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__BooleanOperatorExpression__Group__0__Impl7240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__1__Impl_in_rule__BooleanOperatorExpression__Group__17271 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__2_in_rule__BooleanOperatorExpression__Group__17274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__BooleanOperatorExpression__Group__1__Impl7302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__2__Impl_in_rule__BooleanOperatorExpression__Group__27333 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__3_in_rule__BooleanOperatorExpression__Group__27336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__BooleanOperatorExpression__Group__2__Impl7364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__3__Impl_in_rule__BooleanOperatorExpression__Group__37395 = new BitSet(new long[]{0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__4_in_rule__BooleanOperatorExpression__Group__37398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__OperationAssignment_3_in_rule__BooleanOperatorExpression__Group__3__Impl7425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__4__Impl_in_rule__BooleanOperatorExpression__Group__47455 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__5_in_rule__BooleanOperatorExpression__Group__47458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_rule__BooleanOperatorExpression__Group__4__Impl7486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__5__Impl_in_rule__BooleanOperatorExpression__Group__57517 = new BitSet(new long[]{0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__6_in_rule__BooleanOperatorExpression__Group__57520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__LeftAssignment_5_in_rule__BooleanOperatorExpression__Group__5__Impl7547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__6__Impl_in_rule__BooleanOperatorExpression__Group__67577 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__7_in_rule__BooleanOperatorExpression__Group__67580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__BooleanOperatorExpression__Group__6__Impl7608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__7__Impl_in_rule__BooleanOperatorExpression__Group__77639 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__8_in_rule__BooleanOperatorExpression__Group__77642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__RightAssignment_7_in_rule__BooleanOperatorExpression__Group__7__Impl7669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BooleanOperatorExpression__Group__8__Impl_in_rule__BooleanOperatorExpression__Group__87699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__BooleanOperatorExpression__Group__8__Impl7727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__0__Impl_in_rule__NotExpression__Group__07776 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__1_in_rule__NotExpression__Group__07779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__NotExpression__Group__0__Impl7807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__1__Impl_in_rule__NotExpression__Group__17838 = new BitSet(new long[]{0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__2_in_rule__NotExpression__Group__17841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__NotExpression__Group__1__Impl7869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__2__Impl_in_rule__NotExpression__Group__27900 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__3_in_rule__NotExpression__Group__27903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__NotExpression__Group__2__Impl7931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__3__Impl_in_rule__NotExpression__Group__37962 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__4_in_rule__NotExpression__Group__37965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NotExpression__InnerAssignment_3_in_rule__NotExpression__Group__3__Impl7992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NotExpression__Group__4__Impl_in_rule__NotExpression__Group__48022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__NotExpression__Group__4__Impl8050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__0__Impl_in_rule__NegativeExpression__Group__08091 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__1_in_rule__NegativeExpression__Group__08094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__NegativeExpression__Group__0__Impl8122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__1__Impl_in_rule__NegativeExpression__Group__18153 = new BitSet(new long[]{0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__2_in_rule__NegativeExpression__Group__18156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__NegativeExpression__Group__1__Impl8184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__2__Impl_in_rule__NegativeExpression__Group__28215 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__3_in_rule__NegativeExpression__Group__28218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__NegativeExpression__Group__2__Impl8246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__3__Impl_in_rule__NegativeExpression__Group__38277 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__4_in_rule__NegativeExpression__Group__38280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__InnerAssignment_3_in_rule__NegativeExpression__Group__3__Impl8307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NegativeExpression__Group__4__Impl_in_rule__NegativeExpression__Group__48337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__NegativeExpression__Group__4__Impl8365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__0__Impl_in_rule__IfElseExpression__Group__08406 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__1_in_rule__IfElseExpression__Group__08409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_rule__IfElseExpression__Group__0__Impl8437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__1__Impl_in_rule__IfElseExpression__Group__18468 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__2_in_rule__IfElseExpression__Group__18471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__IfElseExpression__Group__1__Impl8499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__2__Impl_in_rule__IfElseExpression__Group__28530 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__3_in_rule__IfElseExpression__Group__28533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__IfElseExpression__Group__2__Impl8561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__3__Impl_in_rule__IfElseExpression__Group__38592 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__4_in_rule__IfElseExpression__Group__38595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__IfExpressionAssignment_3_in_rule__IfElseExpression__Group__3__Impl8622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__4__Impl_in_rule__IfElseExpression__Group__48652 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__5_in_rule__IfElseExpression__Group__48655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__IfElseExpression__Group__4__Impl8683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__5__Impl_in_rule__IfElseExpression__Group__58714 = new BitSet(new long[]{0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__6_in_rule__IfElseExpression__Group__58717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__ElseExpressionAssignment_5_in_rule__IfElseExpression__Group__5__Impl8744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__6__Impl_in_rule__IfElseExpression__Group__68774 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__7_in_rule__IfElseExpression__Group__68777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__IfElseExpression__Group__6__Impl8805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__7__Impl_in_rule__IfElseExpression__Group__78836 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__8_in_rule__IfElseExpression__Group__78839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__ConditionExpressionAssignment_7_in_rule__IfElseExpression__Group__7__Impl8866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IfElseExpression__Group__8__Impl_in_rule__IfElseExpression__Group__88896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__IfElseExpression__Group__8__Impl8924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group__0__Impl_in_rule__Function__Group__08973 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__Function__Group__1_in_rule__Function__Group__08976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_rule__Function__Group__0__Impl9004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group__1__Impl_in_rule__Function__Group__19035 = new BitSet(new long[]{0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__Function__Group__2_in_rule__Function__Group__19038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__Function__Group__1__Impl9066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group__2__Impl_in_rule__Function__Group__29097 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Function__Group__3_in_rule__Function__Group__29100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__Function__Group__2__Impl9128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group__3__Impl_in_rule__Function__Group__39159 = new BitSet(new long[]{0x0000008000020000L});
+        public static final BitSet FOLLOW_rule__Function__Group__4_in_rule__Function__Group__39162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__IdAssignment_3_in_rule__Function__Group__3__Impl9189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group__4__Impl_in_rule__Function__Group__49219 = new BitSet(new long[]{0x0000008000020000L});
+        public static final BitSet FOLLOW_rule__Function__Group__5_in_rule__Function__Group__49222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__0_in_rule__Function__Group__4__Impl9249 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group__5__Impl_in_rule__Function__Group__59280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__Function__Group__5__Impl9308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__0__Impl_in_rule__Function__Group_4__09351 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__1_in_rule__Function__Group_4__09354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_rule__Function__Group_4__0__Impl9382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__1__Impl_in_rule__Function__Group_4__19413 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__2_in_rule__Function__Group_4__19416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__Function__Group_4__1__Impl9444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__2__Impl_in_rule__Function__Group_4__29475 = new BitSet(new long[]{0x0000010000020000L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__3_in_rule__Function__Group_4__29478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__ParametersAssignment_4_2_in_rule__Function__Group_4__2__Impl9505 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__3__Impl_in_rule__Function__Group_4__39535 = new BitSet(new long[]{0x0000010000020000L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__4_in_rule__Function__Group_4__39538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4_3__0_in_rule__Function__Group_4__3__Impl9565 = new BitSet(new long[]{0x0000010000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4__4__Impl_in_rule__Function__Group_4__49596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__Function__Group_4__4__Impl9624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4_3__0__Impl_in_rule__Function__Group_4_3__09665 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__Function__Group_4_3__1_in_rule__Function__Group_4_3__09668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__Function__Group_4_3__0__Impl9696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Group_4_3__1__Impl_in_rule__Function__Group_4_3__19727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__ParametersAssignment_4_3_1_in_rule__Function__Group_4_3__1__Impl9754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__0__Impl_in_rule__Parenthesis__Group__09788 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__1_in_rule__Parenthesis__Group__09791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__Parenthesis__Group__0__Impl9819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__1__Impl_in_rule__Parenthesis__Group__19850 = new BitSet(new long[]{0x0000040000000000L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__2_in_rule__Parenthesis__Group__19853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__Parenthesis__Group__1__Impl9881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__2__Impl_in_rule__Parenthesis__Group__29912 = new BitSet(new long[]{0x0137BA2364700000L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__3_in_rule__Parenthesis__Group__29915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__Parenthesis__Group__2__Impl9943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__3__Impl_in_rule__Parenthesis__Group__39974 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__4_in_rule__Parenthesis__Group__39977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Parenthesis__InnerExpressionAssignment_3_in_rule__Parenthesis__Group__3__Impl10004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Parenthesis__Group__4__Impl_in_rule__Parenthesis__Group__410034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__Parenthesis__Group__4__Impl10062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Literal_Impl__Group__0__Impl_in_rule__Literal_Impl__Group__010103 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__Literal_Impl__Group__1_in_rule__Literal_Impl__Group__010106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Literal_Impl__Group__1__Impl_in_rule__Literal_Impl__Group__110164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__Literal_Impl__Group__1__Impl10192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__0__Impl_in_rule__StringLiteral__Group__010227 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__1_in_rule__StringLiteral__Group__010230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__StringLiteral__Group__0__Impl10258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__1__Impl_in_rule__StringLiteral__Group__110289 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__2_in_rule__StringLiteral__Group__110292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__StringLiteral__Group__1__Impl10320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__2__Impl_in_rule__StringLiteral__Group__210351 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__3_in_rule__StringLiteral__Group__210354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__StringLiteral__Group__2__Impl10382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__3__Impl_in_rule__StringLiteral__Group__310413 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__4_in_rule__StringLiteral__Group__310416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StringLiteral__ValueAssignment_3_in_rule__StringLiteral__Group__3__Impl10443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StringLiteral__Group__4__Impl_in_rule__StringLiteral__Group__410473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__StringLiteral__Group__4__Impl10501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoolLiteral__Group__0__Impl_in_rule__BoolLiteral__Group__010542 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__BoolLiteral__Group__1_in_rule__BoolLiteral__Group__010545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoolLiteral__ValueAssignment_0_in_rule__BoolLiteral__Group__0__Impl10572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoolLiteral__Group__1__Impl_in_rule__BoolLiteral__Group__110602 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_rule__BoolLiteral__Group__1__Impl10630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__0__Impl_in_rule__IntLiteral__Group__010665 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__1_in_rule__IntLiteral__Group__010668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__IntLiteral__Group__0__Impl10696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__1__Impl_in_rule__IntLiteral__Group__110727 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__2_in_rule__IntLiteral__Group__110730 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__IntLiteral__Group__1__Impl10758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__2__Impl_in_rule__IntLiteral__Group__210789 = new BitSet(new long[]{0x0400000000000040L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__3_in_rule__IntLiteral__Group__210792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__IntLiteral__Group__2__Impl10820 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__3__Impl_in_rule__IntLiteral__Group__310851 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__4_in_rule__IntLiteral__Group__310854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntLiteral__ValueAssignment_3_in_rule__IntLiteral__Group__3__Impl10881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntLiteral__Group__4__Impl_in_rule__IntLiteral__Group__410911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__IntLiteral__Group__4__Impl10939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__0__Impl_in_rule__DoubleLiteral__Group__010980 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__1_in_rule__DoubleLiteral__Group__010983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__DoubleLiteral__Group__0__Impl11011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__1__Impl_in_rule__DoubleLiteral__Group__111042 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__2_in_rule__DoubleLiteral__Group__111045 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__DoubleLiteral__Group__1__Impl11073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__2__Impl_in_rule__DoubleLiteral__Group__211104 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__3_in_rule__DoubleLiteral__Group__211107 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__DoubleLiteral__Group__2__Impl11135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__3__Impl_in_rule__DoubleLiteral__Group__311166 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__4_in_rule__DoubleLiteral__Group__311169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__ValueAssignment_3_in_rule__DoubleLiteral__Group__3__Impl11196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DoubleLiteral__Group__4__Impl_in_rule__DoubleLiteral__Group__411226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__DoubleLiteral__Group__4__Impl11254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FormalParameter__Group__0__Impl_in_rule__FormalParameter__Group__011295 = new BitSet(new long[]{0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__FormalParameter__Group__1_in_rule__FormalParameter__Group__011298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FormalParameter__Group__1__Impl_in_rule__FormalParameter__Group__111356 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__FormalParameter__Group__2_in_rule__FormalParameter__Group__111359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__FormalParameter__Group__1__Impl11387 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FormalParameter__Group__2__Impl_in_rule__FormalParameter__Group__211418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FormalParameter__NameAssignment_2_in_rule__FormalParameter__Group__2__Impl11445 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__0__Impl_in_rule__ProbabilityMassFunction__Group__011481 = new BitSet(new long[]{0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__1_in_rule__ProbabilityMassFunction__Group__011484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__1__Impl_in_rule__ProbabilityMassFunction__Group__111542 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__2_in_rule__ProbabilityMassFunction__Group__111545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_50_in_rule__ProbabilityMassFunction__Group__1__Impl11573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__2__Impl_in_rule__ProbabilityMassFunction__Group__211604 = new BitSet(new long[]{0x0008000000020000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__3_in_rule__ProbabilityMassFunction__Group__211607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ProbabilityMassFunction__Group__2__Impl11635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__3__Impl_in_rule__ProbabilityMassFunction__Group__311666 = new BitSet(new long[]{0x0008000000020000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__4_in_rule__ProbabilityMassFunction__Group__311669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__0_in_rule__ProbabilityMassFunction__Group__3__Impl11696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group__4__Impl_in_rule__ProbabilityMassFunction__Group__411727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ProbabilityMassFunction__Group__4__Impl11755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__0__Impl_in_rule__ProbabilityMassFunction__Group_3__011796 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__1_in_rule__ProbabilityMassFunction__Group_3__011799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__ProbabilityMassFunction__Group_3__0__Impl11827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__1__Impl_in_rule__ProbabilityMassFunction__Group_3__111858 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__2_in_rule__ProbabilityMassFunction__Group_3__111861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ProbabilityMassFunction__Group_3__1__Impl11889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__2__Impl_in_rule__ProbabilityMassFunction__Group_3__211920 = new BitSet(new long[]{0x0000010000020000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__3_in_rule__ProbabilityMassFunction__Group_3__211923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__SampleAssignment_3_2_in_rule__ProbabilityMassFunction__Group_3__2__Impl11950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__3__Impl_in_rule__ProbabilityMassFunction__Group_3__311980 = new BitSet(new long[]{0x0000010000020000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__4_in_rule__ProbabilityMassFunction__Group_3__311983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3_3__0_in_rule__ProbabilityMassFunction__Group_3__3__Impl12010 = new BitSet(new long[]{0x0000010000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3__4__Impl_in_rule__ProbabilityMassFunction__Group_3__412041 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ProbabilityMassFunction__Group_3__4__Impl12069 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3_3__0__Impl_in_rule__ProbabilityMassFunction__Group_3_3__012110 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3_3__1_in_rule__ProbabilityMassFunction__Group_3_3__012113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__ProbabilityMassFunction__Group_3_3__0__Impl12141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__Group_3_3__1__Impl_in_rule__ProbabilityMassFunction__Group_3_3__112172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProbabilityMassFunction__SampleAssignment_3_3_1_in_rule__ProbabilityMassFunction__Group_3_3__1__Impl12199 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__0__Impl_in_rule__BoxedPDF__Group__012233 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__1_in_rule__BoxedPDF__Group__012236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__1__Impl_in_rule__BoxedPDF__Group__112294 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__2_in_rule__BoxedPDF__Group__112297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_rule__BoxedPDF__Group__1__Impl12325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__2__Impl_in_rule__BoxedPDF__Group__212356 = new BitSet(new long[]{0x0008000000020000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__3_in_rule__BoxedPDF__Group__212359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__BoxedPDF__Group__2__Impl12387 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__3__Impl_in_rule__BoxedPDF__Group__312418 = new BitSet(new long[]{0x0008000000020000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__4_in_rule__BoxedPDF__Group__312421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__0_in_rule__BoxedPDF__Group__3__Impl12448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group__4__Impl_in_rule__BoxedPDF__Group__412479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__BoxedPDF__Group__4__Impl12507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__0__Impl_in_rule__BoxedPDF__Group_3__012548 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__1_in_rule__BoxedPDF__Group_3__012551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__BoxedPDF__Group_3__0__Impl12579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__1__Impl_in_rule__BoxedPDF__Group_3__112610 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__2_in_rule__BoxedPDF__Group_3__112613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__BoxedPDF__Group_3__1__Impl12641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__2__Impl_in_rule__BoxedPDF__Group_3__212672 = new BitSet(new long[]{0x0000010000020000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__3_in_rule__BoxedPDF__Group_3__212675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__SampleAssignment_3_2_in_rule__BoxedPDF__Group_3__2__Impl12702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__3__Impl_in_rule__BoxedPDF__Group_3__312732 = new BitSet(new long[]{0x0000010000020000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__4_in_rule__BoxedPDF__Group_3__312735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3_3__0_in_rule__BoxedPDF__Group_3__3__Impl12762 = new BitSet(new long[]{0x0000010000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3__4__Impl_in_rule__BoxedPDF__Group_3__412793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__BoxedPDF__Group_3__4__Impl12821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3_3__0__Impl_in_rule__BoxedPDF__Group_3_3__012862 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3_3__1_in_rule__BoxedPDF__Group_3_3__012865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__BoxedPDF__Group_3_3__0__Impl12893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__Group_3_3__1__Impl_in_rule__BoxedPDF__Group_3_3__112924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BoxedPDF__SampleAssignment_3_3_1_in_rule__BoxedPDF__Group_3_3__1__Impl12951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__0__Impl_in_rule__NormalDistribution__Group__012985 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__1_in_rule__NormalDistribution__Group__012988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_rule__NormalDistribution__Group__0__Impl13016 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__1__Impl_in_rule__NormalDistribution__Group__113047 = new BitSet(new long[]{0x0040000000000000L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__2_in_rule__NormalDistribution__Group__113050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__NormalDistribution__Group__1__Impl13078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__2__Impl_in_rule__NormalDistribution__Group__213109 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__3_in_rule__NormalDistribution__Group__213112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_rule__NormalDistribution__Group__2__Impl13140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__3__Impl_in_rule__NormalDistribution__Group__313171 = new BitSet(new long[]{0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__4_in_rule__NormalDistribution__Group__313174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__MuAssignment_3_in_rule__NormalDistribution__Group__3__Impl13201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__4__Impl_in_rule__NormalDistribution__Group__413231 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__5_in_rule__NormalDistribution__Group__413234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__NormalDistribution__Group__4__Impl13262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__5__Impl_in_rule__NormalDistribution__Group__513293 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__6_in_rule__NormalDistribution__Group__513296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__SigmaAssignment_5_in_rule__NormalDistribution__Group__5__Impl13323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NormalDistribution__Group__6__Impl_in_rule__NormalDistribution__Group__613353 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__NormalDistribution__Group__6__Impl13381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__0__Impl_in_rule__ExponentialDistribution__Group__013426 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__1_in_rule__ExponentialDistribution__Group__013429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_rule__ExponentialDistribution__Group__0__Impl13457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__1__Impl_in_rule__ExponentialDistribution__Group__113488 = new BitSet(new long[]{0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__2_in_rule__ExponentialDistribution__Group__113491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ExponentialDistribution__Group__1__Impl13519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__2__Impl_in_rule__ExponentialDistribution__Group__213550 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__3_in_rule__ExponentialDistribution__Group__213553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__ExponentialDistribution__Group__2__Impl13581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__3__Impl_in_rule__ExponentialDistribution__Group__313612 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__4_in_rule__ExponentialDistribution__Group__313615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__RateAssignment_3_in_rule__ExponentialDistribution__Group__3__Impl13642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExponentialDistribution__Group__4__Impl_in_rule__ExponentialDistribution__Group__413672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ExponentialDistribution__Group__4__Impl13700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EBigInteger__Group__0__Impl_in_rule__EBigInteger__Group__013741 = new BitSet(new long[]{0x0400000000000040L});
+        public static final BitSet FOLLOW_rule__EBigInteger__Group__1_in_rule__EBigInteger__Group__013744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__EBigInteger__Group__0__Impl13773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EBigInteger__Group__1__Impl_in_rule__EBigInteger__Group__113806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EBigInteger__Group__1__Impl13833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EBigDecimal__Group__0__Impl_in_rule__EBigDecimal__Group__013866 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_rule__EBigDecimal__Group__1_in_rule__EBigDecimal__Group__013869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EBigDecimal__Group__0__Impl13897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EBigDecimal__Group__1__Impl_in_rule__EBigDecimal__Group__113928 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__EBigDecimal__Group__2_in_rule__EBigDecimal__Group__113931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_rule__EBigDecimal__Group__1__Impl13959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EBigDecimal__Group__2__Impl_in_rule__EBigDecimal__Group__213990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EBigDecimal__Group__2__Impl14017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__Group__0__Impl_in_rule__Sample__Group__014052 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__Sample__Group__1_in_rule__Sample__Group__014055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__Sample__Group__0__Impl14083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__Group__1__Impl_in_rule__Sample__Group__114114 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__Sample__Group__2_in_rule__Sample__Group__114117 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__Sample__Group__1__Impl14145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__Group__2__Impl_in_rule__Sample__Group__214176 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_rule__Sample__Group__3_in_rule__Sample__Group__214179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__Sample__Group__2__Impl14207 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__Group__3__Impl_in_rule__Sample__Group__314238 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__Sample__Group__4_in_rule__Sample__Group__314241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__ProbabilityAssignment_3_in_rule__Sample__Group__3__Impl14268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__Group__4__Impl_in_rule__Sample__Group__414298 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Sample__Group__5_in_rule__Sample__Group__414301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__Sample__Group__4__Impl14329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__Group__5__Impl_in_rule__Sample__Group__514360 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__Sample__Group__6_in_rule__Sample__Group__514363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__ValueAssignment_5_in_rule__Sample__Group__5__Impl14390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Sample__Group__6__Impl_in_rule__Sample__Group__614420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__Sample__Group__6__Impl14448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__0__Impl_in_rule__ContinuousSample__Group__014494 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__1_in_rule__ContinuousSample__Group__014497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__ContinuousSample__Group__0__Impl14525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__1__Impl_in_rule__ContinuousSample__Group__114556 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__2_in_rule__ContinuousSample__Group__114559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ContinuousSample__Group__1__Impl14587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__2__Impl_in_rule__ContinuousSample__Group__214618 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__3_in_rule__ContinuousSample__Group__214621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__ContinuousSample__Group__2__Impl14649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__3__Impl_in_rule__ContinuousSample__Group__314680 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__4_in_rule__ContinuousSample__Group__314683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__ValueAssignment_3_in_rule__ContinuousSample__Group__3__Impl14710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__4__Impl_in_rule__ContinuousSample__Group__414740 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__5_in_rule__ContinuousSample__Group__414743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__ContinuousSample__Group__4__Impl14771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__5__Impl_in_rule__ContinuousSample__Group__514802 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__6_in_rule__ContinuousSample__Group__514805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__ProbabilityAssignment_5_in_rule__ContinuousSample__Group__5__Impl14832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousSample__Group__6__Impl_in_rule__ContinuousSample__Group__614862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ContinuousSample__Group__6__Impl14890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ExplicitFunction__SpecificationAssignment_3_114940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpression_in_rule__ExplicitFunction__ExpressionAssignment_4_114971 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermOperations_in_rule__TermExpression__OperationAssignment_3_115002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProduct_in_rule__TermExpression__RightAssignment_3_215033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTerm_in_rule__TermExpression2__LeftAssignment_015064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermOperations_in_rule__TermExpression2__OperationAssignment_115095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProduct_in_rule__TermExpression2__RightAssignment_215126 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductOperations_in_rule__ProductExpression__OperationAssignment_3_115157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePower_in_rule__ProductExpression__RightAssignment_3_215188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProduct_in_rule__ProductExpression2__LeftAssignment_015219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductOperations_in_rule__ProductExpression2__OperationAssignment_115250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePower_in_rule__ProductExpression2__RightAssignment_215281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareOperations_in_rule__CompareExpression__OperationAssignment_315312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTerm_in_rule__CompareExpression__LeftAssignment_515343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTerm_in_rule__CompareExpression__RightAssignment_715374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePower_in_rule__PowerExpression__BaseAssignment_315405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnary_in_rule__PowerExpression__ExponentAssignment_515436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperations_in_rule__BooleanOperatorExpression__OperationAssignment_315467 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_rule__BooleanOperatorExpression__LeftAssignment_515498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_rule__BooleanOperatorExpression__RightAssignment_715529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnary_in_rule__NotExpression__InnerAssignment_315560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnary_in_rule__NegativeExpression__InnerAssignment_315591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_rule__IfElseExpression__IfExpressionAssignment_315622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_rule__IfElseExpression__ElseExpressionAssignment_515653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_rule__IfElseExpression__ConditionExpressionAssignment_715684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Function__IdAssignment_315715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpression_in_rule__Function__ParametersAssignment_4_215746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpression_in_rule__Function__ParametersAssignment_4_3_115777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpression_in_rule__Parenthesis__InnerExpressionAssignment_315808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__StringLiteral__ValueAssignment_315839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__BoolLiteral__ValueAssignment_015875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigInteger_in_rule__IntLiteral__ValueAssignment_315914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_rule__DoubleLiteral__ValueAssignment_315945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__FormalParameter__NameAssignment_215976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSample_in_rule__ProbabilityMassFunction__SampleAssignment_3_216007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSample_in_rule__ProbabilityMassFunction__SampleAssignment_3_3_116038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_rule__BoxedPDF__SampleAssignment_3_216069 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_rule__BoxedPDF__SampleAssignment_3_3_116100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_rule__NormalDistribution__MuAssignment_316131 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_rule__NormalDistribution__SigmaAssignment_516162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_rule__ExponentialDistribution__RateAssignment_316193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_rule__Sample__ProbabilityAssignment_316224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Sample__ValueAssignment_516259 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_rule__ContinuousSample__ValueAssignment_316294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_rule__ContinuousSample__ProbabilityAssignment_516325 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+
+}
\ No newline at end of file
diff --git a/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/internal/MyDsl1Activator.java b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/internal/MyDsl1Activator.java
new file mode 100644
index 00000000..666b6f6c
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src-gen/org/xtext/example/mydsl1/ui/internal/MyDsl1Activator.java
@@ -0,0 +1,95 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl1.ui.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class MyDsl1Activator extends AbstractUIPlugin {
+	
+	public static final String ORG_XTEXT_EXAMPLE_MYDSL1_MYDSL1 = "org.xtext.example.mydsl1.MyDsl1";
+	
+	private static final Logger logger = Logger.getLogger(MyDsl1Activator.class);
+	
+	private static MyDsl1Activator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static MyDsl1Activator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+
+	protected Module getRuntimeModule(String grammar) {
+		if (ORG_XTEXT_EXAMPLE_MYDSL1_MYDSL1.equals(grammar)) {
+			return new org.xtext.example.mydsl1.MyDsl1RuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_XTEXT_EXAMPLE_MYDSL1_MYDSL1.equals(grammar)) {
+			return new org.xtext.example.mydsl1.ui.MyDsl1UiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/MyDsl1UiModule.java b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/MyDsl1UiModule.java
new file mode 100644
index 00000000..e54f4c63
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/MyDsl1UiModule.java
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl1.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class MyDsl1UiModule extends org.xtext.example.mydsl1.ui.AbstractMyDsl1UiModule {
+	public MyDsl1UiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
diff --git a/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/contentassist/MyDsl1ProposalProvider.java b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/contentassist/MyDsl1ProposalProvider.java
new file mode 100644
index 00000000..63218da4
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/contentassist/MyDsl1ProposalProvider.java
@@ -0,0 +1,12 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.ui.contentassist;
+
+import org.xtext.example.mydsl1.ui.contentassist.AbstractMyDsl1ProposalProvider;
+/**
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant
+ */
+public class MyDsl1ProposalProvider extends AbstractMyDsl1ProposalProvider {
+
+}
diff --git a/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/labeling/MyDsl1DescriptionLabelProvider.java b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/labeling/MyDsl1DescriptionLabelProvider.java
new file mode 100644
index 00000000..7bf51c78
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/labeling/MyDsl1DescriptionLabelProvider.java
@@ -0,0 +1,27 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class MyDsl1DescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+
+/*
+	//Labels and icons can be computed like this:
+	
+	String text(IEObjectDescription ele) {
+	  return "my "+ele.getName();
+	}
+	 
+    String image(IEObjectDescription ele) {
+      return ele.getEClass().getName() + ".gif";
+    }	 
+*/
+
+}
diff --git a/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/labeling/MyDsl1LabelProvider.java b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/labeling/MyDsl1LabelProvider.java
new file mode 100644
index 00000000..7efffeca
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/labeling/MyDsl1LabelProvider.java
@@ -0,0 +1,34 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.ui.labeling;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider; 
+ 
+import com.google.inject.Inject;
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class MyDsl1LabelProvider extends DefaultEObjectLabelProvider {
+
+	@Inject
+	public MyDsl1LabelProvider(AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+/*
+	//Labels and icons can be computed like this:
+	
+	String text(MyModel ele) {
+	  return "my "+ele.getName();
+	}
+	 
+    String image(MyModel ele) {
+      return "MyModel.gif";
+    }
+*/
+}
diff --git a/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/outline/MyDsl1OutlineTreeProvider.java b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/outline/MyDsl1OutlineTreeProvider.java
new file mode 100644
index 00000000..fb7fe08b
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/outline/MyDsl1OutlineTreeProvider.java
@@ -0,0 +1,14 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.ui.outline;
+
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
+
+/**
+ * customization of the default outline structure
+ * 
+ */
+public class MyDsl1OutlineTreeProvider extends DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/quickfix/MyDsl1QuickfixProvider.java b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/quickfix/MyDsl1QuickfixProvider.java
new file mode 100644
index 00000000..3dfd98c0
--- /dev/null
+++ b/org.xtext.example.mydsl1.ui/src/org/xtext/example/mydsl1/ui/quickfix/MyDsl1QuickfixProvider.java
@@ -0,0 +1,19 @@
+
+package org.xtext.example.mydsl1.ui.quickfix;
+
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
+
+public class MyDsl1QuickfixProvider extends DefaultQuickfixProvider {
+
+//	@Fix(MyJavaValidator.INVALID_NAME)
+//	public void capitalizeName(final Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(issue, "Capitalize name", "Capitalize the name.", "upcase.png", new IModification() {
+//			public void apply(IModificationContext context) throws BadLocationException {
+//				IXtextDocument xtextDocument = context.getXtextDocument();
+//				String firstLetter = xtextDocument.get(issue.getOffset(), 1);
+//				xtextDocument.replace(issue.getOffset(), 1, firstLetter.toUpperCase());
+//			}
+//		});
+//	}
+
+}
diff --git a/org.xtext.example.mydsl1/.classpath b/org.xtext.example.mydsl1/.classpath
new file mode 100644
index 00000000..3f1be502
--- /dev/null
+++ b/org.xtext.example.mydsl1/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.xtext.example.mydsl1/.project b/org.xtext.example.mydsl1/.project
new file mode 100644
index 00000000..f893b2a2
--- /dev/null
+++ b/org.xtext.example.mydsl1/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.xtext.example.mydsl1</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.xtext.example.mydsl1/META-INF/MANIFEST.MF b/org.xtext.example.mydsl1/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..f952c5ad
--- /dev/null
+++ b/org.xtext.example.mydsl1/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.xtext.example.mydsl1
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.xtext.example.mydsl1; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;visibility:=reexport,
+ org.eclipse.xtext.xbase;resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;resolution:=optional,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ org.eclipse.emf.mwe2.launch;resolution:=optional,
+ edu.kit.ipd.descartes.mm.applicationlevel,
+ org.eclipse.xtext.util,
+ org.antlr.runtime
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.xtext.example.mydsl1,
+ org.xtext.example.mydsl1.services,
+ org.xtext.example.mydsl1.parseTreeConstruction,
+ org.xtext.example.mydsl1.parser.antlr,
+ org.xtext.example.mydsl1.parser.antlr.internal,
+ org.xtext.example.mydsl1.validation,
+ org.xtext.example.mydsl1.scoping,
+ org.xtext.example.mydsl1.formatting
diff --git a/org.xtext.example.mydsl1/build.properties b/org.xtext.example.mydsl1/build.properties
new file mode 100644
index 00000000..31255ed0
--- /dev/null
+++ b/org.xtext.example.mydsl1/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
\ No newline at end of file
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/AbstractMyDsl1RuntimeModule.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/AbstractMyDsl1RuntimeModule.java
new file mode 100644
index 00000000..29989349
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/AbstractMyDsl1RuntimeModule.java
@@ -0,0 +1,147 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl1;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {org.xtext.example.mydsl1.MyDsl1RuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractMyDsl1RuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/xtext/example/mydsl1/MyDsl1.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.xtext.example.mydsl1.MyDsl1");
+	}
+	
+	public void configureFileExtensions(Binder binder) {
+		if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("mydsl1");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.xtext.example.mydsl1.services.MyDsl1GrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parseTreeConstructor.ParseTreeConstructorFragment
+	public Class<? extends org.eclipse.xtext.parsetree.reconstr.IParseTreeConstructor> bindIParseTreeConstructor() {
+		return org.xtext.example.mydsl1.parseTreeConstruction.MyDsl1ParsetreeConstructor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
+		return org.xtext.example.mydsl1.parser.antlr.MyDsl1Parser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+		return org.xtext.example.mydsl1.parser.antlr.MyDsl1AntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.xtext.example.mydsl1.parser.antlr.internal.InternalMyDsl1Lexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.xtext.example.mydsl1.parser.antlr.internal.InternalMyDsl1Lexer> provideInternalMyDsl1Lexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.xtext.example.mydsl1.parser.antlr.internal.InternalMyDsl1Lexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureRuntimeLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.xtext.example.mydsl1.parser.antlr.internal.InternalMyDsl1Lexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.ecore2xtext.Ecore2XtextValueConverterServiceFragment
+	public Class<? extends org.eclipse.xtext.conversion.IValueConverterService> bindIValueConverterService() {
+		return org.eclipse.xtext.common.services.Ecore2XtextTerminalConverters.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.validation.JavaValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.xtext.example.mydsl1.validation.MyDsl1JavaValidator> bindMyDsl1JavaValidator() {
+		return org.xtext.example.mydsl1.validation.MyDsl1JavaValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return org.xtext.example.mydsl1.scoping.MyDsl1ScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.scoping.impl.SimpleLocalScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
+		binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.SimpleNamesFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return org.eclipse.xtext.naming.SimpleNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return org.xtext.example.mydsl1.formatting.MyDsl1Formatter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+		return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
+		return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptions(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+}
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/MyDsl1.xmi b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/MyDsl1.xmi
new file mode 100644
index 00000000..cb92e8f6
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/MyDsl1.xmi
@@ -0,0 +1,870 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
+  <xtext:Grammar name="org.xtext.example.mydsl1.MyDsl1" usedGrammars="/1">
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
+      <ePackage href="http://www.descartes-research.net/metamodel/functions/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+      <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="identifier">
+      <ePackage href="http://www.descartes-research.net/identifier/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="core">
+      <ePackage href="http://www.descartes-research.net/metamodel/core/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="servicebehavior">
+      <ePackage href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="repository">
+      <ePackage href="http://www.descartes-research.net/metamodel/repository/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="parameterdependencies">
+      <ePackage href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#/"/>
+    </metamodelDeclarations>
+    <rules xsi:type="xtext:ParserRule" name="ExplicitFunction">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ExplicitFunction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.0">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ExplicitFunction"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ExplicitFunction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="specification"/>
+          <elements xsi:type="xtext:Assignment" feature="specification" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="expression"/>
+          <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Expression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Expression"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Term">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Term"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Product">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Product"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Power">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Power"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Unary">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Unary"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BooleanExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//BooleanExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.12"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EString">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="TermExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//TermExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="TermExpression"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+        <elements xsi:type="xtext:Group" cardinality="*">
+          <elements xsi:type="xtext:Action" feature="left" operator="=">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//TermExpression"/>
+            </type>
+          </elements>
+          <elements xsi:type="xtext:Assignment" feature="operation" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+          </elements>
+          <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="TermExpression2">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//TermExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Assignment" feature="left" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+        </elements>
+        <elements xsi:type="xtext:Assignment" feature="operation" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+        </elements>
+        <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProductExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProductExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ProductExpression"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.11"/>
+        <elements xsi:type="xtext:Group" cardinality="*">
+          <elements xsi:type="xtext:Action" feature="left" operator="=">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProductExpression"/>
+            </type>
+          </elements>
+          <elements xsi:type="xtext:Assignment" feature="operation" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
+          </elements>
+          <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProductExpression2">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProductExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Assignment" feature="left" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.3"/>
+        </elements>
+        <elements xsi:type="xtext:Assignment" feature="operation" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
+        </elements>
+        <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CompareExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//CompareExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="CompareExpression"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="operation"/>
+        <elements xsi:type="xtext:Assignment" feature="operation" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="left"/>
+        <elements xsi:type="xtext:Assignment" feature="left" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="right"/>
+        <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="PowerExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//PowerExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="PowerExpression"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="base"/>
+        <elements xsi:type="xtext:Assignment" feature="base" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="exponent"/>
+        <elements xsi:type="xtext:Assignment" feature="exponent" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BooleanOperatorExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//BooleanOperatorExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="BooleanOperatorExpression"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="operation"/>
+        <elements xsi:type="xtext:Assignment" feature="operation" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="left"/>
+        <elements xsi:type="xtext:Assignment" feature="left" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="right"/>
+        <elements xsi:type="xtext:Assignment" feature="right" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="NotExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//NotExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="NotExpression"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="inner"/>
+        <elements xsi:type="xtext:Assignment" feature="inner" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="NegativeExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//NegativeExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="NegativeExpression"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="inner"/>
+        <elements xsi:type="xtext:Assignment" feature="inner" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.5"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="IfElseExpression">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//IfElseExpression"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="IfElseExpression"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="ifExpression"/>
+        <elements xsi:type="xtext:Assignment" feature="ifExpression" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="elseExpression"/>
+        <elements xsi:type="xtext:Assignment" feature="elseExpression" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="conditionExpression"/>
+        <elements xsi:type="xtext:Assignment" feature="conditionExpression" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.6"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Function">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Function"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Function"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="id"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="parameters"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="parameters" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="parameters" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Parenthesis">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Parenthesis"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Parenthesis"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="innerExpression"/>
+        <elements xsi:type="xtext:Assignment" feature="innerExpression" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Literal_Impl">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Literal"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.0">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Literal"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="Literal"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="StringLiteral">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//StringLiteral"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="StringLiteral"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="value"/>
+        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BoolLiteral">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//BoolLiteral"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Assignment" feature="value" operator="?=">
+          <terminal xsi:type="xtext:Keyword" value="value"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="BoolLiteral"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="IntLiteral">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//IntLiteral"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="IntLiteral"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="value"/>
+        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="DoubleLiteral">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//DoubleLiteral"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="DoubleLiteral"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="value"/>
+        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="FormalParameter">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//FormalParameter"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.0">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//FormalParameter"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="FormalParameter"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProbabilityMassFunction">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProbabilityMassFunction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.0">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProbabilityMassFunction"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ProbabilityMassFunction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="sample"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="sample" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="sample" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BoxedPDF">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//BoxedPDF"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.0">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//BoxedPDF"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="BoxedPDF"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="sample"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="sample" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="sample" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="NormalDistribution">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//NormalDistribution"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="NormalDistribution"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="mu"/>
+        <elements xsi:type="xtext:Assignment" feature="mu" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="sigma"/>
+        <elements xsi:type="xtext:Assignment" feature="sigma" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExponentialDistribution">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ExponentialDistribution"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ExponentialDistribution"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="rate"/>
+        <elements xsi:type="xtext:Assignment" feature="rate" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="TermOperations">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EEnum" href="http://www.descartes-research.net/metamodel/functions/0.1#//TermOperations"/>
+      </type>
+      <alternatives xsi:type="xtext:Keyword" value="TermOperations"/>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProductOperations">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EEnum" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProductOperations"/>
+      </type>
+      <alternatives xsi:type="xtext:Keyword" value="ProductOperations"/>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CompareOperations">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EEnum" href="http://www.descartes-research.net/metamodel/functions/0.1#//CompareOperations"/>
+      </type>
+      <alternatives xsi:type="xtext:Keyword" value="CompareOperations"/>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BooleanOperations">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EEnum" href="http://www.descartes-research.net/metamodel/functions/0.1#//BooleanOperations"/>
+      </type>
+      <alternatives xsi:type="xtext:Keyword" value="BooleanOperations"/>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EBoolean">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:Keyword" value="true"/>
+        <elements xsi:type="xtext:Keyword" value="false"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EBigInteger">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" cardinality="?" value="-"/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EBigDecimal">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:RuleCall" cardinality="?" rule="/1/@rules.1"/>
+        <elements xsi:type="xtext:Keyword" value="."/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Sample">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Sample"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Sample"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="probability"/>
+        <elements xsi:type="xtext:Assignment" feature="probability" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="value"/>
+        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.1">
+              <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.7"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EObject">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="EObject"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ContinuousSample">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ContinuousSample"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ContinuousSample"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="value"/>
+        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="probability"/>
+        <elements xsi:type="xtext:Assignment" feature="probability" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+  </xtext:Grammar>
+  <xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/1/@rules.5 /1/@rules.3 /1/@rules.4">
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+      <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    </metamodelDeclarations>
+    <rules xsi:type="xtext:TerminalRule" name="ID">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
+        <elements xsi:type="xtext:Alternatives">
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="a"/>
+            <right value="z"/>
+          </elements>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="A"/>
+            <right value="Z"/>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="_"/>
+        </elements>
+        <elements xsi:type="xtext:Alternatives" cardinality="*">
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="a"/>
+            <right value="z"/>
+          </elements>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="A"/>
+            <right value="Z"/>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="_"/>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="0"/>
+            <right value="9"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="INT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+      </type>
+      <alternatives xsi:type="xtext:CharacterRange" cardinality="+">
+        <left value="0"/>
+        <right value="9"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="STRING">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:Group">
+          <elements xsi:type="xtext:Keyword" value="&quot;"/>
+          <elements xsi:type="xtext:Alternatives" cardinality="*">
+            <elements xsi:type="xtext:Group">
+              <elements xsi:type="xtext:Keyword" value="\"/>
+              <elements xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="b"/>
+                <elements xsi:type="xtext:Keyword" value="t"/>
+                <elements xsi:type="xtext:Keyword" value="n"/>
+                <elements xsi:type="xtext:Keyword" value="f"/>
+                <elements xsi:type="xtext:Keyword" value="r"/>
+                <elements xsi:type="xtext:Keyword" value="u"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+                <elements xsi:type="xtext:Keyword" value="\"/>
+              </elements>
+            </elements>
+            <elements xsi:type="xtext:NegatedToken">
+              <terminal xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="\"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="&quot;"/>
+        </elements>
+        <elements xsi:type="xtext:Group">
+          <elements xsi:type="xtext:Keyword" value="'"/>
+          <elements xsi:type="xtext:Alternatives" cardinality="*">
+            <elements xsi:type="xtext:Group">
+              <elements xsi:type="xtext:Keyword" value="\"/>
+              <elements xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="b"/>
+                <elements xsi:type="xtext:Keyword" value="t"/>
+                <elements xsi:type="xtext:Keyword" value="n"/>
+                <elements xsi:type="xtext:Keyword" value="f"/>
+                <elements xsi:type="xtext:Keyword" value="r"/>
+                <elements xsi:type="xtext:Keyword" value="u"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+                <elements xsi:type="xtext:Keyword" value="\"/>
+              </elements>
+            </elements>
+            <elements xsi:type="xtext:NegatedToken">
+              <terminal xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="\"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="'"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="/*"/>
+        <elements xsi:type="xtext:UntilToken">
+          <terminal xsi:type="xtext:Keyword" value="*/"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="//"/>
+        <elements xsi:type="xtext:NegatedToken" cardinality="*">
+          <terminal xsi:type="xtext:Alternatives">
+            <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+            <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
+          <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="WS">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives" cardinality="+">
+        <elements xsi:type="xtext:Keyword" value=" "/>
+        <elements xsi:type="xtext:Keyword" value="&#x9;"/>
+        <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+        <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Wildcard"/>
+    </rules>
+  </xtext:Grammar>
+</xmi:XMI>
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/MyDsl1StandaloneSetupGenerated.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/MyDsl1StandaloneSetupGenerated.java
new file mode 100644
index 00000000..146c37f0
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/MyDsl1StandaloneSetupGenerated.java
@@ -0,0 +1,40 @@
+
+package org.xtext.example.mydsl1;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class MyDsl1StandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.xtext.common.TerminalsStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.xtext.example.mydsl1.MyDsl1RuntimeModule());
+	}
+	
+	public void register(Injector injector) {
+
+		org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+		org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("mydsl1", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("mydsl1", serviceProvider);
+		
+
+
+
+	}
+}
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parseTreeConstruction/MyDsl1ParsetreeConstructor.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parseTreeConstruction/MyDsl1ParsetreeConstructor.java
new file mode 100644
index 00000000..9c2fae6e
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parseTreeConstruction/MyDsl1ParsetreeConstructor.java
@@ -0,0 +1,9892 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.parseTreeConstruction;
+
+import org.eclipse.emf.ecore.*;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parsetree.reconstr.IEObjectConsumer;
+import org.eclipse.xtext.parsetree.reconstr.impl.AbstractParseTreeConstructor;
+
+import org.xtext.example.mydsl1.services.MyDsl1GrammarAccess;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("all")
+public class MyDsl1ParsetreeConstructor extends AbstractParseTreeConstructor {
+		
+	@Inject
+	private MyDsl1GrammarAccess grammarAccess;
+	
+	@Override
+	protected AbstractToken getRootToken(IEObjectConsumer inst) {
+		return new ThisRootNode(inst);	
+	}
+	
+protected class ThisRootNode extends RootToken {
+	public ThisRootNode(IEObjectConsumer inst) {
+		super(inst);
+	}
+	
+	@Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_Group(this, this, 0, inst);
+			case 1: return new Expression_Alternatives(this, this, 1, inst);
+			case 2: return new Term_Alternatives(this, this, 2, inst);
+			case 3: return new Product_Alternatives(this, this, 3, inst);
+			case 4: return new Power_Alternatives(this, this, 4, inst);
+			case 5: return new Unary_Alternatives(this, this, 5, inst);
+			case 6: return new BooleanExpression_Alternatives(this, this, 6, inst);
+			case 7: return new TermExpression_Group(this, this, 7, inst);
+			case 8: return new TermExpression2_Group(this, this, 8, inst);
+			case 9: return new ProductExpression_Group(this, this, 9, inst);
+			case 10: return new ProductExpression2_Group(this, this, 10, inst);
+			case 11: return new CompareExpression_Group(this, this, 11, inst);
+			case 12: return new PowerExpression_Group(this, this, 12, inst);
+			case 13: return new BooleanOperatorExpression_Group(this, this, 13, inst);
+			case 14: return new NotExpression_Group(this, this, 14, inst);
+			case 15: return new NegativeExpression_Group(this, this, 15, inst);
+			case 16: return new IfElseExpression_Group(this, this, 16, inst);
+			case 17: return new Function_Group(this, this, 17, inst);
+			case 18: return new Parenthesis_Group(this, this, 18, inst);
+			case 19: return new Literal_Impl_Group(this, this, 19, inst);
+			case 20: return new StringLiteral_Group(this, this, 20, inst);
+			case 21: return new BoolLiteral_Group(this, this, 21, inst);
+			case 22: return new IntLiteral_Group(this, this, 22, inst);
+			case 23: return new DoubleLiteral_Group(this, this, 23, inst);
+			case 24: return new FormalParameter_Group(this, this, 24, inst);
+			case 25: return new ProbabilityMassFunction_Group(this, this, 25, inst);
+			case 26: return new BoxedPDF_Group(this, this, 26, inst);
+			case 27: return new NormalDistribution_Group(this, this, 27, inst);
+			case 28: return new ExponentialDistribution_Group(this, this, 28, inst);
+			case 29: return new Sample_Group(this, this, 29, inst);
+			case 30: return new EObject_Group(this, this, 30, inst);
+			case 31: return new ContinuousSample_Group(this, this, 31, inst);
+			default: return null;
+		}	
+	}	
+}
+	
+
+/************ begin Rule ExplicitFunction ****************
+ *
+ * ExplicitFunction:
+ * 
+ * 	{ExplicitFunction} "ExplicitFunction" "{" ("specification" specification=EString)? ("expression"
+ * 
+ * 	expression=Expression)? "}";
+ *
+ **/
+
+// {ExplicitFunction} "ExplicitFunction" "{" ("specification" specification=EString)? ("expression" expression=Expression)?
+// 
+// "}"
+protected class ExplicitFunction_Group extends GroupToken {
+	
+	public ExplicitFunction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExplicitFunctionAccess().getExplicitFunctionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {ExplicitFunction}
+protected class ExplicitFunction_ExplicitFunctionAction_0 extends ActionToken  {
+
+	public ExplicitFunction_ExplicitFunctionAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getExplicitFunctionAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "ExplicitFunction"
+protected class ExplicitFunction_ExplicitFunctionKeyword_1 extends KeywordToken  {
+	
+	public ExplicitFunction_ExplicitFunctionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getExplicitFunctionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_ExplicitFunctionAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ExplicitFunction_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ExplicitFunction_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_ExplicitFunctionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("specification" specification=EString)?
+protected class ExplicitFunction_Group_3 extends GroupToken {
+	
+	public ExplicitFunction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_SpecificationAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "specification"
+protected class ExplicitFunction_SpecificationKeyword_3_0 extends KeywordToken  {
+	
+	public ExplicitFunction_SpecificationKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getSpecificationKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// specification=EString
+protected class ExplicitFunction_SpecificationAssignment_3_1 extends AssignmentToken  {
+	
+	public ExplicitFunction_SpecificationAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getSpecificationAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_SpecificationKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("specification",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("specification");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExplicitFunctionAccess().getSpecificationEStringParserRuleCall_3_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getExplicitFunctionAccess().getSpecificationEStringParserRuleCall_3_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+
+// ("expression" expression=Expression)?
+protected class ExplicitFunction_Group_4 extends GroupToken {
+	
+	public ExplicitFunction_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_ExpressionAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "expression"
+protected class ExplicitFunction_ExpressionKeyword_4_0 extends KeywordToken  {
+	
+	public ExplicitFunction_ExpressionKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getExpressionKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExplicitFunction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// expression=Expression
+protected class ExplicitFunction_ExpressionAssignment_4_1 extends AssignmentToken  {
+	
+	public ExplicitFunction_ExpressionAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getExpressionAssignment_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Expression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("expression",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("expression");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getExplicitFunctionAccess().getExpressionExpressionParserRuleCall_4_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ExplicitFunction_ExpressionKeyword_4_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ExplicitFunction_RightCurlyBracketKeyword_5 extends KeywordToken  {
+	
+	public ExplicitFunction_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExplicitFunctionAccess().getRightCurlyBracketKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExplicitFunction_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExplicitFunction_Group_3(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ExplicitFunction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExplicitFunction ****************/
+
+
+/************ begin Rule Expression ****************
+ *
+ * Expression:
+ * 
+ * 	TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression
+ * 
+ * 	| NegativeExpression | IfElseExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral |
+ * 
+ * 	IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+ * 
+ * 	ExponentialDistribution;
+ *
+ **/
+
+// TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression |
+// 
+// NegativeExpression | IfElseExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral |
+// 
+// IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+// 
+// ExponentialDistribution
+protected class Expression_Alternatives extends AlternativesToken {
+
+	public Expression_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Expression_TermExpressionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Expression_ProductExpressionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Expression_CompareExpressionParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new Expression_PowerExpressionParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new Expression_BooleanOperatorExpressionParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new Expression_NotExpressionParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new Expression_NegativeExpressionParserRuleCall_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new Expression_IfElseExpressionParserRuleCall_7(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new Expression_FunctionParserRuleCall_8(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new Expression_ParenthesisParserRuleCall_9(lastRuleCallOrigin, this, 9, inst);
+			case 10: return new Expression_Literal_ImplParserRuleCall_10(lastRuleCallOrigin, this, 10, inst);
+			case 11: return new Expression_StringLiteralParserRuleCall_11(lastRuleCallOrigin, this, 11, inst);
+			case 12: return new Expression_BoolLiteralParserRuleCall_12(lastRuleCallOrigin, this, 12, inst);
+			case 13: return new Expression_IntLiteralParserRuleCall_13(lastRuleCallOrigin, this, 13, inst);
+			case 14: return new Expression_DoubleLiteralParserRuleCall_14(lastRuleCallOrigin, this, 14, inst);
+			case 15: return new Expression_FormalParameterParserRuleCall_15(lastRuleCallOrigin, this, 15, inst);
+			case 16: return new Expression_ProbabilityMassFunctionParserRuleCall_16(lastRuleCallOrigin, this, 16, inst);
+			case 17: return new Expression_BoxedPDFParserRuleCall_17(lastRuleCallOrigin, this, 17, inst);
+			case 18: return new Expression_NormalDistributionParserRuleCall_18(lastRuleCallOrigin, this, 18, inst);
+			case 19: return new Expression_ExponentialDistributionParserRuleCall_19(lastRuleCallOrigin, this, 19, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBooleanOperatorExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getCompareExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getIfElseExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getTermExpression2Rule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// TermExpression
+protected class Expression_TermExpressionParserRuleCall_0 extends RuleCallToken {
+	
+	public Expression_TermExpressionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getTermExpressionParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getTermExpression2Rule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(TermExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProductExpression
+protected class Expression_ProductExpressionParserRuleCall_1 extends RuleCallToken {
+	
+	public Expression_ProductExpressionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getProductExpressionParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProductExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CompareExpression
+protected class Expression_CompareExpressionParserRuleCall_2 extends RuleCallToken {
+	
+	public Expression_CompareExpressionParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getCompareExpressionParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompareExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CompareExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// PowerExpression
+protected class Expression_PowerExpressionParserRuleCall_3 extends RuleCallToken {
+	
+	public Expression_PowerExpressionParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getPowerExpressionParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(PowerExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BooleanOperatorExpression
+protected class Expression_BooleanOperatorExpressionParserRuleCall_4 extends RuleCallToken {
+	
+	public Expression_BooleanOperatorExpressionParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBooleanOperatorExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BooleanOperatorExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NotExpression
+protected class Expression_NotExpressionParserRuleCall_5 extends RuleCallToken {
+	
+	public Expression_NotExpressionParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getNotExpressionParserRuleCall_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NotExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NegativeExpression
+protected class Expression_NegativeExpressionParserRuleCall_6 extends RuleCallToken {
+	
+	public Expression_NegativeExpressionParserRuleCall_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getNegativeExpressionParserRuleCall_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NegativeExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// IfElseExpression
+protected class Expression_IfElseExpressionParserRuleCall_7 extends RuleCallToken {
+	
+	public Expression_IfElseExpressionParserRuleCall_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getIfElseExpressionParserRuleCall_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IfElseExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIfElseExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(IfElseExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Function
+protected class Expression_FunctionParserRuleCall_8 extends RuleCallToken {
+	
+	public Expression_FunctionParserRuleCall_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getFunctionParserRuleCall_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Function_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Parenthesis
+protected class Expression_ParenthesisParserRuleCall_9 extends RuleCallToken {
+	
+	public Expression_ParenthesisParserRuleCall_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getParenthesisParserRuleCall_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Parenthesis_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Literal_Impl
+protected class Expression_Literal_ImplParserRuleCall_10 extends RuleCallToken {
+	
+	public Expression_Literal_ImplParserRuleCall_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getLiteral_ImplParserRuleCall_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Literal_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Literal_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// StringLiteral
+protected class Expression_StringLiteralParserRuleCall_11 extends RuleCallToken {
+	
+	public Expression_StringLiteralParserRuleCall_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getStringLiteralParserRuleCall_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(StringLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoolLiteral
+protected class Expression_BoolLiteralParserRuleCall_12 extends RuleCallToken {
+	
+	public Expression_BoolLiteralParserRuleCall_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getBoolLiteralParserRuleCall_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoolLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoolLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// IntLiteral
+protected class Expression_IntLiteralParserRuleCall_13 extends RuleCallToken {
+	
+	public Expression_IntLiteralParserRuleCall_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getIntLiteralParserRuleCall_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(IntLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// DoubleLiteral
+protected class Expression_DoubleLiteralParserRuleCall_14 extends RuleCallToken {
+	
+	public Expression_DoubleLiteralParserRuleCall_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getDoubleLiteralParserRuleCall_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(DoubleLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// FormalParameter
+protected class Expression_FormalParameterParserRuleCall_15 extends RuleCallToken {
+	
+	public Expression_FormalParameterParserRuleCall_15(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getFormalParameterParserRuleCall_15();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(FormalParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProbabilityMassFunction
+protected class Expression_ProbabilityMassFunctionParserRuleCall_16 extends RuleCallToken {
+	
+	public Expression_ProbabilityMassFunctionParserRuleCall_16(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getProbabilityMassFunctionParserRuleCall_16();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProbabilityMassFunction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoxedPDF
+protected class Expression_BoxedPDFParserRuleCall_17 extends RuleCallToken {
+	
+	public Expression_BoxedPDFParserRuleCall_17(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getBoxedPDFParserRuleCall_17();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoxedPDF_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NormalDistribution
+protected class Expression_NormalDistributionParserRuleCall_18 extends RuleCallToken {
+	
+	public Expression_NormalDistributionParserRuleCall_18(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getNormalDistributionParserRuleCall_18();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NormalDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExponentialDistribution
+protected class Expression_ExponentialDistributionParserRuleCall_19 extends RuleCallToken {
+	
+	public Expression_ExponentialDistributionParserRuleCall_19(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExpressionAccess().getExponentialDistributionParserRuleCall_19();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExponentialDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule Expression ****************/
+
+
+/************ begin Rule Term ****************
+ *
+ * Term:
+ * 
+ * 	TermExpression | ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis |
+ * 
+ * 	Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction |
+ * 
+ * 	BoxedPDF | NormalDistribution | ExponentialDistribution;
+ *
+ **/
+
+// TermExpression | ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis |
+// 
+// Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction |
+// 
+// BoxedPDF | NormalDistribution | ExponentialDistribution
+protected class Term_Alternatives extends AlternativesToken {
+
+	public Term_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getTermAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Term_TermExpressionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Term_ProductExpressionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Term_PowerExpressionParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new Term_NotExpressionParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new Term_NegativeExpressionParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new Term_FunctionParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new Term_ParenthesisParserRuleCall_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new Term_Literal_ImplParserRuleCall_7(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new Term_StringLiteralParserRuleCall_8(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new Term_BoolLiteralParserRuleCall_9(lastRuleCallOrigin, this, 9, inst);
+			case 10: return new Term_IntLiteralParserRuleCall_10(lastRuleCallOrigin, this, 10, inst);
+			case 11: return new Term_DoubleLiteralParserRuleCall_11(lastRuleCallOrigin, this, 11, inst);
+			case 12: return new Term_FormalParameterParserRuleCall_12(lastRuleCallOrigin, this, 12, inst);
+			case 13: return new Term_ProbabilityMassFunctionParserRuleCall_13(lastRuleCallOrigin, this, 13, inst);
+			case 14: return new Term_BoxedPDFParserRuleCall_14(lastRuleCallOrigin, this, 14, inst);
+			case 15: return new Term_NormalDistributionParserRuleCall_15(lastRuleCallOrigin, this, 15, inst);
+			case 16: return new Term_ExponentialDistributionParserRuleCall_16(lastRuleCallOrigin, this, 16, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getTermExpression2Rule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// TermExpression
+protected class Term_TermExpressionParserRuleCall_0 extends RuleCallToken {
+	
+	public Term_TermExpressionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getTermExpressionParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getTermExpression2Rule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(TermExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProductExpression
+protected class Term_ProductExpressionParserRuleCall_1 extends RuleCallToken {
+	
+	public Term_ProductExpressionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getProductExpressionParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProductExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// PowerExpression
+protected class Term_PowerExpressionParserRuleCall_2 extends RuleCallToken {
+	
+	public Term_PowerExpressionParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getPowerExpressionParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(PowerExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NotExpression
+protected class Term_NotExpressionParserRuleCall_3 extends RuleCallToken {
+	
+	public Term_NotExpressionParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getNotExpressionParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NotExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NegativeExpression
+protected class Term_NegativeExpressionParserRuleCall_4 extends RuleCallToken {
+	
+	public Term_NegativeExpressionParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getNegativeExpressionParserRuleCall_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NegativeExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Function
+protected class Term_FunctionParserRuleCall_5 extends RuleCallToken {
+	
+	public Term_FunctionParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getFunctionParserRuleCall_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Function_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Parenthesis
+protected class Term_ParenthesisParserRuleCall_6 extends RuleCallToken {
+	
+	public Term_ParenthesisParserRuleCall_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getParenthesisParserRuleCall_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Parenthesis_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Literal_Impl
+protected class Term_Literal_ImplParserRuleCall_7 extends RuleCallToken {
+	
+	public Term_Literal_ImplParserRuleCall_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getLiteral_ImplParserRuleCall_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Literal_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Literal_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// StringLiteral
+protected class Term_StringLiteralParserRuleCall_8 extends RuleCallToken {
+	
+	public Term_StringLiteralParserRuleCall_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getStringLiteralParserRuleCall_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(StringLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoolLiteral
+protected class Term_BoolLiteralParserRuleCall_9 extends RuleCallToken {
+	
+	public Term_BoolLiteralParserRuleCall_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getBoolLiteralParserRuleCall_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoolLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoolLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// IntLiteral
+protected class Term_IntLiteralParserRuleCall_10 extends RuleCallToken {
+	
+	public Term_IntLiteralParserRuleCall_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getIntLiteralParserRuleCall_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(IntLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// DoubleLiteral
+protected class Term_DoubleLiteralParserRuleCall_11 extends RuleCallToken {
+	
+	public Term_DoubleLiteralParserRuleCall_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getDoubleLiteralParserRuleCall_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(DoubleLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// FormalParameter
+protected class Term_FormalParameterParserRuleCall_12 extends RuleCallToken {
+	
+	public Term_FormalParameterParserRuleCall_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getFormalParameterParserRuleCall_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(FormalParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProbabilityMassFunction
+protected class Term_ProbabilityMassFunctionParserRuleCall_13 extends RuleCallToken {
+	
+	public Term_ProbabilityMassFunctionParserRuleCall_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getProbabilityMassFunctionParserRuleCall_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProbabilityMassFunction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoxedPDF
+protected class Term_BoxedPDFParserRuleCall_14 extends RuleCallToken {
+	
+	public Term_BoxedPDFParserRuleCall_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getBoxedPDFParserRuleCall_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoxedPDF_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NormalDistribution
+protected class Term_NormalDistributionParserRuleCall_15 extends RuleCallToken {
+	
+	public Term_NormalDistributionParserRuleCall_15(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getNormalDistributionParserRuleCall_15();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NormalDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExponentialDistribution
+protected class Term_ExponentialDistributionParserRuleCall_16 extends RuleCallToken {
+	
+	public Term_ExponentialDistributionParserRuleCall_16(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermAccess().getExponentialDistributionParserRuleCall_16();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExponentialDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule Term ****************/
+
+
+/************ begin Rule Product ****************
+ *
+ * Product:
+ * 
+ * 	ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl |
+ * 
+ * 	StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF |
+ * 
+ * 	NormalDistribution | ExponentialDistribution;
+ *
+ **/
+
+// ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl |
+// 
+// StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF |
+// 
+// NormalDistribution | ExponentialDistribution
+protected class Product_Alternatives extends AlternativesToken {
+
+	public Product_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getProductAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Product_ProductExpressionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Product_PowerExpressionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Product_NotExpressionParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new Product_NegativeExpressionParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new Product_FunctionParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new Product_ParenthesisParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new Product_Literal_ImplParserRuleCall_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new Product_StringLiteralParserRuleCall_7(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new Product_BoolLiteralParserRuleCall_8(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new Product_IntLiteralParserRuleCall_9(lastRuleCallOrigin, this, 9, inst);
+			case 10: return new Product_DoubleLiteralParserRuleCall_10(lastRuleCallOrigin, this, 10, inst);
+			case 11: return new Product_FormalParameterParserRuleCall_11(lastRuleCallOrigin, this, 11, inst);
+			case 12: return new Product_ProbabilityMassFunctionParserRuleCall_12(lastRuleCallOrigin, this, 12, inst);
+			case 13: return new Product_BoxedPDFParserRuleCall_13(lastRuleCallOrigin, this, 13, inst);
+			case 14: return new Product_NormalDistributionParserRuleCall_14(lastRuleCallOrigin, this, 14, inst);
+			case 15: return new Product_ExponentialDistributionParserRuleCall_15(lastRuleCallOrigin, this, 15, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// ProductExpression
+protected class Product_ProductExpressionParserRuleCall_0 extends RuleCallToken {
+	
+	public Product_ProductExpressionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getProductExpressionParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProductExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// PowerExpression
+protected class Product_PowerExpressionParserRuleCall_1 extends RuleCallToken {
+	
+	public Product_PowerExpressionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getPowerExpressionParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(PowerExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NotExpression
+protected class Product_NotExpressionParserRuleCall_2 extends RuleCallToken {
+	
+	public Product_NotExpressionParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getNotExpressionParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NotExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NegativeExpression
+protected class Product_NegativeExpressionParserRuleCall_3 extends RuleCallToken {
+	
+	public Product_NegativeExpressionParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getNegativeExpressionParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NegativeExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Function
+protected class Product_FunctionParserRuleCall_4 extends RuleCallToken {
+	
+	public Product_FunctionParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getFunctionParserRuleCall_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Function_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Parenthesis
+protected class Product_ParenthesisParserRuleCall_5 extends RuleCallToken {
+	
+	public Product_ParenthesisParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getParenthesisParserRuleCall_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Parenthesis_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Literal_Impl
+protected class Product_Literal_ImplParserRuleCall_6 extends RuleCallToken {
+	
+	public Product_Literal_ImplParserRuleCall_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getLiteral_ImplParserRuleCall_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Literal_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Literal_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// StringLiteral
+protected class Product_StringLiteralParserRuleCall_7 extends RuleCallToken {
+	
+	public Product_StringLiteralParserRuleCall_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getStringLiteralParserRuleCall_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(StringLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoolLiteral
+protected class Product_BoolLiteralParserRuleCall_8 extends RuleCallToken {
+	
+	public Product_BoolLiteralParserRuleCall_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getBoolLiteralParserRuleCall_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoolLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoolLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// IntLiteral
+protected class Product_IntLiteralParserRuleCall_9 extends RuleCallToken {
+	
+	public Product_IntLiteralParserRuleCall_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getIntLiteralParserRuleCall_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(IntLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// DoubleLiteral
+protected class Product_DoubleLiteralParserRuleCall_10 extends RuleCallToken {
+	
+	public Product_DoubleLiteralParserRuleCall_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getDoubleLiteralParserRuleCall_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(DoubleLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// FormalParameter
+protected class Product_FormalParameterParserRuleCall_11 extends RuleCallToken {
+	
+	public Product_FormalParameterParserRuleCall_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getFormalParameterParserRuleCall_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(FormalParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProbabilityMassFunction
+protected class Product_ProbabilityMassFunctionParserRuleCall_12 extends RuleCallToken {
+	
+	public Product_ProbabilityMassFunctionParserRuleCall_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getProbabilityMassFunctionParserRuleCall_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProbabilityMassFunction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoxedPDF
+protected class Product_BoxedPDFParserRuleCall_13 extends RuleCallToken {
+	
+	public Product_BoxedPDFParserRuleCall_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getBoxedPDFParserRuleCall_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoxedPDF_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NormalDistribution
+protected class Product_NormalDistributionParserRuleCall_14 extends RuleCallToken {
+	
+	public Product_NormalDistributionParserRuleCall_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getNormalDistributionParserRuleCall_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NormalDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExponentialDistribution
+protected class Product_ExponentialDistributionParserRuleCall_15 extends RuleCallToken {
+	
+	public Product_ExponentialDistributionParserRuleCall_15(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductAccess().getExponentialDistributionParserRuleCall_15();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExponentialDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule Product ****************/
+
+
+/************ begin Rule Power ****************
+ *
+ * Power:
+ * 
+ * 	PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral |
+ * 
+ * 	BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution
+ * 
+ * 	| ExponentialDistribution;
+ *
+ **/
+
+// PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral |
+// 
+// BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+// 
+// ExponentialDistribution
+protected class Power_Alternatives extends AlternativesToken {
+
+	public Power_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getPowerAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Power_PowerExpressionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Power_NotExpressionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Power_NegativeExpressionParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new Power_FunctionParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new Power_ParenthesisParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new Power_Literal_ImplParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new Power_StringLiteralParserRuleCall_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new Power_BoolLiteralParserRuleCall_7(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new Power_IntLiteralParserRuleCall_8(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new Power_DoubleLiteralParserRuleCall_9(lastRuleCallOrigin, this, 9, inst);
+			case 10: return new Power_FormalParameterParserRuleCall_10(lastRuleCallOrigin, this, 10, inst);
+			case 11: return new Power_ProbabilityMassFunctionParserRuleCall_11(lastRuleCallOrigin, this, 11, inst);
+			case 12: return new Power_BoxedPDFParserRuleCall_12(lastRuleCallOrigin, this, 12, inst);
+			case 13: return new Power_NormalDistributionParserRuleCall_13(lastRuleCallOrigin, this, 13, inst);
+			case 14: return new Power_ExponentialDistributionParserRuleCall_14(lastRuleCallOrigin, this, 14, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// PowerExpression
+protected class Power_PowerExpressionParserRuleCall_0 extends RuleCallToken {
+	
+	public Power_PowerExpressionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getPowerExpressionParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(PowerExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NotExpression
+protected class Power_NotExpressionParserRuleCall_1 extends RuleCallToken {
+	
+	public Power_NotExpressionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getNotExpressionParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NotExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NegativeExpression
+protected class Power_NegativeExpressionParserRuleCall_2 extends RuleCallToken {
+	
+	public Power_NegativeExpressionParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getNegativeExpressionParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NegativeExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Function
+protected class Power_FunctionParserRuleCall_3 extends RuleCallToken {
+	
+	public Power_FunctionParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getFunctionParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Function_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Parenthesis
+protected class Power_ParenthesisParserRuleCall_4 extends RuleCallToken {
+	
+	public Power_ParenthesisParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getParenthesisParserRuleCall_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Parenthesis_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Literal_Impl
+protected class Power_Literal_ImplParserRuleCall_5 extends RuleCallToken {
+	
+	public Power_Literal_ImplParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getLiteral_ImplParserRuleCall_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Literal_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Literal_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// StringLiteral
+protected class Power_StringLiteralParserRuleCall_6 extends RuleCallToken {
+	
+	public Power_StringLiteralParserRuleCall_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getStringLiteralParserRuleCall_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(StringLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoolLiteral
+protected class Power_BoolLiteralParserRuleCall_7 extends RuleCallToken {
+	
+	public Power_BoolLiteralParserRuleCall_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getBoolLiteralParserRuleCall_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoolLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoolLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// IntLiteral
+protected class Power_IntLiteralParserRuleCall_8 extends RuleCallToken {
+	
+	public Power_IntLiteralParserRuleCall_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getIntLiteralParserRuleCall_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(IntLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// DoubleLiteral
+protected class Power_DoubleLiteralParserRuleCall_9 extends RuleCallToken {
+	
+	public Power_DoubleLiteralParserRuleCall_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getDoubleLiteralParserRuleCall_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(DoubleLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// FormalParameter
+protected class Power_FormalParameterParserRuleCall_10 extends RuleCallToken {
+	
+	public Power_FormalParameterParserRuleCall_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getFormalParameterParserRuleCall_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(FormalParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProbabilityMassFunction
+protected class Power_ProbabilityMassFunctionParserRuleCall_11 extends RuleCallToken {
+	
+	public Power_ProbabilityMassFunctionParserRuleCall_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getProbabilityMassFunctionParserRuleCall_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProbabilityMassFunction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoxedPDF
+protected class Power_BoxedPDFParserRuleCall_12 extends RuleCallToken {
+	
+	public Power_BoxedPDFParserRuleCall_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getBoxedPDFParserRuleCall_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoxedPDF_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NormalDistribution
+protected class Power_NormalDistributionParserRuleCall_13 extends RuleCallToken {
+	
+	public Power_NormalDistributionParserRuleCall_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getNormalDistributionParserRuleCall_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NormalDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExponentialDistribution
+protected class Power_ExponentialDistributionParserRuleCall_14 extends RuleCallToken {
+	
+	public Power_ExponentialDistributionParserRuleCall_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getPowerAccess().getExponentialDistributionParserRuleCall_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExponentialDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule Power ****************/
+
+
+/************ begin Rule Unary ****************
+ *
+ * Unary:
+ * 
+ * 	NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral
+ * 
+ * 	| DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+ * 
+ * 	ExponentialDistribution;
+ *
+ **/
+
+// NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral |
+// 
+// DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution
+protected class Unary_Alternatives extends AlternativesToken {
+
+	public Unary_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Unary_NotExpressionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Unary_NegativeExpressionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Unary_FunctionParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new Unary_ParenthesisParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new Unary_Literal_ImplParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new Unary_StringLiteralParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new Unary_BoolLiteralParserRuleCall_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new Unary_IntLiteralParserRuleCall_7(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new Unary_DoubleLiteralParserRuleCall_8(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new Unary_FormalParameterParserRuleCall_9(lastRuleCallOrigin, this, 9, inst);
+			case 10: return new Unary_ProbabilityMassFunctionParserRuleCall_10(lastRuleCallOrigin, this, 10, inst);
+			case 11: return new Unary_BoxedPDFParserRuleCall_11(lastRuleCallOrigin, this, 11, inst);
+			case 12: return new Unary_NormalDistributionParserRuleCall_12(lastRuleCallOrigin, this, 12, inst);
+			case 13: return new Unary_ExponentialDistributionParserRuleCall_13(lastRuleCallOrigin, this, 13, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// NotExpression
+protected class Unary_NotExpressionParserRuleCall_0 extends RuleCallToken {
+	
+	public Unary_NotExpressionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getNotExpressionParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NotExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NegativeExpression
+protected class Unary_NegativeExpressionParserRuleCall_1 extends RuleCallToken {
+	
+	public Unary_NegativeExpressionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getNegativeExpressionParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NegativeExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Function
+protected class Unary_FunctionParserRuleCall_2 extends RuleCallToken {
+	
+	public Unary_FunctionParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getFunctionParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Function_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Parenthesis
+protected class Unary_ParenthesisParserRuleCall_3 extends RuleCallToken {
+	
+	public Unary_ParenthesisParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getParenthesisParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Parenthesis_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Literal_Impl
+protected class Unary_Literal_ImplParserRuleCall_4 extends RuleCallToken {
+	
+	public Unary_Literal_ImplParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getLiteral_ImplParserRuleCall_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Literal_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Literal_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// StringLiteral
+protected class Unary_StringLiteralParserRuleCall_5 extends RuleCallToken {
+	
+	public Unary_StringLiteralParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getStringLiteralParserRuleCall_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(StringLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoolLiteral
+protected class Unary_BoolLiteralParserRuleCall_6 extends RuleCallToken {
+	
+	public Unary_BoolLiteralParserRuleCall_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getBoolLiteralParserRuleCall_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoolLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoolLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// IntLiteral
+protected class Unary_IntLiteralParserRuleCall_7 extends RuleCallToken {
+	
+	public Unary_IntLiteralParserRuleCall_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getIntLiteralParserRuleCall_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(IntLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// DoubleLiteral
+protected class Unary_DoubleLiteralParserRuleCall_8 extends RuleCallToken {
+	
+	public Unary_DoubleLiteralParserRuleCall_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getDoubleLiteralParserRuleCall_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(DoubleLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// FormalParameter
+protected class Unary_FormalParameterParserRuleCall_9 extends RuleCallToken {
+	
+	public Unary_FormalParameterParserRuleCall_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getFormalParameterParserRuleCall_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(FormalParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProbabilityMassFunction
+protected class Unary_ProbabilityMassFunctionParserRuleCall_10 extends RuleCallToken {
+	
+	public Unary_ProbabilityMassFunctionParserRuleCall_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getProbabilityMassFunctionParserRuleCall_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProbabilityMassFunction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoxedPDF
+protected class Unary_BoxedPDFParserRuleCall_11 extends RuleCallToken {
+	
+	public Unary_BoxedPDFParserRuleCall_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getBoxedPDFParserRuleCall_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoxedPDF_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NormalDistribution
+protected class Unary_NormalDistributionParserRuleCall_12 extends RuleCallToken {
+	
+	public Unary_NormalDistributionParserRuleCall_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getNormalDistributionParserRuleCall_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NormalDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExponentialDistribution
+protected class Unary_ExponentialDistributionParserRuleCall_13 extends RuleCallToken {
+	
+	public Unary_ExponentialDistributionParserRuleCall_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getUnaryAccess().getExponentialDistributionParserRuleCall_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExponentialDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule Unary ****************/
+
+
+/************ begin Rule BooleanExpression ****************
+ *
+ * BooleanExpression:
+ * 
+ * 	TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression
+ * 
+ * 	| NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral |
+ * 
+ * 	DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+ *
+ **/
+
+// TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression |
+// 
+// NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral
+// 
+// | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution
+protected class BooleanExpression_Alternatives extends AlternativesToken {
+
+	public BooleanExpression_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanExpression_TermExpressionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BooleanExpression_ProductExpressionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BooleanExpression_CompareExpressionParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new BooleanExpression_PowerExpressionParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new BooleanExpression_BooleanOperatorExpressionParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new BooleanExpression_NotExpressionParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new BooleanExpression_NegativeExpressionParserRuleCall_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new BooleanExpression_FunctionParserRuleCall_7(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new BooleanExpression_ParenthesisParserRuleCall_8(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new BooleanExpression_Literal_ImplParserRuleCall_9(lastRuleCallOrigin, this, 9, inst);
+			case 10: return new BooleanExpression_StringLiteralParserRuleCall_10(lastRuleCallOrigin, this, 10, inst);
+			case 11: return new BooleanExpression_BoolLiteralParserRuleCall_11(lastRuleCallOrigin, this, 11, inst);
+			case 12: return new BooleanExpression_IntLiteralParserRuleCall_12(lastRuleCallOrigin, this, 12, inst);
+			case 13: return new BooleanExpression_DoubleLiteralParserRuleCall_13(lastRuleCallOrigin, this, 13, inst);
+			case 14: return new BooleanExpression_FormalParameterParserRuleCall_14(lastRuleCallOrigin, this, 14, inst);
+			case 15: return new BooleanExpression_ProbabilityMassFunctionParserRuleCall_15(lastRuleCallOrigin, this, 15, inst);
+			case 16: return new BooleanExpression_BoxedPDFParserRuleCall_16(lastRuleCallOrigin, this, 16, inst);
+			case 17: return new BooleanExpression_NormalDistributionParserRuleCall_17(lastRuleCallOrigin, this, 17, inst);
+			case 18: return new BooleanExpression_ExponentialDistributionParserRuleCall_18(lastRuleCallOrigin, this, 18, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBooleanOperatorExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getCompareExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getTermExpression2Rule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// TermExpression
+protected class BooleanExpression_TermExpressionParserRuleCall_0 extends RuleCallToken {
+	
+	public BooleanExpression_TermExpressionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getTermExpressionParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getTermExpression2Rule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(TermExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProductExpression
+protected class BooleanExpression_ProductExpressionParserRuleCall_1 extends RuleCallToken {
+	
+	public BooleanExpression_ProductExpressionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getProductExpressionParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProductExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CompareExpression
+protected class BooleanExpression_CompareExpressionParserRuleCall_2 extends RuleCallToken {
+	
+	public BooleanExpression_CompareExpressionParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getCompareExpressionParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompareExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CompareExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// PowerExpression
+protected class BooleanExpression_PowerExpressionParserRuleCall_3 extends RuleCallToken {
+	
+	public BooleanExpression_PowerExpressionParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getPowerExpressionParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(PowerExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BooleanOperatorExpression
+protected class BooleanExpression_BooleanOperatorExpressionParserRuleCall_4 extends RuleCallToken {
+	
+	public BooleanExpression_BooleanOperatorExpressionParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBooleanOperatorExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BooleanOperatorExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NotExpression
+protected class BooleanExpression_NotExpressionParserRuleCall_5 extends RuleCallToken {
+	
+	public BooleanExpression_NotExpressionParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getNotExpressionParserRuleCall_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NotExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NegativeExpression
+protected class BooleanExpression_NegativeExpressionParserRuleCall_6 extends RuleCallToken {
+	
+	public BooleanExpression_NegativeExpressionParserRuleCall_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getNegativeExpressionParserRuleCall_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NegativeExpression_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Function
+protected class BooleanExpression_FunctionParserRuleCall_7 extends RuleCallToken {
+	
+	public BooleanExpression_FunctionParserRuleCall_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getFunctionParserRuleCall_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Function_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Parenthesis
+protected class BooleanExpression_ParenthesisParserRuleCall_8 extends RuleCallToken {
+	
+	public BooleanExpression_ParenthesisParserRuleCall_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getParenthesisParserRuleCall_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Parenthesis_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// Literal_Impl
+protected class BooleanExpression_Literal_ImplParserRuleCall_9 extends RuleCallToken {
+	
+	public BooleanExpression_Literal_ImplParserRuleCall_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getLiteral_ImplParserRuleCall_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Literal_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(Literal_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// StringLiteral
+protected class BooleanExpression_StringLiteralParserRuleCall_10 extends RuleCallToken {
+	
+	public BooleanExpression_StringLiteralParserRuleCall_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getStringLiteralParserRuleCall_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(StringLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoolLiteral
+protected class BooleanExpression_BoolLiteralParserRuleCall_11 extends RuleCallToken {
+	
+	public BooleanExpression_BoolLiteralParserRuleCall_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getBoolLiteralParserRuleCall_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoolLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoolLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// IntLiteral
+protected class BooleanExpression_IntLiteralParserRuleCall_12 extends RuleCallToken {
+	
+	public BooleanExpression_IntLiteralParserRuleCall_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getIntLiteralParserRuleCall_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(IntLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// DoubleLiteral
+protected class BooleanExpression_DoubleLiteralParserRuleCall_13 extends RuleCallToken {
+	
+	public BooleanExpression_DoubleLiteralParserRuleCall_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getDoubleLiteralParserRuleCall_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(DoubleLiteral_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// FormalParameter
+protected class BooleanExpression_FormalParameterParserRuleCall_14 extends RuleCallToken {
+	
+	public BooleanExpression_FormalParameterParserRuleCall_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getFormalParameterParserRuleCall_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(FormalParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProbabilityMassFunction
+protected class BooleanExpression_ProbabilityMassFunctionParserRuleCall_15 extends RuleCallToken {
+	
+	public BooleanExpression_ProbabilityMassFunctionParserRuleCall_15(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getProbabilityMassFunctionParserRuleCall_15();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProbabilityMassFunction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoxedPDF
+protected class BooleanExpression_BoxedPDFParserRuleCall_16 extends RuleCallToken {
+	
+	public BooleanExpression_BoxedPDFParserRuleCall_16(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getBoxedPDFParserRuleCall_16();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoxedPDF_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NormalDistribution
+protected class BooleanExpression_NormalDistributionParserRuleCall_17 extends RuleCallToken {
+	
+	public BooleanExpression_NormalDistributionParserRuleCall_17(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getNormalDistributionParserRuleCall_17();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NormalDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExponentialDistribution
+protected class BooleanExpression_ExponentialDistributionParserRuleCall_18 extends RuleCallToken {
+	
+	public BooleanExpression_ExponentialDistributionParserRuleCall_18(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getBooleanExpressionAccess().getExponentialDistributionParserRuleCall_18();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExponentialDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule BooleanExpression ****************/
+
+
+
+/************ begin Rule TermExpression ****************
+ *
+ * TermExpression:
+ * 
+ * 	"TermExpression" "{" TermExpression2 ({TermExpression.left=current} operation=TermOperations right=Product)* "}";
+ *
+ **/
+
+// "TermExpression" "{" TermExpression2 ({TermExpression.left=current} operation=TermOperations right=Product)* "}"
+protected class TermExpression_Group extends GroupToken {
+	
+	public TermExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getTermExpression2Rule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "TermExpression"
+protected class TermExpression_TermExpressionKeyword_0 extends KeywordToken  {
+	
+	public TermExpression_TermExpressionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getTermExpressionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class TermExpression_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public TermExpression_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_TermExpressionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// TermExpression2
+protected class TermExpression_TermExpression2ParserRuleCall_2 extends RuleCallToken {
+	
+	public TermExpression_TermExpression2ParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getTermExpression2ParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression2_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(checkForRecursion(TermExpression2_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, next, actIndex, inst);
+			default: return null;
+		}	
+	}	
+}
+
+// ({TermExpression.left=current} operation=TermOperations right=Product)*
+protected class TermExpression_Group_3 extends GroupToken {
+	
+	public TermExpression_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_RightAssignment_3_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// {TermExpression.left=current}
+protected class TermExpression_TermExpressionLeftAction_3_0 extends ActionToken  {
+
+	public TermExpression_TermExpressionLeftAction_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getTermExpressionLeftAction_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new TermExpression_TermExpression2ParserRuleCall_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		Object val = eObjectConsumer.getConsumable("left", false);
+		if(val == null) return null;
+		if(!eObjectConsumer.isConsumedWithLastConsumtion("left")) return null;
+		return createEObjectConsumer((EObject) val);
+	}
+}
+
+// operation=TermOperations
+protected class TermExpression_OperationAssignment_3_1 extends AssignmentToken  {
+	
+	public TermExpression_OperationAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getOperationAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_TermExpressionLeftAction_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("operation",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operation");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getTermExpressionAccess().getOperationTermOperationsParserRuleCall_3_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getTermExpressionAccess().getOperationTermOperationsParserRuleCall_3_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// right=Product
+protected class TermExpression_RightAssignment_3_2 extends AssignmentToken  {
+	
+	public TermExpression_RightAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getRightAssignment_3_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Product_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("right",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("right");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProductRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getTermExpressionAccess().getRightProductParserRuleCall_3_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new TermExpression_OperationAssignment_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class TermExpression_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public TermExpression_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getTermExpressionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new TermExpression_TermExpression2ParserRuleCall_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule TermExpression ****************/
+
+
+/************ begin Rule TermExpression2 ****************
+ *
+ * TermExpression2 returns TermExpression:
+ * 
+ * 	left=Term operation=TermOperations right=Product;
+ *
+ **/
+
+// left=Term operation=TermOperations right=Product
+protected class TermExpression2_Group extends GroupToken {
+	
+	public TermExpression2_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getTermExpression2Access().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression2_RightAssignment_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getTermExpression2Rule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// left=Term
+protected class TermExpression2_LeftAssignment_0 extends AssignmentToken  {
+	
+	public TermExpression2_LeftAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getTermExpression2Access().getLeftAssignment_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Term_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("left",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("left");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getTermRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getTermExpression2Access().getLeftTermParserRuleCall_0_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+		}	
+	}	
+}
+
+// operation=TermOperations
+protected class TermExpression2_OperationAssignment_1 extends AssignmentToken  {
+	
+	public TermExpression2_OperationAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getTermExpression2Access().getOperationAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TermExpression2_LeftAssignment_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("operation",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operation");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getTermExpression2Access().getOperationTermOperationsParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getTermExpression2Access().getOperationTermOperationsParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// right=Product
+protected class TermExpression2_RightAssignment_2 extends AssignmentToken  {
+	
+	public TermExpression2_RightAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getTermExpression2Access().getRightAssignment_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Product_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("right",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("right");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProductRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getTermExpression2Access().getRightProductParserRuleCall_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new TermExpression2_OperationAssignment_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+/************ end Rule TermExpression2 ****************/
+
+
+/************ begin Rule ProductExpression ****************
+ *
+ * ProductExpression:
+ * 
+ * 	"ProductExpression" "{" ProductExpression2 ({ProductExpression.left=current} operation=ProductOperations
+ * 
+ * 	right=Power)* "}";
+ *
+ **/
+
+// "ProductExpression" "{" ProductExpression2 ({ProductExpression.left=current} operation=ProductOperations right=Power)*
+// 
+// "}"
+protected class ProductExpression_Group extends GroupToken {
+	
+	public ProductExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ProductExpression"
+protected class ProductExpression_ProductExpressionKeyword_0 extends KeywordToken  {
+	
+	public ProductExpression_ProductExpressionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getProductExpressionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ProductExpression_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ProductExpression_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_ProductExpressionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ProductExpression2
+protected class ProductExpression_ProductExpression2ParserRuleCall_2 extends RuleCallToken {
+	
+	public ProductExpression_ProductExpression2ParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getProductExpression2ParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression2_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(checkForRecursion(ProductExpression2_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, next, actIndex, inst);
+			default: return null;
+		}	
+	}	
+}
+
+// ({ProductExpression.left=current} operation=ProductOperations right=Power)*
+protected class ProductExpression_Group_3 extends GroupToken {
+	
+	public ProductExpression_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_RightAssignment_3_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// {ProductExpression.left=current}
+protected class ProductExpression_ProductExpressionLeftAction_3_0 extends ActionToken  {
+
+	public ProductExpression_ProductExpressionLeftAction_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getProductExpressionLeftAction_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProductExpression_ProductExpression2ParserRuleCall_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		Object val = eObjectConsumer.getConsumable("left", false);
+		if(val == null) return null;
+		if(!eObjectConsumer.isConsumedWithLastConsumtion("left")) return null;
+		return createEObjectConsumer((EObject) val);
+	}
+}
+
+// operation=ProductOperations
+protected class ProductExpression_OperationAssignment_3_1 extends AssignmentToken  {
+	
+	public ProductExpression_OperationAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getOperationAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_ProductExpressionLeftAction_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("operation",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operation");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProductExpressionAccess().getOperationProductOperationsParserRuleCall_3_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getProductExpressionAccess().getOperationProductOperationsParserRuleCall_3_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// right=Power
+protected class ProductExpression_RightAssignment_3_2 extends AssignmentToken  {
+	
+	public ProductExpression_RightAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getRightAssignment_3_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Power_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("right",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("right");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getPowerRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getProductExpressionAccess().getRightPowerParserRuleCall_3_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ProductExpression_OperationAssignment_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ProductExpression_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public ProductExpression_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProductExpressionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProductExpression_ProductExpression2ParserRuleCall_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ProductExpression ****************/
+
+
+/************ begin Rule ProductExpression2 ****************
+ *
+ * ProductExpression2 returns ProductExpression:
+ * 
+ * 	left=Product operation=ProductOperations right=Power;
+ *
+ **/
+
+// left=Product operation=ProductOperations right=Power
+protected class ProductExpression2_Group extends GroupToken {
+	
+	public ProductExpression2_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProductExpression2Access().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression2_RightAssignment_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProductExpression2Rule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// left=Product
+protected class ProductExpression2_LeftAssignment_0 extends AssignmentToken  {
+	
+	public ProductExpression2_LeftAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProductExpression2Access().getLeftAssignment_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Product_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("left",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("left");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProductRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getProductExpression2Access().getLeftProductParserRuleCall_0_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, consumed);
+		}	
+	}	
+}
+
+// operation=ProductOperations
+protected class ProductExpression2_OperationAssignment_1 extends AssignmentToken  {
+	
+	public ProductExpression2_OperationAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProductExpression2Access().getOperationAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProductExpression2_LeftAssignment_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("operation",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operation");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProductExpression2Access().getOperationProductOperationsParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getProductExpression2Access().getOperationProductOperationsParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// right=Power
+protected class ProductExpression2_RightAssignment_2 extends AssignmentToken  {
+	
+	public ProductExpression2_RightAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProductExpression2Access().getRightAssignment_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Power_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("right",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("right");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getPowerRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getProductExpression2Access().getRightPowerParserRuleCall_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ProductExpression2_OperationAssignment_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+/************ end Rule ProductExpression2 ****************/
+
+
+/************ begin Rule CompareExpression ****************
+ *
+ * CompareExpression:
+ * 
+ * 	"CompareExpression" "{" "operation" operation=CompareOperations "left" left=Term "right" right=Term "}";
+ *
+ **/
+
+// "CompareExpression" "{" "operation" operation=CompareOperations "left" left=Term "right" right=Term "}"
+protected class CompareExpression_Group extends GroupToken {
+	
+	public CompareExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompareExpressionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "CompareExpression"
+protected class CompareExpression_CompareExpressionKeyword_0 extends KeywordToken  {
+	
+	public CompareExpression_CompareExpressionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getCompareExpressionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class CompareExpression_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public CompareExpression_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_CompareExpressionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "operation"
+protected class CompareExpression_OperationKeyword_2 extends KeywordToken  {
+	
+	public CompareExpression_OperationKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getOperationKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// operation=CompareOperations
+protected class CompareExpression_OperationAssignment_3 extends AssignmentToken  {
+	
+	public CompareExpression_OperationAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getOperationAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_OperationKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("operation",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operation");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCompareExpressionAccess().getOperationCompareOperationsParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCompareExpressionAccess().getOperationCompareOperationsParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "left"
+protected class CompareExpression_LeftKeyword_4 extends KeywordToken  {
+	
+	public CompareExpression_LeftKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getLeftKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_OperationAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// left=Term
+protected class CompareExpression_LeftAssignment_5 extends AssignmentToken  {
+	
+	public CompareExpression_LeftAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getLeftAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Term_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("left",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("left");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getTermRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompareExpressionAccess().getLeftTermParserRuleCall_5_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompareExpression_LeftKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "right"
+protected class CompareExpression_RightKeyword_6 extends KeywordToken  {
+	
+	public CompareExpression_RightKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getRightKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_LeftAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// right=Term
+protected class CompareExpression_RightAssignment_7 extends AssignmentToken  {
+	
+	public CompareExpression_RightAssignment_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getRightAssignment_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Term_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("right",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("right");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getTermRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompareExpressionAccess().getRightTermParserRuleCall_7_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompareExpression_RightKeyword_6(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class CompareExpression_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public CompareExpression_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompareExpressionAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompareExpression_RightAssignment_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule CompareExpression ****************/
+
+
+/************ begin Rule PowerExpression ****************
+ *
+ * PowerExpression:
+ * 
+ * 	"PowerExpression" "{" "base" base=Power "exponent" exponent=Unary "}";
+ *
+ **/
+
+// "PowerExpression" "{" "base" base=Power "exponent" exponent=Unary "}"
+protected class PowerExpression_Group extends GroupToken {
+	
+	public PowerExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getPowerExpressionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPowerExpressionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "PowerExpression"
+protected class PowerExpression_PowerExpressionKeyword_0 extends KeywordToken  {
+	
+	public PowerExpression_PowerExpressionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPowerExpressionAccess().getPowerExpressionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class PowerExpression_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public PowerExpression_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPowerExpressionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_PowerExpressionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "base"
+protected class PowerExpression_BaseKeyword_2 extends KeywordToken  {
+	
+	public PowerExpression_BaseKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPowerExpressionAccess().getBaseKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// base=Power
+protected class PowerExpression_BaseAssignment_3 extends AssignmentToken  {
+	
+	public PowerExpression_BaseAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPowerExpressionAccess().getBaseAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Power_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("base",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("base");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getPowerRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getPowerExpressionAccess().getBasePowerParserRuleCall_3_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new PowerExpression_BaseKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "exponent"
+protected class PowerExpression_ExponentKeyword_4 extends KeywordToken  {
+	
+	public PowerExpression_ExponentKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPowerExpressionAccess().getExponentKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_BaseAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// exponent=Unary
+protected class PowerExpression_ExponentAssignment_5 extends AssignmentToken  {
+	
+	public PowerExpression_ExponentAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPowerExpressionAccess().getExponentAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Unary_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("exponent",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exponent");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getUnaryRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getPowerExpressionAccess().getExponentUnaryParserRuleCall_5_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new PowerExpression_ExponentKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class PowerExpression_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public PowerExpression_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPowerExpressionAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PowerExpression_ExponentAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule PowerExpression ****************/
+
+
+/************ begin Rule BooleanOperatorExpression ****************
+ *
+ * BooleanOperatorExpression:
+ * 
+ * 	"BooleanOperatorExpression" "{" "operation" operation=BooleanOperations "left" left=BooleanExpression "right"
+ * 
+ * 	right=BooleanExpression "}";
+ *
+ **/
+
+// "BooleanOperatorExpression" "{" "operation" operation=BooleanOperations "left" left=BooleanExpression "right"
+// 
+// right=BooleanExpression "}"
+protected class BooleanOperatorExpression_Group extends GroupToken {
+	
+	public BooleanOperatorExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBooleanOperatorExpressionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "BooleanOperatorExpression"
+protected class BooleanOperatorExpression_BooleanOperatorExpressionKeyword_0 extends KeywordToken  {
+	
+	public BooleanOperatorExpression_BooleanOperatorExpressionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getBooleanOperatorExpressionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class BooleanOperatorExpression_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public BooleanOperatorExpression_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_BooleanOperatorExpressionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "operation"
+protected class BooleanOperatorExpression_OperationKeyword_2 extends KeywordToken  {
+	
+	public BooleanOperatorExpression_OperationKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getOperationKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// operation=BooleanOperations
+protected class BooleanOperatorExpression_OperationAssignment_3 extends AssignmentToken  {
+	
+	public BooleanOperatorExpression_OperationAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getOperationAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_OperationKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("operation",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("operation");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getBooleanOperatorExpressionAccess().getOperationBooleanOperationsParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getBooleanOperatorExpressionAccess().getOperationBooleanOperationsParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "left"
+protected class BooleanOperatorExpression_LeftKeyword_4 extends KeywordToken  {
+	
+	public BooleanOperatorExpression_LeftKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getLeftKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_OperationAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// left=BooleanExpression
+protected class BooleanOperatorExpression_LeftAssignment_5 extends AssignmentToken  {
+	
+	public BooleanOperatorExpression_LeftAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getLeftAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanExpression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("left",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("left");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBooleanExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBooleanOperatorExpressionAccess().getLeftBooleanExpressionParserRuleCall_5_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_LeftKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "right"
+protected class BooleanOperatorExpression_RightKeyword_6 extends KeywordToken  {
+	
+	public BooleanOperatorExpression_RightKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getRightKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_LeftAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// right=BooleanExpression
+protected class BooleanOperatorExpression_RightAssignment_7 extends AssignmentToken  {
+	
+	public BooleanOperatorExpression_RightAssignment_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getRightAssignment_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanExpression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("right",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("right");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBooleanExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBooleanOperatorExpressionAccess().getRightBooleanExpressionParserRuleCall_7_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_RightKeyword_6(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class BooleanOperatorExpression_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public BooleanOperatorExpression_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBooleanOperatorExpressionAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanOperatorExpression_RightAssignment_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BooleanOperatorExpression ****************/
+
+
+/************ begin Rule NotExpression ****************
+ *
+ * NotExpression:
+ * 
+ * 	"NotExpression" "{" "inner" inner=Unary "}";
+ *
+ **/
+
+// "NotExpression" "{" "inner" inner=Unary "}"
+protected class NotExpression_Group extends GroupToken {
+	
+	public NotExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getNotExpressionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNotExpressionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "NotExpression"
+protected class NotExpression_NotExpressionKeyword_0 extends KeywordToken  {
+	
+	public NotExpression_NotExpressionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNotExpressionAccess().getNotExpressionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class NotExpression_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public NotExpression_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNotExpressionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_NotExpressionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "inner"
+protected class NotExpression_InnerKeyword_2 extends KeywordToken  {
+	
+	public NotExpression_InnerKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNotExpressionAccess().getInnerKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// inner=Unary
+protected class NotExpression_InnerAssignment_3 extends AssignmentToken  {
+	
+	public NotExpression_InnerAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getNotExpressionAccess().getInnerAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Unary_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("inner",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("inner");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getUnaryRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getNotExpressionAccess().getInnerUnaryParserRuleCall_3_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new NotExpression_InnerKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class NotExpression_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public NotExpression_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNotExpressionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NotExpression_InnerAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule NotExpression ****************/
+
+
+/************ begin Rule NegativeExpression ****************
+ *
+ * NegativeExpression:
+ * 
+ * 	"NegativeExpression" "{" "inner" inner=Unary "}";
+ *
+ **/
+
+// "NegativeExpression" "{" "inner" inner=Unary "}"
+protected class NegativeExpression_Group extends GroupToken {
+	
+	public NegativeExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getNegativeExpressionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNegativeExpressionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "NegativeExpression"
+protected class NegativeExpression_NegativeExpressionKeyword_0 extends KeywordToken  {
+	
+	public NegativeExpression_NegativeExpressionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNegativeExpressionAccess().getNegativeExpressionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class NegativeExpression_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public NegativeExpression_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNegativeExpressionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_NegativeExpressionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "inner"
+protected class NegativeExpression_InnerKeyword_2 extends KeywordToken  {
+	
+	public NegativeExpression_InnerKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNegativeExpressionAccess().getInnerKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// inner=Unary
+protected class NegativeExpression_InnerAssignment_3 extends AssignmentToken  {
+	
+	public NegativeExpression_InnerAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getNegativeExpressionAccess().getInnerAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Unary_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("inner",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("inner");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getUnaryRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getNegativeExpressionAccess().getInnerUnaryParserRuleCall_3_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new NegativeExpression_InnerKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class NegativeExpression_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public NegativeExpression_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNegativeExpressionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NegativeExpression_InnerAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule NegativeExpression ****************/
+
+
+/************ begin Rule IfElseExpression ****************
+ *
+ * IfElseExpression:
+ * 
+ * 	"IfElseExpression" "{" "ifExpression" ifExpression=BooleanExpression "elseExpression"
+ * 
+ * 	elseExpression=BooleanExpression "conditionExpression" conditionExpression=BooleanExpression "}";
+ *
+ **/
+
+// "IfElseExpression" "{" "ifExpression" ifExpression=BooleanExpression "elseExpression" elseExpression=BooleanExpression
+// 
+// "conditionExpression" conditionExpression=BooleanExpression "}"
+protected class IfElseExpression_Group extends GroupToken {
+	
+	public IfElseExpression_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IfElseExpression_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIfElseExpressionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "IfElseExpression"
+protected class IfElseExpression_IfElseExpressionKeyword_0 extends KeywordToken  {
+	
+	public IfElseExpression_IfElseExpressionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getIfElseExpressionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class IfElseExpression_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public IfElseExpression_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IfElseExpression_IfElseExpressionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "ifExpression"
+protected class IfElseExpression_IfExpressionKeyword_2 extends KeywordToken  {
+	
+	public IfElseExpression_IfExpressionKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getIfExpressionKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IfElseExpression_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ifExpression=BooleanExpression
+protected class IfElseExpression_IfExpressionAssignment_3 extends AssignmentToken  {
+	
+	public IfElseExpression_IfExpressionAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getIfExpressionAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanExpression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("ifExpression",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("ifExpression");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBooleanExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getIfElseExpressionAccess().getIfExpressionBooleanExpressionParserRuleCall_3_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new IfElseExpression_IfExpressionKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "elseExpression"
+protected class IfElseExpression_ElseExpressionKeyword_4 extends KeywordToken  {
+	
+	public IfElseExpression_ElseExpressionKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getElseExpressionKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IfElseExpression_IfExpressionAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// elseExpression=BooleanExpression
+protected class IfElseExpression_ElseExpressionAssignment_5 extends AssignmentToken  {
+	
+	public IfElseExpression_ElseExpressionAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getElseExpressionAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanExpression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("elseExpression",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("elseExpression");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBooleanExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getIfElseExpressionAccess().getElseExpressionBooleanExpressionParserRuleCall_5_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new IfElseExpression_ElseExpressionKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "conditionExpression"
+protected class IfElseExpression_ConditionExpressionKeyword_6 extends KeywordToken  {
+	
+	public IfElseExpression_ConditionExpressionKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getConditionExpressionKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IfElseExpression_ElseExpressionAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// conditionExpression=BooleanExpression
+protected class IfElseExpression_ConditionExpressionAssignment_7 extends AssignmentToken  {
+	
+	public IfElseExpression_ConditionExpressionAssignment_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getConditionExpressionAssignment_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BooleanExpression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("conditionExpression",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("conditionExpression");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBooleanExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getIfElseExpressionAccess().getConditionExpressionBooleanExpressionParserRuleCall_7_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new IfElseExpression_ConditionExpressionKeyword_6(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class IfElseExpression_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public IfElseExpression_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIfElseExpressionAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IfElseExpression_ConditionExpressionAssignment_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule IfElseExpression ****************/
+
+
+/************ begin Rule Function ****************
+ *
+ * Function:
+ * 
+ * 	"Function" "{" "id" id=EString ("parameters" "{" parameters+=Expression ("," parameters+=Expression)* "}")? "}";
+ *
+ **/
+
+// "Function" "{" "id" id=EString ("parameters" "{" parameters+=Expression ("," parameters+=Expression)* "}")? "}"
+protected class Function_Group extends GroupToken {
+	
+	public Function_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFunctionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Function"
+protected class Function_FunctionKeyword_0 extends KeywordToken  {
+	
+	public Function_FunctionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getFunctionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class Function_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public Function_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_FunctionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "id"
+protected class Function_IdKeyword_2 extends KeywordToken  {
+	
+	public Function_IdKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getIdKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// id=EString
+protected class Function_IdAssignment_3 extends AssignmentToken  {
+	
+	public Function_IdAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getIdAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_IdKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getFunctionAccess().getIdEStringParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getFunctionAccess().getIdEStringParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("parameters" "{" parameters+=Expression ("," parameters+=Expression)* "}")?
+protected class Function_Group_4 extends GroupToken {
+	
+	public Function_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_RightCurlyBracketKeyword_4_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "parameters"
+protected class Function_ParametersKeyword_4_0 extends KeywordToken  {
+	
+	public Function_ParametersKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getParametersKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_IdAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class Function_LeftCurlyBracketKeyword_4_1 extends KeywordToken  {
+	
+	public Function_LeftCurlyBracketKeyword_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_ParametersKeyword_4_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parameters+=Expression
+protected class Function_ParametersAssignment_4_2 extends AssignmentToken  {
+	
+	public Function_ParametersAssignment_4_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getParametersAssignment_4_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Expression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parameters",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parameters");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Function_LeftCurlyBracketKeyword_4_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," parameters+=Expression)*
+protected class Function_Group_4_3 extends GroupToken {
+	
+	public Function_Group_4_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getGroup_4_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_ParametersAssignment_4_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class Function_CommaKeyword_4_3_0 extends KeywordToken  {
+	
+	public Function_CommaKeyword_4_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getCommaKeyword_4_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group_4_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Function_ParametersAssignment_4_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parameters+=Expression
+protected class Function_ParametersAssignment_4_3_1 extends AssignmentToken  {
+	
+	public Function_ParametersAssignment_4_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getParametersAssignment_4_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Expression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parameters",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parameters");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Function_CommaKeyword_4_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class Function_RightCurlyBracketKeyword_4_4 extends KeywordToken  {
+	
+	public Function_RightCurlyBracketKeyword_4_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_4_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group_4_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Function_ParametersAssignment_4_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class Function_RightCurlyBracketKeyword_5 extends KeywordToken  {
+	
+	public Function_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Function_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Function_IdAssignment_3(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Function ****************/
+
+
+/************ begin Rule Parenthesis ****************
+ *
+ * Parenthesis:
+ * 
+ * 	"Parenthesis" "{" "innerExpression" innerExpression=Expression "}";
+ *
+ **/
+
+// "Parenthesis" "{" "innerExpression" innerExpression=Expression "}"
+protected class Parenthesis_Group extends GroupToken {
+	
+	public Parenthesis_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getParenthesisAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getParenthesisRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Parenthesis"
+protected class Parenthesis_ParenthesisKeyword_0 extends KeywordToken  {
+	
+	public Parenthesis_ParenthesisKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParenthesisAccess().getParenthesisKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class Parenthesis_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public Parenthesis_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParenthesisAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_ParenthesisKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "innerExpression"
+protected class Parenthesis_InnerExpressionKeyword_2 extends KeywordToken  {
+	
+	public Parenthesis_InnerExpressionKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParenthesisAccess().getInnerExpressionKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// innerExpression=Expression
+protected class Parenthesis_InnerExpressionAssignment_3 extends AssignmentToken  {
+	
+	public Parenthesis_InnerExpressionAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getParenthesisAccess().getInnerExpressionAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Expression_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("innerExpression",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("innerExpression");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExpressionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getParenthesisAccess().getInnerExpressionExpressionParserRuleCall_3_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Parenthesis_InnerExpressionKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class Parenthesis_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public Parenthesis_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParenthesisAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parenthesis_InnerExpressionAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Parenthesis ****************/
+
+
+/************ begin Rule Literal_Impl ****************
+ *
+ * Literal_Impl returns Literal:
+ * 
+ * 	{Literal} "Literal";
+ *
+ **/
+
+// {Literal} "Literal"
+protected class Literal_Impl_Group extends GroupToken {
+	
+	public Literal_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getLiteral_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Literal_Impl_LiteralKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLiteral_ImplAccess().getLiteralAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {Literal}
+protected class Literal_Impl_LiteralAction_0 extends ActionToken  {
+
+	public Literal_Impl_LiteralAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getLiteral_ImplAccess().getLiteralAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "Literal"
+protected class Literal_Impl_LiteralKeyword_1 extends KeywordToken  {
+	
+	public Literal_Impl_LiteralKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLiteral_ImplAccess().getLiteralKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Literal_Impl_LiteralAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Literal_Impl ****************/
+
+
+/************ begin Rule StringLiteral ****************
+ *
+ * StringLiteral:
+ * 
+ * 	"StringLiteral" "{" "value" value=EString "}";
+ *
+ **/
+
+// "StringLiteral" "{" "value" value=EString "}"
+protected class StringLiteral_Group extends GroupToken {
+	
+	public StringLiteral_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getStringLiteralAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStringLiteralRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "StringLiteral"
+protected class StringLiteral_StringLiteralKeyword_0 extends KeywordToken  {
+	
+	public StringLiteral_StringLiteralKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStringLiteralAccess().getStringLiteralKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class StringLiteral_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public StringLiteral_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStringLiteralAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_StringLiteralKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "value"
+protected class StringLiteral_ValueKeyword_2 extends KeywordToken  {
+	
+	public StringLiteral_ValueKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStringLiteralAccess().getValueKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// value=EString
+protected class StringLiteral_ValueAssignment_3 extends AssignmentToken  {
+	
+	public StringLiteral_ValueAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getStringLiteralAccess().getValueAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_ValueKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getStringLiteralAccess().getValueEStringParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getStringLiteralAccess().getValueEStringParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class StringLiteral_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public StringLiteral_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStringLiteralAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StringLiteral_ValueAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule StringLiteral ****************/
+
+
+/************ begin Rule BoolLiteral ****************
+ *
+ * BoolLiteral:
+ * 
+ * 	value?="value" "BoolLiteral";
+ *
+ **/
+
+// value?="value" "BoolLiteral"
+protected class BoolLiteral_Group extends GroupToken {
+	
+	public BoolLiteral_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBoolLiteralAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoolLiteral_BoolLiteralKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoolLiteralRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// value?="value"
+protected class BoolLiteral_ValueAssignment_0 extends AssignmentToken  {
+	
+	public BoolLiteral_ValueAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBoolLiteralAccess().getValueAssignment_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+		if(Boolean.TRUE.equals(value)) { // org::eclipse::xtext::impl::KeywordImpl
+			type = AssignmentType.KEYWORD;
+			element = grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "BoolLiteral"
+protected class BoolLiteral_BoolLiteralKeyword_1 extends KeywordToken  {
+	
+	public BoolLiteral_BoolLiteralKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoolLiteralAccess().getBoolLiteralKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoolLiteral_ValueAssignment_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BoolLiteral ****************/
+
+
+/************ begin Rule IntLiteral ****************
+ *
+ * IntLiteral:
+ * 
+ * 	"IntLiteral" "{" "value" value=EBigInteger "}";
+ *
+ **/
+
+// "IntLiteral" "{" "value" value=EBigInteger "}"
+protected class IntLiteral_Group extends GroupToken {
+	
+	public IntLiteral_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getIntLiteralAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getIntLiteralRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "IntLiteral"
+protected class IntLiteral_IntLiteralKeyword_0 extends KeywordToken  {
+	
+	public IntLiteral_IntLiteralKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIntLiteralAccess().getIntLiteralKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class IntLiteral_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public IntLiteral_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIntLiteralAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_IntLiteralKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "value"
+protected class IntLiteral_ValueKeyword_2 extends KeywordToken  {
+	
+	public IntLiteral_ValueKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIntLiteralAccess().getValueKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// value=EBigInteger
+protected class IntLiteral_ValueAssignment_3 extends AssignmentToken  {
+	
+	public IntLiteral_ValueAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getIntLiteralAccess().getValueAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_ValueKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getIntLiteralAccess().getValueEBigIntegerParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getIntLiteralAccess().getValueEBigIntegerParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class IntLiteral_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public IntLiteral_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getIntLiteralAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new IntLiteral_ValueAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule IntLiteral ****************/
+
+
+/************ begin Rule DoubleLiteral ****************
+ *
+ * DoubleLiteral:
+ * 
+ * 	"DoubleLiteral" "{" "value" value=EBigDecimal "}";
+ *
+ **/
+
+// "DoubleLiteral" "{" "value" value=EBigDecimal "}"
+protected class DoubleLiteral_Group extends GroupToken {
+	
+	public DoubleLiteral_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getDoubleLiteralAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDoubleLiteralRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "DoubleLiteral"
+protected class DoubleLiteral_DoubleLiteralKeyword_0 extends KeywordToken  {
+	
+	public DoubleLiteral_DoubleLiteralKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDoubleLiteralAccess().getDoubleLiteralKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class DoubleLiteral_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public DoubleLiteral_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDoubleLiteralAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_DoubleLiteralKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "value"
+protected class DoubleLiteral_ValueKeyword_2 extends KeywordToken  {
+	
+	public DoubleLiteral_ValueKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDoubleLiteralAccess().getValueKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// value=EBigDecimal
+protected class DoubleLiteral_ValueAssignment_3 extends AssignmentToken  {
+	
+	public DoubleLiteral_ValueAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getDoubleLiteralAccess().getValueAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_ValueKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getDoubleLiteralAccess().getValueEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getDoubleLiteralAccess().getValueEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class DoubleLiteral_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public DoubleLiteral_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDoubleLiteralAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DoubleLiteral_ValueAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule DoubleLiteral ****************/
+
+
+/************ begin Rule FormalParameter ****************
+ *
+ * FormalParameter:
+ * 
+ * 	{FormalParameter} "FormalParameter" name=EString;
+ *
+ **/
+
+// {FormalParameter} "FormalParameter" name=EString
+protected class FormalParameter_Group extends GroupToken {
+	
+	public FormalParameter_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFormalParameterAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_NameAssignment_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFormalParameterAccess().getFormalParameterAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {FormalParameter}
+protected class FormalParameter_FormalParameterAction_0 extends ActionToken  {
+
+	public FormalParameter_FormalParameterAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getFormalParameterAccess().getFormalParameterAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "FormalParameter"
+protected class FormalParameter_FormalParameterKeyword_1 extends KeywordToken  {
+	
+	public FormalParameter_FormalParameterKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFormalParameterAccess().getFormalParameterKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_FormalParameterAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class FormalParameter_NameAssignment_2 extends AssignmentToken  {
+	
+	public FormalParameter_NameAssignment_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFormalParameterAccess().getNameAssignment_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FormalParameter_FormalParameterKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getFormalParameterAccess().getNameEStringParserRuleCall_2_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getFormalParameterAccess().getNameEStringParserRuleCall_2_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+
+/************ end Rule FormalParameter ****************/
+
+
+/************ begin Rule ProbabilityMassFunction ****************
+ *
+ * ProbabilityMassFunction:
+ * 
+ * 	{ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)* "}")? "}";
+ *
+ **/
+
+// {ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)* "}")? "}"
+protected class ProbabilityMassFunction_Group extends GroupToken {
+	
+	public ProbabilityMassFunction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {ProbabilityMassFunction}
+protected class ProbabilityMassFunction_ProbabilityMassFunctionAction_0 extends ActionToken  {
+
+	public ProbabilityMassFunction_ProbabilityMassFunctionAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "ProbabilityMassFunction"
+protected class ProbabilityMassFunction_ProbabilityMassFunctionKeyword_1 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_ProbabilityMassFunctionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_ProbabilityMassFunctionAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ProbabilityMassFunction_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_ProbabilityMassFunctionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("sample" "{" sample+=Sample ("," sample+=Sample)* "}")?
+protected class ProbabilityMassFunction_Group_3 extends GroupToken {
+	
+	public ProbabilityMassFunction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_RightCurlyBracketKeyword_3_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "sample"
+protected class ProbabilityMassFunction_SampleKeyword_3_0 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_SampleKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ProbabilityMassFunction_LeftCurlyBracketKeyword_3_1 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_LeftCurlyBracketKeyword_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_SampleKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sample+=Sample
+protected class ProbabilityMassFunction_SampleAssignment_3_2 extends AssignmentToken  {
+	
+	public ProbabilityMassFunction_SampleAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sample",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sample");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSampleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_LeftCurlyBracketKeyword_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," sample+=Sample)*
+protected class ProbabilityMassFunction_Group_3_3 extends GroupToken {
+	
+	public ProbabilityMassFunction_Group_3_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getGroup_3_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_SampleAssignment_3_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class ProbabilityMassFunction_CommaKeyword_3_3_0 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_CommaKeyword_3_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProbabilityMassFunction_SampleAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sample+=Sample
+protected class ProbabilityMassFunction_SampleAssignment_3_3_1 extends AssignmentToken  {
+	
+	public ProbabilityMassFunction_SampleAssignment_3_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sample",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sample");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSampleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_CommaKeyword_3_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ProbabilityMassFunction_RightCurlyBracketKeyword_3_4 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_RightCurlyBracketKeyword_3_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProbabilityMassFunction_SampleAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class ProbabilityMassFunction_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProbabilityMassFunction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ProbabilityMassFunction ****************/
+
+
+/************ begin Rule BoxedPDF ****************
+ *
+ * BoxedPDF:
+ * 
+ * 	{BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}";
+ *
+ **/
+
+// {BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}"
+protected class BoxedPDF_Group extends GroupToken {
+	
+	public BoxedPDF_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {BoxedPDF}
+protected class BoxedPDF_BoxedPDFAction_0 extends ActionToken  {
+
+	public BoxedPDF_BoxedPDFAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "BoxedPDF"
+protected class BoxedPDF_BoxedPDFKeyword_1 extends KeywordToken  {
+	
+	public BoxedPDF_BoxedPDFKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_BoxedPDFAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BoxedPDF_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public BoxedPDF_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_BoxedPDFKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")?
+protected class BoxedPDF_Group_3 extends GroupToken {
+	
+	public BoxedPDF_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_RightCurlyBracketKeyword_3_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "sample"
+protected class BoxedPDF_SampleKeyword_3_0 extends KeywordToken  {
+	
+	public BoxedPDF_SampleKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BoxedPDF_LeftCurlyBracketKeyword_3_1 extends KeywordToken  {
+	
+	public BoxedPDF_LeftCurlyBracketKeyword_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_SampleKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sample+=ContinuousSample
+protected class BoxedPDF_SampleAssignment_3_2 extends AssignmentToken  {
+	
+	public BoxedPDF_SampleAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sample",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sample");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getContinuousSampleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BoxedPDF_LeftCurlyBracketKeyword_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," sample+=ContinuousSample)*
+protected class BoxedPDF_Group_3_3 extends GroupToken {
+	
+	public BoxedPDF_Group_3_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getGroup_3_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_SampleAssignment_3_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BoxedPDF_CommaKeyword_3_3_0 extends KeywordToken  {
+	
+	public BoxedPDF_CommaKeyword_3_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BoxedPDF_SampleAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sample+=ContinuousSample
+protected class BoxedPDF_SampleAssignment_3_3_1 extends AssignmentToken  {
+	
+	public BoxedPDF_SampleAssignment_3_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sample",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sample");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getContinuousSampleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BoxedPDF_CommaKeyword_3_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BoxedPDF_RightCurlyBracketKeyword_3_4 extends KeywordToken  {
+	
+	public BoxedPDF_RightCurlyBracketKeyword_3_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BoxedPDF_SampleAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class BoxedPDF_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public BoxedPDF_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BoxedPDF_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BoxedPDF ****************/
+
+
+/************ begin Rule NormalDistribution ****************
+ *
+ * NormalDistribution:
+ * 
+ * 	"NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}";
+ *
+ **/
+
+// "NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}"
+protected class NormalDistribution_Group extends GroupToken {
+	
+	public NormalDistribution_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "NormalDistribution"
+protected class NormalDistribution_NormalDistributionKeyword_0 extends KeywordToken  {
+	
+	public NormalDistribution_NormalDistributionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class NormalDistribution_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public NormalDistribution_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_NormalDistributionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "mu"
+protected class NormalDistribution_MuKeyword_2 extends KeywordToken  {
+	
+	public NormalDistribution_MuKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getMuKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// mu=EBigDecimal
+protected class NormalDistribution_MuAssignment_3 extends AssignmentToken  {
+	
+	public NormalDistribution_MuAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getMuAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_MuKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("mu",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("mu");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "sigma"
+protected class NormalDistribution_SigmaKeyword_4 extends KeywordToken  {
+	
+	public NormalDistribution_SigmaKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_MuAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sigma=EBigDecimal
+protected class NormalDistribution_SigmaAssignment_5 extends AssignmentToken  {
+	
+	public NormalDistribution_SigmaAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getSigmaAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_SigmaKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sigma",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sigma");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class NormalDistribution_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public NormalDistribution_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_SigmaAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule NormalDistribution ****************/
+
+
+/************ begin Rule ExponentialDistribution ****************
+ *
+ * ExponentialDistribution:
+ * 
+ * 	"ExponentialDistribution" "{" "rate" rate=EBigDecimal "}";
+ *
+ **/
+
+// "ExponentialDistribution" "{" "rate" rate=EBigDecimal "}"
+protected class ExponentialDistribution_Group extends GroupToken {
+	
+	public ExponentialDistribution_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ExponentialDistribution"
+protected class ExponentialDistribution_ExponentialDistributionKeyword_0 extends KeywordToken  {
+	
+	public ExponentialDistribution_ExponentialDistributionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ExponentialDistribution_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ExponentialDistribution_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_ExponentialDistributionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "rate"
+protected class ExponentialDistribution_RateKeyword_2 extends KeywordToken  {
+	
+	public ExponentialDistribution_RateKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getRateKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// rate=EBigDecimal
+protected class ExponentialDistribution_RateAssignment_3 extends AssignmentToken  {
+	
+	public ExponentialDistribution_RateAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getRateAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_RateKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("rate",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("rate");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ExponentialDistribution_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public ExponentialDistribution_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_RateAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExponentialDistribution ****************/
+
+
+
+
+
+
+
+
+
+/************ begin Rule Sample ****************
+ *
+ * Sample:
+ * 
+ * 	"Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}";
+ *
+ **/
+
+// "Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}"
+protected class Sample_Group extends GroupToken {
+	
+	public Sample_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSampleAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getSampleRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Sample"
+protected class Sample_SampleKeyword_0 extends KeywordToken  {
+	
+	public Sample_SampleKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getSampleKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class Sample_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public Sample_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_SampleKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "probability"
+protected class Sample_ProbabilityKeyword_2 extends KeywordToken  {
+	
+	public Sample_ProbabilityKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getProbabilityKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// probability=EBigDecimal
+protected class Sample_ProbabilityAssignment_3 extends AssignmentToken  {
+	
+	public Sample_ProbabilityAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSampleAccess().getProbabilityAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_ProbabilityKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("probability",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("probability");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "value"
+protected class Sample_ValueKeyword_4 extends KeywordToken  {
+	
+	public Sample_ValueKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getValueKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_ProbabilityAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// value=[ecore::EObject|EString]
+protected class Sample_ValueAssignment_5 extends AssignmentToken  {
+	
+	public Sample_ValueAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSampleAccess().getValueAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_ValueKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class Sample_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public Sample_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_ValueAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Sample ****************/
+
+
+/************ begin Rule EObject ****************
+ *
+ * EObject returns ecore::EObject:
+ * 
+ * 	{ecore::EObject} "EObject";
+ *
+ **/
+
+// {ecore::EObject} "EObject"
+protected class EObject_Group extends GroupToken {
+	
+	public EObject_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getEObjectAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new EObject_EObjectKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getEObjectAccess().getEObjectAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {ecore::EObject}
+protected class EObject_EObjectAction_0 extends ActionToken  {
+
+	public EObject_EObjectAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getEObjectAccess().getEObjectAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "EObject"
+protected class EObject_EObjectKeyword_1 extends KeywordToken  {
+	
+	public EObject_EObjectKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getEObjectAccess().getEObjectKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new EObject_EObjectAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule EObject ****************/
+
+
+/************ begin Rule ContinuousSample ****************
+ *
+ * ContinuousSample:
+ * 
+ * 	"ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}";
+ *
+ **/
+
+// "ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}"
+protected class ContinuousSample_Group extends GroupToken {
+	
+	public ContinuousSample_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getContinuousSampleRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ContinuousSample"
+protected class ContinuousSample_ContinuousSampleKeyword_0 extends KeywordToken  {
+	
+	public ContinuousSample_ContinuousSampleKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ContinuousSample_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ContinuousSample_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ContinuousSampleKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "value"
+protected class ContinuousSample_ValueKeyword_2 extends KeywordToken  {
+	
+	public ContinuousSample_ValueKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getValueKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// value=EBigDecimal
+protected class ContinuousSample_ValueAssignment_3 extends AssignmentToken  {
+	
+	public ContinuousSample_ValueAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getValueAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ValueKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "probability"
+protected class ContinuousSample_ProbabilityKeyword_4 extends KeywordToken  {
+	
+	public ContinuousSample_ProbabilityKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ValueAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// probability=EBigDecimal
+protected class ContinuousSample_ProbabilityAssignment_5 extends AssignmentToken  {
+	
+	public ContinuousSample_ProbabilityAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getProbabilityAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ProbabilityKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("probability",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("probability");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ContinuousSample_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public ContinuousSample_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ProbabilityAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ContinuousSample ****************/
+
+}
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/MyDsl1AntlrTokenFileProvider.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/MyDsl1AntlrTokenFileProvider.java
new file mode 100644
index 00000000..38d7b21e
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/MyDsl1AntlrTokenFileProvider.java
@@ -0,0 +1,15 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class MyDsl1AntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.tokens");
+	}
+}
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/MyDsl1Parser.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/MyDsl1Parser.java
new file mode 100644
index 00000000..b79ea0f0
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/MyDsl1Parser.java
@@ -0,0 +1,39 @@
+/*
+* generated by Xtext
+*/
+package org.xtext.example.mydsl1.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.xtext.example.mydsl1.services.MyDsl1GrammarAccess;
+
+public class MyDsl1Parser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private MyDsl1GrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.xtext.example.mydsl1.parser.antlr.internal.InternalMyDsl1Parser createParser(XtextTokenStream stream) {
+		return new org.xtext.example.mydsl1.parser.antlr.internal.InternalMyDsl1Parser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "ExplicitFunction";
+	}
+	
+	public MyDsl1GrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(MyDsl1GrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g
new file mode 100644
index 00000000..13617517
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g
@@ -0,0 +1,3230 @@
+/*
+* generated by Xtext
+*/
+grammar InternalMyDsl1;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.xtext.example.mydsl1.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.xtext.example.mydsl1.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.xtext.example.mydsl1.services.MyDsl1GrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private MyDsl1GrammarAccess grammarAccess;
+ 	
+    public InternalMyDsl1Parser(TokenStream input, MyDsl1GrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "ExplicitFunction";	
+   	}
+   	
+   	@Override
+   	protected MyDsl1GrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleExplicitFunction
+entryRuleExplicitFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExplicitFunctionRule()); }
+	 iv_ruleExplicitFunction=ruleExplicitFunction 
+	 { $current=$iv_ruleExplicitFunction.current; } 
+	 EOF 
+;
+
+// Rule ExplicitFunction
+ruleExplicitFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getExplicitFunctionAccess().getExplicitFunctionAction_0(),
+            $current);
+    }
+)	otherlv_1='ExplicitFunction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getExplicitFunctionAccess().getExplicitFunctionKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getExplicitFunctionAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='specification' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getExplicitFunctionAccess().getSpecificationKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExplicitFunctionAccess().getSpecificationEStringParserRuleCall_3_1_0()); 
+	    }
+		lv_specification_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExplicitFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"specification",
+        		lv_specification_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_5='expression' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getExplicitFunctionAccess().getExpressionKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExplicitFunctionAccess().getExpressionExpressionParserRuleCall_4_1_0()); 
+	    }
+		lv_expression_6_0=ruleExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExplicitFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_6_0, 
+        		"Expression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getExplicitFunctionAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExpression
+entryRuleExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExpressionRule()); }
+	 iv_ruleExpression=ruleExpression 
+	 { $current=$iv_ruleExpression.current; } 
+	 EOF 
+;
+
+// Rule Expression
+ruleExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getTermExpressionParserRuleCall_0()); 
+    }
+    this_TermExpression_0=ruleTermExpression
+    { 
+        $current = $this_TermExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getProductExpressionParserRuleCall_1()); 
+    }
+    this_ProductExpression_1=ruleProductExpression
+    { 
+        $current = $this_ProductExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getCompareExpressionParserRuleCall_2()); 
+    }
+    this_CompareExpression_2=ruleCompareExpression
+    { 
+        $current = $this_CompareExpression_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getPowerExpressionParserRuleCall_3()); 
+    }
+    this_PowerExpression_3=rulePowerExpression
+    { 
+        $current = $this_PowerExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); 
+    }
+    this_BooleanOperatorExpression_4=ruleBooleanOperatorExpression
+    { 
+        $current = $this_BooleanOperatorExpression_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getNotExpressionParserRuleCall_5()); 
+    }
+    this_NotExpression_5=ruleNotExpression
+    { 
+        $current = $this_NotExpression_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getNegativeExpressionParserRuleCall_6()); 
+    }
+    this_NegativeExpression_6=ruleNegativeExpression
+    { 
+        $current = $this_NegativeExpression_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getIfElseExpressionParserRuleCall_7()); 
+    }
+    this_IfElseExpression_7=ruleIfElseExpression
+    { 
+        $current = $this_IfElseExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getFunctionParserRuleCall_8()); 
+    }
+    this_Function_8=ruleFunction
+    { 
+        $current = $this_Function_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getParenthesisParserRuleCall_9()); 
+    }
+    this_Parenthesis_9=ruleParenthesis
+    { 
+        $current = $this_Parenthesis_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getLiteral_ImplParserRuleCall_10()); 
+    }
+    this_Literal_Impl_10=ruleLiteral_Impl
+    { 
+        $current = $this_Literal_Impl_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getStringLiteralParserRuleCall_11()); 
+    }
+    this_StringLiteral_11=ruleStringLiteral
+    { 
+        $current = $this_StringLiteral_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getBoolLiteralParserRuleCall_12()); 
+    }
+    this_BoolLiteral_12=ruleBoolLiteral
+    { 
+        $current = $this_BoolLiteral_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getIntLiteralParserRuleCall_13()); 
+    }
+    this_IntLiteral_13=ruleIntLiteral
+    { 
+        $current = $this_IntLiteral_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getDoubleLiteralParserRuleCall_14()); 
+    }
+    this_DoubleLiteral_14=ruleDoubleLiteral
+    { 
+        $current = $this_DoubleLiteral_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getFormalParameterParserRuleCall_15()); 
+    }
+    this_FormalParameter_15=ruleFormalParameter
+    { 
+        $current = $this_FormalParameter_15.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getProbabilityMassFunctionParserRuleCall_16()); 
+    }
+    this_ProbabilityMassFunction_16=ruleProbabilityMassFunction
+    { 
+        $current = $this_ProbabilityMassFunction_16.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getBoxedPDFParserRuleCall_17()); 
+    }
+    this_BoxedPDF_17=ruleBoxedPDF
+    { 
+        $current = $this_BoxedPDF_17.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getNormalDistributionParserRuleCall_18()); 
+    }
+    this_NormalDistribution_18=ruleNormalDistribution
+    { 
+        $current = $this_NormalDistribution_18.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExpressionAccess().getExponentialDistributionParserRuleCall_19()); 
+    }
+    this_ExponentialDistribution_19=ruleExponentialDistribution
+    { 
+        $current = $this_ExponentialDistribution_19.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTerm
+entryRuleTerm returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTermRule()); }
+	 iv_ruleTerm=ruleTerm 
+	 { $current=$iv_ruleTerm.current; } 
+	 EOF 
+;
+
+// Rule Term
+ruleTerm returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getTermExpressionParserRuleCall_0()); 
+    }
+    this_TermExpression_0=ruleTermExpression
+    { 
+        $current = $this_TermExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getProductExpressionParserRuleCall_1()); 
+    }
+    this_ProductExpression_1=ruleProductExpression
+    { 
+        $current = $this_ProductExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getPowerExpressionParserRuleCall_2()); 
+    }
+    this_PowerExpression_2=rulePowerExpression
+    { 
+        $current = $this_PowerExpression_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getNotExpressionParserRuleCall_3()); 
+    }
+    this_NotExpression_3=ruleNotExpression
+    { 
+        $current = $this_NotExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getNegativeExpressionParserRuleCall_4()); 
+    }
+    this_NegativeExpression_4=ruleNegativeExpression
+    { 
+        $current = $this_NegativeExpression_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getFunctionParserRuleCall_5()); 
+    }
+    this_Function_5=ruleFunction
+    { 
+        $current = $this_Function_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getParenthesisParserRuleCall_6()); 
+    }
+    this_Parenthesis_6=ruleParenthesis
+    { 
+        $current = $this_Parenthesis_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getLiteral_ImplParserRuleCall_7()); 
+    }
+    this_Literal_Impl_7=ruleLiteral_Impl
+    { 
+        $current = $this_Literal_Impl_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getStringLiteralParserRuleCall_8()); 
+    }
+    this_StringLiteral_8=ruleStringLiteral
+    { 
+        $current = $this_StringLiteral_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getBoolLiteralParserRuleCall_9()); 
+    }
+    this_BoolLiteral_9=ruleBoolLiteral
+    { 
+        $current = $this_BoolLiteral_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getIntLiteralParserRuleCall_10()); 
+    }
+    this_IntLiteral_10=ruleIntLiteral
+    { 
+        $current = $this_IntLiteral_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getDoubleLiteralParserRuleCall_11()); 
+    }
+    this_DoubleLiteral_11=ruleDoubleLiteral
+    { 
+        $current = $this_DoubleLiteral_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getFormalParameterParserRuleCall_12()); 
+    }
+    this_FormalParameter_12=ruleFormalParameter
+    { 
+        $current = $this_FormalParameter_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getProbabilityMassFunctionParserRuleCall_13()); 
+    }
+    this_ProbabilityMassFunction_13=ruleProbabilityMassFunction
+    { 
+        $current = $this_ProbabilityMassFunction_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getBoxedPDFParserRuleCall_14()); 
+    }
+    this_BoxedPDF_14=ruleBoxedPDF
+    { 
+        $current = $this_BoxedPDF_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getNormalDistributionParserRuleCall_15()); 
+    }
+    this_NormalDistribution_15=ruleNormalDistribution
+    { 
+        $current = $this_NormalDistribution_15.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTermAccess().getExponentialDistributionParserRuleCall_16()); 
+    }
+    this_ExponentialDistribution_16=ruleExponentialDistribution
+    { 
+        $current = $this_ExponentialDistribution_16.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleProduct
+entryRuleProduct returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProductRule()); }
+	 iv_ruleProduct=ruleProduct 
+	 { $current=$iv_ruleProduct.current; } 
+	 EOF 
+;
+
+// Rule Product
+ruleProduct returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getProductExpressionParserRuleCall_0()); 
+    }
+    this_ProductExpression_0=ruleProductExpression
+    { 
+        $current = $this_ProductExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getPowerExpressionParserRuleCall_1()); 
+    }
+    this_PowerExpression_1=rulePowerExpression
+    { 
+        $current = $this_PowerExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getNotExpressionParserRuleCall_2()); 
+    }
+    this_NotExpression_2=ruleNotExpression
+    { 
+        $current = $this_NotExpression_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getNegativeExpressionParserRuleCall_3()); 
+    }
+    this_NegativeExpression_3=ruleNegativeExpression
+    { 
+        $current = $this_NegativeExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getFunctionParserRuleCall_4()); 
+    }
+    this_Function_4=ruleFunction
+    { 
+        $current = $this_Function_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getParenthesisParserRuleCall_5()); 
+    }
+    this_Parenthesis_5=ruleParenthesis
+    { 
+        $current = $this_Parenthesis_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getLiteral_ImplParserRuleCall_6()); 
+    }
+    this_Literal_Impl_6=ruleLiteral_Impl
+    { 
+        $current = $this_Literal_Impl_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getStringLiteralParserRuleCall_7()); 
+    }
+    this_StringLiteral_7=ruleStringLiteral
+    { 
+        $current = $this_StringLiteral_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getBoolLiteralParserRuleCall_8()); 
+    }
+    this_BoolLiteral_8=ruleBoolLiteral
+    { 
+        $current = $this_BoolLiteral_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getIntLiteralParserRuleCall_9()); 
+    }
+    this_IntLiteral_9=ruleIntLiteral
+    { 
+        $current = $this_IntLiteral_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getDoubleLiteralParserRuleCall_10()); 
+    }
+    this_DoubleLiteral_10=ruleDoubleLiteral
+    { 
+        $current = $this_DoubleLiteral_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getFormalParameterParserRuleCall_11()); 
+    }
+    this_FormalParameter_11=ruleFormalParameter
+    { 
+        $current = $this_FormalParameter_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getProbabilityMassFunctionParserRuleCall_12()); 
+    }
+    this_ProbabilityMassFunction_12=ruleProbabilityMassFunction
+    { 
+        $current = $this_ProbabilityMassFunction_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getBoxedPDFParserRuleCall_13()); 
+    }
+    this_BoxedPDF_13=ruleBoxedPDF
+    { 
+        $current = $this_BoxedPDF_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getNormalDistributionParserRuleCall_14()); 
+    }
+    this_NormalDistribution_14=ruleNormalDistribution
+    { 
+        $current = $this_NormalDistribution_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getProductAccess().getExponentialDistributionParserRuleCall_15()); 
+    }
+    this_ExponentialDistribution_15=ruleExponentialDistribution
+    { 
+        $current = $this_ExponentialDistribution_15.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePower
+entryRulePower returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPowerRule()); }
+	 iv_rulePower=rulePower 
+	 { $current=$iv_rulePower.current; } 
+	 EOF 
+;
+
+// Rule Power
+rulePower returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getPowerExpressionParserRuleCall_0()); 
+    }
+    this_PowerExpression_0=rulePowerExpression
+    { 
+        $current = $this_PowerExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getNotExpressionParserRuleCall_1()); 
+    }
+    this_NotExpression_1=ruleNotExpression
+    { 
+        $current = $this_NotExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getNegativeExpressionParserRuleCall_2()); 
+    }
+    this_NegativeExpression_2=ruleNegativeExpression
+    { 
+        $current = $this_NegativeExpression_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getFunctionParserRuleCall_3()); 
+    }
+    this_Function_3=ruleFunction
+    { 
+        $current = $this_Function_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getParenthesisParserRuleCall_4()); 
+    }
+    this_Parenthesis_4=ruleParenthesis
+    { 
+        $current = $this_Parenthesis_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getLiteral_ImplParserRuleCall_5()); 
+    }
+    this_Literal_Impl_5=ruleLiteral_Impl
+    { 
+        $current = $this_Literal_Impl_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getStringLiteralParserRuleCall_6()); 
+    }
+    this_StringLiteral_6=ruleStringLiteral
+    { 
+        $current = $this_StringLiteral_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getBoolLiteralParserRuleCall_7()); 
+    }
+    this_BoolLiteral_7=ruleBoolLiteral
+    { 
+        $current = $this_BoolLiteral_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getIntLiteralParserRuleCall_8()); 
+    }
+    this_IntLiteral_8=ruleIntLiteral
+    { 
+        $current = $this_IntLiteral_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getDoubleLiteralParserRuleCall_9()); 
+    }
+    this_DoubleLiteral_9=ruleDoubleLiteral
+    { 
+        $current = $this_DoubleLiteral_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getFormalParameterParserRuleCall_10()); 
+    }
+    this_FormalParameter_10=ruleFormalParameter
+    { 
+        $current = $this_FormalParameter_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getProbabilityMassFunctionParserRuleCall_11()); 
+    }
+    this_ProbabilityMassFunction_11=ruleProbabilityMassFunction
+    { 
+        $current = $this_ProbabilityMassFunction_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getBoxedPDFParserRuleCall_12()); 
+    }
+    this_BoxedPDF_12=ruleBoxedPDF
+    { 
+        $current = $this_BoxedPDF_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getNormalDistributionParserRuleCall_13()); 
+    }
+    this_NormalDistribution_13=ruleNormalDistribution
+    { 
+        $current = $this_NormalDistribution_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPowerAccess().getExponentialDistributionParserRuleCall_14()); 
+    }
+    this_ExponentialDistribution_14=ruleExponentialDistribution
+    { 
+        $current = $this_ExponentialDistribution_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleUnary
+entryRuleUnary returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnaryRule()); }
+	 iv_ruleUnary=ruleUnary 
+	 { $current=$iv_ruleUnary.current; } 
+	 EOF 
+;
+
+// Rule Unary
+ruleUnary returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getNotExpressionParserRuleCall_0()); 
+    }
+    this_NotExpression_0=ruleNotExpression
+    { 
+        $current = $this_NotExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getNegativeExpressionParserRuleCall_1()); 
+    }
+    this_NegativeExpression_1=ruleNegativeExpression
+    { 
+        $current = $this_NegativeExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getFunctionParserRuleCall_2()); 
+    }
+    this_Function_2=ruleFunction
+    { 
+        $current = $this_Function_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getParenthesisParserRuleCall_3()); 
+    }
+    this_Parenthesis_3=ruleParenthesis
+    { 
+        $current = $this_Parenthesis_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getLiteral_ImplParserRuleCall_4()); 
+    }
+    this_Literal_Impl_4=ruleLiteral_Impl
+    { 
+        $current = $this_Literal_Impl_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getStringLiteralParserRuleCall_5()); 
+    }
+    this_StringLiteral_5=ruleStringLiteral
+    { 
+        $current = $this_StringLiteral_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getBoolLiteralParserRuleCall_6()); 
+    }
+    this_BoolLiteral_6=ruleBoolLiteral
+    { 
+        $current = $this_BoolLiteral_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getIntLiteralParserRuleCall_7()); 
+    }
+    this_IntLiteral_7=ruleIntLiteral
+    { 
+        $current = $this_IntLiteral_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getDoubleLiteralParserRuleCall_8()); 
+    }
+    this_DoubleLiteral_8=ruleDoubleLiteral
+    { 
+        $current = $this_DoubleLiteral_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getFormalParameterParserRuleCall_9()); 
+    }
+    this_FormalParameter_9=ruleFormalParameter
+    { 
+        $current = $this_FormalParameter_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getProbabilityMassFunctionParserRuleCall_10()); 
+    }
+    this_ProbabilityMassFunction_10=ruleProbabilityMassFunction
+    { 
+        $current = $this_ProbabilityMassFunction_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getBoxedPDFParserRuleCall_11()); 
+    }
+    this_BoxedPDF_11=ruleBoxedPDF
+    { 
+        $current = $this_BoxedPDF_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getNormalDistributionParserRuleCall_12()); 
+    }
+    this_NormalDistribution_12=ruleNormalDistribution
+    { 
+        $current = $this_NormalDistribution_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getUnaryAccess().getExponentialDistributionParserRuleCall_13()); 
+    }
+    this_ExponentialDistribution_13=ruleExponentialDistribution
+    { 
+        $current = $this_ExponentialDistribution_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBooleanExpression
+entryRuleBooleanExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBooleanExpressionRule()); }
+	 iv_ruleBooleanExpression=ruleBooleanExpression 
+	 { $current=$iv_ruleBooleanExpression.current; } 
+	 EOF 
+;
+
+// Rule BooleanExpression
+ruleBooleanExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getTermExpressionParserRuleCall_0()); 
+    }
+    this_TermExpression_0=ruleTermExpression
+    { 
+        $current = $this_TermExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getProductExpressionParserRuleCall_1()); 
+    }
+    this_ProductExpression_1=ruleProductExpression
+    { 
+        $current = $this_ProductExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getCompareExpressionParserRuleCall_2()); 
+    }
+    this_CompareExpression_2=ruleCompareExpression
+    { 
+        $current = $this_CompareExpression_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getPowerExpressionParserRuleCall_3()); 
+    }
+    this_PowerExpression_3=rulePowerExpression
+    { 
+        $current = $this_PowerExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); 
+    }
+    this_BooleanOperatorExpression_4=ruleBooleanOperatorExpression
+    { 
+        $current = $this_BooleanOperatorExpression_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getNotExpressionParserRuleCall_5()); 
+    }
+    this_NotExpression_5=ruleNotExpression
+    { 
+        $current = $this_NotExpression_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getNegativeExpressionParserRuleCall_6()); 
+    }
+    this_NegativeExpression_6=ruleNegativeExpression
+    { 
+        $current = $this_NegativeExpression_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getFunctionParserRuleCall_7()); 
+    }
+    this_Function_7=ruleFunction
+    { 
+        $current = $this_Function_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getParenthesisParserRuleCall_8()); 
+    }
+    this_Parenthesis_8=ruleParenthesis
+    { 
+        $current = $this_Parenthesis_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getLiteral_ImplParserRuleCall_9()); 
+    }
+    this_Literal_Impl_9=ruleLiteral_Impl
+    { 
+        $current = $this_Literal_Impl_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getStringLiteralParserRuleCall_10()); 
+    }
+    this_StringLiteral_10=ruleStringLiteral
+    { 
+        $current = $this_StringLiteral_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getBoolLiteralParserRuleCall_11()); 
+    }
+    this_BoolLiteral_11=ruleBoolLiteral
+    { 
+        $current = $this_BoolLiteral_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getIntLiteralParserRuleCall_12()); 
+    }
+    this_IntLiteral_12=ruleIntLiteral
+    { 
+        $current = $this_IntLiteral_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getDoubleLiteralParserRuleCall_13()); 
+    }
+    this_DoubleLiteral_13=ruleDoubleLiteral
+    { 
+        $current = $this_DoubleLiteral_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getFormalParameterParserRuleCall_14()); 
+    }
+    this_FormalParameter_14=ruleFormalParameter
+    { 
+        $current = $this_FormalParameter_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getProbabilityMassFunctionParserRuleCall_15()); 
+    }
+    this_ProbabilityMassFunction_15=ruleProbabilityMassFunction
+    { 
+        $current = $this_ProbabilityMassFunction_15.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getBoxedPDFParserRuleCall_16()); 
+    }
+    this_BoxedPDF_16=ruleBoxedPDF
+    { 
+        $current = $this_BoxedPDF_16.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getNormalDistributionParserRuleCall_17()); 
+    }
+    this_NormalDistribution_17=ruleNormalDistribution
+    { 
+        $current = $this_NormalDistribution_17.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getExponentialDistributionParserRuleCall_18()); 
+    }
+    this_ExponentialDistribution_18=ruleExponentialDistribution
+    { 
+        $current = $this_ExponentialDistribution_18.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEString
+entryRuleEString returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEStringRule()); } 
+	 iv_ruleEString=ruleEString 
+	 { $current=$iv_ruleEString.current.getText(); }  
+	 EOF 
+;
+
+// Rule EString
+ruleEString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_STRING_0=RULE_STRING    {
+		$current.merge(this_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_STRING_0, grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
+    }
+
+    |    this_ID_1=RULE_ID    {
+		$current.merge(this_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ID_1, grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleTermExpression
+entryRuleTermExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTermExpressionRule()); }
+	 iv_ruleTermExpression=ruleTermExpression 
+	 { $current=$iv_ruleTermExpression.current; } 
+	 EOF 
+;
+
+// Rule TermExpression
+ruleTermExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='TermExpression' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getTermExpressionAccess().getTermExpressionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTermExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getTermExpressionAccess().getTermExpression2ParserRuleCall_2()); 
+    }
+    this_TermExpression2_2=ruleTermExpression2
+    { 
+        $current = $this_TermExpression2_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getTermExpressionAccess().getTermExpressionLeftAction_3_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTermExpressionAccess().getOperationTermOperationsParserRuleCall_3_1_0()); 
+	    }
+		lv_operation_4_0=ruleTermOperations		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTermExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"operation",
+        		lv_operation_4_0, 
+        		"TermOperations");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTermExpressionAccess().getRightProductParserRuleCall_3_2_0()); 
+	    }
+		lv_right_5_0=ruleProduct		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTermExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_5_0, 
+        		"Product");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getTermExpressionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTermExpression2
+entryRuleTermExpression2 returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTermExpression2Rule()); }
+	 iv_ruleTermExpression2=ruleTermExpression2 
+	 { $current=$iv_ruleTermExpression2.current; } 
+	 EOF 
+;
+
+// Rule TermExpression2
+ruleTermExpression2 returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTermExpression2Access().getLeftTermParserRuleCall_0_0()); 
+	    }
+		lv_left_0_0=ruleTerm		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTermExpression2Rule());
+	        }
+       		set(
+       			$current, 
+       			"left",
+        		lv_left_0_0, 
+        		"Term");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTermExpression2Access().getOperationTermOperationsParserRuleCall_1_0()); 
+	    }
+		lv_operation_1_0=ruleTermOperations		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTermExpression2Rule());
+	        }
+       		set(
+       			$current, 
+       			"operation",
+        		lv_operation_1_0, 
+        		"TermOperations");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTermExpression2Access().getRightProductParserRuleCall_2_0()); 
+	    }
+		lv_right_2_0=ruleProduct		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTermExpression2Rule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_2_0, 
+        		"Product");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleProductExpression
+entryRuleProductExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProductExpressionRule()); }
+	 iv_ruleProductExpression=ruleProductExpression 
+	 { $current=$iv_ruleProductExpression.current; } 
+	 EOF 
+;
+
+// Rule ProductExpression
+ruleProductExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ProductExpression' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getProductExpressionAccess().getProductExpressionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getProductExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getProductExpressionAccess().getProductExpression2ParserRuleCall_2()); 
+    }
+    this_ProductExpression2_2=ruleProductExpression2
+    { 
+        $current = $this_ProductExpression2_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getProductExpressionAccess().getProductExpressionLeftAction_3_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProductExpressionAccess().getOperationProductOperationsParserRuleCall_3_1_0()); 
+	    }
+		lv_operation_4_0=ruleProductOperations		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProductExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"operation",
+        		lv_operation_4_0, 
+        		"ProductOperations");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProductExpressionAccess().getRightPowerParserRuleCall_3_2_0()); 
+	    }
+		lv_right_5_0=rulePower		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProductExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_5_0, 
+        		"Power");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getProductExpressionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleProductExpression2
+entryRuleProductExpression2 returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProductExpression2Rule()); }
+	 iv_ruleProductExpression2=ruleProductExpression2 
+	 { $current=$iv_ruleProductExpression2.current; } 
+	 EOF 
+;
+
+// Rule ProductExpression2
+ruleProductExpression2 returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProductExpression2Access().getLeftProductParserRuleCall_0_0()); 
+	    }
+		lv_left_0_0=ruleProduct		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProductExpression2Rule());
+	        }
+       		set(
+       			$current, 
+       			"left",
+        		lv_left_0_0, 
+        		"Product");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProductExpression2Access().getOperationProductOperationsParserRuleCall_1_0()); 
+	    }
+		lv_operation_1_0=ruleProductOperations		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProductExpression2Rule());
+	        }
+       		set(
+       			$current, 
+       			"operation",
+        		lv_operation_1_0, 
+        		"ProductOperations");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProductExpression2Access().getRightPowerParserRuleCall_2_0()); 
+	    }
+		lv_right_2_0=rulePower		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProductExpression2Rule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_2_0, 
+        		"Power");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCompareExpression
+entryRuleCompareExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCompareExpressionRule()); }
+	 iv_ruleCompareExpression=ruleCompareExpression 
+	 { $current=$iv_ruleCompareExpression.current; } 
+	 EOF 
+;
+
+// Rule CompareExpression
+ruleCompareExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='CompareExpression' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCompareExpressionAccess().getCompareExpressionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCompareExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='operation' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCompareExpressionAccess().getOperationKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompareExpressionAccess().getOperationCompareOperationsParserRuleCall_3_0()); 
+	    }
+		lv_operation_3_0=ruleCompareOperations		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompareExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"operation",
+        		lv_operation_3_0, 
+        		"CompareOperations");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='left' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getCompareExpressionAccess().getLeftKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompareExpressionAccess().getLeftTermParserRuleCall_5_0()); 
+	    }
+		lv_left_5_0=ruleTerm		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompareExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"left",
+        		lv_left_5_0, 
+        		"Term");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='right' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCompareExpressionAccess().getRightKeyword_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompareExpressionAccess().getRightTermParserRuleCall_7_0()); 
+	    }
+		lv_right_7_0=ruleTerm		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompareExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_7_0, 
+        		"Term");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getCompareExpressionAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePowerExpression
+entryRulePowerExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPowerExpressionRule()); }
+	 iv_rulePowerExpression=rulePowerExpression 
+	 { $current=$iv_rulePowerExpression.current; } 
+	 EOF 
+;
+
+// Rule PowerExpression
+rulePowerExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='PowerExpression' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPowerExpressionAccess().getPowerExpressionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPowerExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='base' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPowerExpressionAccess().getBaseKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPowerExpressionAccess().getBasePowerParserRuleCall_3_0()); 
+	    }
+		lv_base_3_0=rulePower		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPowerExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"base",
+        		lv_base_3_0, 
+        		"Power");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='exponent' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPowerExpressionAccess().getExponentKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPowerExpressionAccess().getExponentUnaryParserRuleCall_5_0()); 
+	    }
+		lv_exponent_5_0=ruleUnary		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPowerExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"exponent",
+        		lv_exponent_5_0, 
+        		"Unary");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getPowerExpressionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBooleanOperatorExpression
+entryRuleBooleanOperatorExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBooleanOperatorExpressionRule()); }
+	 iv_ruleBooleanOperatorExpression=ruleBooleanOperatorExpression 
+	 { $current=$iv_ruleBooleanOperatorExpression.current; } 
+	 EOF 
+;
+
+// Rule BooleanOperatorExpression
+ruleBooleanOperatorExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='BooleanOperatorExpression' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getBooleanOperatorExpressionAccess().getBooleanOperatorExpressionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getBooleanOperatorExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='operation' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBooleanOperatorExpressionAccess().getOperationKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBooleanOperatorExpressionAccess().getOperationBooleanOperationsParserRuleCall_3_0()); 
+	    }
+		lv_operation_3_0=ruleBooleanOperations		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBooleanOperatorExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"operation",
+        		lv_operation_3_0, 
+        		"BooleanOperations");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='left' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getBooleanOperatorExpressionAccess().getLeftKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBooleanOperatorExpressionAccess().getLeftBooleanExpressionParserRuleCall_5_0()); 
+	    }
+		lv_left_5_0=ruleBooleanExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBooleanOperatorExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"left",
+        		lv_left_5_0, 
+        		"BooleanExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='right' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getBooleanOperatorExpressionAccess().getRightKeyword_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBooleanOperatorExpressionAccess().getRightBooleanExpressionParserRuleCall_7_0()); 
+	    }
+		lv_right_7_0=ruleBooleanExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBooleanOperatorExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_7_0, 
+        		"BooleanExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getBooleanOperatorExpressionAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNotExpression
+entryRuleNotExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNotExpressionRule()); }
+	 iv_ruleNotExpression=ruleNotExpression 
+	 { $current=$iv_ruleNotExpression.current; } 
+	 EOF 
+;
+
+// Rule NotExpression
+ruleNotExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='NotExpression' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getNotExpressionAccess().getNotExpressionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNotExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='inner' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNotExpressionAccess().getInnerKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNotExpressionAccess().getInnerUnaryParserRuleCall_3_0()); 
+	    }
+		lv_inner_3_0=ruleUnary		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNotExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"inner",
+        		lv_inner_3_0, 
+        		"Unary");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNotExpressionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNegativeExpression
+entryRuleNegativeExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNegativeExpressionRule()); }
+	 iv_ruleNegativeExpression=ruleNegativeExpression 
+	 { $current=$iv_ruleNegativeExpression.current; } 
+	 EOF 
+;
+
+// Rule NegativeExpression
+ruleNegativeExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='NegativeExpression' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getNegativeExpressionAccess().getNegativeExpressionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNegativeExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='inner' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNegativeExpressionAccess().getInnerKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNegativeExpressionAccess().getInnerUnaryParserRuleCall_3_0()); 
+	    }
+		lv_inner_3_0=ruleUnary		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNegativeExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"inner",
+        		lv_inner_3_0, 
+        		"Unary");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNegativeExpressionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleIfElseExpression
+entryRuleIfElseExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIfElseExpressionRule()); }
+	 iv_ruleIfElseExpression=ruleIfElseExpression 
+	 { $current=$iv_ruleIfElseExpression.current; } 
+	 EOF 
+;
+
+// Rule IfElseExpression
+ruleIfElseExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='IfElseExpression' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getIfElseExpressionAccess().getIfElseExpressionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getIfElseExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='ifExpression' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getIfElseExpressionAccess().getIfExpressionKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfElseExpressionAccess().getIfExpressionBooleanExpressionParserRuleCall_3_0()); 
+	    }
+		lv_ifExpression_3_0=ruleBooleanExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfElseExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"ifExpression",
+        		lv_ifExpression_3_0, 
+        		"BooleanExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='elseExpression' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getIfElseExpressionAccess().getElseExpressionKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfElseExpressionAccess().getElseExpressionBooleanExpressionParserRuleCall_5_0()); 
+	    }
+		lv_elseExpression_5_0=ruleBooleanExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfElseExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"elseExpression",
+        		lv_elseExpression_5_0, 
+        		"BooleanExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='conditionExpression' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getIfElseExpressionAccess().getConditionExpressionKeyword_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIfElseExpressionAccess().getConditionExpressionBooleanExpressionParserRuleCall_7_0()); 
+	    }
+		lv_conditionExpression_7_0=ruleBooleanExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIfElseExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"conditionExpression",
+        		lv_conditionExpression_7_0, 
+        		"BooleanExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getIfElseExpressionAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunction
+entryRuleFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionRule()); }
+	 iv_ruleFunction=ruleFunction 
+	 { $current=$iv_ruleFunction.current; } 
+	 EOF 
+;
+
+// Rule Function
+ruleFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Function' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionAccess().getFunctionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='id' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionAccess().getIdKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionAccess().getIdEStringParserRuleCall_3_0()); 
+	    }
+		lv_id_3_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_3_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4='parameters' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFunctionAccess().getParametersKeyword_4_0());
+    }
+	otherlv_5='{' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_2_0()); 
+	    }
+		lv_parameters_6_0=ruleExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"parameters",
+        		lv_parameters_6_0, 
+        		"Expression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_7=',' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getFunctionAccess().getCommaKeyword_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_3_1_0()); 
+	    }
+		lv_parameters_8_0=ruleExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"parameters",
+        		lv_parameters_8_0, 
+        		"Expression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_4_4());
+    }
+)?	otherlv_10='}' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleParenthesis
+entryRuleParenthesis returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getParenthesisRule()); }
+	 iv_ruleParenthesis=ruleParenthesis 
+	 { $current=$iv_ruleParenthesis.current; } 
+	 EOF 
+;
+
+// Rule Parenthesis
+ruleParenthesis returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Parenthesis' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getParenthesisAccess().getParenthesisKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getParenthesisAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='innerExpression' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getParenthesisAccess().getInnerExpressionKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParenthesisAccess().getInnerExpressionExpressionParserRuleCall_3_0()); 
+	    }
+		lv_innerExpression_3_0=ruleExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParenthesisRule());
+	        }
+       		set(
+       			$current, 
+       			"innerExpression",
+        		lv_innerExpression_3_0, 
+        		"Expression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getParenthesisAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLiteral_Impl
+entryRuleLiteral_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLiteral_ImplRule()); }
+	 iv_ruleLiteral_Impl=ruleLiteral_Impl 
+	 { $current=$iv_ruleLiteral_Impl.current; } 
+	 EOF 
+;
+
+// Rule Literal_Impl
+ruleLiteral_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getLiteral_ImplAccess().getLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='Literal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLiteral_ImplAccess().getLiteralKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStringLiteral
+entryRuleStringLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStringLiteralRule()); }
+	 iv_ruleStringLiteral=ruleStringLiteral 
+	 { $current=$iv_ruleStringLiteral.current; } 
+	 EOF 
+;
+
+// Rule StringLiteral
+ruleStringLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='StringLiteral' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getStringLiteralAccess().getStringLiteralKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStringLiteralAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='value' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStringLiteralAccess().getValueKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getStringLiteralAccess().getValueEStringParserRuleCall_3_0()); 
+	    }
+		lv_value_3_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getStringLiteralRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getStringLiteralAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBoolLiteral
+entryRuleBoolLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBoolLiteralRule()); }
+	 iv_ruleBoolLiteral=ruleBoolLiteral 
+	 { $current=$iv_ruleBoolLiteral.current; } 
+	 EOF 
+;
+
+// Rule BoolLiteral
+ruleBoolLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_value_0_0=	'value' 
+    {
+        newLeafNode(lv_value_0_0, grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBoolLiteralRule());
+	        }
+       		setWithLastConsumed($current, "value", true, "value");
+	    }
+
+)
+)	otherlv_1='BoolLiteral' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getBoolLiteralAccess().getBoolLiteralKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleIntLiteral
+entryRuleIntLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIntLiteralRule()); }
+	 iv_ruleIntLiteral=ruleIntLiteral 
+	 { $current=$iv_ruleIntLiteral.current; } 
+	 EOF 
+;
+
+// Rule IntLiteral
+ruleIntLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='IntLiteral' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getIntLiteralAccess().getIntLiteralKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getIntLiteralAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='value' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getIntLiteralAccess().getValueKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getIntLiteralAccess().getValueEBigIntegerParserRuleCall_3_0()); 
+	    }
+		lv_value_3_0=ruleEBigInteger		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getIntLiteralRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"EBigInteger");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getIntLiteralAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDoubleLiteral
+entryRuleDoubleLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDoubleLiteralRule()); }
+	 iv_ruleDoubleLiteral=ruleDoubleLiteral 
+	 { $current=$iv_ruleDoubleLiteral.current; } 
+	 EOF 
+;
+
+// Rule DoubleLiteral
+ruleDoubleLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='DoubleLiteral' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDoubleLiteralAccess().getDoubleLiteralKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDoubleLiteralAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='value' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDoubleLiteralAccess().getValueKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDoubleLiteralAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_value_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDoubleLiteralRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDoubleLiteralAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFormalParameter
+entryRuleFormalParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFormalParameterRule()); }
+	 iv_ruleFormalParameter=ruleFormalParameter 
+	 { $current=$iv_ruleFormalParameter.current; } 
+	 EOF 
+;
+
+// Rule FormalParameter
+ruleFormalParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getFormalParameterAccess().getFormalParameterAction_0(),
+            $current);
+    }
+)	otherlv_1='FormalParameter' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getFormalParameterAccess().getFormalParameterKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFormalParameterAccess().getNameEStringParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleProbabilityMassFunction
+entryRuleProbabilityMassFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProbabilityMassFunctionRule()); }
+	 iv_ruleProbabilityMassFunction=ruleProbabilityMassFunction 
+	 { $current=$iv_ruleProbabilityMassFunction.current; } 
+	 EOF 
+;
+
+// Rule ProbabilityMassFunction
+ruleProbabilityMassFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0(),
+            $current);
+    }
+)	otherlv_1='ProbabilityMassFunction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='sample' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0());
+    }
+	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0()); 
+	    }
+		lv_sample_5_0=ruleSample		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProbabilityMassFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"sample",
+        		lv_sample_5_0, 
+        		"Sample");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=',' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0()); 
+	    }
+		lv_sample_7_0=ruleSample		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProbabilityMassFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"sample",
+        		lv_sample_7_0, 
+        		"Sample");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4());
+    }
+)?	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBoxedPDF
+entryRuleBoxedPDF returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBoxedPDFRule()); }
+	 iv_ruleBoxedPDF=ruleBoxedPDF 
+	 { $current=$iv_ruleBoxedPDF.current; } 
+	 EOF 
+;
+
+// Rule BoxedPDF
+ruleBoxedPDF returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0(),
+            $current);
+    }
+)	otherlv_1='BoxedPDF' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='sample' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0());
+    }
+	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0()); 
+	    }
+		lv_sample_5_0=ruleContinuousSample		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBoxedPDFRule());
+	        }
+       		add(
+       			$current, 
+       			"sample",
+        		lv_sample_5_0, 
+        		"ContinuousSample");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=',' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0()); 
+	    }
+		lv_sample_7_0=ruleContinuousSample		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBoxedPDFRule());
+	        }
+       		add(
+       			$current, 
+       			"sample",
+        		lv_sample_7_0, 
+        		"ContinuousSample");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4());
+    }
+)?	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNormalDistribution
+entryRuleNormalDistribution returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNormalDistributionRule()); }
+	 iv_ruleNormalDistribution=ruleNormalDistribution 
+	 { $current=$iv_ruleNormalDistribution.current; } 
+	 EOF 
+;
+
+// Rule NormalDistribution
+ruleNormalDistribution returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='NormalDistribution' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='mu' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNormalDistributionAccess().getMuKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_mu_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNormalDistributionRule());
+	        }
+       		set(
+       			$current, 
+       			"mu",
+        		lv_mu_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='sigma' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0()); 
+	    }
+		lv_sigma_5_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNormalDistributionRule());
+	        }
+       		set(
+       			$current, 
+       			"sigma",
+        		lv_sigma_5_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExponentialDistribution
+entryRuleExponentialDistribution returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExponentialDistributionRule()); }
+	 iv_ruleExponentialDistribution=ruleExponentialDistribution 
+	 { $current=$iv_ruleExponentialDistribution.current; } 
+	 EOF 
+;
+
+// Rule ExponentialDistribution
+ruleExponentialDistribution returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ExponentialDistribution' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='rate' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getExponentialDistributionAccess().getRateKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_rate_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExponentialDistributionRule());
+	        }
+       		set(
+       			$current, 
+       			"rate",
+        		lv_rate_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTermOperations
+entryRuleTermOperations returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTermOperationsRule()); } 
+	 iv_ruleTermOperations=ruleTermOperations 
+	 { $current=$iv_ruleTermOperations.current.getText(); }  
+	 EOF 
+;
+
+// Rule TermOperations
+ruleTermOperations returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='TermOperations' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getTermOperationsAccess().getTermOperationsKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleProductOperations
+entryRuleProductOperations returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProductOperationsRule()); } 
+	 iv_ruleProductOperations=ruleProductOperations 
+	 { $current=$iv_ruleProductOperations.current.getText(); }  
+	 EOF 
+;
+
+// Rule ProductOperations
+ruleProductOperations returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='ProductOperations' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getProductOperationsAccess().getProductOperationsKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleCompareOperations
+entryRuleCompareOperations returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCompareOperationsRule()); } 
+	 iv_ruleCompareOperations=ruleCompareOperations 
+	 { $current=$iv_ruleCompareOperations.current.getText(); }  
+	 EOF 
+;
+
+// Rule CompareOperations
+ruleCompareOperations returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='CompareOperations' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCompareOperationsAccess().getCompareOperationsKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleBooleanOperations
+entryRuleBooleanOperations returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBooleanOperationsRule()); } 
+	 iv_ruleBooleanOperations=ruleBooleanOperations 
+	 { $current=$iv_ruleBooleanOperations.current.getText(); }  
+	 EOF 
+;
+
+// Rule BooleanOperations
+ruleBooleanOperations returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='BooleanOperations' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getBooleanOperationsAccess().getBooleanOperationsKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+
+
+// Entry rule entryRuleEBigInteger
+entryRuleEBigInteger returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEBigIntegerRule()); } 
+	 iv_ruleEBigInteger=ruleEBigInteger 
+	 { $current=$iv_ruleEBigInteger.current.getText(); }  
+	 EOF 
+;
+
+// Rule EBigInteger
+ruleEBigInteger returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEBigIntegerAccess().getHyphenMinusKeyword_0()); 
+    }
+)?    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getEBigIntegerAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleEBigDecimal
+entryRuleEBigDecimal returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEBigDecimalRule()); } 
+	 iv_ruleEBigDecimal=ruleEBigDecimal 
+	 { $current=$iv_ruleEBigDecimal.current.getText(); }  
+	 EOF 
+;
+
+// Rule EBigDecimal
+ruleEBigDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_0()); 
+    }
+)?
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEBigDecimalAccess().getFullStopKeyword_1()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_2()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleSample
+entryRuleSample returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSampleRule()); }
+	 iv_ruleSample=ruleSample 
+	 { $current=$iv_ruleSample.current; } 
+	 EOF 
+;
+
+// Rule Sample
+ruleSample returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Sample' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSampleAccess().getSampleKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='probability' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getSampleAccess().getProbabilityKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_probability_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSampleRule());
+	        }
+       		set(
+       			$current, 
+       			"probability",
+        		lv_probability_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='value' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getSampleAccess().getValueKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSampleRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleContinuousSample
+entryRuleContinuousSample returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getContinuousSampleRule()); }
+	 iv_ruleContinuousSample=ruleContinuousSample 
+	 { $current=$iv_ruleContinuousSample.current; } 
+	 EOF 
+;
+
+// Rule ContinuousSample
+ruleContinuousSample returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ContinuousSample' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='value' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getContinuousSampleAccess().getValueKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_value_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getContinuousSampleRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='probability' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0()); 
+	    }
+		lv_probability_5_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getContinuousSampleRule());
+	        }
+       		set(
+       			$current, 
+       			"probability",
+        		lv_probability_5_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.tokens b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.tokens
new file mode 100644
index 00000000..deec0be8
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.tokens
@@ -0,0 +1,111 @@
+RULE_ID=5
+T__29=29
+T__28=28
+T__62=62
+T__27=27
+T__26=26
+T__25=25
+T__24=24
+T__23=23
+T__22=22
+RULE_ANY_OTHER=10
+T__21=21
+T__20=20
+T__61=61
+T__60=60
+T__55=55
+T__56=56
+T__19=19
+T__57=57
+T__58=58
+T__51=51
+T__16=16
+T__52=52
+T__15=15
+T__53=53
+T__18=18
+T__54=54
+T__17=17
+T__12=12
+T__11=11
+T__14=14
+T__13=13
+T__59=59
+RULE_INT=6
+T__50=50
+T__42=42
+T__43=43
+T__40=40
+T__41=41
+T__46=46
+T__47=47
+T__44=44
+T__45=45
+T__48=48
+T__49=49
+RULE_SL_COMMENT=8
+RULE_ML_COMMENT=7
+T__30=30
+T__31=31
+RULE_STRING=4
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+RULE_WS=9
+'ContinuousSample'=62
+'mu'=50
+'rate'=53
+'BooleanOperations'=57
+'IfElseExpression'=29
+'right'=21
+'base'=23
+'BoxedPDF'=48
+'conditionExpression'=32
+'value'=41
+'inner'=27
+'Parenthesis'=37
+'.'=59
+'StringLiteral'=40
+'{'=12
+'expression'=14
+'CompareExpression'=18
+'FormalParameter'=45
+'PowerExpression'=22
+'ProbabilityMassFunction'=46
+'-'=58
+'NotExpression'=26
+'DoubleLiteral'=44
+','=36
+'Sample'=60
+'Literal'=39
+'sample'=47
+'sigma'=51
+'NormalDistribution'=49
+'Function'=33
+'BooleanOperatorExpression'=25
+'ExponentialDistribution'=52
+'ExplicitFunction'=11
+'ProductExpression'=17
+'IntLiteral'=43
+'probability'=61
+'operation'=19
+'CompareOperations'=56
+'exponent'=24
+'specification'=13
+'BoolLiteral'=42
+'parameters'=35
+'}'=15
+'TermOperations'=54
+'elseExpression'=31
+'TermExpression'=16
+'id'=34
+'innerExpression'=38
+'ProductOperations'=55
+'NegativeExpression'=28
+'left'=20
+'ifExpression'=30
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1Lexer.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1Lexer.java
new file mode 100644
index 00000000..703892d6
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1Lexer.java
@@ -0,0 +1,2963 @@
+package org.xtext.example.mydsl1.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalMyDsl1Lexer extends Lexer {
+    public static final int RULE_ID=5;
+    public static final int T__29=29;
+    public static final int T__28=28;
+    public static final int T__27=27;
+    public static final int T__62=62;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int T__21=21;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__20=20;
+    public static final int T__61=61;
+    public static final int T__60=60;
+    public static final int EOF=-1;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__19=19;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__16=16;
+    public static final int T__52=52;
+    public static final int T__15=15;
+    public static final int T__53=53;
+    public static final int T__18=18;
+    public static final int T__54=54;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__59=59;
+    public static final int RULE_INT=6;
+    public static final int T__50=50;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int RULE_STRING=4;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+    public InternalMyDsl1Lexer() {;} 
+    public InternalMyDsl1Lexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalMyDsl1Lexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g"; }
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:11:7: ( 'ExplicitFunction' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:11:9: 'ExplicitFunction'
+            {
+            match("ExplicitFunction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__11"
+
+    // $ANTLR start "T__12"
+    public final void mT__12() throws RecognitionException {
+        try {
+            int _type = T__12;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:12:7: ( '{' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:12:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__12"
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:13:7: ( 'specification' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:13:9: 'specification'
+            {
+            match("specification"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:14:7: ( 'expression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:14:9: 'expression'
+            {
+            match("expression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:15:7: ( '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:15:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:16:7: ( 'TermExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:16:9: 'TermExpression'
+            {
+            match("TermExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:17:7: ( 'ProductExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:17:9: 'ProductExpression'
+            {
+            match("ProductExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:18:7: ( 'CompareExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:18:9: 'CompareExpression'
+            {
+            match("CompareExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:19:7: ( 'operation' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:19:9: 'operation'
+            {
+            match("operation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:20:7: ( 'left' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:20:9: 'left'
+            {
+            match("left"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:21:7: ( 'right' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:21:9: 'right'
+            {
+            match("right"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:22:7: ( 'PowerExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:22:9: 'PowerExpression'
+            {
+            match("PowerExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:23:7: ( 'base' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:23:9: 'base'
+            {
+            match("base"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:24:7: ( 'exponent' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:24:9: 'exponent'
+            {
+            match("exponent"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:25:7: ( 'BooleanOperatorExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:25:9: 'BooleanOperatorExpression'
+            {
+            match("BooleanOperatorExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:26:7: ( 'NotExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:26:9: 'NotExpression'
+            {
+            match("NotExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:27:7: ( 'inner' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:27:9: 'inner'
+            {
+            match("inner"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:28:7: ( 'NegativeExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:28:9: 'NegativeExpression'
+            {
+            match("NegativeExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:29:7: ( 'IfElseExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:29:9: 'IfElseExpression'
+            {
+            match("IfElseExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:30:7: ( 'ifExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:30:9: 'ifExpression'
+            {
+            match("ifExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:31:7: ( 'elseExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:31:9: 'elseExpression'
+            {
+            match("elseExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:32:7: ( 'conditionExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:32:9: 'conditionExpression'
+            {
+            match("conditionExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:33:7: ( 'Function' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:33:9: 'Function'
+            {
+            match("Function"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:34:7: ( 'id' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:34:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:35:7: ( 'parameters' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:35:9: 'parameters'
+            {
+            match("parameters"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:36:7: ( ',' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:36:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:37:7: ( 'Parenthesis' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:37:9: 'Parenthesis'
+            {
+            match("Parenthesis"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:38:7: ( 'innerExpression' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:38:9: 'innerExpression'
+            {
+            match("innerExpression"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:39:7: ( 'Literal' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:39:9: 'Literal'
+            {
+            match("Literal"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:40:7: ( 'StringLiteral' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:40:9: 'StringLiteral'
+            {
+            match("StringLiteral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:41:7: ( 'value' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:41:9: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:42:7: ( 'BoolLiteral' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:42:9: 'BoolLiteral'
+            {
+            match("BoolLiteral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:43:7: ( 'IntLiteral' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:43:9: 'IntLiteral'
+            {
+            match("IntLiteral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:44:7: ( 'DoubleLiteral' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:44:9: 'DoubleLiteral'
+            {
+            match("DoubleLiteral"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:45:7: ( 'FormalParameter' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:45:9: 'FormalParameter'
+            {
+            match("FormalParameter"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:46:7: ( 'ProbabilityMassFunction' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:46:9: 'ProbabilityMassFunction'
+            {
+            match("ProbabilityMassFunction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:47:7: ( 'sample' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:47:9: 'sample'
+            {
+            match("sample"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:48:7: ( 'BoxedPDF' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:48:9: 'BoxedPDF'
+            {
+            match("BoxedPDF"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:49:7: ( 'NormalDistribution' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:49:9: 'NormalDistribution'
+            {
+            match("NormalDistribution"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:50:7: ( 'mu' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:50:9: 'mu'
+            {
+            match("mu"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:51:7: ( 'sigma' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:51:9: 'sigma'
+            {
+            match("sigma"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:52:7: ( 'ExponentialDistribution' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:52:9: 'ExponentialDistribution'
+            {
+            match("ExponentialDistribution"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:53:7: ( 'rate' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:53:9: 'rate'
+            {
+            match("rate"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:54:7: ( 'TermOperations' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:54:9: 'TermOperations'
+            {
+            match("TermOperations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:55:7: ( 'ProductOperations' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:55:9: 'ProductOperations'
+            {
+            match("ProductOperations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:56:7: ( 'CompareOperations' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:56:9: 'CompareOperations'
+            {
+            match("CompareOperations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:57:7: ( 'BooleanOperations' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:57:9: 'BooleanOperations'
+            {
+            match("BooleanOperations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:58:7: ( '-' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:58:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:59:7: ( '.' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:59:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:60:7: ( 'Sample' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:60:9: 'Sample'
+            {
+            match("Sample"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:61:7: ( 'probability' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:61:9: 'probability'
+            {
+            match("probability"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:62:7: ( 'ContinuousSample' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:62:9: 'ContinuousSample'
+            {
+            match("ContinuousSample"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3216:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3216:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3216:11: ( '^' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='^') ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3216:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3216:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3218:10: ( ( '0' .. '9' )+ )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3218:12: ( '0' .. '9' )+
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3218:12: ( '0' .. '9' )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3218:13: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0=='\"') ) {
+                alt6=1;
+            }
+            else if ( (LA6_0=='\'') ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop4:
+                    do {
+                        int alt4=3;
+                        int LA4_0 = input.LA(1);
+
+                        if ( (LA4_0=='\\') ) {
+                            alt4=1;
+                        }
+                        else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) {
+                            alt4=2;
+                        }
+
+
+                        switch (alt4) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:66: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop4;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop5:
+                    do {
+                        int alt5=3;
+                        int LA5_0 = input.LA(1);
+
+                        if ( (LA5_0=='\\') ) {
+                            alt5=1;
+                        }
+                        else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFF')) ) {
+                            alt5=2;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3220:137: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop5;
+                        }
+                    } while (true);
+
+                    match('\''); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3222:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3222:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3222:24: ( options {greedy=false; } : . )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0=='*') ) {
+                    int LA7_1 = input.LA(2);
+
+                    if ( (LA7_1=='/') ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFF')) ) {
+                        alt7=1;
+                    }
+
+
+                }
+                else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3222:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3224:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3224:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3224:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3224:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop8;
+                }
+            } while (true);
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3224:40: ( ( '\\r' )? '\\n' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3224:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3224:41: ( '\\r' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0=='\r') ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3224:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3226:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3226:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3226:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3228:16: ( . )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3228:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=59;
+        alt12 = dfa12.predict(input);
+        switch (alt12) {
+            case 1 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:10: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:16: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:22: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:28: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:34: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:40: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:46: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:52: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:58: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:64: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:70: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:76: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:82: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:88: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:94: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:100: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:106: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:112: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:118: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:124: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:130: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:136: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:142: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:148: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:154: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:160: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:166: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:172: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:178: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:184: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:190: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:196: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:202: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:208: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:214: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:220: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:226: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:232: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:238: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:244: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:250: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:256: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:262: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:268: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:274: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:280: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:286: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:292: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:298: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:304: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:310: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:316: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:322: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:330: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:339: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:351: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:367: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:383: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1:391: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA12_eotS =
+        "\1\uffff\1\45\1\uffff\2\45\1\uffff\16\45\1\uffff\5\45\2\uffff\1"+
+        "\43\2\uffff\3\43\2\uffff\1\45\2\uffff\5\45\1\uffff\17\45\1\152\7"+
+        "\45\1\uffff\5\45\1\167\7\uffff\30\45\1\uffff\14\45\1\uffff\20\45"+
+        "\1\u00b0\1\45\1\u00b2\1\u00b3\27\45\1\u00cc\14\45\1\uffff\1\u00d9"+
+        "\2\uffff\6\45\1\u00e1\13\45\1\u00ed\4\45\1\u00f2\1\uffff\14\45\1"+
+        "\uffff\7\45\1\uffff\12\45\1\u0110\1\uffff\4\45\1\uffff\33\45\1\u0132"+
+        "\1\45\1\uffff\5\45\1\u0139\16\45\1\u0148\10\45\1\u0151\3\45\1\uffff"+
+        "\6\45\1\uffff\13\45\1\u0166\2\45\1\uffff\10\45\1\uffff\10\45\1\u0179"+
+        "\13\45\1\uffff\10\45\1\u018d\2\45\1\u0190\6\45\1\uffff\7\45\1\u019e"+
+        "\4\45\1\u01a3\6\45\1\uffff\2\45\1\uffff\1\u01ac\14\45\1\uffff\4"+
+        "\45\1\uffff\4\45\1\u01c1\3\45\1\uffff\4\45\1\u01c9\13\45\1\u01d6"+
+        "\3\45\1\uffff\3\45\1\u01dd\1\u01de\2\45\1\uffff\1\u01e1\1\u01e2"+
+        "\1\u01e3\11\45\1\uffff\6\45\2\uffff\2\45\3\uffff\3\45\1\u01f8\7"+
+        "\45\1\u0200\2\45\1\u0203\1\u0204\4\45\1\uffff\2\45\1\u020b\4\45"+
+        "\1\uffff\1\u0210\1\45\2\uffff\1\45\1\u0213\1\u0214\1\45\1\u0216"+
+        "\1\u0217\1\uffff\1\45\1\u0219\2\45\1\uffff\2\45\2\uffff\1\45\2\uffff"+
+        "\1\45\1\uffff\1\u0220\1\u0221\4\45\2\uffff\1\u0226\3\45\1\uffff"+
+        "\6\45\1\u0230\1\u0231\1\45\2\uffff\1\45\1\u0234\1\uffff";
+    static final String DFA12_eofS =
+        "\u0235\uffff";
+    static final String DFA12_minS =
+        "\1\0\1\170\1\uffff\1\141\1\154\1\uffff\1\145\1\141\1\157\1\160"+
+        "\1\145\2\141\1\157\1\145\1\144\1\146\2\157\1\141\1\uffff\1\151\2"+
+        "\141\1\157\1\165\2\uffff\1\101\2\uffff\2\0\1\52\2\uffff\1\160\2"+
+        "\uffff\1\145\1\155\1\147\1\160\1\163\1\uffff\1\162\1\157\1\167\1"+
+        "\162\1\155\1\145\1\146\1\147\1\164\1\163\1\157\1\162\1\147\1\156"+
+        "\1\105\1\60\1\105\1\164\2\156\2\162\1\157\1\uffff\1\164\1\162\1"+
+        "\155\1\154\1\165\1\60\7\uffff\1\154\1\143\1\160\1\155\1\157\1\145"+
+        "\1\155\1\142\2\145\1\160\1\164\1\162\1\164\1\150\2\145\1\154\1\145"+
+        "\1\105\1\155\1\141\1\145\1\170\1\uffff\1\154\1\114\1\144\1\143\1"+
+        "\155\1\141\1\142\1\145\1\151\1\160\1\165\1\142\1\uffff\1\151\1\156"+
+        "\1\151\1\154\1\141\1\145\1\156\2\105\1\165\1\141\1\162\1\156\1\141"+
+        "\1\151\1\141\1\60\1\164\2\60\1\114\1\144\1\170\1\141\1\164\1\162"+
+        "\1\160\1\163\2\151\1\164\1\141\1\155\1\141\1\162\1\156\1\154\1\145"+
+        "\1\154\1\143\1\145\1\146\1\145\1\60\1\163\1\145\2\170\1\160\1\143"+
+        "\1\142\1\105\1\164\1\162\1\156\1\164\1\uffff\1\60\2\uffff\1\141"+
+        "\1\151\1\120\1\160\1\154\1\151\1\60\1\162\1\145\2\164\1\151\1\154"+
+        "\1\145\1\142\1\141\1\147\1\145\1\60\1\145\1\151\1\156\1\151\1\60"+
+        "\1\uffff\1\163\1\156\2\160\1\145\1\164\1\151\1\170\1\150\1\145\1"+
+        "\165\1\151\1\uffff\1\156\1\164\1\104\1\162\1\104\1\166\1\170\1\uffff"+
+        "\1\145\1\105\1\145\1\151\1\157\1\120\1\164\1\151\1\154\1\114\1\60"+
+        "\1\uffff\1\114\2\164\1\143\1\uffff\1\151\1\164\3\162\1\105\1\154"+
+        "\1\160\1\145\1\105\2\157\1\117\1\145\1\106\1\145\1\151\1\145\1\160"+
+        "\1\163\1\170\1\162\1\157\1\156\1\141\1\145\1\154\1\60\1\151\1\uffff"+
+        "\1\151\1\106\1\151\1\141\1\157\1\60\2\145\1\141\1\170\1\160\1\151"+
+        "\1\162\1\163\1\170\1\160\1\165\1\156\1\160\1\162\1\60\2\163\1\105"+
+        "\1\162\1\163\1\160\1\141\1\156\1\60\2\162\1\151\1\uffff\2\164\1"+
+        "\165\1\141\1\164\1\156\1\uffff\2\163\1\164\1\160\1\145\1\164\1\145"+
+        "\1\151\1\160\1\145\1\163\1\60\1\145\1\141\1\uffff\1\163\1\164\1"+
+        "\170\1\145\1\151\1\162\1\154\1\105\1\uffff\1\141\1\163\1\164\2\145"+
+        "\1\156\1\154\1\151\1\60\2\163\1\151\2\162\1\171\2\163\2\162\1\123"+
+        "\1\uffff\1\162\1\154\1\151\1\162\1\160\1\163\1\157\1\145\1\60\1"+
+        "\170\1\155\1\60\1\171\2\162\1\143\1\104\1\157\1\uffff\2\151\1\157"+
+        "\1\145\1\141\1\115\1\163\1\60\1\145\3\141\1\60\1\157\1\151\1\162"+
+        "\1\163\1\156\1\163\1\uffff\1\160\1\145\1\uffff\1\60\2\141\1\164"+
+        "\1\151\1\156\2\157\1\156\1\163\1\164\1\141\1\151\1\uffff\1\163\1"+
+        "\164\1\155\1\164\1\uffff\1\156\1\142\1\145\1\151\1\60\1\163\1\162"+
+        "\1\164\1\uffff\2\154\1\151\1\163\1\60\2\156\2\163\1\151\1\163\1"+
+        "\157\1\163\1\151\1\160\1\151\1\60\1\165\1\163\1\157\1\uffff\1\151"+
+        "\2\145\2\60\1\157\1\164\1\uffff\3\60\1\151\1\157\1\163\1\156\1\151"+
+        "\1\157\1\154\1\162\1\157\1\uffff\1\164\1\163\1\156\1\157\1\163\1"+
+        "\162\2\uffff\1\156\1\162\3\uffff\1\157\1\156\1\106\1\60\1\157\1"+
+        "\156\1\145\1\105\1\156\2\151\1\60\1\156\1\163\2\60\1\151\1\156\1"+
+        "\163\1\165\1\uffff\1\156\1\163\1\60\1\170\1\163\2\157\1\uffff\1"+
+        "\60\1\151\2\uffff\1\142\2\60\1\156\2\60\1\uffff\1\160\1\60\2\156"+
+        "\1\uffff\1\157\1\165\2\uffff\1\143\2\uffff\1\162\1\uffff\2\60\1"+
+        "\156\2\164\1\145\2\uffff\1\60\2\151\1\163\1\uffff\2\157\1\163\2"+
+        "\156\1\151\2\60\1\157\2\uffff\1\156\1\60\1\uffff";
+    static final String DFA12_maxS =
+        "\1\uffff\1\170\1\uffff\1\160\1\170\1\uffff\1\145\1\162\1\157\1"+
+        "\160\1\145\1\151\1\141\2\157\2\156\1\157\1\165\1\162\1\uffff\1\151"+
+        "\1\164\1\141\1\157\1\165\2\uffff\1\172\2\uffff\2\uffff\1\57\2\uffff"+
+        "\1\160\2\uffff\1\145\1\155\1\147\1\160\1\163\1\uffff\1\162\1\157"+
+        "\1\167\1\162\1\156\1\145\1\146\1\147\1\164\1\163\1\170\1\164\1\147"+
+        "\1\156\1\105\1\172\1\105\1\164\2\156\2\162\1\157\1\uffff\1\164\1"+
+        "\162\1\155\1\154\1\165\1\172\7\uffff\1\157\1\143\1\160\1\155\1\162"+
+        "\1\145\1\155\1\144\2\145\1\160\1\164\1\162\1\164\1\150\2\145\1\154"+
+        "\1\145\1\105\1\155\1\141\1\145\1\170\1\uffff\1\154\1\114\1\144\1"+
+        "\143\1\155\1\141\1\142\1\145\1\151\1\160\1\165\1\142\1\uffff\1\151"+
+        "\1\156\1\151\1\154\1\141\1\145\1\156\1\105\1\117\1\165\1\141\1\162"+
+        "\1\156\1\141\1\151\1\141\1\172\1\164\2\172\1\145\1\144\1\170\1\141"+
+        "\1\164\1\162\1\160\1\163\2\151\1\164\1\141\1\155\1\141\1\162\1\156"+
+        "\1\154\1\145\1\154\1\143\1\145\1\146\1\145\1\172\1\163\1\145\2\170"+
+        "\1\160\1\143\1\142\1\105\1\164\1\162\1\156\1\164\1\uffff\1\172\2"+
+        "\uffff\1\141\1\151\1\120\1\160\1\154\1\151\1\172\1\162\1\145\2\164"+
+        "\1\151\1\154\1\145\1\142\1\141\1\147\1\145\1\172\1\145\1\151\1\156"+
+        "\1\151\1\172\1\uffff\1\163\1\156\2\160\1\145\1\164\1\151\1\170\1"+
+        "\150\1\145\1\165\1\151\1\uffff\1\156\1\164\1\104\1\162\1\104\1\166"+
+        "\1\170\1\uffff\1\145\1\105\1\145\1\151\1\157\1\120\1\164\1\151\1"+
+        "\154\1\114\1\172\1\uffff\1\114\2\164\1\143\1\uffff\1\151\1\164\3"+
+        "\162\1\117\1\154\1\160\1\145\1\117\2\157\1\117\1\145\1\106\1\145"+
+        "\1\151\1\145\1\160\1\163\1\170\1\162\1\157\1\156\1\141\1\145\1\154"+
+        "\1\172\1\151\1\uffff\1\151\1\106\1\151\1\141\1\157\1\172\2\145\1"+
+        "\141\1\170\1\160\1\151\1\162\1\163\1\170\1\160\1\165\1\156\1\160"+
+        "\1\162\1\172\2\163\1\105\1\162\1\163\1\160\1\141\1\156\1\172\2\162"+
+        "\1\151\1\uffff\2\164\1\165\1\141\1\164\1\156\1\uffff\2\163\1\164"+
+        "\1\160\1\145\1\164\1\145\1\151\1\160\1\145\1\163\1\172\1\145\1\141"+
+        "\1\uffff\1\163\1\164\1\170\1\145\1\151\1\162\1\154\1\105\1\uffff"+
+        "\1\141\1\163\1\164\2\145\1\156\1\154\1\151\1\172\2\163\1\151\2\162"+
+        "\1\171\2\163\2\162\1\123\1\uffff\1\162\1\154\1\151\1\162\1\160\1"+
+        "\163\1\157\1\145\1\172\1\170\1\155\1\172\1\171\2\162\1\143\1\104"+
+        "\1\157\1\uffff\2\151\1\157\1\145\1\141\1\115\1\163\1\172\1\145\3"+
+        "\141\1\172\1\157\1\151\1\162\1\163\1\156\1\163\1\uffff\1\160\1\145"+
+        "\1\uffff\1\172\2\141\1\164\1\151\1\156\2\157\1\156\1\163\1\164\1"+
+        "\141\1\151\1\uffff\1\163\1\164\1\155\1\164\1\uffff\1\156\1\142\1"+
+        "\145\1\151\1\172\1\163\1\162\1\164\1\uffff\2\154\1\151\1\163\1\172"+
+        "\2\156\2\163\1\151\1\163\1\157\1\163\1\151\1\160\1\157\1\172\1\165"+
+        "\1\163\1\157\1\uffff\1\151\2\145\2\172\1\157\1\164\1\uffff\3\172"+
+        "\1\151\1\157\1\163\1\156\1\151\1\157\1\154\1\162\1\157\1\uffff\1"+
+        "\164\1\163\1\156\1\157\1\163\1\162\2\uffff\1\156\1\162\3\uffff\1"+
+        "\157\1\156\1\106\1\172\1\157\1\156\1\145\1\105\1\156\2\151\1\172"+
+        "\1\156\1\163\2\172\1\151\1\156\1\163\1\165\1\uffff\1\156\1\163\1"+
+        "\172\1\170\1\163\2\157\1\uffff\1\172\1\151\2\uffff\1\142\2\172\1"+
+        "\156\2\172\1\uffff\1\160\1\172\2\156\1\uffff\1\157\1\165\2\uffff"+
+        "\1\143\2\uffff\1\162\1\uffff\2\172\1\156\2\164\1\145\2\uffff\1\172"+
+        "\2\151\1\163\1\uffff\2\157\1\163\2\156\1\151\2\172\1\157\2\uffff"+
+        "\1\156\1\172\1\uffff";
+    static final String DFA12_acceptS =
+        "\2\uffff\1\2\2\uffff\1\5\16\uffff\1\32\5\uffff\1\60\1\61\1\uffff"+
+        "\1\65\1\66\3\uffff\1\72\1\73\1\uffff\1\65\1\2\5\uffff\1\5\27\uffff"+
+        "\1\32\6\uffff\1\60\1\61\1\66\1\67\1\70\1\71\1\72\30\uffff\1\30\14"+
+        "\uffff\1\50\70\uffff\1\12\1\uffff\1\53\1\15\30\uffff\1\51\14\uffff"+
+        "\1\13\7\uffff\1\21\13\uffff\1\37\4\uffff\1\45\35\uffff\1\62\41\uffff"+
+        "\1\35\6\uffff\1\16\16\uffff\1\46\10\uffff\1\27\24\uffff\1\11\22"+
+        "\uffff\1\4\23\uffff\1\41\2\uffff\1\31\15\uffff\1\33\4\uffff\1\40"+
+        "\10\uffff\1\63\24\uffff\1\24\7\uffff\1\3\14\uffff\1\20\6\uffff\1"+
+        "\36\1\42\2\uffff\1\25\1\6\1\54\24\uffff\1\14\7\uffff\1\34\2\uffff"+
+        "\1\43\1\1\6\uffff\1\64\4\uffff\1\23\2\uffff\1\7\1\55\1\uffff\1\10"+
+        "\1\56\1\uffff\1\57\6\uffff\1\47\1\22\4\uffff\1\26\11\uffff\1\52"+
+        "\1\44\2\uffff\1\17";
+    static final String DFA12_specialS =
+        "\1\2\36\uffff\1\0\1\1\u0214\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\11\43\2\42\2\43\1\42\22\43\1\42\1\43\1\37\4\43\1\40\4\43\1"+
+            "\24\1\32\1\33\1\41\12\36\7\43\1\35\1\15\1\10\1\30\1\1\1\22\2"+
+            "\35\1\20\2\35\1\25\1\35\1\16\1\35\1\7\2\35\1\26\1\6\6\35\3\43"+
+            "\1\34\1\35\1\43\1\35\1\14\1\21\1\35\1\4\3\35\1\17\2\35\1\12"+
+            "\1\31\1\35\1\11\1\23\1\35\1\13\1\3\2\35\1\27\4\35\1\2\1\43\1"+
+            "\5\uff82\43",
+            "\1\44",
+            "",
+            "\1\50\7\uffff\1\51\6\uffff\1\47",
+            "\1\53\13\uffff\1\52",
+            "",
+            "\1\55",
+            "\1\60\15\uffff\1\57\2\uffff\1\56",
+            "\1\61",
+            "\1\62",
+            "\1\63",
+            "\1\65\7\uffff\1\64",
+            "\1\66",
+            "\1\67",
+            "\1\71\11\uffff\1\70",
+            "\1\74\1\uffff\1\73\7\uffff\1\72",
+            "\1\75\7\uffff\1\76",
+            "\1\77",
+            "\1\101\5\uffff\1\100",
+            "\1\102\20\uffff\1\103",
+            "",
+            "\1\105",
+            "\1\107\22\uffff\1\106",
+            "\1\110",
+            "\1\111",
+            "\1\112",
+            "",
+            "",
+            "\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "",
+            "\0\116",
+            "\0\116",
+            "\1\117\4\uffff\1\120",
+            "",
+            "",
+            "\1\122",
+            "",
+            "",
+            "\1\123",
+            "\1\124",
+            "\1\125",
+            "\1\126",
+            "\1\127",
+            "",
+            "\1\130",
+            "\1\131",
+            "\1\132",
+            "\1\133",
+            "\1\134\1\135",
+            "\1\136",
+            "\1\137",
+            "\1\140",
+            "\1\141",
+            "\1\142",
+            "\1\143\10\uffff\1\144",
+            "\1\146\1\uffff\1\145",
+            "\1\147",
+            "\1\150",
+            "\1\151",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\153",
+            "\1\154",
+            "\1\155",
+            "\1\156",
+            "\1\157",
+            "\1\160",
+            "\1\161",
+            "",
+            "\1\162",
+            "\1\163",
+            "\1\164",
+            "\1\165",
+            "\1\166",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\170\2\uffff\1\171",
+            "\1\172",
+            "\1\173",
+            "\1\174",
+            "\1\176\2\uffff\1\175",
+            "\1\177",
+            "\1\u0080",
+            "\1\u0082\1\uffff\1\u0081",
+            "\1\u0083",
+            "\1\u0084",
+            "\1\u0085",
+            "\1\u0086",
+            "\1\u0087",
+            "\1\u0088",
+            "\1\u0089",
+            "\1\u008a",
+            "\1\u008b",
+            "\1\u008c",
+            "\1\u008d",
+            "\1\u008e",
+            "\1\u008f",
+            "\1\u0090",
+            "\1\u0091",
+            "\1\u0092",
+            "",
+            "\1\u0093",
+            "\1\u0094",
+            "\1\u0095",
+            "\1\u0096",
+            "\1\u0097",
+            "\1\u0098",
+            "\1\u0099",
+            "\1\u009a",
+            "\1\u009b",
+            "\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
+            "",
+            "\1\u009f",
+            "\1\u00a0",
+            "\1\u00a1",
+            "\1\u00a2",
+            "\1\u00a3",
+            "\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7\11\uffff\1\u00a8",
+            "\1\u00a9",
+            "\1\u00aa",
+            "\1\u00ab",
+            "\1\u00ac",
+            "\1\u00ad",
+            "\1\u00ae",
+            "\1\u00af",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u00b1",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u00b5\30\uffff\1\u00b4",
+            "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\12\45\7\uffff\4\45\1\u00e0\25\45\4\uffff\1\45\1\uffff\32"+
+            "\45",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe",
+            "",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\u0114",
+            "",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\u011a\11\uffff\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f\11\uffff\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0133",
+            "",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\u0150",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0167",
+            "\1\u0168",
+            "",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u018e",
+            "\1\u018f",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\u019a",
+            "\1\u019b",
+            "\1\u019c",
+            "\1\u019d",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u019f",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "",
+            "\1\u01aa",
+            "\1\u01ab",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8",
+            "",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc",
+            "",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\u01d3",
+            "\1\u01d5\5\uffff\1\u01d4",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01d9",
+            "",
+            "\1\u01da",
+            "\1\u01db",
+            "\1\u01dc",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01df",
+            "\1\u01e0",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01e4",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "",
+            "",
+            "\1\u01f3",
+            "\1\u01f4",
+            "",
+            "",
+            "",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0201",
+            "\1\u0202",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "",
+            "\1\u0209",
+            "\1\u020a",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u020c",
+            "\1\u020d",
+            "\1\u020e",
+            "\1\u020f",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0211",
+            "",
+            "",
+            "\1\u0212",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0215",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "",
+            "\1\u0218",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u021a",
+            "\1\u021b",
+            "",
+            "\1\u021c",
+            "\1\u021d",
+            "",
+            "",
+            "\1\u021e",
+            "",
+            "",
+            "\1\u021f",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\u0225",
+            "",
+            "",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0227",
+            "\1\u0228",
+            "\1\u0229",
+            "",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\u022c",
+            "\1\u022d",
+            "\1\u022e",
+            "\1\u022f",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            "\1\u0232",
+            "",
+            "",
+            "\1\u0233",
+            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    static class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA12_31 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_31>='\u0000' && LA12_31<='\uFFFF')) ) {s = 78;}
+
+                        else s = 35;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA12_32 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_32>='\u0000' && LA12_32<='\uFFFF')) ) {s = 78;}
+
+                        else s = 35;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA12_0=='E') ) {s = 1;}
+
+                        else if ( (LA12_0=='{') ) {s = 2;}
+
+                        else if ( (LA12_0=='s') ) {s = 3;}
+
+                        else if ( (LA12_0=='e') ) {s = 4;}
+
+                        else if ( (LA12_0=='}') ) {s = 5;}
+
+                        else if ( (LA12_0=='T') ) {s = 6;}
+
+                        else if ( (LA12_0=='P') ) {s = 7;}
+
+                        else if ( (LA12_0=='C') ) {s = 8;}
+
+                        else if ( (LA12_0=='o') ) {s = 9;}
+
+                        else if ( (LA12_0=='l') ) {s = 10;}
+
+                        else if ( (LA12_0=='r') ) {s = 11;}
+
+                        else if ( (LA12_0=='b') ) {s = 12;}
+
+                        else if ( (LA12_0=='B') ) {s = 13;}
+
+                        else if ( (LA12_0=='N') ) {s = 14;}
+
+                        else if ( (LA12_0=='i') ) {s = 15;}
+
+                        else if ( (LA12_0=='I') ) {s = 16;}
+
+                        else if ( (LA12_0=='c') ) {s = 17;}
+
+                        else if ( (LA12_0=='F') ) {s = 18;}
+
+                        else if ( (LA12_0=='p') ) {s = 19;}
+
+                        else if ( (LA12_0==',') ) {s = 20;}
+
+                        else if ( (LA12_0=='L') ) {s = 21;}
+
+                        else if ( (LA12_0=='S') ) {s = 22;}
+
+                        else if ( (LA12_0=='v') ) {s = 23;}
+
+                        else if ( (LA12_0=='D') ) {s = 24;}
+
+                        else if ( (LA12_0=='m') ) {s = 25;}
+
+                        else if ( (LA12_0=='-') ) {s = 26;}
+
+                        else if ( (LA12_0=='.') ) {s = 27;}
+
+                        else if ( (LA12_0=='^') ) {s = 28;}
+
+                        else if ( (LA12_0=='A'||(LA12_0>='G' && LA12_0<='H')||(LA12_0>='J' && LA12_0<='K')||LA12_0=='M'||LA12_0=='O'||(LA12_0>='Q' && LA12_0<='R')||(LA12_0>='U' && LA12_0<='Z')||LA12_0=='_'||LA12_0=='a'||LA12_0=='d'||(LA12_0>='f' && LA12_0<='h')||(LA12_0>='j' && LA12_0<='k')||LA12_0=='n'||LA12_0=='q'||(LA12_0>='t' && LA12_0<='u')||(LA12_0>='w' && LA12_0<='z')) ) {s = 29;}
+
+                        else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 30;}
+
+                        else if ( (LA12_0=='\"') ) {s = 31;}
+
+                        else if ( (LA12_0=='\'') ) {s = 32;}
+
+                        else if ( (LA12_0=='/') ) {s = 33;}
+
+                        else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 34;}
+
+                        else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='#' && LA12_0<='&')||(LA12_0>='(' && LA12_0<='+')||(LA12_0>=':' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||LA12_0=='|'||(LA12_0>='~' && LA12_0<='\uFFFF')) ) {s = 35;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1Parser.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1Parser.java
new file mode 100644
index 00000000..00d5fbf2
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1Parser.java
@@ -0,0 +1,8144 @@
+package org.xtext.example.mydsl1.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.xtext.example.mydsl1.services.MyDsl1GrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalMyDsl1Parser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'ExplicitFunction'", "'{'", "'specification'", "'expression'", "'}'", "'TermExpression'", "'ProductExpression'", "'CompareExpression'", "'operation'", "'left'", "'right'", "'PowerExpression'", "'base'", "'exponent'", "'BooleanOperatorExpression'", "'NotExpression'", "'inner'", "'NegativeExpression'", "'IfElseExpression'", "'ifExpression'", "'elseExpression'", "'conditionExpression'", "'Function'", "'id'", "'parameters'", "','", "'Parenthesis'", "'innerExpression'", "'Literal'", "'StringLiteral'", "'value'", "'BoolLiteral'", "'IntLiteral'", "'DoubleLiteral'", "'FormalParameter'", "'ProbabilityMassFunction'", "'sample'", "'BoxedPDF'", "'NormalDistribution'", "'mu'", "'sigma'", "'ExponentialDistribution'", "'rate'", "'TermOperations'", "'ProductOperations'", "'CompareOperations'", "'BooleanOperations'", "'-'", "'.'", "'Sample'", "'probability'", "'ContinuousSample'"
+    };
+    public static final int RULE_ID=5;
+    public static final int T__29=29;
+    public static final int T__28=28;
+    public static final int T__62=62;
+    public static final int T__27=27;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int T__61=61;
+    public static final int T__60=60;
+    public static final int EOF=-1;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__19=19;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__16=16;
+    public static final int T__52=52;
+    public static final int T__15=15;
+    public static final int T__53=53;
+    public static final int T__18=18;
+    public static final int T__54=54;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__59=59;
+    public static final int RULE_INT=6;
+    public static final int T__50=50;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int RULE_STRING=4;
+    public static final int T__32=32;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+
+        public InternalMyDsl1Parser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalMyDsl1Parser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalMyDsl1Parser.tokenNames; }
+    public String getGrammarFileName() { return "../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g"; }
+
+
+
+     	private MyDsl1GrammarAccess grammarAccess;
+     	
+        public InternalMyDsl1Parser(TokenStream input, MyDsl1GrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "ExplicitFunction";	
+       	}
+       	
+       	@Override
+       	protected MyDsl1GrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleExplicitFunction"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:67:1: entryRuleExplicitFunction returns [EObject current=null] : iv_ruleExplicitFunction= ruleExplicitFunction EOF ;
+    public final EObject entryRuleExplicitFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExplicitFunction = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:68:2: (iv_ruleExplicitFunction= ruleExplicitFunction EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:69:2: iv_ruleExplicitFunction= ruleExplicitFunction EOF
+            {
+             newCompositeNode(grammarAccess.getExplicitFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExplicitFunction_in_entryRuleExplicitFunction75);
+            iv_ruleExplicitFunction=ruleExplicitFunction();
+
+            state._fsp--;
+
+             current =iv_ruleExplicitFunction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExplicitFunction85); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExplicitFunction"
+
+
+    // $ANTLR start "ruleExplicitFunction"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:76:1: ruleExplicitFunction returns [EObject current=null] : ( () otherlv_1= 'ExplicitFunction' otherlv_2= '{' (otherlv_3= 'specification' ( (lv_specification_4_0= ruleEString ) ) )? (otherlv_5= 'expression' ( (lv_expression_6_0= ruleExpression ) ) )? otherlv_7= '}' ) ;
+    public final EObject ruleExplicitFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_specification_4_0 = null;
+
+        EObject lv_expression_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:79:28: ( ( () otherlv_1= 'ExplicitFunction' otherlv_2= '{' (otherlv_3= 'specification' ( (lv_specification_4_0= ruleEString ) ) )? (otherlv_5= 'expression' ( (lv_expression_6_0= ruleExpression ) ) )? otherlv_7= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:80:1: ( () otherlv_1= 'ExplicitFunction' otherlv_2= '{' (otherlv_3= 'specification' ( (lv_specification_4_0= ruleEString ) ) )? (otherlv_5= 'expression' ( (lv_expression_6_0= ruleExpression ) ) )? otherlv_7= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:80:1: ( () otherlv_1= 'ExplicitFunction' otherlv_2= '{' (otherlv_3= 'specification' ( (lv_specification_4_0= ruleEString ) ) )? (otherlv_5= 'expression' ( (lv_expression_6_0= ruleExpression ) ) )? otherlv_7= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:80:2: () otherlv_1= 'ExplicitFunction' otherlv_2= '{' (otherlv_3= 'specification' ( (lv_specification_4_0= ruleEString ) ) )? (otherlv_5= 'expression' ( (lv_expression_6_0= ruleExpression ) ) )? otherlv_7= '}'
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:80:2: ()
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:81:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getExplicitFunctionAccess().getExplicitFunctionAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,11,FollowSets000.FOLLOW_11_in_ruleExplicitFunction131); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getExplicitFunctionAccess().getExplicitFunctionKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExplicitFunction143); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getExplicitFunctionAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:94:1: (otherlv_3= 'specification' ( (lv_specification_4_0= ruleEString ) ) )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==13) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:94:3: otherlv_3= 'specification' ( (lv_specification_4_0= ruleEString ) )
+                    {
+                    otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleExplicitFunction156); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getExplicitFunctionAccess().getSpecificationKeyword_3_0());
+                        
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:98:1: ( (lv_specification_4_0= ruleEString ) )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:99:1: (lv_specification_4_0= ruleEString )
+                    {
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:99:1: (lv_specification_4_0= ruleEString )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:100:3: lv_specification_4_0= ruleEString
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getExplicitFunctionAccess().getSpecificationEStringParserRuleCall_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExplicitFunction177);
+                    lv_specification_4_0=ruleEString();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getExplicitFunctionRule());
+                    	        }
+                           		set(
+                           			current, 
+                           			"specification",
+                            		lv_specification_4_0, 
+                            		"EString");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:116:4: (otherlv_5= 'expression' ( (lv_expression_6_0= ruleExpression ) ) )?
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==14) ) {
+                alt2=1;
+            }
+            switch (alt2) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:116:6: otherlv_5= 'expression' ( (lv_expression_6_0= ruleExpression ) )
+                    {
+                    otherlv_5=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleExplicitFunction192); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getExplicitFunctionAccess().getExpressionKeyword_4_0());
+                        
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:120:1: ( (lv_expression_6_0= ruleExpression ) )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:121:1: (lv_expression_6_0= ruleExpression )
+                    {
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:121:1: (lv_expression_6_0= ruleExpression )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:122:3: lv_expression_6_0= ruleExpression
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getExplicitFunctionAccess().getExpressionExpressionParserRuleCall_4_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleExplicitFunction213);
+                    lv_expression_6_0=ruleExpression();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getExplicitFunctionRule());
+                    	        }
+                           		set(
+                           			current, 
+                           			"expression",
+                            		lv_expression_6_0, 
+                            		"Expression");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_7=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleExplicitFunction227); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getExplicitFunctionAccess().getRightCurlyBracketKeyword_5());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExplicitFunction"
+
+
+    // $ANTLR start "entryRuleExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:150:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
+    public final EObject entryRuleExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:151:2: (iv_ruleExpression= ruleExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:152:2: iv_ruleExpression= ruleExpression EOF
+            {
+             newCompositeNode(grammarAccess.getExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_entryRuleExpression263);
+            iv_ruleExpression=ruleExpression();
+
+            state._fsp--;
+
+             current =iv_ruleExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExpression273); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExpression"
+
+
+    // $ANTLR start "ruleExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:159:1: ruleExpression returns [EObject current=null] : (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_CompareExpression_2= ruleCompareExpression | this_PowerExpression_3= rulePowerExpression | this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression | this_NotExpression_5= ruleNotExpression | this_NegativeExpression_6= ruleNegativeExpression | this_IfElseExpression_7= ruleIfElseExpression | this_Function_8= ruleFunction | this_Parenthesis_9= ruleParenthesis | this_Literal_Impl_10= ruleLiteral_Impl | this_StringLiteral_11= ruleStringLiteral | this_BoolLiteral_12= ruleBoolLiteral | this_IntLiteral_13= ruleIntLiteral | this_DoubleLiteral_14= ruleDoubleLiteral | this_FormalParameter_15= ruleFormalParameter | this_ProbabilityMassFunction_16= ruleProbabilityMassFunction | this_BoxedPDF_17= ruleBoxedPDF | this_NormalDistribution_18= ruleNormalDistribution | this_ExponentialDistribution_19= ruleExponentialDistribution ) ;
+    public final EObject ruleExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_TermExpression_0 = null;
+
+        EObject this_ProductExpression_1 = null;
+
+        EObject this_CompareExpression_2 = null;
+
+        EObject this_PowerExpression_3 = null;
+
+        EObject this_BooleanOperatorExpression_4 = null;
+
+        EObject this_NotExpression_5 = null;
+
+        EObject this_NegativeExpression_6 = null;
+
+        EObject this_IfElseExpression_7 = null;
+
+        EObject this_Function_8 = null;
+
+        EObject this_Parenthesis_9 = null;
+
+        EObject this_Literal_Impl_10 = null;
+
+        EObject this_StringLiteral_11 = null;
+
+        EObject this_BoolLiteral_12 = null;
+
+        EObject this_IntLiteral_13 = null;
+
+        EObject this_DoubleLiteral_14 = null;
+
+        EObject this_FormalParameter_15 = null;
+
+        EObject this_ProbabilityMassFunction_16 = null;
+
+        EObject this_BoxedPDF_17 = null;
+
+        EObject this_NormalDistribution_18 = null;
+
+        EObject this_ExponentialDistribution_19 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:162:28: ( (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_CompareExpression_2= ruleCompareExpression | this_PowerExpression_3= rulePowerExpression | this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression | this_NotExpression_5= ruleNotExpression | this_NegativeExpression_6= ruleNegativeExpression | this_IfElseExpression_7= ruleIfElseExpression | this_Function_8= ruleFunction | this_Parenthesis_9= ruleParenthesis | this_Literal_Impl_10= ruleLiteral_Impl | this_StringLiteral_11= ruleStringLiteral | this_BoolLiteral_12= ruleBoolLiteral | this_IntLiteral_13= ruleIntLiteral | this_DoubleLiteral_14= ruleDoubleLiteral | this_FormalParameter_15= ruleFormalParameter | this_ProbabilityMassFunction_16= ruleProbabilityMassFunction | this_BoxedPDF_17= ruleBoxedPDF | this_NormalDistribution_18= ruleNormalDistribution | this_ExponentialDistribution_19= ruleExponentialDistribution ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:163:1: (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_CompareExpression_2= ruleCompareExpression | this_PowerExpression_3= rulePowerExpression | this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression | this_NotExpression_5= ruleNotExpression | this_NegativeExpression_6= ruleNegativeExpression | this_IfElseExpression_7= ruleIfElseExpression | this_Function_8= ruleFunction | this_Parenthesis_9= ruleParenthesis | this_Literal_Impl_10= ruleLiteral_Impl | this_StringLiteral_11= ruleStringLiteral | this_BoolLiteral_12= ruleBoolLiteral | this_IntLiteral_13= ruleIntLiteral | this_DoubleLiteral_14= ruleDoubleLiteral | this_FormalParameter_15= ruleFormalParameter | this_ProbabilityMassFunction_16= ruleProbabilityMassFunction | this_BoxedPDF_17= ruleBoxedPDF | this_NormalDistribution_18= ruleNormalDistribution | this_ExponentialDistribution_19= ruleExponentialDistribution )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:163:1: (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_CompareExpression_2= ruleCompareExpression | this_PowerExpression_3= rulePowerExpression | this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression | this_NotExpression_5= ruleNotExpression | this_NegativeExpression_6= ruleNegativeExpression | this_IfElseExpression_7= ruleIfElseExpression | this_Function_8= ruleFunction | this_Parenthesis_9= ruleParenthesis | this_Literal_Impl_10= ruleLiteral_Impl | this_StringLiteral_11= ruleStringLiteral | this_BoolLiteral_12= ruleBoolLiteral | this_IntLiteral_13= ruleIntLiteral | this_DoubleLiteral_14= ruleDoubleLiteral | this_FormalParameter_15= ruleFormalParameter | this_ProbabilityMassFunction_16= ruleProbabilityMassFunction | this_BoxedPDF_17= ruleBoxedPDF | this_NormalDistribution_18= ruleNormalDistribution | this_ExponentialDistribution_19= ruleExponentialDistribution )
+            int alt3=20;
+            switch ( input.LA(1) ) {
+            case 16:
+                {
+                alt3=1;
+                }
+                break;
+            case 17:
+                {
+                alt3=2;
+                }
+                break;
+            case 18:
+                {
+                alt3=3;
+                }
+                break;
+            case 22:
+                {
+                alt3=4;
+                }
+                break;
+            case 25:
+                {
+                alt3=5;
+                }
+                break;
+            case 26:
+                {
+                alt3=6;
+                }
+                break;
+            case 28:
+                {
+                alt3=7;
+                }
+                break;
+            case 29:
+                {
+                alt3=8;
+                }
+                break;
+            case 33:
+                {
+                alt3=9;
+                }
+                break;
+            case 37:
+                {
+                alt3=10;
+                }
+                break;
+            case 39:
+                {
+                alt3=11;
+                }
+                break;
+            case 40:
+                {
+                alt3=12;
+                }
+                break;
+            case 41:
+                {
+                alt3=13;
+                }
+                break;
+            case 43:
+                {
+                alt3=14;
+                }
+                break;
+            case 44:
+                {
+                alt3=15;
+                }
+                break;
+            case 45:
+                {
+                alt3=16;
+                }
+                break;
+            case 46:
+                {
+                alt3=17;
+                }
+                break;
+            case 48:
+                {
+                alt3=18;
+                }
+                break;
+            case 49:
+                {
+                alt3=19;
+                }
+                break;
+            case 52:
+                {
+                alt3=20;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt3) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:164:5: this_TermExpression_0= ruleTermExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getTermExpressionParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleTermExpression_in_ruleExpression320);
+                    this_TermExpression_0=ruleTermExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_TermExpression_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:174:5: this_ProductExpression_1= ruleProductExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getProductExpressionParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_ruleExpression347);
+                    this_ProductExpression_1=ruleProductExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProductExpression_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:184:5: this_CompareExpression_2= ruleCompareExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getCompareExpressionParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleCompareExpression_in_ruleExpression374);
+                    this_CompareExpression_2=ruleCompareExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_CompareExpression_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:194:5: this_PowerExpression_3= rulePowerExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getPowerExpressionParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_ruleExpression401);
+                    this_PowerExpression_3=rulePowerExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_PowerExpression_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:204:5: this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBooleanOperatorExpression_in_ruleExpression428);
+                    this_BooleanOperatorExpression_4=ruleBooleanOperatorExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_BooleanOperatorExpression_4; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:214:5: this_NotExpression_5= ruleNotExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getNotExpressionParserRuleCall_5()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_ruleExpression455);
+                    this_NotExpression_5=ruleNotExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NotExpression_5; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:224:5: this_NegativeExpression_6= ruleNegativeExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getNegativeExpressionParserRuleCall_6()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_ruleExpression482);
+                    this_NegativeExpression_6=ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NegativeExpression_6; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:234:5: this_IfElseExpression_7= ruleIfElseExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getIfElseExpressionParserRuleCall_7()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleIfElseExpression_in_ruleExpression509);
+                    this_IfElseExpression_7=ruleIfElseExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_IfElseExpression_7; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:244:5: this_Function_8= ruleFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getFunctionParserRuleCall_8()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_ruleExpression536);
+                    this_Function_8=ruleFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_Function_8; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:254:5: this_Parenthesis_9= ruleParenthesis
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getParenthesisParserRuleCall_9()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_ruleExpression563);
+                    this_Parenthesis_9=ruleParenthesis();
+
+                    state._fsp--;
+
+                     
+                            current = this_Parenthesis_9; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:264:5: this_Literal_Impl_10= ruleLiteral_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getLiteral_ImplParserRuleCall_10()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_ruleExpression590);
+                    this_Literal_Impl_10=ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_Literal_Impl_10; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:274:5: this_StringLiteral_11= ruleStringLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getStringLiteralParserRuleCall_11()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleExpression617);
+                    this_StringLiteral_11=ruleStringLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_StringLiteral_11; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:284:5: this_BoolLiteral_12= ruleBoolLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getBoolLiteralParserRuleCall_12()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_ruleExpression644);
+                    this_BoolLiteral_12=ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoolLiteral_12; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:294:5: this_IntLiteral_13= ruleIntLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getIntLiteralParserRuleCall_13()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_ruleExpression671);
+                    this_IntLiteral_13=ruleIntLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_IntLiteral_13; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:304:5: this_DoubleLiteral_14= ruleDoubleLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getDoubleLiteralParserRuleCall_14()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_ruleExpression698);
+                    this_DoubleLiteral_14=ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_DoubleLiteral_14; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:314:5: this_FormalParameter_15= ruleFormalParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getFormalParameterParserRuleCall_15()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_ruleExpression725);
+                    this_FormalParameter_15=ruleFormalParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_FormalParameter_15; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 17 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:324:5: this_ProbabilityMassFunction_16= ruleProbabilityMassFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getProbabilityMassFunctionParserRuleCall_16()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_ruleExpression752);
+                    this_ProbabilityMassFunction_16=ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProbabilityMassFunction_16; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 18 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:334:5: this_BoxedPDF_17= ruleBoxedPDF
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getBoxedPDFParserRuleCall_17()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_ruleExpression779);
+                    this_BoxedPDF_17=ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoxedPDF_17; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 19 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:344:5: this_NormalDistribution_18= ruleNormalDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getNormalDistributionParserRuleCall_18()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_ruleExpression806);
+                    this_NormalDistribution_18=ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_NormalDistribution_18; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 20 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:354:5: this_ExponentialDistribution_19= ruleExponentialDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExpressionAccess().getExponentialDistributionParserRuleCall_19()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_ruleExpression833);
+                    this_ExponentialDistribution_19=ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExponentialDistribution_19; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExpression"
+
+
+    // $ANTLR start "entryRuleTerm"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:370:1: entryRuleTerm returns [EObject current=null] : iv_ruleTerm= ruleTerm EOF ;
+    public final EObject entryRuleTerm() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTerm = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:371:2: (iv_ruleTerm= ruleTerm EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:372:2: iv_ruleTerm= ruleTerm EOF
+            {
+             newCompositeNode(grammarAccess.getTermRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_entryRuleTerm868);
+            iv_ruleTerm=ruleTerm();
+
+            state._fsp--;
+
+             current =iv_ruleTerm; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTerm878); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTerm"
+
+
+    // $ANTLR start "ruleTerm"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:379:1: ruleTerm returns [EObject current=null] : (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_PowerExpression_2= rulePowerExpression | this_NotExpression_3= ruleNotExpression | this_NegativeExpression_4= ruleNegativeExpression | this_Function_5= ruleFunction | this_Parenthesis_6= ruleParenthesis | this_Literal_Impl_7= ruleLiteral_Impl | this_StringLiteral_8= ruleStringLiteral | this_BoolLiteral_9= ruleBoolLiteral | this_IntLiteral_10= ruleIntLiteral | this_DoubleLiteral_11= ruleDoubleLiteral | this_FormalParameter_12= ruleFormalParameter | this_ProbabilityMassFunction_13= ruleProbabilityMassFunction | this_BoxedPDF_14= ruleBoxedPDF | this_NormalDistribution_15= ruleNormalDistribution | this_ExponentialDistribution_16= ruleExponentialDistribution ) ;
+    public final EObject ruleTerm() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_TermExpression_0 = null;
+
+        EObject this_ProductExpression_1 = null;
+
+        EObject this_PowerExpression_2 = null;
+
+        EObject this_NotExpression_3 = null;
+
+        EObject this_NegativeExpression_4 = null;
+
+        EObject this_Function_5 = null;
+
+        EObject this_Parenthesis_6 = null;
+
+        EObject this_Literal_Impl_7 = null;
+
+        EObject this_StringLiteral_8 = null;
+
+        EObject this_BoolLiteral_9 = null;
+
+        EObject this_IntLiteral_10 = null;
+
+        EObject this_DoubleLiteral_11 = null;
+
+        EObject this_FormalParameter_12 = null;
+
+        EObject this_ProbabilityMassFunction_13 = null;
+
+        EObject this_BoxedPDF_14 = null;
+
+        EObject this_NormalDistribution_15 = null;
+
+        EObject this_ExponentialDistribution_16 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:382:28: ( (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_PowerExpression_2= rulePowerExpression | this_NotExpression_3= ruleNotExpression | this_NegativeExpression_4= ruleNegativeExpression | this_Function_5= ruleFunction | this_Parenthesis_6= ruleParenthesis | this_Literal_Impl_7= ruleLiteral_Impl | this_StringLiteral_8= ruleStringLiteral | this_BoolLiteral_9= ruleBoolLiteral | this_IntLiteral_10= ruleIntLiteral | this_DoubleLiteral_11= ruleDoubleLiteral | this_FormalParameter_12= ruleFormalParameter | this_ProbabilityMassFunction_13= ruleProbabilityMassFunction | this_BoxedPDF_14= ruleBoxedPDF | this_NormalDistribution_15= ruleNormalDistribution | this_ExponentialDistribution_16= ruleExponentialDistribution ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:383:1: (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_PowerExpression_2= rulePowerExpression | this_NotExpression_3= ruleNotExpression | this_NegativeExpression_4= ruleNegativeExpression | this_Function_5= ruleFunction | this_Parenthesis_6= ruleParenthesis | this_Literal_Impl_7= ruleLiteral_Impl | this_StringLiteral_8= ruleStringLiteral | this_BoolLiteral_9= ruleBoolLiteral | this_IntLiteral_10= ruleIntLiteral | this_DoubleLiteral_11= ruleDoubleLiteral | this_FormalParameter_12= ruleFormalParameter | this_ProbabilityMassFunction_13= ruleProbabilityMassFunction | this_BoxedPDF_14= ruleBoxedPDF | this_NormalDistribution_15= ruleNormalDistribution | this_ExponentialDistribution_16= ruleExponentialDistribution )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:383:1: (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_PowerExpression_2= rulePowerExpression | this_NotExpression_3= ruleNotExpression | this_NegativeExpression_4= ruleNegativeExpression | this_Function_5= ruleFunction | this_Parenthesis_6= ruleParenthesis | this_Literal_Impl_7= ruleLiteral_Impl | this_StringLiteral_8= ruleStringLiteral | this_BoolLiteral_9= ruleBoolLiteral | this_IntLiteral_10= ruleIntLiteral | this_DoubleLiteral_11= ruleDoubleLiteral | this_FormalParameter_12= ruleFormalParameter | this_ProbabilityMassFunction_13= ruleProbabilityMassFunction | this_BoxedPDF_14= ruleBoxedPDF | this_NormalDistribution_15= ruleNormalDistribution | this_ExponentialDistribution_16= ruleExponentialDistribution )
+            int alt4=17;
+            switch ( input.LA(1) ) {
+            case 16:
+                {
+                alt4=1;
+                }
+                break;
+            case 17:
+                {
+                alt4=2;
+                }
+                break;
+            case 22:
+                {
+                alt4=3;
+                }
+                break;
+            case 26:
+                {
+                alt4=4;
+                }
+                break;
+            case 28:
+                {
+                alt4=5;
+                }
+                break;
+            case 33:
+                {
+                alt4=6;
+                }
+                break;
+            case 37:
+                {
+                alt4=7;
+                }
+                break;
+            case 39:
+                {
+                alt4=8;
+                }
+                break;
+            case 40:
+                {
+                alt4=9;
+                }
+                break;
+            case 41:
+                {
+                alt4=10;
+                }
+                break;
+            case 43:
+                {
+                alt4=11;
+                }
+                break;
+            case 44:
+                {
+                alt4=12;
+                }
+                break;
+            case 45:
+                {
+                alt4=13;
+                }
+                break;
+            case 46:
+                {
+                alt4=14;
+                }
+                break;
+            case 48:
+                {
+                alt4=15;
+                }
+                break;
+            case 49:
+                {
+                alt4=16;
+                }
+                break;
+            case 52:
+                {
+                alt4=17;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt4) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:384:5: this_TermExpression_0= ruleTermExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getTermExpressionParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleTermExpression_in_ruleTerm925);
+                    this_TermExpression_0=ruleTermExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_TermExpression_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:394:5: this_ProductExpression_1= ruleProductExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getProductExpressionParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_ruleTerm952);
+                    this_ProductExpression_1=ruleProductExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProductExpression_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:404:5: this_PowerExpression_2= rulePowerExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getPowerExpressionParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_ruleTerm979);
+                    this_PowerExpression_2=rulePowerExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_PowerExpression_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:414:5: this_NotExpression_3= ruleNotExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getNotExpressionParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_ruleTerm1006);
+                    this_NotExpression_3=ruleNotExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NotExpression_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:424:5: this_NegativeExpression_4= ruleNegativeExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getNegativeExpressionParserRuleCall_4()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_ruleTerm1033);
+                    this_NegativeExpression_4=ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NegativeExpression_4; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:434:5: this_Function_5= ruleFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getFunctionParserRuleCall_5()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_ruleTerm1060);
+                    this_Function_5=ruleFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_Function_5; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:444:5: this_Parenthesis_6= ruleParenthesis
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getParenthesisParserRuleCall_6()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_ruleTerm1087);
+                    this_Parenthesis_6=ruleParenthesis();
+
+                    state._fsp--;
+
+                     
+                            current = this_Parenthesis_6; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:454:5: this_Literal_Impl_7= ruleLiteral_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getLiteral_ImplParserRuleCall_7()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_ruleTerm1114);
+                    this_Literal_Impl_7=ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_Literal_Impl_7; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:464:5: this_StringLiteral_8= ruleStringLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getStringLiteralParserRuleCall_8()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleTerm1141);
+                    this_StringLiteral_8=ruleStringLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_StringLiteral_8; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:474:5: this_BoolLiteral_9= ruleBoolLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getBoolLiteralParserRuleCall_9()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_ruleTerm1168);
+                    this_BoolLiteral_9=ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoolLiteral_9; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:484:5: this_IntLiteral_10= ruleIntLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getIntLiteralParserRuleCall_10()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_ruleTerm1195);
+                    this_IntLiteral_10=ruleIntLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_IntLiteral_10; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:494:5: this_DoubleLiteral_11= ruleDoubleLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getDoubleLiteralParserRuleCall_11()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_ruleTerm1222);
+                    this_DoubleLiteral_11=ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_DoubleLiteral_11; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:504:5: this_FormalParameter_12= ruleFormalParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getFormalParameterParserRuleCall_12()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_ruleTerm1249);
+                    this_FormalParameter_12=ruleFormalParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_FormalParameter_12; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:514:5: this_ProbabilityMassFunction_13= ruleProbabilityMassFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getProbabilityMassFunctionParserRuleCall_13()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_ruleTerm1276);
+                    this_ProbabilityMassFunction_13=ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProbabilityMassFunction_13; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:524:5: this_BoxedPDF_14= ruleBoxedPDF
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getBoxedPDFParserRuleCall_14()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_ruleTerm1303);
+                    this_BoxedPDF_14=ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoxedPDF_14; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:534:5: this_NormalDistribution_15= ruleNormalDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getNormalDistributionParserRuleCall_15()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_ruleTerm1330);
+                    this_NormalDistribution_15=ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_NormalDistribution_15; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 17 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:544:5: this_ExponentialDistribution_16= ruleExponentialDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getTermAccess().getExponentialDistributionParserRuleCall_16()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_ruleTerm1357);
+                    this_ExponentialDistribution_16=ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExponentialDistribution_16; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTerm"
+
+
+    // $ANTLR start "entryRuleProduct"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:560:1: entryRuleProduct returns [EObject current=null] : iv_ruleProduct= ruleProduct EOF ;
+    public final EObject entryRuleProduct() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProduct = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:561:2: (iv_ruleProduct= ruleProduct EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:562:2: iv_ruleProduct= ruleProduct EOF
+            {
+             newCompositeNode(grammarAccess.getProductRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProduct_in_entryRuleProduct1392);
+            iv_ruleProduct=ruleProduct();
+
+            state._fsp--;
+
+             current =iv_ruleProduct; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProduct1402); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProduct"
+
+
+    // $ANTLR start "ruleProduct"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:569:1: ruleProduct returns [EObject current=null] : (this_ProductExpression_0= ruleProductExpression | this_PowerExpression_1= rulePowerExpression | this_NotExpression_2= ruleNotExpression | this_NegativeExpression_3= ruleNegativeExpression | this_Function_4= ruleFunction | this_Parenthesis_5= ruleParenthesis | this_Literal_Impl_6= ruleLiteral_Impl | this_StringLiteral_7= ruleStringLiteral | this_BoolLiteral_8= ruleBoolLiteral | this_IntLiteral_9= ruleIntLiteral | this_DoubleLiteral_10= ruleDoubleLiteral | this_FormalParameter_11= ruleFormalParameter | this_ProbabilityMassFunction_12= ruleProbabilityMassFunction | this_BoxedPDF_13= ruleBoxedPDF | this_NormalDistribution_14= ruleNormalDistribution | this_ExponentialDistribution_15= ruleExponentialDistribution ) ;
+    public final EObject ruleProduct() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ProductExpression_0 = null;
+
+        EObject this_PowerExpression_1 = null;
+
+        EObject this_NotExpression_2 = null;
+
+        EObject this_NegativeExpression_3 = null;
+
+        EObject this_Function_4 = null;
+
+        EObject this_Parenthesis_5 = null;
+
+        EObject this_Literal_Impl_6 = null;
+
+        EObject this_StringLiteral_7 = null;
+
+        EObject this_BoolLiteral_8 = null;
+
+        EObject this_IntLiteral_9 = null;
+
+        EObject this_DoubleLiteral_10 = null;
+
+        EObject this_FormalParameter_11 = null;
+
+        EObject this_ProbabilityMassFunction_12 = null;
+
+        EObject this_BoxedPDF_13 = null;
+
+        EObject this_NormalDistribution_14 = null;
+
+        EObject this_ExponentialDistribution_15 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:572:28: ( (this_ProductExpression_0= ruleProductExpression | this_PowerExpression_1= rulePowerExpression | this_NotExpression_2= ruleNotExpression | this_NegativeExpression_3= ruleNegativeExpression | this_Function_4= ruleFunction | this_Parenthesis_5= ruleParenthesis | this_Literal_Impl_6= ruleLiteral_Impl | this_StringLiteral_7= ruleStringLiteral | this_BoolLiteral_8= ruleBoolLiteral | this_IntLiteral_9= ruleIntLiteral | this_DoubleLiteral_10= ruleDoubleLiteral | this_FormalParameter_11= ruleFormalParameter | this_ProbabilityMassFunction_12= ruleProbabilityMassFunction | this_BoxedPDF_13= ruleBoxedPDF | this_NormalDistribution_14= ruleNormalDistribution | this_ExponentialDistribution_15= ruleExponentialDistribution ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:573:1: (this_ProductExpression_0= ruleProductExpression | this_PowerExpression_1= rulePowerExpression | this_NotExpression_2= ruleNotExpression | this_NegativeExpression_3= ruleNegativeExpression | this_Function_4= ruleFunction | this_Parenthesis_5= ruleParenthesis | this_Literal_Impl_6= ruleLiteral_Impl | this_StringLiteral_7= ruleStringLiteral | this_BoolLiteral_8= ruleBoolLiteral | this_IntLiteral_9= ruleIntLiteral | this_DoubleLiteral_10= ruleDoubleLiteral | this_FormalParameter_11= ruleFormalParameter | this_ProbabilityMassFunction_12= ruleProbabilityMassFunction | this_BoxedPDF_13= ruleBoxedPDF | this_NormalDistribution_14= ruleNormalDistribution | this_ExponentialDistribution_15= ruleExponentialDistribution )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:573:1: (this_ProductExpression_0= ruleProductExpression | this_PowerExpression_1= rulePowerExpression | this_NotExpression_2= ruleNotExpression | this_NegativeExpression_3= ruleNegativeExpression | this_Function_4= ruleFunction | this_Parenthesis_5= ruleParenthesis | this_Literal_Impl_6= ruleLiteral_Impl | this_StringLiteral_7= ruleStringLiteral | this_BoolLiteral_8= ruleBoolLiteral | this_IntLiteral_9= ruleIntLiteral | this_DoubleLiteral_10= ruleDoubleLiteral | this_FormalParameter_11= ruleFormalParameter | this_ProbabilityMassFunction_12= ruleProbabilityMassFunction | this_BoxedPDF_13= ruleBoxedPDF | this_NormalDistribution_14= ruleNormalDistribution | this_ExponentialDistribution_15= ruleExponentialDistribution )
+            int alt5=16;
+            switch ( input.LA(1) ) {
+            case 17:
+                {
+                alt5=1;
+                }
+                break;
+            case 22:
+                {
+                alt5=2;
+                }
+                break;
+            case 26:
+                {
+                alt5=3;
+                }
+                break;
+            case 28:
+                {
+                alt5=4;
+                }
+                break;
+            case 33:
+                {
+                alt5=5;
+                }
+                break;
+            case 37:
+                {
+                alt5=6;
+                }
+                break;
+            case 39:
+                {
+                alt5=7;
+                }
+                break;
+            case 40:
+                {
+                alt5=8;
+                }
+                break;
+            case 41:
+                {
+                alt5=9;
+                }
+                break;
+            case 43:
+                {
+                alt5=10;
+                }
+                break;
+            case 44:
+                {
+                alt5=11;
+                }
+                break;
+            case 45:
+                {
+                alt5=12;
+                }
+                break;
+            case 46:
+                {
+                alt5=13;
+                }
+                break;
+            case 48:
+                {
+                alt5=14;
+                }
+                break;
+            case 49:
+                {
+                alt5=15;
+                }
+                break;
+            case 52:
+                {
+                alt5=16;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:574:5: this_ProductExpression_0= ruleProductExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getProductExpressionParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_ruleProduct1449);
+                    this_ProductExpression_0=ruleProductExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProductExpression_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:584:5: this_PowerExpression_1= rulePowerExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getPowerExpressionParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_ruleProduct1476);
+                    this_PowerExpression_1=rulePowerExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_PowerExpression_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:594:5: this_NotExpression_2= ruleNotExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getNotExpressionParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_ruleProduct1503);
+                    this_NotExpression_2=ruleNotExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NotExpression_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:604:5: this_NegativeExpression_3= ruleNegativeExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getNegativeExpressionParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_ruleProduct1530);
+                    this_NegativeExpression_3=ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NegativeExpression_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:614:5: this_Function_4= ruleFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getFunctionParserRuleCall_4()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_ruleProduct1557);
+                    this_Function_4=ruleFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_Function_4; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:624:5: this_Parenthesis_5= ruleParenthesis
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getParenthesisParserRuleCall_5()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_ruleProduct1584);
+                    this_Parenthesis_5=ruleParenthesis();
+
+                    state._fsp--;
+
+                     
+                            current = this_Parenthesis_5; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:634:5: this_Literal_Impl_6= ruleLiteral_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getLiteral_ImplParserRuleCall_6()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_ruleProduct1611);
+                    this_Literal_Impl_6=ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_Literal_Impl_6; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:644:5: this_StringLiteral_7= ruleStringLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getStringLiteralParserRuleCall_7()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleProduct1638);
+                    this_StringLiteral_7=ruleStringLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_StringLiteral_7; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:654:5: this_BoolLiteral_8= ruleBoolLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getBoolLiteralParserRuleCall_8()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_ruleProduct1665);
+                    this_BoolLiteral_8=ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoolLiteral_8; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:664:5: this_IntLiteral_9= ruleIntLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getIntLiteralParserRuleCall_9()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_ruleProduct1692);
+                    this_IntLiteral_9=ruleIntLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_IntLiteral_9; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:674:5: this_DoubleLiteral_10= ruleDoubleLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getDoubleLiteralParserRuleCall_10()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_ruleProduct1719);
+                    this_DoubleLiteral_10=ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_DoubleLiteral_10; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:684:5: this_FormalParameter_11= ruleFormalParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getFormalParameterParserRuleCall_11()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_ruleProduct1746);
+                    this_FormalParameter_11=ruleFormalParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_FormalParameter_11; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:694:5: this_ProbabilityMassFunction_12= ruleProbabilityMassFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getProbabilityMassFunctionParserRuleCall_12()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_ruleProduct1773);
+                    this_ProbabilityMassFunction_12=ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProbabilityMassFunction_12; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:704:5: this_BoxedPDF_13= ruleBoxedPDF
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getBoxedPDFParserRuleCall_13()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_ruleProduct1800);
+                    this_BoxedPDF_13=ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoxedPDF_13; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:714:5: this_NormalDistribution_14= ruleNormalDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getNormalDistributionParserRuleCall_14()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_ruleProduct1827);
+                    this_NormalDistribution_14=ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_NormalDistribution_14; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:724:5: this_ExponentialDistribution_15= ruleExponentialDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getProductAccess().getExponentialDistributionParserRuleCall_15()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_ruleProduct1854);
+                    this_ExponentialDistribution_15=ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExponentialDistribution_15; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProduct"
+
+
+    // $ANTLR start "entryRulePower"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:740:1: entryRulePower returns [EObject current=null] : iv_rulePower= rulePower EOF ;
+    public final EObject entryRulePower() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePower = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:741:2: (iv_rulePower= rulePower EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:742:2: iv_rulePower= rulePower EOF
+            {
+             newCompositeNode(grammarAccess.getPowerRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePower_in_entryRulePower1889);
+            iv_rulePower=rulePower();
+
+            state._fsp--;
+
+             current =iv_rulePower; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePower1899); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePower"
+
+
+    // $ANTLR start "rulePower"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:749:1: rulePower returns [EObject current=null] : (this_PowerExpression_0= rulePowerExpression | this_NotExpression_1= ruleNotExpression | this_NegativeExpression_2= ruleNegativeExpression | this_Function_3= ruleFunction | this_Parenthesis_4= ruleParenthesis | this_Literal_Impl_5= ruleLiteral_Impl | this_StringLiteral_6= ruleStringLiteral | this_BoolLiteral_7= ruleBoolLiteral | this_IntLiteral_8= ruleIntLiteral | this_DoubleLiteral_9= ruleDoubleLiteral | this_FormalParameter_10= ruleFormalParameter | this_ProbabilityMassFunction_11= ruleProbabilityMassFunction | this_BoxedPDF_12= ruleBoxedPDF | this_NormalDistribution_13= ruleNormalDistribution | this_ExponentialDistribution_14= ruleExponentialDistribution ) ;
+    public final EObject rulePower() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_PowerExpression_0 = null;
+
+        EObject this_NotExpression_1 = null;
+
+        EObject this_NegativeExpression_2 = null;
+
+        EObject this_Function_3 = null;
+
+        EObject this_Parenthesis_4 = null;
+
+        EObject this_Literal_Impl_5 = null;
+
+        EObject this_StringLiteral_6 = null;
+
+        EObject this_BoolLiteral_7 = null;
+
+        EObject this_IntLiteral_8 = null;
+
+        EObject this_DoubleLiteral_9 = null;
+
+        EObject this_FormalParameter_10 = null;
+
+        EObject this_ProbabilityMassFunction_11 = null;
+
+        EObject this_BoxedPDF_12 = null;
+
+        EObject this_NormalDistribution_13 = null;
+
+        EObject this_ExponentialDistribution_14 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:752:28: ( (this_PowerExpression_0= rulePowerExpression | this_NotExpression_1= ruleNotExpression | this_NegativeExpression_2= ruleNegativeExpression | this_Function_3= ruleFunction | this_Parenthesis_4= ruleParenthesis | this_Literal_Impl_5= ruleLiteral_Impl | this_StringLiteral_6= ruleStringLiteral | this_BoolLiteral_7= ruleBoolLiteral | this_IntLiteral_8= ruleIntLiteral | this_DoubleLiteral_9= ruleDoubleLiteral | this_FormalParameter_10= ruleFormalParameter | this_ProbabilityMassFunction_11= ruleProbabilityMassFunction | this_BoxedPDF_12= ruleBoxedPDF | this_NormalDistribution_13= ruleNormalDistribution | this_ExponentialDistribution_14= ruleExponentialDistribution ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:753:1: (this_PowerExpression_0= rulePowerExpression | this_NotExpression_1= ruleNotExpression | this_NegativeExpression_2= ruleNegativeExpression | this_Function_3= ruleFunction | this_Parenthesis_4= ruleParenthesis | this_Literal_Impl_5= ruleLiteral_Impl | this_StringLiteral_6= ruleStringLiteral | this_BoolLiteral_7= ruleBoolLiteral | this_IntLiteral_8= ruleIntLiteral | this_DoubleLiteral_9= ruleDoubleLiteral | this_FormalParameter_10= ruleFormalParameter | this_ProbabilityMassFunction_11= ruleProbabilityMassFunction | this_BoxedPDF_12= ruleBoxedPDF | this_NormalDistribution_13= ruleNormalDistribution | this_ExponentialDistribution_14= ruleExponentialDistribution )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:753:1: (this_PowerExpression_0= rulePowerExpression | this_NotExpression_1= ruleNotExpression | this_NegativeExpression_2= ruleNegativeExpression | this_Function_3= ruleFunction | this_Parenthesis_4= ruleParenthesis | this_Literal_Impl_5= ruleLiteral_Impl | this_StringLiteral_6= ruleStringLiteral | this_BoolLiteral_7= ruleBoolLiteral | this_IntLiteral_8= ruleIntLiteral | this_DoubleLiteral_9= ruleDoubleLiteral | this_FormalParameter_10= ruleFormalParameter | this_ProbabilityMassFunction_11= ruleProbabilityMassFunction | this_BoxedPDF_12= ruleBoxedPDF | this_NormalDistribution_13= ruleNormalDistribution | this_ExponentialDistribution_14= ruleExponentialDistribution )
+            int alt6=15;
+            switch ( input.LA(1) ) {
+            case 22:
+                {
+                alt6=1;
+                }
+                break;
+            case 26:
+                {
+                alt6=2;
+                }
+                break;
+            case 28:
+                {
+                alt6=3;
+                }
+                break;
+            case 33:
+                {
+                alt6=4;
+                }
+                break;
+            case 37:
+                {
+                alt6=5;
+                }
+                break;
+            case 39:
+                {
+                alt6=6;
+                }
+                break;
+            case 40:
+                {
+                alt6=7;
+                }
+                break;
+            case 41:
+                {
+                alt6=8;
+                }
+                break;
+            case 43:
+                {
+                alt6=9;
+                }
+                break;
+            case 44:
+                {
+                alt6=10;
+                }
+                break;
+            case 45:
+                {
+                alt6=11;
+                }
+                break;
+            case 46:
+                {
+                alt6=12;
+                }
+                break;
+            case 48:
+                {
+                alt6=13;
+                }
+                break;
+            case 49:
+                {
+                alt6=14;
+                }
+                break;
+            case 52:
+                {
+                alt6=15;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt6) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:754:5: this_PowerExpression_0= rulePowerExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getPowerExpressionParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_rulePower1946);
+                    this_PowerExpression_0=rulePowerExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_PowerExpression_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:764:5: this_NotExpression_1= ruleNotExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getNotExpressionParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_rulePower1973);
+                    this_NotExpression_1=ruleNotExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NotExpression_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:774:5: this_NegativeExpression_2= ruleNegativeExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getNegativeExpressionParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_rulePower2000);
+                    this_NegativeExpression_2=ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NegativeExpression_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:784:5: this_Function_3= ruleFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getFunctionParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_rulePower2027);
+                    this_Function_3=ruleFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_Function_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:794:5: this_Parenthesis_4= ruleParenthesis
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getParenthesisParserRuleCall_4()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_rulePower2054);
+                    this_Parenthesis_4=ruleParenthesis();
+
+                    state._fsp--;
+
+                     
+                            current = this_Parenthesis_4; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:804:5: this_Literal_Impl_5= ruleLiteral_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getLiteral_ImplParserRuleCall_5()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_rulePower2081);
+                    this_Literal_Impl_5=ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_Literal_Impl_5; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:814:5: this_StringLiteral_6= ruleStringLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getStringLiteralParserRuleCall_6()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_rulePower2108);
+                    this_StringLiteral_6=ruleStringLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_StringLiteral_6; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:824:5: this_BoolLiteral_7= ruleBoolLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getBoolLiteralParserRuleCall_7()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_rulePower2135);
+                    this_BoolLiteral_7=ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoolLiteral_7; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:834:5: this_IntLiteral_8= ruleIntLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getIntLiteralParserRuleCall_8()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_rulePower2162);
+                    this_IntLiteral_8=ruleIntLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_IntLiteral_8; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:844:5: this_DoubleLiteral_9= ruleDoubleLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getDoubleLiteralParserRuleCall_9()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_rulePower2189);
+                    this_DoubleLiteral_9=ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_DoubleLiteral_9; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:854:5: this_FormalParameter_10= ruleFormalParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getFormalParameterParserRuleCall_10()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_rulePower2216);
+                    this_FormalParameter_10=ruleFormalParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_FormalParameter_10; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:864:5: this_ProbabilityMassFunction_11= ruleProbabilityMassFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getProbabilityMassFunctionParserRuleCall_11()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_rulePower2243);
+                    this_ProbabilityMassFunction_11=ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProbabilityMassFunction_11; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:874:5: this_BoxedPDF_12= ruleBoxedPDF
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getBoxedPDFParserRuleCall_12()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_rulePower2270);
+                    this_BoxedPDF_12=ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoxedPDF_12; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:884:5: this_NormalDistribution_13= ruleNormalDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getNormalDistributionParserRuleCall_13()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_rulePower2297);
+                    this_NormalDistribution_13=ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_NormalDistribution_13; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:894:5: this_ExponentialDistribution_14= ruleExponentialDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getPowerAccess().getExponentialDistributionParserRuleCall_14()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_rulePower2324);
+                    this_ExponentialDistribution_14=ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExponentialDistribution_14; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePower"
+
+
+    // $ANTLR start "entryRuleUnary"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:910:1: entryRuleUnary returns [EObject current=null] : iv_ruleUnary= ruleUnary EOF ;
+    public final EObject entryRuleUnary() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleUnary = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:911:2: (iv_ruleUnary= ruleUnary EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:912:2: iv_ruleUnary= ruleUnary EOF
+            {
+             newCompositeNode(grammarAccess.getUnaryRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleUnary_in_entryRuleUnary2359);
+            iv_ruleUnary=ruleUnary();
+
+            state._fsp--;
+
+             current =iv_ruleUnary; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnary2369); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleUnary"
+
+
+    // $ANTLR start "ruleUnary"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:919:1: ruleUnary returns [EObject current=null] : (this_NotExpression_0= ruleNotExpression | this_NegativeExpression_1= ruleNegativeExpression | this_Function_2= ruleFunction | this_Parenthesis_3= ruleParenthesis | this_Literal_Impl_4= ruleLiteral_Impl | this_StringLiteral_5= ruleStringLiteral | this_BoolLiteral_6= ruleBoolLiteral | this_IntLiteral_7= ruleIntLiteral | this_DoubleLiteral_8= ruleDoubleLiteral | this_FormalParameter_9= ruleFormalParameter | this_ProbabilityMassFunction_10= ruleProbabilityMassFunction | this_BoxedPDF_11= ruleBoxedPDF | this_NormalDistribution_12= ruleNormalDistribution | this_ExponentialDistribution_13= ruleExponentialDistribution ) ;
+    public final EObject ruleUnary() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_NotExpression_0 = null;
+
+        EObject this_NegativeExpression_1 = null;
+
+        EObject this_Function_2 = null;
+
+        EObject this_Parenthesis_3 = null;
+
+        EObject this_Literal_Impl_4 = null;
+
+        EObject this_StringLiteral_5 = null;
+
+        EObject this_BoolLiteral_6 = null;
+
+        EObject this_IntLiteral_7 = null;
+
+        EObject this_DoubleLiteral_8 = null;
+
+        EObject this_FormalParameter_9 = null;
+
+        EObject this_ProbabilityMassFunction_10 = null;
+
+        EObject this_BoxedPDF_11 = null;
+
+        EObject this_NormalDistribution_12 = null;
+
+        EObject this_ExponentialDistribution_13 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:922:28: ( (this_NotExpression_0= ruleNotExpression | this_NegativeExpression_1= ruleNegativeExpression | this_Function_2= ruleFunction | this_Parenthesis_3= ruleParenthesis | this_Literal_Impl_4= ruleLiteral_Impl | this_StringLiteral_5= ruleStringLiteral | this_BoolLiteral_6= ruleBoolLiteral | this_IntLiteral_7= ruleIntLiteral | this_DoubleLiteral_8= ruleDoubleLiteral | this_FormalParameter_9= ruleFormalParameter | this_ProbabilityMassFunction_10= ruleProbabilityMassFunction | this_BoxedPDF_11= ruleBoxedPDF | this_NormalDistribution_12= ruleNormalDistribution | this_ExponentialDistribution_13= ruleExponentialDistribution ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:923:1: (this_NotExpression_0= ruleNotExpression | this_NegativeExpression_1= ruleNegativeExpression | this_Function_2= ruleFunction | this_Parenthesis_3= ruleParenthesis | this_Literal_Impl_4= ruleLiteral_Impl | this_StringLiteral_5= ruleStringLiteral | this_BoolLiteral_6= ruleBoolLiteral | this_IntLiteral_7= ruleIntLiteral | this_DoubleLiteral_8= ruleDoubleLiteral | this_FormalParameter_9= ruleFormalParameter | this_ProbabilityMassFunction_10= ruleProbabilityMassFunction | this_BoxedPDF_11= ruleBoxedPDF | this_NormalDistribution_12= ruleNormalDistribution | this_ExponentialDistribution_13= ruleExponentialDistribution )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:923:1: (this_NotExpression_0= ruleNotExpression | this_NegativeExpression_1= ruleNegativeExpression | this_Function_2= ruleFunction | this_Parenthesis_3= ruleParenthesis | this_Literal_Impl_4= ruleLiteral_Impl | this_StringLiteral_5= ruleStringLiteral | this_BoolLiteral_6= ruleBoolLiteral | this_IntLiteral_7= ruleIntLiteral | this_DoubleLiteral_8= ruleDoubleLiteral | this_FormalParameter_9= ruleFormalParameter | this_ProbabilityMassFunction_10= ruleProbabilityMassFunction | this_BoxedPDF_11= ruleBoxedPDF | this_NormalDistribution_12= ruleNormalDistribution | this_ExponentialDistribution_13= ruleExponentialDistribution )
+            int alt7=14;
+            switch ( input.LA(1) ) {
+            case 26:
+                {
+                alt7=1;
+                }
+                break;
+            case 28:
+                {
+                alt7=2;
+                }
+                break;
+            case 33:
+                {
+                alt7=3;
+                }
+                break;
+            case 37:
+                {
+                alt7=4;
+                }
+                break;
+            case 39:
+                {
+                alt7=5;
+                }
+                break;
+            case 40:
+                {
+                alt7=6;
+                }
+                break;
+            case 41:
+                {
+                alt7=7;
+                }
+                break;
+            case 43:
+                {
+                alt7=8;
+                }
+                break;
+            case 44:
+                {
+                alt7=9;
+                }
+                break;
+            case 45:
+                {
+                alt7=10;
+                }
+                break;
+            case 46:
+                {
+                alt7=11;
+                }
+                break;
+            case 48:
+                {
+                alt7=12;
+                }
+                break;
+            case 49:
+                {
+                alt7=13;
+                }
+                break;
+            case 52:
+                {
+                alt7=14;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt7) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:924:5: this_NotExpression_0= ruleNotExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getNotExpressionParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_ruleUnary2416);
+                    this_NotExpression_0=ruleNotExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NotExpression_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:934:5: this_NegativeExpression_1= ruleNegativeExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getNegativeExpressionParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_ruleUnary2443);
+                    this_NegativeExpression_1=ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NegativeExpression_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:944:5: this_Function_2= ruleFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getFunctionParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_ruleUnary2470);
+                    this_Function_2=ruleFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_Function_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:954:5: this_Parenthesis_3= ruleParenthesis
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getParenthesisParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_ruleUnary2497);
+                    this_Parenthesis_3=ruleParenthesis();
+
+                    state._fsp--;
+
+                     
+                            current = this_Parenthesis_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:964:5: this_Literal_Impl_4= ruleLiteral_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getLiteral_ImplParserRuleCall_4()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_ruleUnary2524);
+                    this_Literal_Impl_4=ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_Literal_Impl_4; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:974:5: this_StringLiteral_5= ruleStringLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getStringLiteralParserRuleCall_5()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleUnary2551);
+                    this_StringLiteral_5=ruleStringLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_StringLiteral_5; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:984:5: this_BoolLiteral_6= ruleBoolLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getBoolLiteralParserRuleCall_6()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_ruleUnary2578);
+                    this_BoolLiteral_6=ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoolLiteral_6; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:994:5: this_IntLiteral_7= ruleIntLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getIntLiteralParserRuleCall_7()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_ruleUnary2605);
+                    this_IntLiteral_7=ruleIntLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_IntLiteral_7; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1004:5: this_DoubleLiteral_8= ruleDoubleLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getDoubleLiteralParserRuleCall_8()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_ruleUnary2632);
+                    this_DoubleLiteral_8=ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_DoubleLiteral_8; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1014:5: this_FormalParameter_9= ruleFormalParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getFormalParameterParserRuleCall_9()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_ruleUnary2659);
+                    this_FormalParameter_9=ruleFormalParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_FormalParameter_9; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1024:5: this_ProbabilityMassFunction_10= ruleProbabilityMassFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getProbabilityMassFunctionParserRuleCall_10()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_ruleUnary2686);
+                    this_ProbabilityMassFunction_10=ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProbabilityMassFunction_10; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1034:5: this_BoxedPDF_11= ruleBoxedPDF
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getBoxedPDFParserRuleCall_11()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_ruleUnary2713);
+                    this_BoxedPDF_11=ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoxedPDF_11; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1044:5: this_NormalDistribution_12= ruleNormalDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getNormalDistributionParserRuleCall_12()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_ruleUnary2740);
+                    this_NormalDistribution_12=ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_NormalDistribution_12; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1054:5: this_ExponentialDistribution_13= ruleExponentialDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getUnaryAccess().getExponentialDistributionParserRuleCall_13()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_ruleUnary2767);
+                    this_ExponentialDistribution_13=ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExponentialDistribution_13; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleUnary"
+
+
+    // $ANTLR start "entryRuleBooleanExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1070:1: entryRuleBooleanExpression returns [EObject current=null] : iv_ruleBooleanExpression= ruleBooleanExpression EOF ;
+    public final EObject entryRuleBooleanExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBooleanExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1071:2: (iv_ruleBooleanExpression= ruleBooleanExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1072:2: iv_ruleBooleanExpression= ruleBooleanExpression EOF
+            {
+             newCompositeNode(grammarAccess.getBooleanExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_entryRuleBooleanExpression2802);
+            iv_ruleBooleanExpression=ruleBooleanExpression();
+
+            state._fsp--;
+
+             current =iv_ruleBooleanExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanExpression2812); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBooleanExpression"
+
+
+    // $ANTLR start "ruleBooleanExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1079:1: ruleBooleanExpression returns [EObject current=null] : (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_CompareExpression_2= ruleCompareExpression | this_PowerExpression_3= rulePowerExpression | this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression | this_NotExpression_5= ruleNotExpression | this_NegativeExpression_6= ruleNegativeExpression | this_Function_7= ruleFunction | this_Parenthesis_8= ruleParenthesis | this_Literal_Impl_9= ruleLiteral_Impl | this_StringLiteral_10= ruleStringLiteral | this_BoolLiteral_11= ruleBoolLiteral | this_IntLiteral_12= ruleIntLiteral | this_DoubleLiteral_13= ruleDoubleLiteral | this_FormalParameter_14= ruleFormalParameter | this_ProbabilityMassFunction_15= ruleProbabilityMassFunction | this_BoxedPDF_16= ruleBoxedPDF | this_NormalDistribution_17= ruleNormalDistribution | this_ExponentialDistribution_18= ruleExponentialDistribution ) ;
+    public final EObject ruleBooleanExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_TermExpression_0 = null;
+
+        EObject this_ProductExpression_1 = null;
+
+        EObject this_CompareExpression_2 = null;
+
+        EObject this_PowerExpression_3 = null;
+
+        EObject this_BooleanOperatorExpression_4 = null;
+
+        EObject this_NotExpression_5 = null;
+
+        EObject this_NegativeExpression_6 = null;
+
+        EObject this_Function_7 = null;
+
+        EObject this_Parenthesis_8 = null;
+
+        EObject this_Literal_Impl_9 = null;
+
+        EObject this_StringLiteral_10 = null;
+
+        EObject this_BoolLiteral_11 = null;
+
+        EObject this_IntLiteral_12 = null;
+
+        EObject this_DoubleLiteral_13 = null;
+
+        EObject this_FormalParameter_14 = null;
+
+        EObject this_ProbabilityMassFunction_15 = null;
+
+        EObject this_BoxedPDF_16 = null;
+
+        EObject this_NormalDistribution_17 = null;
+
+        EObject this_ExponentialDistribution_18 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1082:28: ( (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_CompareExpression_2= ruleCompareExpression | this_PowerExpression_3= rulePowerExpression | this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression | this_NotExpression_5= ruleNotExpression | this_NegativeExpression_6= ruleNegativeExpression | this_Function_7= ruleFunction | this_Parenthesis_8= ruleParenthesis | this_Literal_Impl_9= ruleLiteral_Impl | this_StringLiteral_10= ruleStringLiteral | this_BoolLiteral_11= ruleBoolLiteral | this_IntLiteral_12= ruleIntLiteral | this_DoubleLiteral_13= ruleDoubleLiteral | this_FormalParameter_14= ruleFormalParameter | this_ProbabilityMassFunction_15= ruleProbabilityMassFunction | this_BoxedPDF_16= ruleBoxedPDF | this_NormalDistribution_17= ruleNormalDistribution | this_ExponentialDistribution_18= ruleExponentialDistribution ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1083:1: (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_CompareExpression_2= ruleCompareExpression | this_PowerExpression_3= rulePowerExpression | this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression | this_NotExpression_5= ruleNotExpression | this_NegativeExpression_6= ruleNegativeExpression | this_Function_7= ruleFunction | this_Parenthesis_8= ruleParenthesis | this_Literal_Impl_9= ruleLiteral_Impl | this_StringLiteral_10= ruleStringLiteral | this_BoolLiteral_11= ruleBoolLiteral | this_IntLiteral_12= ruleIntLiteral | this_DoubleLiteral_13= ruleDoubleLiteral | this_FormalParameter_14= ruleFormalParameter | this_ProbabilityMassFunction_15= ruleProbabilityMassFunction | this_BoxedPDF_16= ruleBoxedPDF | this_NormalDistribution_17= ruleNormalDistribution | this_ExponentialDistribution_18= ruleExponentialDistribution )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1083:1: (this_TermExpression_0= ruleTermExpression | this_ProductExpression_1= ruleProductExpression | this_CompareExpression_2= ruleCompareExpression | this_PowerExpression_3= rulePowerExpression | this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression | this_NotExpression_5= ruleNotExpression | this_NegativeExpression_6= ruleNegativeExpression | this_Function_7= ruleFunction | this_Parenthesis_8= ruleParenthesis | this_Literal_Impl_9= ruleLiteral_Impl | this_StringLiteral_10= ruleStringLiteral | this_BoolLiteral_11= ruleBoolLiteral | this_IntLiteral_12= ruleIntLiteral | this_DoubleLiteral_13= ruleDoubleLiteral | this_FormalParameter_14= ruleFormalParameter | this_ProbabilityMassFunction_15= ruleProbabilityMassFunction | this_BoxedPDF_16= ruleBoxedPDF | this_NormalDistribution_17= ruleNormalDistribution | this_ExponentialDistribution_18= ruleExponentialDistribution )
+            int alt8=19;
+            switch ( input.LA(1) ) {
+            case 16:
+                {
+                alt8=1;
+                }
+                break;
+            case 17:
+                {
+                alt8=2;
+                }
+                break;
+            case 18:
+                {
+                alt8=3;
+                }
+                break;
+            case 22:
+                {
+                alt8=4;
+                }
+                break;
+            case 25:
+                {
+                alt8=5;
+                }
+                break;
+            case 26:
+                {
+                alt8=6;
+                }
+                break;
+            case 28:
+                {
+                alt8=7;
+                }
+                break;
+            case 33:
+                {
+                alt8=8;
+                }
+                break;
+            case 37:
+                {
+                alt8=9;
+                }
+                break;
+            case 39:
+                {
+                alt8=10;
+                }
+                break;
+            case 40:
+                {
+                alt8=11;
+                }
+                break;
+            case 41:
+                {
+                alt8=12;
+                }
+                break;
+            case 43:
+                {
+                alt8=13;
+                }
+                break;
+            case 44:
+                {
+                alt8=14;
+                }
+                break;
+            case 45:
+                {
+                alt8=15;
+                }
+                break;
+            case 46:
+                {
+                alt8=16;
+                }
+                break;
+            case 48:
+                {
+                alt8=17;
+                }
+                break;
+            case 49:
+                {
+                alt8=18;
+                }
+                break;
+            case 52:
+                {
+                alt8=19;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt8) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1084:5: this_TermExpression_0= ruleTermExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getTermExpressionParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleTermExpression_in_ruleBooleanExpression2859);
+                    this_TermExpression_0=ruleTermExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_TermExpression_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1094:5: this_ProductExpression_1= ruleProductExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getProductExpressionParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_ruleBooleanExpression2886);
+                    this_ProductExpression_1=ruleProductExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProductExpression_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1104:5: this_CompareExpression_2= ruleCompareExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getCompareExpressionParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleCompareExpression_in_ruleBooleanExpression2913);
+                    this_CompareExpression_2=ruleCompareExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_CompareExpression_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1114:5: this_PowerExpression_3= rulePowerExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getPowerExpressionParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_ruleBooleanExpression2940);
+                    this_PowerExpression_3=rulePowerExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_PowerExpression_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1124:5: this_BooleanOperatorExpression_4= ruleBooleanOperatorExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getBooleanOperatorExpressionParserRuleCall_4()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBooleanOperatorExpression_in_ruleBooleanExpression2967);
+                    this_BooleanOperatorExpression_4=ruleBooleanOperatorExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_BooleanOperatorExpression_4; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1134:5: this_NotExpression_5= ruleNotExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getNotExpressionParserRuleCall_5()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_ruleBooleanExpression2994);
+                    this_NotExpression_5=ruleNotExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NotExpression_5; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1144:5: this_NegativeExpression_6= ruleNegativeExpression
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getNegativeExpressionParserRuleCall_6()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_ruleBooleanExpression3021);
+                    this_NegativeExpression_6=ruleNegativeExpression();
+
+                    state._fsp--;
+
+                     
+                            current = this_NegativeExpression_6; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1154:5: this_Function_7= ruleFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getFunctionParserRuleCall_7()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFunction_in_ruleBooleanExpression3048);
+                    this_Function_7=ruleFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_Function_7; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1164:5: this_Parenthesis_8= ruleParenthesis
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getParenthesisParserRuleCall_8()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_ruleBooleanExpression3075);
+                    this_Parenthesis_8=ruleParenthesis();
+
+                    state._fsp--;
+
+                     
+                            current = this_Parenthesis_8; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1174:5: this_Literal_Impl_9= ruleLiteral_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getLiteral_ImplParserRuleCall_9()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_ruleBooleanExpression3102);
+                    this_Literal_Impl_9=ruleLiteral_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_Literal_Impl_9; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1184:5: this_StringLiteral_10= ruleStringLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getStringLiteralParserRuleCall_10()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_ruleBooleanExpression3129);
+                    this_StringLiteral_10=ruleStringLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_StringLiteral_10; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1194:5: this_BoolLiteral_11= ruleBoolLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getBoolLiteralParserRuleCall_11()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_ruleBooleanExpression3156);
+                    this_BoolLiteral_11=ruleBoolLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoolLiteral_11; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1204:5: this_IntLiteral_12= ruleIntLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getIntLiteralParserRuleCall_12()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_ruleBooleanExpression3183);
+                    this_IntLiteral_12=ruleIntLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_IntLiteral_12; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 14 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1214:5: this_DoubleLiteral_13= ruleDoubleLiteral
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getDoubleLiteralParserRuleCall_13()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_ruleBooleanExpression3210);
+                    this_DoubleLiteral_13=ruleDoubleLiteral();
+
+                    state._fsp--;
+
+                     
+                            current = this_DoubleLiteral_13; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 15 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1224:5: this_FormalParameter_14= ruleFormalParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getFormalParameterParserRuleCall_14()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_ruleBooleanExpression3237);
+                    this_FormalParameter_14=ruleFormalParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_FormalParameter_14; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 16 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1234:5: this_ProbabilityMassFunction_15= ruleProbabilityMassFunction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getProbabilityMassFunctionParserRuleCall_15()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_ruleBooleanExpression3264);
+                    this_ProbabilityMassFunction_15=ruleProbabilityMassFunction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ProbabilityMassFunction_15; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 17 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1244:5: this_BoxedPDF_16= ruleBoxedPDF
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getBoxedPDFParserRuleCall_16()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_ruleBooleanExpression3291);
+                    this_BoxedPDF_16=ruleBoxedPDF();
+
+                    state._fsp--;
+
+                     
+                            current = this_BoxedPDF_16; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 18 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1254:5: this_NormalDistribution_17= ruleNormalDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getNormalDistributionParserRuleCall_17()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_ruleBooleanExpression3318);
+                    this_NormalDistribution_17=ruleNormalDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_NormalDistribution_17; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 19 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1264:5: this_ExponentialDistribution_18= ruleExponentialDistribution
+                    {
+                     
+                            newCompositeNode(grammarAccess.getBooleanExpressionAccess().getExponentialDistributionParserRuleCall_18()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_ruleBooleanExpression3345);
+                    this_ExponentialDistribution_18=ruleExponentialDistribution();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExponentialDistribution_18; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBooleanExpression"
+
+
+    // $ANTLR start "entryRuleEString"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1280:1: entryRuleEString returns [String current=null] : iv_ruleEString= ruleEString EOF ;
+    public final String entryRuleEString() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleEString = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1281:2: (iv_ruleEString= ruleEString EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1282:2: iv_ruleEString= ruleEString EOF
+            {
+             newCompositeNode(grammarAccess.getEStringRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_entryRuleEString3381);
+            iv_ruleEString=ruleEString();
+
+            state._fsp--;
+
+             current =iv_ruleEString.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEString3392); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEString"
+
+
+    // $ANTLR start "ruleEString"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1289:1: ruleEString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID ) ;
+    public final AntlrDatatypeRuleToken ruleEString() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_STRING_0=null;
+        Token this_ID_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1292:28: ( (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1293:1: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1293:1: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID )
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==RULE_STRING) ) {
+                alt9=1;
+            }
+            else if ( (LA9_0==RULE_ID) ) {
+                alt9=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 9, 0, input);
+
+                throw nvae;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1293:6: this_STRING_0= RULE_STRING
+                    {
+                    this_STRING_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleEString3432); 
+
+                    		current.merge(this_STRING_0);
+                        
+                     
+                        newLeafNode(this_STRING_0, grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1301:10: this_ID_1= RULE_ID
+                    {
+                    this_ID_1=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleEString3458); 
+
+                    		current.merge(this_ID_1);
+                        
+                     
+                        newLeafNode(this_ID_1, grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEString"
+
+
+    // $ANTLR start "entryRuleTermExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1316:1: entryRuleTermExpression returns [EObject current=null] : iv_ruleTermExpression= ruleTermExpression EOF ;
+    public final EObject entryRuleTermExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTermExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1317:2: (iv_ruleTermExpression= ruleTermExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1318:2: iv_ruleTermExpression= ruleTermExpression EOF
+            {
+             newCompositeNode(grammarAccess.getTermExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermExpression_in_entryRuleTermExpression3503);
+            iv_ruleTermExpression=ruleTermExpression();
+
+            state._fsp--;
+
+             current =iv_ruleTermExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTermExpression3513); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTermExpression"
+
+
+    // $ANTLR start "ruleTermExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1325:1: ruleTermExpression returns [EObject current=null] : (otherlv_0= 'TermExpression' otherlv_1= '{' this_TermExpression2_2= ruleTermExpression2 ( () ( (lv_operation_4_0= ruleTermOperations ) ) ( (lv_right_5_0= ruleProduct ) ) )* otherlv_6= '}' ) ;
+    public final EObject ruleTermExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_6=null;
+        EObject this_TermExpression2_2 = null;
+
+        AntlrDatatypeRuleToken lv_operation_4_0 = null;
+
+        EObject lv_right_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1328:28: ( (otherlv_0= 'TermExpression' otherlv_1= '{' this_TermExpression2_2= ruleTermExpression2 ( () ( (lv_operation_4_0= ruleTermOperations ) ) ( (lv_right_5_0= ruleProduct ) ) )* otherlv_6= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1329:1: (otherlv_0= 'TermExpression' otherlv_1= '{' this_TermExpression2_2= ruleTermExpression2 ( () ( (lv_operation_4_0= ruleTermOperations ) ) ( (lv_right_5_0= ruleProduct ) ) )* otherlv_6= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1329:1: (otherlv_0= 'TermExpression' otherlv_1= '{' this_TermExpression2_2= ruleTermExpression2 ( () ( (lv_operation_4_0= ruleTermOperations ) ) ( (lv_right_5_0= ruleProduct ) ) )* otherlv_6= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1329:3: otherlv_0= 'TermExpression' otherlv_1= '{' this_TermExpression2_2= ruleTermExpression2 ( () ( (lv_operation_4_0= ruleTermOperations ) ) ( (lv_right_5_0= ruleProduct ) ) )* otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleTermExpression3550); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getTermExpressionAccess().getTermExpressionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleTermExpression3562); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getTermExpressionAccess().getLeftCurlyBracketKeyword_1());
+                
+             
+                    newCompositeNode(grammarAccess.getTermExpressionAccess().getTermExpression2ParserRuleCall_2()); 
+                
+            pushFollow(FollowSets000.FOLLOW_ruleTermExpression2_in_ruleTermExpression3584);
+            this_TermExpression2_2=ruleTermExpression2();
+
+            state._fsp--;
+
+             
+                    current = this_TermExpression2_2; 
+                    afterParserOrEnumRuleCall();
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1346:1: ( () ( (lv_operation_4_0= ruleTermOperations ) ) ( (lv_right_5_0= ruleProduct ) ) )*
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( (LA10_0==54) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1346:2: () ( (lv_operation_4_0= ruleTermOperations ) ) ( (lv_right_5_0= ruleProduct ) )
+            	    {
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1346:2: ()
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1347:5: 
+            	    {
+
+            	            current = forceCreateModelElementAndSet(
+            	                grammarAccess.getTermExpressionAccess().getTermExpressionLeftAction_3_0(),
+            	                current);
+            	        
+
+            	    }
+
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1352:2: ( (lv_operation_4_0= ruleTermOperations ) )
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1353:1: (lv_operation_4_0= ruleTermOperations )
+            	    {
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1353:1: (lv_operation_4_0= ruleTermOperations )
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1354:3: lv_operation_4_0= ruleTermOperations
+            	    {
+            	     
+            	    	        newCompositeNode(grammarAccess.getTermExpressionAccess().getOperationTermOperationsParserRuleCall_3_1_0()); 
+            	    	    
+            	    pushFollow(FollowSets000.FOLLOW_ruleTermOperations_in_ruleTermExpression3614);
+            	    lv_operation_4_0=ruleTermOperations();
+
+            	    state._fsp--;
+
+
+            	    	        if (current==null) {
+            	    	            current = createModelElementForParent(grammarAccess.getTermExpressionRule());
+            	    	        }
+            	           		set(
+            	           			current, 
+            	           			"operation",
+            	            		lv_operation_4_0, 
+            	            		"TermOperations");
+            	    	        afterParserOrEnumRuleCall();
+            	    	    
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1370:2: ( (lv_right_5_0= ruleProduct ) )
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1371:1: (lv_right_5_0= ruleProduct )
+            	    {
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1371:1: (lv_right_5_0= ruleProduct )
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1372:3: lv_right_5_0= ruleProduct
+            	    {
+            	     
+            	    	        newCompositeNode(grammarAccess.getTermExpressionAccess().getRightProductParserRuleCall_3_2_0()); 
+            	    	    
+            	    pushFollow(FollowSets000.FOLLOW_ruleProduct_in_ruleTermExpression3635);
+            	    lv_right_5_0=ruleProduct();
+
+            	    state._fsp--;
+
+
+            	    	        if (current==null) {
+            	    	            current = createModelElementForParent(grammarAccess.getTermExpressionRule());
+            	    	        }
+            	           		set(
+            	           			current, 
+            	           			"right",
+            	            		lv_right_5_0, 
+            	            		"Product");
+            	    	        afterParserOrEnumRuleCall();
+            	    	    
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop10;
+                }
+            } while (true);
+
+            otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleTermExpression3649); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getTermExpressionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTermExpression"
+
+
+    // $ANTLR start "entryRuleTermExpression2"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1400:1: entryRuleTermExpression2 returns [EObject current=null] : iv_ruleTermExpression2= ruleTermExpression2 EOF ;
+    public final EObject entryRuleTermExpression2() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTermExpression2 = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1401:2: (iv_ruleTermExpression2= ruleTermExpression2 EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1402:2: iv_ruleTermExpression2= ruleTermExpression2 EOF
+            {
+             newCompositeNode(grammarAccess.getTermExpression2Rule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermExpression2_in_entryRuleTermExpression23685);
+            iv_ruleTermExpression2=ruleTermExpression2();
+
+            state._fsp--;
+
+             current =iv_ruleTermExpression2; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTermExpression23695); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTermExpression2"
+
+
+    // $ANTLR start "ruleTermExpression2"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1409:1: ruleTermExpression2 returns [EObject current=null] : ( ( (lv_left_0_0= ruleTerm ) ) ( (lv_operation_1_0= ruleTermOperations ) ) ( (lv_right_2_0= ruleProduct ) ) ) ;
+    public final EObject ruleTermExpression2() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_left_0_0 = null;
+
+        AntlrDatatypeRuleToken lv_operation_1_0 = null;
+
+        EObject lv_right_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1412:28: ( ( ( (lv_left_0_0= ruleTerm ) ) ( (lv_operation_1_0= ruleTermOperations ) ) ( (lv_right_2_0= ruleProduct ) ) ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1413:1: ( ( (lv_left_0_0= ruleTerm ) ) ( (lv_operation_1_0= ruleTermOperations ) ) ( (lv_right_2_0= ruleProduct ) ) )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1413:1: ( ( (lv_left_0_0= ruleTerm ) ) ( (lv_operation_1_0= ruleTermOperations ) ) ( (lv_right_2_0= ruleProduct ) ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1413:2: ( (lv_left_0_0= ruleTerm ) ) ( (lv_operation_1_0= ruleTermOperations ) ) ( (lv_right_2_0= ruleProduct ) )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1413:2: ( (lv_left_0_0= ruleTerm ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1414:1: (lv_left_0_0= ruleTerm )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1414:1: (lv_left_0_0= ruleTerm )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1415:3: lv_left_0_0= ruleTerm
+            {
+             
+            	        newCompositeNode(grammarAccess.getTermExpression2Access().getLeftTermParserRuleCall_0_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleTermExpression23741);
+            lv_left_0_0=ruleTerm();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getTermExpression2Rule());
+            	        }
+                   		set(
+                   			current, 
+                   			"left",
+                    		lv_left_0_0, 
+                    		"Term");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1431:2: ( (lv_operation_1_0= ruleTermOperations ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1432:1: (lv_operation_1_0= ruleTermOperations )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1432:1: (lv_operation_1_0= ruleTermOperations )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1433:3: lv_operation_1_0= ruleTermOperations
+            {
+             
+            	        newCompositeNode(grammarAccess.getTermExpression2Access().getOperationTermOperationsParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleTermOperations_in_ruleTermExpression23762);
+            lv_operation_1_0=ruleTermOperations();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getTermExpression2Rule());
+            	        }
+                   		set(
+                   			current, 
+                   			"operation",
+                    		lv_operation_1_0, 
+                    		"TermOperations");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1449:2: ( (lv_right_2_0= ruleProduct ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1450:1: (lv_right_2_0= ruleProduct )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1450:1: (lv_right_2_0= ruleProduct )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1451:3: lv_right_2_0= ruleProduct
+            {
+             
+            	        newCompositeNode(grammarAccess.getTermExpression2Access().getRightProductParserRuleCall_2_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleProduct_in_ruleTermExpression23783);
+            lv_right_2_0=ruleProduct();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getTermExpression2Rule());
+            	        }
+                   		set(
+                   			current, 
+                   			"right",
+                    		lv_right_2_0, 
+                    		"Product");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTermExpression2"
+
+
+    // $ANTLR start "entryRuleProductExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1475:1: entryRuleProductExpression returns [EObject current=null] : iv_ruleProductExpression= ruleProductExpression EOF ;
+    public final EObject entryRuleProductExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProductExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1476:2: (iv_ruleProductExpression= ruleProductExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1477:2: iv_ruleProductExpression= ruleProductExpression EOF
+            {
+             newCompositeNode(grammarAccess.getProductExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductExpression_in_entryRuleProductExpression3819);
+            iv_ruleProductExpression=ruleProductExpression();
+
+            state._fsp--;
+
+             current =iv_ruleProductExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProductExpression3829); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProductExpression"
+
+
+    // $ANTLR start "ruleProductExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1484:1: ruleProductExpression returns [EObject current=null] : (otherlv_0= 'ProductExpression' otherlv_1= '{' this_ProductExpression2_2= ruleProductExpression2 ( () ( (lv_operation_4_0= ruleProductOperations ) ) ( (lv_right_5_0= rulePower ) ) )* otherlv_6= '}' ) ;
+    public final EObject ruleProductExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_6=null;
+        EObject this_ProductExpression2_2 = null;
+
+        AntlrDatatypeRuleToken lv_operation_4_0 = null;
+
+        EObject lv_right_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1487:28: ( (otherlv_0= 'ProductExpression' otherlv_1= '{' this_ProductExpression2_2= ruleProductExpression2 ( () ( (lv_operation_4_0= ruleProductOperations ) ) ( (lv_right_5_0= rulePower ) ) )* otherlv_6= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1488:1: (otherlv_0= 'ProductExpression' otherlv_1= '{' this_ProductExpression2_2= ruleProductExpression2 ( () ( (lv_operation_4_0= ruleProductOperations ) ) ( (lv_right_5_0= rulePower ) ) )* otherlv_6= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1488:1: (otherlv_0= 'ProductExpression' otherlv_1= '{' this_ProductExpression2_2= ruleProductExpression2 ( () ( (lv_operation_4_0= ruleProductOperations ) ) ( (lv_right_5_0= rulePower ) ) )* otherlv_6= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1488:3: otherlv_0= 'ProductExpression' otherlv_1= '{' this_ProductExpression2_2= ruleProductExpression2 ( () ( (lv_operation_4_0= ruleProductOperations ) ) ( (lv_right_5_0= rulePower ) ) )* otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleProductExpression3866); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getProductExpressionAccess().getProductExpressionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleProductExpression3878); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getProductExpressionAccess().getLeftCurlyBracketKeyword_1());
+                
+             
+                    newCompositeNode(grammarAccess.getProductExpressionAccess().getProductExpression2ParserRuleCall_2()); 
+                
+            pushFollow(FollowSets000.FOLLOW_ruleProductExpression2_in_ruleProductExpression3900);
+            this_ProductExpression2_2=ruleProductExpression2();
+
+            state._fsp--;
+
+             
+                    current = this_ProductExpression2_2; 
+                    afterParserOrEnumRuleCall();
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1505:1: ( () ( (lv_operation_4_0= ruleProductOperations ) ) ( (lv_right_5_0= rulePower ) ) )*
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( (LA11_0==55) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1505:2: () ( (lv_operation_4_0= ruleProductOperations ) ) ( (lv_right_5_0= rulePower ) )
+            	    {
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1505:2: ()
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1506:5: 
+            	    {
+
+            	            current = forceCreateModelElementAndSet(
+            	                grammarAccess.getProductExpressionAccess().getProductExpressionLeftAction_3_0(),
+            	                current);
+            	        
+
+            	    }
+
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1511:2: ( (lv_operation_4_0= ruleProductOperations ) )
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1512:1: (lv_operation_4_0= ruleProductOperations )
+            	    {
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1512:1: (lv_operation_4_0= ruleProductOperations )
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1513:3: lv_operation_4_0= ruleProductOperations
+            	    {
+            	     
+            	    	        newCompositeNode(grammarAccess.getProductExpressionAccess().getOperationProductOperationsParserRuleCall_3_1_0()); 
+            	    	    
+            	    pushFollow(FollowSets000.FOLLOW_ruleProductOperations_in_ruleProductExpression3930);
+            	    lv_operation_4_0=ruleProductOperations();
+
+            	    state._fsp--;
+
+
+            	    	        if (current==null) {
+            	    	            current = createModelElementForParent(grammarAccess.getProductExpressionRule());
+            	    	        }
+            	           		set(
+            	           			current, 
+            	           			"operation",
+            	            		lv_operation_4_0, 
+            	            		"ProductOperations");
+            	    	        afterParserOrEnumRuleCall();
+            	    	    
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1529:2: ( (lv_right_5_0= rulePower ) )
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1530:1: (lv_right_5_0= rulePower )
+            	    {
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1530:1: (lv_right_5_0= rulePower )
+            	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1531:3: lv_right_5_0= rulePower
+            	    {
+            	     
+            	    	        newCompositeNode(grammarAccess.getProductExpressionAccess().getRightPowerParserRuleCall_3_2_0()); 
+            	    	    
+            	    pushFollow(FollowSets000.FOLLOW_rulePower_in_ruleProductExpression3951);
+            	    lv_right_5_0=rulePower();
+
+            	    state._fsp--;
+
+
+            	    	        if (current==null) {
+            	    	            current = createModelElementForParent(grammarAccess.getProductExpressionRule());
+            	    	        }
+            	           		set(
+            	           			current, 
+            	           			"right",
+            	            		lv_right_5_0, 
+            	            		"Power");
+            	    	        afterParserOrEnumRuleCall();
+            	    	    
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop11;
+                }
+            } while (true);
+
+            otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleProductExpression3965); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getProductExpressionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProductExpression"
+
+
+    // $ANTLR start "entryRuleProductExpression2"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1559:1: entryRuleProductExpression2 returns [EObject current=null] : iv_ruleProductExpression2= ruleProductExpression2 EOF ;
+    public final EObject entryRuleProductExpression2() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProductExpression2 = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1560:2: (iv_ruleProductExpression2= ruleProductExpression2 EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1561:2: iv_ruleProductExpression2= ruleProductExpression2 EOF
+            {
+             newCompositeNode(grammarAccess.getProductExpression2Rule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductExpression2_in_entryRuleProductExpression24001);
+            iv_ruleProductExpression2=ruleProductExpression2();
+
+            state._fsp--;
+
+             current =iv_ruleProductExpression2; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProductExpression24011); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProductExpression2"
+
+
+    // $ANTLR start "ruleProductExpression2"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1568:1: ruleProductExpression2 returns [EObject current=null] : ( ( (lv_left_0_0= ruleProduct ) ) ( (lv_operation_1_0= ruleProductOperations ) ) ( (lv_right_2_0= rulePower ) ) ) ;
+    public final EObject ruleProductExpression2() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_left_0_0 = null;
+
+        AntlrDatatypeRuleToken lv_operation_1_0 = null;
+
+        EObject lv_right_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1571:28: ( ( ( (lv_left_0_0= ruleProduct ) ) ( (lv_operation_1_0= ruleProductOperations ) ) ( (lv_right_2_0= rulePower ) ) ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1572:1: ( ( (lv_left_0_0= ruleProduct ) ) ( (lv_operation_1_0= ruleProductOperations ) ) ( (lv_right_2_0= rulePower ) ) )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1572:1: ( ( (lv_left_0_0= ruleProduct ) ) ( (lv_operation_1_0= ruleProductOperations ) ) ( (lv_right_2_0= rulePower ) ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1572:2: ( (lv_left_0_0= ruleProduct ) ) ( (lv_operation_1_0= ruleProductOperations ) ) ( (lv_right_2_0= rulePower ) )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1572:2: ( (lv_left_0_0= ruleProduct ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1573:1: (lv_left_0_0= ruleProduct )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1573:1: (lv_left_0_0= ruleProduct )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1574:3: lv_left_0_0= ruleProduct
+            {
+             
+            	        newCompositeNode(grammarAccess.getProductExpression2Access().getLeftProductParserRuleCall_0_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleProduct_in_ruleProductExpression24057);
+            lv_left_0_0=ruleProduct();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProductExpression2Rule());
+            	        }
+                   		set(
+                   			current, 
+                   			"left",
+                    		lv_left_0_0, 
+                    		"Product");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1590:2: ( (lv_operation_1_0= ruleProductOperations ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1591:1: (lv_operation_1_0= ruleProductOperations )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1591:1: (lv_operation_1_0= ruleProductOperations )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1592:3: lv_operation_1_0= ruleProductOperations
+            {
+             
+            	        newCompositeNode(grammarAccess.getProductExpression2Access().getOperationProductOperationsParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleProductOperations_in_ruleProductExpression24078);
+            lv_operation_1_0=ruleProductOperations();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProductExpression2Rule());
+            	        }
+                   		set(
+                   			current, 
+                   			"operation",
+                    		lv_operation_1_0, 
+                    		"ProductOperations");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1608:2: ( (lv_right_2_0= rulePower ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1609:1: (lv_right_2_0= rulePower )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1609:1: (lv_right_2_0= rulePower )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1610:3: lv_right_2_0= rulePower
+            {
+             
+            	        newCompositeNode(grammarAccess.getProductExpression2Access().getRightPowerParserRuleCall_2_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_rulePower_in_ruleProductExpression24099);
+            lv_right_2_0=rulePower();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProductExpression2Rule());
+            	        }
+                   		set(
+                   			current, 
+                   			"right",
+                    		lv_right_2_0, 
+                    		"Power");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProductExpression2"
+
+
+    // $ANTLR start "entryRuleCompareExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1634:1: entryRuleCompareExpression returns [EObject current=null] : iv_ruleCompareExpression= ruleCompareExpression EOF ;
+    public final EObject entryRuleCompareExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCompareExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1635:2: (iv_ruleCompareExpression= ruleCompareExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1636:2: iv_ruleCompareExpression= ruleCompareExpression EOF
+            {
+             newCompositeNode(grammarAccess.getCompareExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCompareExpression_in_entryRuleCompareExpression4135);
+            iv_ruleCompareExpression=ruleCompareExpression();
+
+            state._fsp--;
+
+             current =iv_ruleCompareExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCompareExpression4145); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCompareExpression"
+
+
+    // $ANTLR start "ruleCompareExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1643:1: ruleCompareExpression returns [EObject current=null] : (otherlv_0= 'CompareExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleCompareOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleTerm ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleTerm ) ) otherlv_8= '}' ) ;
+    public final EObject ruleCompareExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        AntlrDatatypeRuleToken lv_operation_3_0 = null;
+
+        EObject lv_left_5_0 = null;
+
+        EObject lv_right_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1646:28: ( (otherlv_0= 'CompareExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleCompareOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleTerm ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleTerm ) ) otherlv_8= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1647:1: (otherlv_0= 'CompareExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleCompareOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleTerm ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleTerm ) ) otherlv_8= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1647:1: (otherlv_0= 'CompareExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleCompareOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleTerm ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleTerm ) ) otherlv_8= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1647:3: otherlv_0= 'CompareExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleCompareOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleTerm ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleTerm ) ) otherlv_8= '}'
+            {
+            otherlv_0=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleCompareExpression4182); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getCompareExpressionAccess().getCompareExpressionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompareExpression4194); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getCompareExpressionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleCompareExpression4206); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getCompareExpressionAccess().getOperationKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1659:1: ( (lv_operation_3_0= ruleCompareOperations ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1660:1: (lv_operation_3_0= ruleCompareOperations )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1660:1: (lv_operation_3_0= ruleCompareOperations )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1661:3: lv_operation_3_0= ruleCompareOperations
+            {
+             
+            	        newCompositeNode(grammarAccess.getCompareExpressionAccess().getOperationCompareOperationsParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleCompareOperations_in_ruleCompareExpression4227);
+            lv_operation_3_0=ruleCompareOperations();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCompareExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"operation",
+                    		lv_operation_3_0, 
+                    		"CompareOperations");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleCompareExpression4239); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getCompareExpressionAccess().getLeftKeyword_4());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1681:1: ( (lv_left_5_0= ruleTerm ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1682:1: (lv_left_5_0= ruleTerm )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1682:1: (lv_left_5_0= ruleTerm )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1683:3: lv_left_5_0= ruleTerm
+            {
+             
+            	        newCompositeNode(grammarAccess.getCompareExpressionAccess().getLeftTermParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleCompareExpression4260);
+            lv_left_5_0=ruleTerm();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCompareExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"left",
+                    		lv_left_5_0, 
+                    		"Term");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleCompareExpression4272); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getCompareExpressionAccess().getRightKeyword_6());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1703:1: ( (lv_right_7_0= ruleTerm ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1704:1: (lv_right_7_0= ruleTerm )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1704:1: (lv_right_7_0= ruleTerm )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1705:3: lv_right_7_0= ruleTerm
+            {
+             
+            	        newCompositeNode(grammarAccess.getCompareExpressionAccess().getRightTermParserRuleCall_7_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleCompareExpression4293);
+            lv_right_7_0=ruleTerm();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCompareExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"right",
+                    		lv_right_7_0, 
+                    		"Term");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompareExpression4305); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getCompareExpressionAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCompareExpression"
+
+
+    // $ANTLR start "entryRulePowerExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1733:1: entryRulePowerExpression returns [EObject current=null] : iv_rulePowerExpression= rulePowerExpression EOF ;
+    public final EObject entryRulePowerExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePowerExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1734:2: (iv_rulePowerExpression= rulePowerExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1735:2: iv_rulePowerExpression= rulePowerExpression EOF
+            {
+             newCompositeNode(grammarAccess.getPowerExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePowerExpression_in_entryRulePowerExpression4341);
+            iv_rulePowerExpression=rulePowerExpression();
+
+            state._fsp--;
+
+             current =iv_rulePowerExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePowerExpression4351); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePowerExpression"
+
+
+    // $ANTLR start "rulePowerExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1742:1: rulePowerExpression returns [EObject current=null] : (otherlv_0= 'PowerExpression' otherlv_1= '{' otherlv_2= 'base' ( (lv_base_3_0= rulePower ) ) otherlv_4= 'exponent' ( (lv_exponent_5_0= ruleUnary ) ) otherlv_6= '}' ) ;
+    public final EObject rulePowerExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_base_3_0 = null;
+
+        EObject lv_exponent_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1745:28: ( (otherlv_0= 'PowerExpression' otherlv_1= '{' otherlv_2= 'base' ( (lv_base_3_0= rulePower ) ) otherlv_4= 'exponent' ( (lv_exponent_5_0= ruleUnary ) ) otherlv_6= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1746:1: (otherlv_0= 'PowerExpression' otherlv_1= '{' otherlv_2= 'base' ( (lv_base_3_0= rulePower ) ) otherlv_4= 'exponent' ( (lv_exponent_5_0= ruleUnary ) ) otherlv_6= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1746:1: (otherlv_0= 'PowerExpression' otherlv_1= '{' otherlv_2= 'base' ( (lv_base_3_0= rulePower ) ) otherlv_4= 'exponent' ( (lv_exponent_5_0= ruleUnary ) ) otherlv_6= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1746:3: otherlv_0= 'PowerExpression' otherlv_1= '{' otherlv_2= 'base' ( (lv_base_3_0= rulePower ) ) otherlv_4= 'exponent' ( (lv_exponent_5_0= ruleUnary ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,22,FollowSets000.FOLLOW_22_in_rulePowerExpression4388); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getPowerExpressionAccess().getPowerExpressionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_rulePowerExpression4400); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getPowerExpressionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_rulePowerExpression4412); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getPowerExpressionAccess().getBaseKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1758:1: ( (lv_base_3_0= rulePower ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1759:1: (lv_base_3_0= rulePower )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1759:1: (lv_base_3_0= rulePower )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1760:3: lv_base_3_0= rulePower
+            {
+             
+            	        newCompositeNode(grammarAccess.getPowerExpressionAccess().getBasePowerParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_rulePower_in_rulePowerExpression4433);
+            lv_base_3_0=rulePower();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPowerExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"base",
+                    		lv_base_3_0, 
+                    		"Power");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,24,FollowSets000.FOLLOW_24_in_rulePowerExpression4445); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getPowerExpressionAccess().getExponentKeyword_4());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1780:1: ( (lv_exponent_5_0= ruleUnary ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1781:1: (lv_exponent_5_0= ruleUnary )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1781:1: (lv_exponent_5_0= ruleUnary )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1782:3: lv_exponent_5_0= ruleUnary
+            {
+             
+            	        newCompositeNode(grammarAccess.getPowerExpressionAccess().getExponentUnaryParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleUnary_in_rulePowerExpression4466);
+            lv_exponent_5_0=ruleUnary();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPowerExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"exponent",
+                    		lv_exponent_5_0, 
+                    		"Unary");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_rulePowerExpression4478); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getPowerExpressionAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePowerExpression"
+
+
+    // $ANTLR start "entryRuleBooleanOperatorExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1810:1: entryRuleBooleanOperatorExpression returns [EObject current=null] : iv_ruleBooleanOperatorExpression= ruleBooleanOperatorExpression EOF ;
+    public final EObject entryRuleBooleanOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBooleanOperatorExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1811:2: (iv_ruleBooleanOperatorExpression= ruleBooleanOperatorExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1812:2: iv_ruleBooleanOperatorExpression= ruleBooleanOperatorExpression EOF
+            {
+             newCompositeNode(grammarAccess.getBooleanOperatorExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanOperatorExpression_in_entryRuleBooleanOperatorExpression4514);
+            iv_ruleBooleanOperatorExpression=ruleBooleanOperatorExpression();
+
+            state._fsp--;
+
+             current =iv_ruleBooleanOperatorExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanOperatorExpression4524); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBooleanOperatorExpression"
+
+
+    // $ANTLR start "ruleBooleanOperatorExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1819:1: ruleBooleanOperatorExpression returns [EObject current=null] : (otherlv_0= 'BooleanOperatorExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleBooleanOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleBooleanExpression ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleBooleanExpression ) ) otherlv_8= '}' ) ;
+    public final EObject ruleBooleanOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        AntlrDatatypeRuleToken lv_operation_3_0 = null;
+
+        EObject lv_left_5_0 = null;
+
+        EObject lv_right_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1822:28: ( (otherlv_0= 'BooleanOperatorExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleBooleanOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleBooleanExpression ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleBooleanExpression ) ) otherlv_8= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1823:1: (otherlv_0= 'BooleanOperatorExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleBooleanOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleBooleanExpression ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleBooleanExpression ) ) otherlv_8= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1823:1: (otherlv_0= 'BooleanOperatorExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleBooleanOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleBooleanExpression ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleBooleanExpression ) ) otherlv_8= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1823:3: otherlv_0= 'BooleanOperatorExpression' otherlv_1= '{' otherlv_2= 'operation' ( (lv_operation_3_0= ruleBooleanOperations ) ) otherlv_4= 'left' ( (lv_left_5_0= ruleBooleanExpression ) ) otherlv_6= 'right' ( (lv_right_7_0= ruleBooleanExpression ) ) otherlv_8= '}'
+            {
+            otherlv_0=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleBooleanOperatorExpression4561); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getBooleanOperatorExpressionAccess().getBooleanOperatorExpressionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBooleanOperatorExpression4573); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getBooleanOperatorExpressionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleBooleanOperatorExpression4585); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getBooleanOperatorExpressionAccess().getOperationKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1835:1: ( (lv_operation_3_0= ruleBooleanOperations ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1836:1: (lv_operation_3_0= ruleBooleanOperations )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1836:1: (lv_operation_3_0= ruleBooleanOperations )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1837:3: lv_operation_3_0= ruleBooleanOperations
+            {
+             
+            	        newCompositeNode(grammarAccess.getBooleanOperatorExpressionAccess().getOperationBooleanOperationsParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanOperations_in_ruleBooleanOperatorExpression4606);
+            lv_operation_3_0=ruleBooleanOperations();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBooleanOperatorExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"operation",
+                    		lv_operation_3_0, 
+                    		"BooleanOperations");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleBooleanOperatorExpression4618); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getBooleanOperatorExpressionAccess().getLeftKeyword_4());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1857:1: ( (lv_left_5_0= ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1858:1: (lv_left_5_0= ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1858:1: (lv_left_5_0= ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1859:3: lv_left_5_0= ruleBooleanExpression
+            {
+             
+            	        newCompositeNode(grammarAccess.getBooleanOperatorExpressionAccess().getLeftBooleanExpressionParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleBooleanOperatorExpression4639);
+            lv_left_5_0=ruleBooleanExpression();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBooleanOperatorExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"left",
+                    		lv_left_5_0, 
+                    		"BooleanExpression");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleBooleanOperatorExpression4651); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getBooleanOperatorExpressionAccess().getRightKeyword_6());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1879:1: ( (lv_right_7_0= ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1880:1: (lv_right_7_0= ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1880:1: (lv_right_7_0= ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1881:3: lv_right_7_0= ruleBooleanExpression
+            {
+             
+            	        newCompositeNode(grammarAccess.getBooleanOperatorExpressionAccess().getRightBooleanExpressionParserRuleCall_7_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleBooleanOperatorExpression4672);
+            lv_right_7_0=ruleBooleanExpression();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBooleanOperatorExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"right",
+                    		lv_right_7_0, 
+                    		"BooleanExpression");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBooleanOperatorExpression4684); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getBooleanOperatorExpressionAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBooleanOperatorExpression"
+
+
+    // $ANTLR start "entryRuleNotExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1909:1: entryRuleNotExpression returns [EObject current=null] : iv_ruleNotExpression= ruleNotExpression EOF ;
+    public final EObject entryRuleNotExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleNotExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1910:2: (iv_ruleNotExpression= ruleNotExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1911:2: iv_ruleNotExpression= ruleNotExpression EOF
+            {
+             newCompositeNode(grammarAccess.getNotExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNotExpression_in_entryRuleNotExpression4720);
+            iv_ruleNotExpression=ruleNotExpression();
+
+            state._fsp--;
+
+             current =iv_ruleNotExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNotExpression4730); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleNotExpression"
+
+
+    // $ANTLR start "ruleNotExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1918:1: ruleNotExpression returns [EObject current=null] : (otherlv_0= 'NotExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}' ) ;
+    public final EObject ruleNotExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject lv_inner_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1921:28: ( (otherlv_0= 'NotExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1922:1: (otherlv_0= 'NotExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1922:1: (otherlv_0= 'NotExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1922:3: otherlv_0= 'NotExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleNotExpression4767); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getNotExpressionAccess().getNotExpressionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleNotExpression4779); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getNotExpressionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNotExpression4791); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getNotExpressionAccess().getInnerKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1934:1: ( (lv_inner_3_0= ruleUnary ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1935:1: (lv_inner_3_0= ruleUnary )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1935:1: (lv_inner_3_0= ruleUnary )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1936:3: lv_inner_3_0= ruleUnary
+            {
+             
+            	        newCompositeNode(grammarAccess.getNotExpressionAccess().getInnerUnaryParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleUnary_in_ruleNotExpression4812);
+            lv_inner_3_0=ruleUnary();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getNotExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"inner",
+                    		lv_inner_3_0, 
+                    		"Unary");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleNotExpression4824); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getNotExpressionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleNotExpression"
+
+
+    // $ANTLR start "entryRuleNegativeExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1964:1: entryRuleNegativeExpression returns [EObject current=null] : iv_ruleNegativeExpression= ruleNegativeExpression EOF ;
+    public final EObject entryRuleNegativeExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleNegativeExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1965:2: (iv_ruleNegativeExpression= ruleNegativeExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1966:2: iv_ruleNegativeExpression= ruleNegativeExpression EOF
+            {
+             newCompositeNode(grammarAccess.getNegativeExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNegativeExpression_in_entryRuleNegativeExpression4860);
+            iv_ruleNegativeExpression=ruleNegativeExpression();
+
+            state._fsp--;
+
+             current =iv_ruleNegativeExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNegativeExpression4870); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleNegativeExpression"
+
+
+    // $ANTLR start "ruleNegativeExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1973:1: ruleNegativeExpression returns [EObject current=null] : (otherlv_0= 'NegativeExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}' ) ;
+    public final EObject ruleNegativeExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject lv_inner_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1976:28: ( (otherlv_0= 'NegativeExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1977:1: (otherlv_0= 'NegativeExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1977:1: (otherlv_0= 'NegativeExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1977:3: otherlv_0= 'NegativeExpression' otherlv_1= '{' otherlv_2= 'inner' ( (lv_inner_3_0= ruleUnary ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleNegativeExpression4907); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getNegativeExpressionAccess().getNegativeExpressionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleNegativeExpression4919); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getNegativeExpressionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleNegativeExpression4931); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getNegativeExpressionAccess().getInnerKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1989:1: ( (lv_inner_3_0= ruleUnary ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1990:1: (lv_inner_3_0= ruleUnary )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1990:1: (lv_inner_3_0= ruleUnary )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:1991:3: lv_inner_3_0= ruleUnary
+            {
+             
+            	        newCompositeNode(grammarAccess.getNegativeExpressionAccess().getInnerUnaryParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleUnary_in_ruleNegativeExpression4952);
+            lv_inner_3_0=ruleUnary();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getNegativeExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"inner",
+                    		lv_inner_3_0, 
+                    		"Unary");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleNegativeExpression4964); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getNegativeExpressionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleNegativeExpression"
+
+
+    // $ANTLR start "entryRuleIfElseExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2019:1: entryRuleIfElseExpression returns [EObject current=null] : iv_ruleIfElseExpression= ruleIfElseExpression EOF ;
+    public final EObject entryRuleIfElseExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleIfElseExpression = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2020:2: (iv_ruleIfElseExpression= ruleIfElseExpression EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2021:2: iv_ruleIfElseExpression= ruleIfElseExpression EOF
+            {
+             newCompositeNode(grammarAccess.getIfElseExpressionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleIfElseExpression_in_entryRuleIfElseExpression5000);
+            iv_ruleIfElseExpression=ruleIfElseExpression();
+
+            state._fsp--;
+
+             current =iv_ruleIfElseExpression; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIfElseExpression5010); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleIfElseExpression"
+
+
+    // $ANTLR start "ruleIfElseExpression"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2028:1: ruleIfElseExpression returns [EObject current=null] : (otherlv_0= 'IfElseExpression' otherlv_1= '{' otherlv_2= 'ifExpression' ( (lv_ifExpression_3_0= ruleBooleanExpression ) ) otherlv_4= 'elseExpression' ( (lv_elseExpression_5_0= ruleBooleanExpression ) ) otherlv_6= 'conditionExpression' ( (lv_conditionExpression_7_0= ruleBooleanExpression ) ) otherlv_8= '}' ) ;
+    public final EObject ruleIfElseExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        EObject lv_ifExpression_3_0 = null;
+
+        EObject lv_elseExpression_5_0 = null;
+
+        EObject lv_conditionExpression_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2031:28: ( (otherlv_0= 'IfElseExpression' otherlv_1= '{' otherlv_2= 'ifExpression' ( (lv_ifExpression_3_0= ruleBooleanExpression ) ) otherlv_4= 'elseExpression' ( (lv_elseExpression_5_0= ruleBooleanExpression ) ) otherlv_6= 'conditionExpression' ( (lv_conditionExpression_7_0= ruleBooleanExpression ) ) otherlv_8= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2032:1: (otherlv_0= 'IfElseExpression' otherlv_1= '{' otherlv_2= 'ifExpression' ( (lv_ifExpression_3_0= ruleBooleanExpression ) ) otherlv_4= 'elseExpression' ( (lv_elseExpression_5_0= ruleBooleanExpression ) ) otherlv_6= 'conditionExpression' ( (lv_conditionExpression_7_0= ruleBooleanExpression ) ) otherlv_8= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2032:1: (otherlv_0= 'IfElseExpression' otherlv_1= '{' otherlv_2= 'ifExpression' ( (lv_ifExpression_3_0= ruleBooleanExpression ) ) otherlv_4= 'elseExpression' ( (lv_elseExpression_5_0= ruleBooleanExpression ) ) otherlv_6= 'conditionExpression' ( (lv_conditionExpression_7_0= ruleBooleanExpression ) ) otherlv_8= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2032:3: otherlv_0= 'IfElseExpression' otherlv_1= '{' otherlv_2= 'ifExpression' ( (lv_ifExpression_3_0= ruleBooleanExpression ) ) otherlv_4= 'elseExpression' ( (lv_elseExpression_5_0= ruleBooleanExpression ) ) otherlv_6= 'conditionExpression' ( (lv_conditionExpression_7_0= ruleBooleanExpression ) ) otherlv_8= '}'
+            {
+            otherlv_0=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleIfElseExpression5047); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getIfElseExpressionAccess().getIfElseExpressionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleIfElseExpression5059); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getIfElseExpressionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleIfElseExpression5071); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getIfElseExpressionAccess().getIfExpressionKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2044:1: ( (lv_ifExpression_3_0= ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2045:1: (lv_ifExpression_3_0= ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2045:1: (lv_ifExpression_3_0= ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2046:3: lv_ifExpression_3_0= ruleBooleanExpression
+            {
+             
+            	        newCompositeNode(grammarAccess.getIfElseExpressionAccess().getIfExpressionBooleanExpressionParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleIfElseExpression5092);
+            lv_ifExpression_3_0=ruleBooleanExpression();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getIfElseExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"ifExpression",
+                    		lv_ifExpression_3_0, 
+                    		"BooleanExpression");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleIfElseExpression5104); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getIfElseExpressionAccess().getElseExpressionKeyword_4());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2066:1: ( (lv_elseExpression_5_0= ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2067:1: (lv_elseExpression_5_0= ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2067:1: (lv_elseExpression_5_0= ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2068:3: lv_elseExpression_5_0= ruleBooleanExpression
+            {
+             
+            	        newCompositeNode(grammarAccess.getIfElseExpressionAccess().getElseExpressionBooleanExpressionParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleIfElseExpression5125);
+            lv_elseExpression_5_0=ruleBooleanExpression();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getIfElseExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"elseExpression",
+                    		lv_elseExpression_5_0, 
+                    		"BooleanExpression");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleIfElseExpression5137); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getIfElseExpressionAccess().getConditionExpressionKeyword_6());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2088:1: ( (lv_conditionExpression_7_0= ruleBooleanExpression ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2089:1: (lv_conditionExpression_7_0= ruleBooleanExpression )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2089:1: (lv_conditionExpression_7_0= ruleBooleanExpression )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2090:3: lv_conditionExpression_7_0= ruleBooleanExpression
+            {
+             
+            	        newCompositeNode(grammarAccess.getIfElseExpressionAccess().getConditionExpressionBooleanExpressionParserRuleCall_7_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleIfElseExpression5158);
+            lv_conditionExpression_7_0=ruleBooleanExpression();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getIfElseExpressionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"conditionExpression",
+                    		lv_conditionExpression_7_0, 
+                    		"BooleanExpression");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleIfElseExpression5170); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getIfElseExpressionAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleIfElseExpression"
+
+
+    // $ANTLR start "entryRuleFunction"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2118:1: entryRuleFunction returns [EObject current=null] : iv_ruleFunction= ruleFunction EOF ;
+    public final EObject entryRuleFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunction = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2119:2: (iv_ruleFunction= ruleFunction EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2120:2: iv_ruleFunction= ruleFunction EOF
+            {
+             newCompositeNode(grammarAccess.getFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleFunction_in_entryRuleFunction5206);
+            iv_ruleFunction=ruleFunction();
+
+            state._fsp--;
+
+             current =iv_ruleFunction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunction5216); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunction"
+
+
+    // $ANTLR start "ruleFunction"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2127:1: ruleFunction returns [EObject current=null] : (otherlv_0= 'Function' otherlv_1= '{' otherlv_2= 'id' ( (lv_id_3_0= ruleEString ) ) (otherlv_4= 'parameters' otherlv_5= '{' ( (lv_parameters_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) ) )* otherlv_9= '}' )? otherlv_10= '}' ) ;
+    public final EObject ruleFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        AntlrDatatypeRuleToken lv_id_3_0 = null;
+
+        EObject lv_parameters_6_0 = null;
+
+        EObject lv_parameters_8_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2130:28: ( (otherlv_0= 'Function' otherlv_1= '{' otherlv_2= 'id' ( (lv_id_3_0= ruleEString ) ) (otherlv_4= 'parameters' otherlv_5= '{' ( (lv_parameters_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) ) )* otherlv_9= '}' )? otherlv_10= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2131:1: (otherlv_0= 'Function' otherlv_1= '{' otherlv_2= 'id' ( (lv_id_3_0= ruleEString ) ) (otherlv_4= 'parameters' otherlv_5= '{' ( (lv_parameters_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) ) )* otherlv_9= '}' )? otherlv_10= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2131:1: (otherlv_0= 'Function' otherlv_1= '{' otherlv_2= 'id' ( (lv_id_3_0= ruleEString ) ) (otherlv_4= 'parameters' otherlv_5= '{' ( (lv_parameters_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) ) )* otherlv_9= '}' )? otherlv_10= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2131:3: otherlv_0= 'Function' otherlv_1= '{' otherlv_2= 'id' ( (lv_id_3_0= ruleEString ) ) (otherlv_4= 'parameters' otherlv_5= '{' ( (lv_parameters_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) ) )* otherlv_9= '}' )? otherlv_10= '}'
+            {
+            otherlv_0=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleFunction5253); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getFunctionAccess().getFunctionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleFunction5265); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleFunction5277); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getFunctionAccess().getIdKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2143:1: ( (lv_id_3_0= ruleEString ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2144:1: (lv_id_3_0= ruleEString )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2144:1: (lv_id_3_0= ruleEString )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2145:3: lv_id_3_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getFunctionAccess().getIdEStringParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleFunction5298);
+            lv_id_3_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getFunctionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_3_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2161:2: (otherlv_4= 'parameters' otherlv_5= '{' ( (lv_parameters_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) ) )* otherlv_9= '}' )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==35) ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2161:4: otherlv_4= 'parameters' otherlv_5= '{' ( (lv_parameters_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) ) )* otherlv_9= '}'
+                    {
+                    otherlv_4=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleFunction5311); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getFunctionAccess().getParametersKeyword_4_0());
+                        
+                    otherlv_5=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleFunction5323); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getFunctionAccess().getLeftCurlyBracketKeyword_4_1());
+                        
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2169:1: ( (lv_parameters_6_0= ruleExpression ) )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2170:1: (lv_parameters_6_0= ruleExpression )
+                    {
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2170:1: (lv_parameters_6_0= ruleExpression )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2171:3: lv_parameters_6_0= ruleExpression
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleFunction5344);
+                    lv_parameters_6_0=ruleExpression();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getFunctionRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"parameters",
+                            		lv_parameters_6_0, 
+                            		"Expression");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2187:2: (otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) ) )*
+                    loop12:
+                    do {
+                        int alt12=2;
+                        int LA12_0 = input.LA(1);
+
+                        if ( (LA12_0==36) ) {
+                            alt12=1;
+                        }
+
+
+                        switch (alt12) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2187:4: otherlv_7= ',' ( (lv_parameters_8_0= ruleExpression ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleFunction5357); 
+
+                    	        	newLeafNode(otherlv_7, grammarAccess.getFunctionAccess().getCommaKeyword_4_3_0());
+                    	        
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2191:1: ( (lv_parameters_8_0= ruleExpression ) )
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2192:1: (lv_parameters_8_0= ruleExpression )
+                    	    {
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2192:1: (lv_parameters_8_0= ruleExpression )
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2193:3: lv_parameters_8_0= ruleExpression
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getFunctionAccess().getParametersExpressionParserRuleCall_4_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleFunction5378);
+                    	    lv_parameters_8_0=ruleExpression();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getFunctionRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"parameters",
+                    	            		lv_parameters_8_0, 
+                    	            		"Expression");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop12;
+                        }
+                    } while (true);
+
+                    otherlv_9=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleFunction5392); 
+
+                        	newLeafNode(otherlv_9, grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_4_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_10=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleFunction5406); 
+
+                	newLeafNode(otherlv_10, grammarAccess.getFunctionAccess().getRightCurlyBracketKeyword_5());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunction"
+
+
+    // $ANTLR start "entryRuleParenthesis"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2225:1: entryRuleParenthesis returns [EObject current=null] : iv_ruleParenthesis= ruleParenthesis EOF ;
+    public final EObject entryRuleParenthesis() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleParenthesis = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2226:2: (iv_ruleParenthesis= ruleParenthesis EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2227:2: iv_ruleParenthesis= ruleParenthesis EOF
+            {
+             newCompositeNode(grammarAccess.getParenthesisRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleParenthesis_in_entryRuleParenthesis5442);
+            iv_ruleParenthesis=ruleParenthesis();
+
+            state._fsp--;
+
+             current =iv_ruleParenthesis; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleParenthesis5452); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleParenthesis"
+
+
+    // $ANTLR start "ruleParenthesis"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2234:1: ruleParenthesis returns [EObject current=null] : (otherlv_0= 'Parenthesis' otherlv_1= '{' otherlv_2= 'innerExpression' ( (lv_innerExpression_3_0= ruleExpression ) ) otherlv_4= '}' ) ;
+    public final EObject ruleParenthesis() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject lv_innerExpression_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2237:28: ( (otherlv_0= 'Parenthesis' otherlv_1= '{' otherlv_2= 'innerExpression' ( (lv_innerExpression_3_0= ruleExpression ) ) otherlv_4= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2238:1: (otherlv_0= 'Parenthesis' otherlv_1= '{' otherlv_2= 'innerExpression' ( (lv_innerExpression_3_0= ruleExpression ) ) otherlv_4= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2238:1: (otherlv_0= 'Parenthesis' otherlv_1= '{' otherlv_2= 'innerExpression' ( (lv_innerExpression_3_0= ruleExpression ) ) otherlv_4= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2238:3: otherlv_0= 'Parenthesis' otherlv_1= '{' otherlv_2= 'innerExpression' ( (lv_innerExpression_3_0= ruleExpression ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleParenthesis5489); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getParenthesisAccess().getParenthesisKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleParenthesis5501); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getParenthesisAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleParenthesis5513); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getParenthesisAccess().getInnerExpressionKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2250:1: ( (lv_innerExpression_3_0= ruleExpression ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2251:1: (lv_innerExpression_3_0= ruleExpression )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2251:1: (lv_innerExpression_3_0= ruleExpression )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2252:3: lv_innerExpression_3_0= ruleExpression
+            {
+             
+            	        newCompositeNode(grammarAccess.getParenthesisAccess().getInnerExpressionExpressionParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleParenthesis5534);
+            lv_innerExpression_3_0=ruleExpression();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getParenthesisRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"innerExpression",
+                    		lv_innerExpression_3_0, 
+                    		"Expression");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleParenthesis5546); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getParenthesisAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleParenthesis"
+
+
+    // $ANTLR start "entryRuleLiteral_Impl"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2280:1: entryRuleLiteral_Impl returns [EObject current=null] : iv_ruleLiteral_Impl= ruleLiteral_Impl EOF ;
+    public final EObject entryRuleLiteral_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleLiteral_Impl = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2281:2: (iv_ruleLiteral_Impl= ruleLiteral_Impl EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2282:2: iv_ruleLiteral_Impl= ruleLiteral_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getLiteral_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleLiteral_Impl_in_entryRuleLiteral_Impl5582);
+            iv_ruleLiteral_Impl=ruleLiteral_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleLiteral_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLiteral_Impl5592); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleLiteral_Impl"
+
+
+    // $ANTLR start "ruleLiteral_Impl"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2289:1: ruleLiteral_Impl returns [EObject current=null] : ( () otherlv_1= 'Literal' ) ;
+    public final EObject ruleLiteral_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2292:28: ( ( () otherlv_1= 'Literal' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2293:1: ( () otherlv_1= 'Literal' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2293:1: ( () otherlv_1= 'Literal' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2293:2: () otherlv_1= 'Literal'
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2293:2: ()
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2294:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getLiteral_ImplAccess().getLiteralAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleLiteral_Impl5638); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getLiteral_ImplAccess().getLiteralKeyword_1());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLiteral_Impl"
+
+
+    // $ANTLR start "entryRuleStringLiteral"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2311:1: entryRuleStringLiteral returns [EObject current=null] : iv_ruleStringLiteral= ruleStringLiteral EOF ;
+    public final EObject entryRuleStringLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStringLiteral = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2312:2: (iv_ruleStringLiteral= ruleStringLiteral EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2313:2: iv_ruleStringLiteral= ruleStringLiteral EOF
+            {
+             newCompositeNode(grammarAccess.getStringLiteralRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral5674);
+            iv_ruleStringLiteral=ruleStringLiteral();
+
+            state._fsp--;
+
+             current =iv_ruleStringLiteral; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStringLiteral5684); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStringLiteral"
+
+
+    // $ANTLR start "ruleStringLiteral"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2320:1: ruleStringLiteral returns [EObject current=null] : (otherlv_0= 'StringLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEString ) ) otherlv_4= '}' ) ;
+    public final EObject ruleStringLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        AntlrDatatypeRuleToken lv_value_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2323:28: ( (otherlv_0= 'StringLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEString ) ) otherlv_4= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2324:1: (otherlv_0= 'StringLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEString ) ) otherlv_4= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2324:1: (otherlv_0= 'StringLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEString ) ) otherlv_4= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2324:3: otherlv_0= 'StringLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEString ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleStringLiteral5721); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getStringLiteralAccess().getStringLiteralKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleStringLiteral5733); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getStringLiteralAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleStringLiteral5745); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getStringLiteralAccess().getValueKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2336:1: ( (lv_value_3_0= ruleEString ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2337:1: (lv_value_3_0= ruleEString )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2337:1: (lv_value_3_0= ruleEString )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2338:3: lv_value_3_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getStringLiteralAccess().getValueEStringParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleStringLiteral5766);
+            lv_value_3_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getStringLiteralRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"value",
+                    		lv_value_3_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleStringLiteral5778); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getStringLiteralAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStringLiteral"
+
+
+    // $ANTLR start "entryRuleBoolLiteral"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2366:1: entryRuleBoolLiteral returns [EObject current=null] : iv_ruleBoolLiteral= ruleBoolLiteral EOF ;
+    public final EObject entryRuleBoolLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBoolLiteral = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2367:2: (iv_ruleBoolLiteral= ruleBoolLiteral EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2368:2: iv_ruleBoolLiteral= ruleBoolLiteral EOF
+            {
+             newCompositeNode(grammarAccess.getBoolLiteralRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBoolLiteral_in_entryRuleBoolLiteral5814);
+            iv_ruleBoolLiteral=ruleBoolLiteral();
+
+            state._fsp--;
+
+             current =iv_ruleBoolLiteral; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBoolLiteral5824); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBoolLiteral"
+
+
+    // $ANTLR start "ruleBoolLiteral"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2375:1: ruleBoolLiteral returns [EObject current=null] : ( ( (lv_value_0_0= 'value' ) ) otherlv_1= 'BoolLiteral' ) ;
+    public final EObject ruleBoolLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_value_0_0=null;
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2378:28: ( ( ( (lv_value_0_0= 'value' ) ) otherlv_1= 'BoolLiteral' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2379:1: ( ( (lv_value_0_0= 'value' ) ) otherlv_1= 'BoolLiteral' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2379:1: ( ( (lv_value_0_0= 'value' ) ) otherlv_1= 'BoolLiteral' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2379:2: ( (lv_value_0_0= 'value' ) ) otherlv_1= 'BoolLiteral'
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2379:2: ( (lv_value_0_0= 'value' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2380:1: (lv_value_0_0= 'value' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2380:1: (lv_value_0_0= 'value' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2381:3: lv_value_0_0= 'value'
+            {
+            lv_value_0_0=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleBoolLiteral5867); 
+
+                    newLeafNode(lv_value_0_0, grammarAccess.getBoolLiteralAccess().getValueValueKeyword_0_0());
+                
+
+            	        if (current==null) {
+            	            current = createModelElement(grammarAccess.getBoolLiteralRule());
+            	        }
+                   		setWithLastConsumed(current, "value", true, "value");
+            	    
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,42,FollowSets000.FOLLOW_42_in_ruleBoolLiteral5892); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getBoolLiteralAccess().getBoolLiteralKeyword_1());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBoolLiteral"
+
+
+    // $ANTLR start "entryRuleIntLiteral"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2406:1: entryRuleIntLiteral returns [EObject current=null] : iv_ruleIntLiteral= ruleIntLiteral EOF ;
+    public final EObject entryRuleIntLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleIntLiteral = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2407:2: (iv_ruleIntLiteral= ruleIntLiteral EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2408:2: iv_ruleIntLiteral= ruleIntLiteral EOF
+            {
+             newCompositeNode(grammarAccess.getIntLiteralRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleIntLiteral_in_entryRuleIntLiteral5928);
+            iv_ruleIntLiteral=ruleIntLiteral();
+
+            state._fsp--;
+
+             current =iv_ruleIntLiteral; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIntLiteral5938); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleIntLiteral"
+
+
+    // $ANTLR start "ruleIntLiteral"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2415:1: ruleIntLiteral returns [EObject current=null] : (otherlv_0= 'IntLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigInteger ) ) otherlv_4= '}' ) ;
+    public final EObject ruleIntLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        AntlrDatatypeRuleToken lv_value_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2418:28: ( (otherlv_0= 'IntLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigInteger ) ) otherlv_4= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2419:1: (otherlv_0= 'IntLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigInteger ) ) otherlv_4= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2419:1: (otherlv_0= 'IntLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigInteger ) ) otherlv_4= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2419:3: otherlv_0= 'IntLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigInteger ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,43,FollowSets000.FOLLOW_43_in_ruleIntLiteral5975); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getIntLiteralAccess().getIntLiteralKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleIntLiteral5987); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getIntLiteralAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleIntLiteral5999); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getIntLiteralAccess().getValueKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2431:1: ( (lv_value_3_0= ruleEBigInteger ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2432:1: (lv_value_3_0= ruleEBigInteger )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2432:1: (lv_value_3_0= ruleEBigInteger )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2433:3: lv_value_3_0= ruleEBigInteger
+            {
+             
+            	        newCompositeNode(grammarAccess.getIntLiteralAccess().getValueEBigIntegerParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigInteger_in_ruleIntLiteral6020);
+            lv_value_3_0=ruleEBigInteger();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getIntLiteralRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"value",
+                    		lv_value_3_0, 
+                    		"EBigInteger");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleIntLiteral6032); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getIntLiteralAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleIntLiteral"
+
+
+    // $ANTLR start "entryRuleDoubleLiteral"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2461:1: entryRuleDoubleLiteral returns [EObject current=null] : iv_ruleDoubleLiteral= ruleDoubleLiteral EOF ;
+    public final EObject entryRuleDoubleLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDoubleLiteral = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2462:2: (iv_ruleDoubleLiteral= ruleDoubleLiteral EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2463:2: iv_ruleDoubleLiteral= ruleDoubleLiteral EOF
+            {
+             newCompositeNode(grammarAccess.getDoubleLiteralRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDoubleLiteral_in_entryRuleDoubleLiteral6068);
+            iv_ruleDoubleLiteral=ruleDoubleLiteral();
+
+            state._fsp--;
+
+             current =iv_ruleDoubleLiteral; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDoubleLiteral6078); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDoubleLiteral"
+
+
+    // $ANTLR start "ruleDoubleLiteral"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2470:1: ruleDoubleLiteral returns [EObject current=null] : (otherlv_0= 'DoubleLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= '}' ) ;
+    public final EObject ruleDoubleLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        AntlrDatatypeRuleToken lv_value_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2473:28: ( (otherlv_0= 'DoubleLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2474:1: (otherlv_0= 'DoubleLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2474:1: (otherlv_0= 'DoubleLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2474:3: otherlv_0= 'DoubleLiteral' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,44,FollowSets000.FOLLOW_44_in_ruleDoubleLiteral6115); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getDoubleLiteralAccess().getDoubleLiteralKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleDoubleLiteral6127); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getDoubleLiteralAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleDoubleLiteral6139); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getDoubleLiteralAccess().getValueKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2486:1: ( (lv_value_3_0= ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2487:1: (lv_value_3_0= ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2487:1: (lv_value_3_0= ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2488:3: lv_value_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getDoubleLiteralAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleDoubleLiteral6160);
+            lv_value_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getDoubleLiteralRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"value",
+                    		lv_value_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleDoubleLiteral6172); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getDoubleLiteralAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDoubleLiteral"
+
+
+    // $ANTLR start "entryRuleFormalParameter"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2516:1: entryRuleFormalParameter returns [EObject current=null] : iv_ruleFormalParameter= ruleFormalParameter EOF ;
+    public final EObject entryRuleFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFormalParameter = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2517:2: (iv_ruleFormalParameter= ruleFormalParameter EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2518:2: iv_ruleFormalParameter= ruleFormalParameter EOF
+            {
+             newCompositeNode(grammarAccess.getFormalParameterRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleFormalParameter_in_entryRuleFormalParameter6208);
+            iv_ruleFormalParameter=ruleFormalParameter();
+
+            state._fsp--;
+
+             current =iv_ruleFormalParameter; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFormalParameter6218); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFormalParameter"
+
+
+    // $ANTLR start "ruleFormalParameter"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2525:1: ruleFormalParameter returns [EObject current=null] : ( () otherlv_1= 'FormalParameter' ( (lv_name_2_0= ruleEString ) ) ) ;
+    public final EObject ruleFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2528:28: ( ( () otherlv_1= 'FormalParameter' ( (lv_name_2_0= ruleEString ) ) ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2529:1: ( () otherlv_1= 'FormalParameter' ( (lv_name_2_0= ruleEString ) ) )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2529:1: ( () otherlv_1= 'FormalParameter' ( (lv_name_2_0= ruleEString ) ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2529:2: () otherlv_1= 'FormalParameter' ( (lv_name_2_0= ruleEString ) )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2529:2: ()
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2530:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getFormalParameterAccess().getFormalParameterAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleFormalParameter6264); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getFormalParameterAccess().getFormalParameterKeyword_1());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2539:1: ( (lv_name_2_0= ruleEString ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2540:1: (lv_name_2_0= ruleEString )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2540:1: (lv_name_2_0= ruleEString )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2541:3: lv_name_2_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getFormalParameterAccess().getNameEStringParserRuleCall_2_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleFormalParameter6285);
+            lv_name_2_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getFormalParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_2_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFormalParameter"
+
+
+    // $ANTLR start "entryRuleProbabilityMassFunction"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2565:1: entryRuleProbabilityMassFunction returns [EObject current=null] : iv_ruleProbabilityMassFunction= ruleProbabilityMassFunction EOF ;
+    public final EObject entryRuleProbabilityMassFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProbabilityMassFunction = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2566:2: (iv_ruleProbabilityMassFunction= ruleProbabilityMassFunction EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2567:2: iv_ruleProbabilityMassFunction= ruleProbabilityMassFunction EOF
+            {
+             newCompositeNode(grammarAccess.getProbabilityMassFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_entryRuleProbabilityMassFunction6321);
+            iv_ruleProbabilityMassFunction=ruleProbabilityMassFunction();
+
+            state._fsp--;
+
+             current =iv_ruleProbabilityMassFunction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProbabilityMassFunction6331); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProbabilityMassFunction"
+
+
+    // $ANTLR start "ruleProbabilityMassFunction"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2574:1: ruleProbabilityMassFunction returns [EObject current=null] : ( () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) ;
+    public final EObject ruleProbabilityMassFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        EObject lv_sample_5_0 = null;
+
+        EObject lv_sample_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2577:28: ( ( () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2578:1: ( () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2578:1: ( () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2578:2: () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}'
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2578:2: ()
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2579:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,46,FollowSets000.FOLLOW_46_in_ruleProbabilityMassFunction6377); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleProbabilityMassFunction6389); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2592:1: (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==47) ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2592:3: otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}'
+                    {
+                    otherlv_3=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleProbabilityMassFunction6402); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0());
+                        
+                    otherlv_4=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleProbabilityMassFunction6414); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1());
+                        
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2600:1: ( (lv_sample_5_0= ruleSample ) )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2601:1: (lv_sample_5_0= ruleSample )
+                    {
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2601:1: (lv_sample_5_0= ruleSample )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2602:3: lv_sample_5_0= ruleSample
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleSample_in_ruleProbabilityMassFunction6435);
+                    lv_sample_5_0=ruleSample();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getProbabilityMassFunctionRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"sample",
+                            		lv_sample_5_0, 
+                            		"Sample");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2618:2: (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )*
+                    loop14:
+                    do {
+                        int alt14=2;
+                        int LA14_0 = input.LA(1);
+
+                        if ( (LA14_0==36) ) {
+                            alt14=1;
+                        }
+
+
+                        switch (alt14) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2618:4: otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) )
+                    	    {
+                    	    otherlv_6=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleProbabilityMassFunction6448); 
+
+                    	        	newLeafNode(otherlv_6, grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0());
+                    	        
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2622:1: ( (lv_sample_7_0= ruleSample ) )
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2623:1: (lv_sample_7_0= ruleSample )
+                    	    {
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2623:1: (lv_sample_7_0= ruleSample )
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2624:3: lv_sample_7_0= ruleSample
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleSample_in_ruleProbabilityMassFunction6469);
+                    	    lv_sample_7_0=ruleSample();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getProbabilityMassFunctionRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"sample",
+                    	            		lv_sample_7_0, 
+                    	            		"Sample");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop14;
+                        }
+                    } while (true);
+
+                    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleProbabilityMassFunction6483); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_9=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleProbabilityMassFunction6497); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProbabilityMassFunction"
+
+
+    // $ANTLR start "entryRuleBoxedPDF"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2656:1: entryRuleBoxedPDF returns [EObject current=null] : iv_ruleBoxedPDF= ruleBoxedPDF EOF ;
+    public final EObject entryRuleBoxedPDF() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBoxedPDF = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2657:2: (iv_ruleBoxedPDF= ruleBoxedPDF EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2658:2: iv_ruleBoxedPDF= ruleBoxedPDF EOF
+            {
+             newCompositeNode(grammarAccess.getBoxedPDFRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_entryRuleBoxedPDF6533);
+            iv_ruleBoxedPDF=ruleBoxedPDF();
+
+            state._fsp--;
+
+             current =iv_ruleBoxedPDF; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBoxedPDF6543); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBoxedPDF"
+
+
+    // $ANTLR start "ruleBoxedPDF"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2665:1: ruleBoxedPDF returns [EObject current=null] : ( () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) ;
+    public final EObject ruleBoxedPDF() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        EObject lv_sample_5_0 = null;
+
+        EObject lv_sample_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2668:28: ( ( () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2669:1: ( () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2669:1: ( () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2669:2: () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}'
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2669:2: ()
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2670:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,48,FollowSets000.FOLLOW_48_in_ruleBoxedPDF6589); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBoxedPDF6601); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2683:1: (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )?
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==47) ) {
+                alt17=1;
+            }
+            switch (alt17) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2683:3: otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}'
+                    {
+                    otherlv_3=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleBoxedPDF6614); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0());
+                        
+                    otherlv_4=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBoxedPDF6626); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1());
+                        
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2691:1: ( (lv_sample_5_0= ruleContinuousSample ) )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2692:1: (lv_sample_5_0= ruleContinuousSample )
+                    {
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2692:1: (lv_sample_5_0= ruleContinuousSample )
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2693:3: lv_sample_5_0= ruleContinuousSample
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_ruleBoxedPDF6647);
+                    lv_sample_5_0=ruleContinuousSample();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBoxedPDFRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"sample",
+                            		lv_sample_5_0, 
+                            		"ContinuousSample");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2709:2: (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )*
+                    loop16:
+                    do {
+                        int alt16=2;
+                        int LA16_0 = input.LA(1);
+
+                        if ( (LA16_0==36) ) {
+                            alt16=1;
+                        }
+
+
+                        switch (alt16) {
+                    	case 1 :
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2709:4: otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) )
+                    	    {
+                    	    otherlv_6=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleBoxedPDF6660); 
+
+                    	        	newLeafNode(otherlv_6, grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0());
+                    	        
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2713:1: ( (lv_sample_7_0= ruleContinuousSample ) )
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2714:1: (lv_sample_7_0= ruleContinuousSample )
+                    	    {
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2714:1: (lv_sample_7_0= ruleContinuousSample )
+                    	    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2715:3: lv_sample_7_0= ruleContinuousSample
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_ruleBoxedPDF6681);
+                    	    lv_sample_7_0=ruleContinuousSample();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBoxedPDFRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"sample",
+                    	            		lv_sample_7_0, 
+                    	            		"ContinuousSample");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop16;
+                        }
+                    } while (true);
+
+                    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBoxedPDF6695); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_9=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBoxedPDF6709); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBoxedPDF"
+
+
+    // $ANTLR start "entryRuleNormalDistribution"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2747:1: entryRuleNormalDistribution returns [EObject current=null] : iv_ruleNormalDistribution= ruleNormalDistribution EOF ;
+    public final EObject entryRuleNormalDistribution() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleNormalDistribution = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2748:2: (iv_ruleNormalDistribution= ruleNormalDistribution EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2749:2: iv_ruleNormalDistribution= ruleNormalDistribution EOF
+            {
+             newCompositeNode(grammarAccess.getNormalDistributionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_entryRuleNormalDistribution6745);
+            iv_ruleNormalDistribution=ruleNormalDistribution();
+
+            state._fsp--;
+
+             current =iv_ruleNormalDistribution; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNormalDistribution6755); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleNormalDistribution"
+
+
+    // $ANTLR start "ruleNormalDistribution"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2756:1: ruleNormalDistribution returns [EObject current=null] : (otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}' ) ;
+    public final EObject ruleNormalDistribution() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_mu_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_sigma_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2759:28: ( (otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2760:1: (otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2760:1: (otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2760:3: otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleNormalDistribution6792); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleNormalDistribution6804); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,50,FollowSets000.FOLLOW_50_in_ruleNormalDistribution6816); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getNormalDistributionAccess().getMuKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2772:1: ( (lv_mu_3_0= ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2773:1: (lv_mu_3_0= ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2773:1: (lv_mu_3_0= ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2774:3: lv_mu_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleNormalDistribution6837);
+            lv_mu_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getNormalDistributionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"mu",
+                    		lv_mu_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,51,FollowSets000.FOLLOW_51_in_ruleNormalDistribution6849); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2794:1: ( (lv_sigma_5_0= ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2795:1: (lv_sigma_5_0= ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2795:1: (lv_sigma_5_0= ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2796:3: lv_sigma_5_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleNormalDistribution6870);
+            lv_sigma_5_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getNormalDistributionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"sigma",
+                    		lv_sigma_5_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleNormalDistribution6882); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleNormalDistribution"
+
+
+    // $ANTLR start "entryRuleExponentialDistribution"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2824:1: entryRuleExponentialDistribution returns [EObject current=null] : iv_ruleExponentialDistribution= ruleExponentialDistribution EOF ;
+    public final EObject entryRuleExponentialDistribution() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExponentialDistribution = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2825:2: (iv_ruleExponentialDistribution= ruleExponentialDistribution EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2826:2: iv_ruleExponentialDistribution= ruleExponentialDistribution EOF
+            {
+             newCompositeNode(grammarAccess.getExponentialDistributionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_entryRuleExponentialDistribution6918);
+            iv_ruleExponentialDistribution=ruleExponentialDistribution();
+
+            state._fsp--;
+
+             current =iv_ruleExponentialDistribution; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExponentialDistribution6928); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExponentialDistribution"
+
+
+    // $ANTLR start "ruleExponentialDistribution"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2833:1: ruleExponentialDistribution returns [EObject current=null] : (otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}' ) ;
+    public final EObject ruleExponentialDistribution() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        AntlrDatatypeRuleToken lv_rate_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2836:28: ( (otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2837:1: (otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2837:1: (otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2837:3: otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleExponentialDistribution6965); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExponentialDistribution6977); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,53,FollowSets000.FOLLOW_53_in_ruleExponentialDistribution6989); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getExponentialDistributionAccess().getRateKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2849:1: ( (lv_rate_3_0= ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2850:1: (lv_rate_3_0= ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2850:1: (lv_rate_3_0= ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2851:3: lv_rate_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleExponentialDistribution7010);
+            lv_rate_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExponentialDistributionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"rate",
+                    		lv_rate_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleExponentialDistribution7022); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExponentialDistribution"
+
+
+    // $ANTLR start "entryRuleTermOperations"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2879:1: entryRuleTermOperations returns [String current=null] : iv_ruleTermOperations= ruleTermOperations EOF ;
+    public final String entryRuleTermOperations() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleTermOperations = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2880:2: (iv_ruleTermOperations= ruleTermOperations EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2881:2: iv_ruleTermOperations= ruleTermOperations EOF
+            {
+             newCompositeNode(grammarAccess.getTermOperationsRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTermOperations_in_entryRuleTermOperations7059);
+            iv_ruleTermOperations=ruleTermOperations();
+
+            state._fsp--;
+
+             current =iv_ruleTermOperations.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTermOperations7070); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTermOperations"
+
+
+    // $ANTLR start "ruleTermOperations"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2888:1: ruleTermOperations returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'TermOperations' ;
+    public final AntlrDatatypeRuleToken ruleTermOperations() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2891:28: (kw= 'TermOperations' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2893:2: kw= 'TermOperations'
+            {
+            kw=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleTermOperations7107); 
+
+                    current.merge(kw);
+                    newLeafNode(kw, grammarAccess.getTermOperationsAccess().getTermOperationsKeyword()); 
+                
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTermOperations"
+
+
+    // $ANTLR start "entryRuleProductOperations"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2906:1: entryRuleProductOperations returns [String current=null] : iv_ruleProductOperations= ruleProductOperations EOF ;
+    public final String entryRuleProductOperations() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleProductOperations = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2907:2: (iv_ruleProductOperations= ruleProductOperations EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2908:2: iv_ruleProductOperations= ruleProductOperations EOF
+            {
+             newCompositeNode(grammarAccess.getProductOperationsRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProductOperations_in_entryRuleProductOperations7147);
+            iv_ruleProductOperations=ruleProductOperations();
+
+            state._fsp--;
+
+             current =iv_ruleProductOperations.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProductOperations7158); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProductOperations"
+
+
+    // $ANTLR start "ruleProductOperations"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2915:1: ruleProductOperations returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'ProductOperations' ;
+    public final AntlrDatatypeRuleToken ruleProductOperations() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2918:28: (kw= 'ProductOperations' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2920:2: kw= 'ProductOperations'
+            {
+            kw=(Token)match(input,55,FollowSets000.FOLLOW_55_in_ruleProductOperations7195); 
+
+                    current.merge(kw);
+                    newLeafNode(kw, grammarAccess.getProductOperationsAccess().getProductOperationsKeyword()); 
+                
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProductOperations"
+
+
+    // $ANTLR start "entryRuleCompareOperations"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2933:1: entryRuleCompareOperations returns [String current=null] : iv_ruleCompareOperations= ruleCompareOperations EOF ;
+    public final String entryRuleCompareOperations() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleCompareOperations = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2934:2: (iv_ruleCompareOperations= ruleCompareOperations EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2935:2: iv_ruleCompareOperations= ruleCompareOperations EOF
+            {
+             newCompositeNode(grammarAccess.getCompareOperationsRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCompareOperations_in_entryRuleCompareOperations7235);
+            iv_ruleCompareOperations=ruleCompareOperations();
+
+            state._fsp--;
+
+             current =iv_ruleCompareOperations.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCompareOperations7246); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCompareOperations"
+
+
+    // $ANTLR start "ruleCompareOperations"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2942:1: ruleCompareOperations returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'CompareOperations' ;
+    public final AntlrDatatypeRuleToken ruleCompareOperations() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2945:28: (kw= 'CompareOperations' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2947:2: kw= 'CompareOperations'
+            {
+            kw=(Token)match(input,56,FollowSets000.FOLLOW_56_in_ruleCompareOperations7283); 
+
+                    current.merge(kw);
+                    newLeafNode(kw, grammarAccess.getCompareOperationsAccess().getCompareOperationsKeyword()); 
+                
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCompareOperations"
+
+
+    // $ANTLR start "entryRuleBooleanOperations"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2960:1: entryRuleBooleanOperations returns [String current=null] : iv_ruleBooleanOperations= ruleBooleanOperations EOF ;
+    public final String entryRuleBooleanOperations() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleBooleanOperations = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2961:2: (iv_ruleBooleanOperations= ruleBooleanOperations EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2962:2: iv_ruleBooleanOperations= ruleBooleanOperations EOF
+            {
+             newCompositeNode(grammarAccess.getBooleanOperationsRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBooleanOperations_in_entryRuleBooleanOperations7323);
+            iv_ruleBooleanOperations=ruleBooleanOperations();
+
+            state._fsp--;
+
+             current =iv_ruleBooleanOperations.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanOperations7334); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBooleanOperations"
+
+
+    // $ANTLR start "ruleBooleanOperations"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2969:1: ruleBooleanOperations returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'BooleanOperations' ;
+    public final AntlrDatatypeRuleToken ruleBooleanOperations() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2972:28: (kw= 'BooleanOperations' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2974:2: kw= 'BooleanOperations'
+            {
+            kw=(Token)match(input,57,FollowSets000.FOLLOW_57_in_ruleBooleanOperations7371); 
+
+                    current.merge(kw);
+                    newLeafNode(kw, grammarAccess.getBooleanOperationsAccess().getBooleanOperationsKeyword()); 
+                
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBooleanOperations"
+
+
+    // $ANTLR start "entryRuleEBigInteger"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2989:1: entryRuleEBigInteger returns [String current=null] : iv_ruleEBigInteger= ruleEBigInteger EOF ;
+    public final String entryRuleEBigInteger() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleEBigInteger = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2990:2: (iv_ruleEBigInteger= ruleEBigInteger EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2991:2: iv_ruleEBigInteger= ruleEBigInteger EOF
+            {
+             newCompositeNode(grammarAccess.getEBigIntegerRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigInteger_in_entryRuleEBigInteger7413);
+            iv_ruleEBigInteger=ruleEBigInteger();
+
+            state._fsp--;
+
+             current =iv_ruleEBigInteger.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEBigInteger7424); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEBigInteger"
+
+
+    // $ANTLR start "ruleEBigInteger"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:2998:1: ruleEBigInteger returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT_1= RULE_INT ) ;
+    public final AntlrDatatypeRuleToken ruleEBigInteger() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        Token this_INT_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3001:28: ( ( (kw= '-' )? this_INT_1= RULE_INT ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3002:1: ( (kw= '-' )? this_INT_1= RULE_INT )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3002:1: ( (kw= '-' )? this_INT_1= RULE_INT )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3002:2: (kw= '-' )? this_INT_1= RULE_INT
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3002:2: (kw= '-' )?
+            int alt18=2;
+            int LA18_0 = input.LA(1);
+
+            if ( (LA18_0==58) ) {
+                alt18=1;
+            }
+            switch (alt18) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3003:2: kw= '-'
+                    {
+                    kw=(Token)match(input,58,FollowSets000.FOLLOW_58_in_ruleEBigInteger7463); 
+
+                            current.merge(kw);
+                            newLeafNode(kw, grammarAccess.getEBigIntegerAccess().getHyphenMinusKeyword_0()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+            this_INT_1=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleEBigInteger7480); 
+
+            		current.merge(this_INT_1);
+                
+             
+                newLeafNode(this_INT_1, grammarAccess.getEBigIntegerAccess().getINTTerminalRuleCall_1()); 
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEBigInteger"
+
+
+    // $ANTLR start "entryRuleEBigDecimal"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3023:1: entryRuleEBigDecimal returns [String current=null] : iv_ruleEBigDecimal= ruleEBigDecimal EOF ;
+    public final String entryRuleEBigDecimal() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleEBigDecimal = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3024:2: (iv_ruleEBigDecimal= ruleEBigDecimal EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3025:2: iv_ruleEBigDecimal= ruleEBigDecimal EOF
+            {
+             newCompositeNode(grammarAccess.getEBigDecimalRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_entryRuleEBigDecimal7526);
+            iv_ruleEBigDecimal=ruleEBigDecimal();
+
+            state._fsp--;
+
+             current =iv_ruleEBigDecimal.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEBigDecimal7537); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEBigDecimal"
+
+
+    // $ANTLR start "ruleEBigDecimal"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3032:1: ruleEBigDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT ) ;
+    public final AntlrDatatypeRuleToken ruleEBigDecimal() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_INT_0=null;
+        Token kw=null;
+        Token this_INT_2=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3035:28: ( ( (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3036:1: ( (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3036:1: ( (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3036:2: (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3036:2: (this_INT_0= RULE_INT )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==RULE_INT) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3036:7: this_INT_0= RULE_INT
+                    {
+                    this_INT_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleEBigDecimal7578); 
+
+                    		current.merge(this_INT_0);
+                        
+                     
+                        newLeafNode(this_INT_0, grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_0()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+            kw=(Token)match(input,59,FollowSets000.FOLLOW_59_in_ruleEBigDecimal7598); 
+
+                    current.merge(kw);
+                    newLeafNode(kw, grammarAccess.getEBigDecimalAccess().getFullStopKeyword_1()); 
+                
+            this_INT_2=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleEBigDecimal7613); 
+
+            		current.merge(this_INT_2);
+                
+             
+                newLeafNode(this_INT_2, grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_2()); 
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEBigDecimal"
+
+
+    // $ANTLR start "entryRuleSample"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3064:1: entryRuleSample returns [EObject current=null] : iv_ruleSample= ruleSample EOF ;
+    public final EObject entryRuleSample() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSample = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3065:2: (iv_ruleSample= ruleSample EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3066:2: iv_ruleSample= ruleSample EOF
+            {
+             newCompositeNode(grammarAccess.getSampleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSample_in_entryRuleSample7658);
+            iv_ruleSample=ruleSample();
+
+            state._fsp--;
+
+             current =iv_ruleSample; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSample7668); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSample"
+
+
+    // $ANTLR start "ruleSample"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3073:1: ruleSample returns [EObject current=null] : (otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}' ) ;
+    public final EObject ruleSample() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_probability_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3076:28: ( (otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3077:1: (otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3077:1: (otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3077:3: otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,60,FollowSets000.FOLLOW_60_in_ruleSample7705); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getSampleAccess().getSampleKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSample7717); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,61,FollowSets000.FOLLOW_61_in_ruleSample7729); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getSampleAccess().getProbabilityKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3089:1: ( (lv_probability_3_0= ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3090:1: (lv_probability_3_0= ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3090:1: (lv_probability_3_0= ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3091:3: lv_probability_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleSample7750);
+            lv_probability_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getSampleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"probability",
+                    		lv_probability_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleSample7762); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getSampleAccess().getValueKeyword_4());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3111:1: ( ( ruleEString ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3112:1: ( ruleEString )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3112:1: ( ruleEString )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3113:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getSampleRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSample7785);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSample7797); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSample"
+
+
+    // $ANTLR start "entryRuleContinuousSample"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3140:1: entryRuleContinuousSample returns [EObject current=null] : iv_ruleContinuousSample= ruleContinuousSample EOF ;
+    public final EObject entryRuleContinuousSample() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleContinuousSample = null;
+
+
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3141:2: (iv_ruleContinuousSample= ruleContinuousSample EOF )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3142:2: iv_ruleContinuousSample= ruleContinuousSample EOF
+            {
+             newCompositeNode(grammarAccess.getContinuousSampleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_entryRuleContinuousSample7835);
+            iv_ruleContinuousSample=ruleContinuousSample();
+
+            state._fsp--;
+
+             current =iv_ruleContinuousSample; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleContinuousSample7845); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleContinuousSample"
+
+
+    // $ANTLR start "ruleContinuousSample"
+    // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3149:1: ruleContinuousSample returns [EObject current=null] : (otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}' ) ;
+    public final EObject ruleContinuousSample() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_value_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_probability_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3152:28: ( (otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}' ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3153:1: (otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}' )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3153:1: (otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}' )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3153:3: otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,62,FollowSets000.FOLLOW_62_in_ruleContinuousSample7882); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleContinuousSample7894); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleContinuousSample7906); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getContinuousSampleAccess().getValueKeyword_2());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3165:1: ( (lv_value_3_0= ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3166:1: (lv_value_3_0= ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3166:1: (lv_value_3_0= ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3167:3: lv_value_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleContinuousSample7927);
+            lv_value_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getContinuousSampleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"value",
+                    		lv_value_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,61,FollowSets000.FOLLOW_61_in_ruleContinuousSample7939); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4());
+                
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3187:1: ( (lv_probability_5_0= ruleEBigDecimal ) )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3188:1: (lv_probability_5_0= ruleEBigDecimal )
+            {
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3188:1: (lv_probability_5_0= ruleEBigDecimal )
+            // ../org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/parser/antlr/internal/InternalMyDsl1.g:3189:3: lv_probability_5_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleContinuousSample7960);
+            lv_probability_5_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getContinuousSampleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"probability",
+                    		lv_probability_5_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleContinuousSample7972); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleContinuousSample"
+
+    // Delegated rules
+
+
+ 
+
+    
+    private static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleExplicitFunction_in_entryRuleExplicitFunction75 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExplicitFunction85 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_11_in_ruleExplicitFunction131 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExplicitFunction143 = new BitSet(new long[]{0x000000000000E000L});
+        public static final BitSet FOLLOW_13_in_ruleExplicitFunction156 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExplicitFunction177 = new BitSet(new long[]{0x000000000000C000L});
+        public static final BitSet FOLLOW_14_in_ruleExplicitFunction192 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleExpression_in_ruleExplicitFunction213 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleExplicitFunction227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression263 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExpression273 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression_in_ruleExpression320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_ruleExpression347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareExpression_in_ruleExpression374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_ruleExpression401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperatorExpression_in_ruleExpression428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_ruleExpression455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_ruleExpression482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIfElseExpression_in_ruleExpression509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_ruleExpression536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_ruleExpression563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_ruleExpression590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleExpression617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_ruleExpression644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_ruleExpression671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_ruleExpression698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_ruleExpression725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_ruleExpression752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_ruleExpression779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_ruleExpression806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_ruleExpression833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm868 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTerm878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression_in_ruleTerm925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_ruleTerm952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_ruleTerm979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_ruleTerm1006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_ruleTerm1033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_ruleTerm1060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_ruleTerm1087 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_ruleTerm1114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleTerm1141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_ruleTerm1168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_ruleTerm1195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_ruleTerm1222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_ruleTerm1249 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_ruleTerm1276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_ruleTerm1303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_ruleTerm1330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_ruleTerm1357 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProduct_in_entryRuleProduct1392 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProduct1402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_ruleProduct1449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_ruleProduct1476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_ruleProduct1503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_ruleProduct1530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_ruleProduct1557 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_ruleProduct1584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_ruleProduct1611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleProduct1638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_ruleProduct1665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_ruleProduct1692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_ruleProduct1719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_ruleProduct1746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_ruleProduct1773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_ruleProduct1800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_ruleProduct1827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_ruleProduct1854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePower_in_entryRulePower1889 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePower1899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_rulePower1946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_rulePower1973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_rulePower2000 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_rulePower2027 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_rulePower2054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_rulePower2081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_rulePower2108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_rulePower2135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_rulePower2162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_rulePower2189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_rulePower2216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_rulePower2243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_rulePower2270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_rulePower2297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_rulePower2324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnary_in_entryRuleUnary2359 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUnary2369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_ruleUnary2416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_ruleUnary2443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_ruleUnary2470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_ruleUnary2497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_ruleUnary2524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleUnary2551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_ruleUnary2578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_ruleUnary2605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_ruleUnary2632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_ruleUnary2659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_ruleUnary2686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_ruleUnary2713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_ruleUnary2740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_ruleUnary2767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_entryRuleBooleanExpression2802 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanExpression2812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression_in_ruleBooleanExpression2859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_ruleBooleanExpression2886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareExpression_in_ruleBooleanExpression2913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_ruleBooleanExpression2940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperatorExpression_in_ruleBooleanExpression2967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_ruleBooleanExpression2994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_ruleBooleanExpression3021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_ruleBooleanExpression3048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_ruleBooleanExpression3075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_ruleBooleanExpression3102 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_ruleBooleanExpression3129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_ruleBooleanExpression3156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_ruleBooleanExpression3183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_ruleBooleanExpression3210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_ruleBooleanExpression3237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_ruleBooleanExpression3264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_ruleBooleanExpression3291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_ruleBooleanExpression3318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_ruleBooleanExpression3345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_entryRuleEString3381 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEString3392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleEString3432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleEString3458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression_in_entryRuleTermExpression3503 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTermExpression3513 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_ruleTermExpression3550 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleTermExpression3562 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleTermExpression2_in_ruleTermExpression3584 = new BitSet(new long[]{0x0040000000008000L});
+        public static final BitSet FOLLOW_ruleTermOperations_in_ruleTermExpression3614 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleProduct_in_ruleTermExpression3635 = new BitSet(new long[]{0x0040000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleTermExpression3649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermExpression2_in_entryRuleTermExpression23685 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTermExpression23695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTerm_in_ruleTermExpression23741 = new BitSet(new long[]{0x0040000000000000L});
+        public static final BitSet FOLLOW_ruleTermOperations_in_ruleTermExpression23762 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleProduct_in_ruleTermExpression23783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression_in_entryRuleProductExpression3819 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProductExpression3829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_ruleProductExpression3866 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleProductExpression3878 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleProductExpression2_in_ruleProductExpression3900 = new BitSet(new long[]{0x0080000000008000L});
+        public static final BitSet FOLLOW_ruleProductOperations_in_ruleProductExpression3930 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_rulePower_in_ruleProductExpression3951 = new BitSet(new long[]{0x0080000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleProductExpression3965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductExpression2_in_entryRuleProductExpression24001 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProductExpression24011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProduct_in_ruleProductExpression24057 = new BitSet(new long[]{0x0080000000000000L});
+        public static final BitSet FOLLOW_ruleProductOperations_in_ruleProductExpression24078 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_rulePower_in_ruleProductExpression24099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareExpression_in_entryRuleCompareExpression4135 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCompareExpression4145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_18_in_ruleCompareExpression4182 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompareExpression4194 = new BitSet(new long[]{0x0000000000080000L});
+        public static final BitSet FOLLOW_19_in_ruleCompareExpression4206 = new BitSet(new long[]{0x0100000000000000L});
+        public static final BitSet FOLLOW_ruleCompareOperations_in_ruleCompareExpression4227 = new BitSet(new long[]{0x0000000000100000L});
+        public static final BitSet FOLLOW_20_in_ruleCompareExpression4239 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleTerm_in_ruleCompareExpression4260 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleCompareExpression4272 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleTerm_in_ruleCompareExpression4293 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleCompareExpression4305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePowerExpression_in_entryRulePowerExpression4341 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePowerExpression4351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_22_in_rulePowerExpression4388 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_rulePowerExpression4400 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_23_in_rulePowerExpression4412 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_rulePower_in_rulePowerExpression4433 = new BitSet(new long[]{0x0000000001000000L});
+        public static final BitSet FOLLOW_24_in_rulePowerExpression4445 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleUnary_in_rulePowerExpression4466 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_rulePowerExpression4478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperatorExpression_in_entryRuleBooleanOperatorExpression4514 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanOperatorExpression4524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_ruleBooleanOperatorExpression4561 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBooleanOperatorExpression4573 = new BitSet(new long[]{0x0000000000080000L});
+        public static final BitSet FOLLOW_19_in_ruleBooleanOperatorExpression4585 = new BitSet(new long[]{0x0200000000000000L});
+        public static final BitSet FOLLOW_ruleBooleanOperations_in_ruleBooleanOperatorExpression4606 = new BitSet(new long[]{0x0000000000100000L});
+        public static final BitSet FOLLOW_20_in_ruleBooleanOperatorExpression4618 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleBooleanOperatorExpression4639 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleBooleanOperatorExpression4651 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleBooleanOperatorExpression4672 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleBooleanOperatorExpression4684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNotExpression_in_entryRuleNotExpression4720 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNotExpression4730 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_ruleNotExpression4767 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleNotExpression4779 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_27_in_ruleNotExpression4791 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleUnary_in_ruleNotExpression4812 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleNotExpression4824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNegativeExpression_in_entryRuleNegativeExpression4860 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNegativeExpression4870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_ruleNegativeExpression4907 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleNegativeExpression4919 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_27_in_ruleNegativeExpression4931 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleUnary_in_ruleNegativeExpression4952 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleNegativeExpression4964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIfElseExpression_in_entryRuleIfElseExpression5000 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIfElseExpression5010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_ruleIfElseExpression5047 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleIfElseExpression5059 = new BitSet(new long[]{0x0000000040000000L});
+        public static final BitSet FOLLOW_30_in_ruleIfElseExpression5071 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleIfElseExpression5092 = new BitSet(new long[]{0x0000000080000000L});
+        public static final BitSet FOLLOW_31_in_ruleIfElseExpression5104 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleIfElseExpression5125 = new BitSet(new long[]{0x0000000100000000L});
+        public static final BitSet FOLLOW_32_in_ruleIfElseExpression5137 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleIfElseExpression5158 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleIfElseExpression5170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction5206 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFunction5216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_ruleFunction5253 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleFunction5265 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_34_in_ruleFunction5277 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleFunction5298 = new BitSet(new long[]{0x0000000800008000L});
+        public static final BitSet FOLLOW_35_in_ruleFunction5311 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleFunction5323 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleExpression_in_ruleFunction5344 = new BitSet(new long[]{0x0000001000008000L});
+        public static final BitSet FOLLOW_36_in_ruleFunction5357 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleExpression_in_ruleFunction5378 = new BitSet(new long[]{0x0000001000008000L});
+        public static final BitSet FOLLOW_15_in_ruleFunction5392 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleFunction5406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParenthesis_in_entryRuleParenthesis5442 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleParenthesis5452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_ruleParenthesis5489 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleParenthesis5501 = new BitSet(new long[]{0x0000004000000000L});
+        public static final BitSet FOLLOW_38_in_ruleParenthesis5513 = new BitSet(new long[]{0x00137BA236470000L});
+        public static final BitSet FOLLOW_ruleExpression_in_ruleParenthesis5534 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleParenthesis5546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLiteral_Impl_in_entryRuleLiteral_Impl5582 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLiteral_Impl5592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_ruleLiteral_Impl5638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral5674 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteral5684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_ruleStringLiteral5721 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleStringLiteral5733 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_41_in_ruleStringLiteral5745 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleStringLiteral5766 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleStringLiteral5778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoolLiteral_in_entryRuleBoolLiteral5814 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBoolLiteral5824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_ruleBoolLiteral5867 = new BitSet(new long[]{0x0000040000000000L});
+        public static final BitSet FOLLOW_42_in_ruleBoolLiteral5892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntLiteral_in_entryRuleIntLiteral5928 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIntLiteral5938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_ruleIntLiteral5975 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleIntLiteral5987 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_41_in_ruleIntLiteral5999 = new BitSet(new long[]{0x0400000000000040L});
+        public static final BitSet FOLLOW_ruleEBigInteger_in_ruleIntLiteral6020 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleIntLiteral6032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDoubleLiteral_in_entryRuleDoubleLiteral6068 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDoubleLiteral6078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_ruleDoubleLiteral6115 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleDoubleLiteral6127 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_41_in_ruleDoubleLiteral6139 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleDoubleLiteral6160 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleDoubleLiteral6172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFormalParameter_in_entryRuleFormalParameter6208 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFormalParameter6218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_ruleFormalParameter6264 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleFormalParameter6285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_entryRuleProbabilityMassFunction6321 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProbabilityMassFunction6331 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_ruleProbabilityMassFunction6377 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleProbabilityMassFunction6389 = new BitSet(new long[]{0x0000800000008000L});
+        public static final BitSet FOLLOW_47_in_ruleProbabilityMassFunction6402 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleProbabilityMassFunction6414 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_ruleSample_in_ruleProbabilityMassFunction6435 = new BitSet(new long[]{0x0000001000008000L});
+        public static final BitSet FOLLOW_36_in_ruleProbabilityMassFunction6448 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_ruleSample_in_ruleProbabilityMassFunction6469 = new BitSet(new long[]{0x0000001000008000L});
+        public static final BitSet FOLLOW_15_in_ruleProbabilityMassFunction6483 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleProbabilityMassFunction6497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_entryRuleBoxedPDF6533 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBoxedPDF6543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_ruleBoxedPDF6589 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBoxedPDF6601 = new BitSet(new long[]{0x0000800000008000L});
+        public static final BitSet FOLLOW_47_in_ruleBoxedPDF6614 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBoxedPDF6626 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_ruleBoxedPDF6647 = new BitSet(new long[]{0x0000001000008000L});
+        public static final BitSet FOLLOW_36_in_ruleBoxedPDF6660 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_ruleBoxedPDF6681 = new BitSet(new long[]{0x0000001000008000L});
+        public static final BitSet FOLLOW_15_in_ruleBoxedPDF6695 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleBoxedPDF6709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_entryRuleNormalDistribution6745 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNormalDistribution6755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_ruleNormalDistribution6792 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleNormalDistribution6804 = new BitSet(new long[]{0x0004000000000000L});
+        public static final BitSet FOLLOW_50_in_ruleNormalDistribution6816 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleNormalDistribution6837 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_51_in_ruleNormalDistribution6849 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleNormalDistribution6870 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleNormalDistribution6882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_entryRuleExponentialDistribution6918 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExponentialDistribution6928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_ruleExponentialDistribution6965 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExponentialDistribution6977 = new BitSet(new long[]{0x0020000000000000L});
+        public static final BitSet FOLLOW_53_in_ruleExponentialDistribution6989 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleExponentialDistribution7010 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleExponentialDistribution7022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTermOperations_in_entryRuleTermOperations7059 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTermOperations7070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_ruleTermOperations7107 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProductOperations_in_entryRuleProductOperations7147 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProductOperations7158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_ruleProductOperations7195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompareOperations_in_entryRuleCompareOperations7235 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCompareOperations7246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_ruleCompareOperations7283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBooleanOperations_in_entryRuleBooleanOperations7323 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanOperations7334 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_ruleBooleanOperations7371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigInteger_in_entryRuleEBigInteger7413 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEBigInteger7424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_ruleEBigInteger7463 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleEBigInteger7480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_entryRuleEBigDecimal7526 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEBigDecimal7537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleEBigDecimal7578 = new BitSet(new long[]{0x0800000000000000L});
+        public static final BitSet FOLLOW_59_in_ruleEBigDecimal7598 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleEBigDecimal7613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSample_in_entryRuleSample7658 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSample7668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_ruleSample7705 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSample7717 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_61_in_ruleSample7729 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleSample7750 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_41_in_ruleSample7762 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSample7785 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleSample7797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_entryRuleContinuousSample7835 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleContinuousSample7845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_ruleContinuousSample7882 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleContinuousSample7894 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_41_in_ruleContinuousSample7906 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleContinuousSample7927 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_61_in_ruleContinuousSample7939 = new BitSet(new long[]{0x0800000000000040L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleContinuousSample7960 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleContinuousSample7972 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+
+}
\ No newline at end of file
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/services/MyDsl1GrammarAccess.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/services/MyDsl1GrammarAccess.java
new file mode 100644
index 00000000..012c1057
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/services/MyDsl1GrammarAccess.java
@@ -0,0 +1,2508 @@
+/*
+* generated by Xtext
+*/
+
+package org.xtext.example.mydsl1.services;
+
+import com.google.inject.Singleton;
+import com.google.inject.Inject;
+
+import java.util.List;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.service.AbstractElementFinder.*;
+
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+
+@Singleton
+public class MyDsl1GrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class ExplicitFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExplicitFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cExplicitFunctionAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cExplicitFunctionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSpecificationKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cSpecificationAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cSpecificationEStringParserRuleCall_3_1_0 = (RuleCall)cSpecificationAssignment_3_1.eContents().get(0);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cExpressionKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cExpressionAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final RuleCall cExpressionExpressionParserRuleCall_4_1_0 = (RuleCall)cExpressionAssignment_4_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//ExplicitFunction:
+		//
+		//	{ExplicitFunction} "ExplicitFunction" "{" ("specification" specification=EString)? ("expression"
+		//
+		//	expression=Expression)? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{ExplicitFunction} "ExplicitFunction" "{" ("specification" specification=EString)? ("expression" expression=Expression)?
+		//
+		//"}"
+		public Group getGroup() { return cGroup; }
+
+		//{ExplicitFunction}
+		public Action getExplicitFunctionAction_0() { return cExplicitFunctionAction_0; }
+
+		//"ExplicitFunction"
+		public Keyword getExplicitFunctionKeyword_1() { return cExplicitFunctionKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("specification" specification=EString)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"specification"
+		public Keyword getSpecificationKeyword_3_0() { return cSpecificationKeyword_3_0; }
+
+		//specification=EString
+		public Assignment getSpecificationAssignment_3_1() { return cSpecificationAssignment_3_1; }
+
+		//EString
+		public RuleCall getSpecificationEStringParserRuleCall_3_1_0() { return cSpecificationEStringParserRuleCall_3_1_0; }
+
+		//("expression" expression=Expression)?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"expression"
+		public Keyword getExpressionKeyword_4_0() { return cExpressionKeyword_4_0; }
+
+		//expression=Expression
+		public Assignment getExpressionAssignment_4_1() { return cExpressionAssignment_4_1; }
+
+		//Expression
+		public RuleCall getExpressionExpressionParserRuleCall_4_1_0() { return cExpressionExpressionParserRuleCall_4_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class ExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Expression");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cTermExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cProductExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cCompareExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cPowerExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cBooleanOperatorExpressionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cNotExpressionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cNegativeExpressionParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cIfElseExpressionParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cFunctionParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cParenthesisParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cLiteral_ImplParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cStringLiteralParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cBoolLiteralParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cIntLiteralParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		private final RuleCall cDoubleLiteralParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
+		private final RuleCall cFormalParameterParserRuleCall_15 = (RuleCall)cAlternatives.eContents().get(15);
+		private final RuleCall cProbabilityMassFunctionParserRuleCall_16 = (RuleCall)cAlternatives.eContents().get(16);
+		private final RuleCall cBoxedPDFParserRuleCall_17 = (RuleCall)cAlternatives.eContents().get(17);
+		private final RuleCall cNormalDistributionParserRuleCall_18 = (RuleCall)cAlternatives.eContents().get(18);
+		private final RuleCall cExponentialDistributionParserRuleCall_19 = (RuleCall)cAlternatives.eContents().get(19);
+		
+		//Expression:
+		//
+		//	TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression
+		//
+		//	| NegativeExpression | IfElseExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral |
+		//
+		//	IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+		//
+		//	ExponentialDistribution;
+		public ParserRule getRule() { return rule; }
+
+		//TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression |
+		//
+		//NegativeExpression | IfElseExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral |
+		//
+		//IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+		//
+		//ExponentialDistribution
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//TermExpression
+		public RuleCall getTermExpressionParserRuleCall_0() { return cTermExpressionParserRuleCall_0; }
+
+		//ProductExpression
+		public RuleCall getProductExpressionParserRuleCall_1() { return cProductExpressionParserRuleCall_1; }
+
+		//CompareExpression
+		public RuleCall getCompareExpressionParserRuleCall_2() { return cCompareExpressionParserRuleCall_2; }
+
+		//PowerExpression
+		public RuleCall getPowerExpressionParserRuleCall_3() { return cPowerExpressionParserRuleCall_3; }
+
+		//BooleanOperatorExpression
+		public RuleCall getBooleanOperatorExpressionParserRuleCall_4() { return cBooleanOperatorExpressionParserRuleCall_4; }
+
+		//NotExpression
+		public RuleCall getNotExpressionParserRuleCall_5() { return cNotExpressionParserRuleCall_5; }
+
+		//NegativeExpression
+		public RuleCall getNegativeExpressionParserRuleCall_6() { return cNegativeExpressionParserRuleCall_6; }
+
+		//IfElseExpression
+		public RuleCall getIfElseExpressionParserRuleCall_7() { return cIfElseExpressionParserRuleCall_7; }
+
+		//Function
+		public RuleCall getFunctionParserRuleCall_8() { return cFunctionParserRuleCall_8; }
+
+		//Parenthesis
+		public RuleCall getParenthesisParserRuleCall_9() { return cParenthesisParserRuleCall_9; }
+
+		//Literal_Impl
+		public RuleCall getLiteral_ImplParserRuleCall_10() { return cLiteral_ImplParserRuleCall_10; }
+
+		//StringLiteral
+		public RuleCall getStringLiteralParserRuleCall_11() { return cStringLiteralParserRuleCall_11; }
+
+		//BoolLiteral
+		public RuleCall getBoolLiteralParserRuleCall_12() { return cBoolLiteralParserRuleCall_12; }
+
+		//IntLiteral
+		public RuleCall getIntLiteralParserRuleCall_13() { return cIntLiteralParserRuleCall_13; }
+
+		//DoubleLiteral
+		public RuleCall getDoubleLiteralParserRuleCall_14() { return cDoubleLiteralParserRuleCall_14; }
+
+		//FormalParameter
+		public RuleCall getFormalParameterParserRuleCall_15() { return cFormalParameterParserRuleCall_15; }
+
+		//ProbabilityMassFunction
+		public RuleCall getProbabilityMassFunctionParserRuleCall_16() { return cProbabilityMassFunctionParserRuleCall_16; }
+
+		//BoxedPDF
+		public RuleCall getBoxedPDFParserRuleCall_17() { return cBoxedPDFParserRuleCall_17; }
+
+		//NormalDistribution
+		public RuleCall getNormalDistributionParserRuleCall_18() { return cNormalDistributionParserRuleCall_18; }
+
+		//ExponentialDistribution
+		public RuleCall getExponentialDistributionParserRuleCall_19() { return cExponentialDistributionParserRuleCall_19; }
+	}
+
+	public class TermElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Term");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cTermExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cProductExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cPowerExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cNotExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cNegativeExpressionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cFunctionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cParenthesisParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cLiteral_ImplParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cStringLiteralParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cBoolLiteralParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cIntLiteralParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cDoubleLiteralParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cFormalParameterParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cProbabilityMassFunctionParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		private final RuleCall cBoxedPDFParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
+		private final RuleCall cNormalDistributionParserRuleCall_15 = (RuleCall)cAlternatives.eContents().get(15);
+		private final RuleCall cExponentialDistributionParserRuleCall_16 = (RuleCall)cAlternatives.eContents().get(16);
+		
+		//Term:
+		//
+		//	TermExpression | ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis |
+		//
+		//	Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction |
+		//
+		//	BoxedPDF | NormalDistribution | ExponentialDistribution;
+		public ParserRule getRule() { return rule; }
+
+		//TermExpression | ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis |
+		//
+		//Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction |
+		//
+		//BoxedPDF | NormalDistribution | ExponentialDistribution
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//TermExpression
+		public RuleCall getTermExpressionParserRuleCall_0() { return cTermExpressionParserRuleCall_0; }
+
+		//ProductExpression
+		public RuleCall getProductExpressionParserRuleCall_1() { return cProductExpressionParserRuleCall_1; }
+
+		//PowerExpression
+		public RuleCall getPowerExpressionParserRuleCall_2() { return cPowerExpressionParserRuleCall_2; }
+
+		//NotExpression
+		public RuleCall getNotExpressionParserRuleCall_3() { return cNotExpressionParserRuleCall_3; }
+
+		//NegativeExpression
+		public RuleCall getNegativeExpressionParserRuleCall_4() { return cNegativeExpressionParserRuleCall_4; }
+
+		//Function
+		public RuleCall getFunctionParserRuleCall_5() { return cFunctionParserRuleCall_5; }
+
+		//Parenthesis
+		public RuleCall getParenthesisParserRuleCall_6() { return cParenthesisParserRuleCall_6; }
+
+		//Literal_Impl
+		public RuleCall getLiteral_ImplParserRuleCall_7() { return cLiteral_ImplParserRuleCall_7; }
+
+		//StringLiteral
+		public RuleCall getStringLiteralParserRuleCall_8() { return cStringLiteralParserRuleCall_8; }
+
+		//BoolLiteral
+		public RuleCall getBoolLiteralParserRuleCall_9() { return cBoolLiteralParserRuleCall_9; }
+
+		//IntLiteral
+		public RuleCall getIntLiteralParserRuleCall_10() { return cIntLiteralParserRuleCall_10; }
+
+		//DoubleLiteral
+		public RuleCall getDoubleLiteralParserRuleCall_11() { return cDoubleLiteralParserRuleCall_11; }
+
+		//FormalParameter
+		public RuleCall getFormalParameterParserRuleCall_12() { return cFormalParameterParserRuleCall_12; }
+
+		//ProbabilityMassFunction
+		public RuleCall getProbabilityMassFunctionParserRuleCall_13() { return cProbabilityMassFunctionParserRuleCall_13; }
+
+		//BoxedPDF
+		public RuleCall getBoxedPDFParserRuleCall_14() { return cBoxedPDFParserRuleCall_14; }
+
+		//NormalDistribution
+		public RuleCall getNormalDistributionParserRuleCall_15() { return cNormalDistributionParserRuleCall_15; }
+
+		//ExponentialDistribution
+		public RuleCall getExponentialDistributionParserRuleCall_16() { return cExponentialDistributionParserRuleCall_16; }
+	}
+
+	public class ProductElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Product");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cProductExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cPowerExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cNotExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cNegativeExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cFunctionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cParenthesisParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cLiteral_ImplParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cStringLiteralParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cBoolLiteralParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cIntLiteralParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cDoubleLiteralParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cFormalParameterParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cProbabilityMassFunctionParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cBoxedPDFParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		private final RuleCall cNormalDistributionParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
+		private final RuleCall cExponentialDistributionParserRuleCall_15 = (RuleCall)cAlternatives.eContents().get(15);
+		
+		//Product:
+		//
+		//	ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl |
+		//
+		//	StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF |
+		//
+		//	NormalDistribution | ExponentialDistribution;
+		public ParserRule getRule() { return rule; }
+
+		//ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl |
+		//
+		//StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF |
+		//
+		//NormalDistribution | ExponentialDistribution
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ProductExpression
+		public RuleCall getProductExpressionParserRuleCall_0() { return cProductExpressionParserRuleCall_0; }
+
+		//PowerExpression
+		public RuleCall getPowerExpressionParserRuleCall_1() { return cPowerExpressionParserRuleCall_1; }
+
+		//NotExpression
+		public RuleCall getNotExpressionParserRuleCall_2() { return cNotExpressionParserRuleCall_2; }
+
+		//NegativeExpression
+		public RuleCall getNegativeExpressionParserRuleCall_3() { return cNegativeExpressionParserRuleCall_3; }
+
+		//Function
+		public RuleCall getFunctionParserRuleCall_4() { return cFunctionParserRuleCall_4; }
+
+		//Parenthesis
+		public RuleCall getParenthesisParserRuleCall_5() { return cParenthesisParserRuleCall_5; }
+
+		//Literal_Impl
+		public RuleCall getLiteral_ImplParserRuleCall_6() { return cLiteral_ImplParserRuleCall_6; }
+
+		//StringLiteral
+		public RuleCall getStringLiteralParserRuleCall_7() { return cStringLiteralParserRuleCall_7; }
+
+		//BoolLiteral
+		public RuleCall getBoolLiteralParserRuleCall_8() { return cBoolLiteralParserRuleCall_8; }
+
+		//IntLiteral
+		public RuleCall getIntLiteralParserRuleCall_9() { return cIntLiteralParserRuleCall_9; }
+
+		//DoubleLiteral
+		public RuleCall getDoubleLiteralParserRuleCall_10() { return cDoubleLiteralParserRuleCall_10; }
+
+		//FormalParameter
+		public RuleCall getFormalParameterParserRuleCall_11() { return cFormalParameterParserRuleCall_11; }
+
+		//ProbabilityMassFunction
+		public RuleCall getProbabilityMassFunctionParserRuleCall_12() { return cProbabilityMassFunctionParserRuleCall_12; }
+
+		//BoxedPDF
+		public RuleCall getBoxedPDFParserRuleCall_13() { return cBoxedPDFParserRuleCall_13; }
+
+		//NormalDistribution
+		public RuleCall getNormalDistributionParserRuleCall_14() { return cNormalDistributionParserRuleCall_14; }
+
+		//ExponentialDistribution
+		public RuleCall getExponentialDistributionParserRuleCall_15() { return cExponentialDistributionParserRuleCall_15; }
+	}
+
+	public class PowerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Power");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cPowerExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cNotExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cNegativeExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cFunctionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cParenthesisParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cLiteral_ImplParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cStringLiteralParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cBoolLiteralParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cIntLiteralParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cDoubleLiteralParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cFormalParameterParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cProbabilityMassFunctionParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cBoxedPDFParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cNormalDistributionParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		private final RuleCall cExponentialDistributionParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
+		
+		//Power:
+		//
+		//	PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral |
+		//
+		//	BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution
+		//
+		//	| ExponentialDistribution;
+		public ParserRule getRule() { return rule; }
+
+		//PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral |
+		//
+		//BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+		//
+		//ExponentialDistribution
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//PowerExpression
+		public RuleCall getPowerExpressionParserRuleCall_0() { return cPowerExpressionParserRuleCall_0; }
+
+		//NotExpression
+		public RuleCall getNotExpressionParserRuleCall_1() { return cNotExpressionParserRuleCall_1; }
+
+		//NegativeExpression
+		public RuleCall getNegativeExpressionParserRuleCall_2() { return cNegativeExpressionParserRuleCall_2; }
+
+		//Function
+		public RuleCall getFunctionParserRuleCall_3() { return cFunctionParserRuleCall_3; }
+
+		//Parenthesis
+		public RuleCall getParenthesisParserRuleCall_4() { return cParenthesisParserRuleCall_4; }
+
+		//Literal_Impl
+		public RuleCall getLiteral_ImplParserRuleCall_5() { return cLiteral_ImplParserRuleCall_5; }
+
+		//StringLiteral
+		public RuleCall getStringLiteralParserRuleCall_6() { return cStringLiteralParserRuleCall_6; }
+
+		//BoolLiteral
+		public RuleCall getBoolLiteralParserRuleCall_7() { return cBoolLiteralParserRuleCall_7; }
+
+		//IntLiteral
+		public RuleCall getIntLiteralParserRuleCall_8() { return cIntLiteralParserRuleCall_8; }
+
+		//DoubleLiteral
+		public RuleCall getDoubleLiteralParserRuleCall_9() { return cDoubleLiteralParserRuleCall_9; }
+
+		//FormalParameter
+		public RuleCall getFormalParameterParserRuleCall_10() { return cFormalParameterParserRuleCall_10; }
+
+		//ProbabilityMassFunction
+		public RuleCall getProbabilityMassFunctionParserRuleCall_11() { return cProbabilityMassFunctionParserRuleCall_11; }
+
+		//BoxedPDF
+		public RuleCall getBoxedPDFParserRuleCall_12() { return cBoxedPDFParserRuleCall_12; }
+
+		//NormalDistribution
+		public RuleCall getNormalDistributionParserRuleCall_13() { return cNormalDistributionParserRuleCall_13; }
+
+		//ExponentialDistribution
+		public RuleCall getExponentialDistributionParserRuleCall_14() { return cExponentialDistributionParserRuleCall_14; }
+	}
+
+	public class UnaryElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Unary");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cNotExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cNegativeExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cFunctionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cParenthesisParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cLiteral_ImplParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cStringLiteralParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cBoolLiteralParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cIntLiteralParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cDoubleLiteralParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cFormalParameterParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cProbabilityMassFunctionParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cBoxedPDFParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cNormalDistributionParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cExponentialDistributionParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		
+		//Unary:
+		//
+		//	NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral
+		//
+		//	| DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+		//
+		//	ExponentialDistribution;
+		public ParserRule getRule() { return rule; }
+
+		//NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral |
+		//
+		//DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//NotExpression
+		public RuleCall getNotExpressionParserRuleCall_0() { return cNotExpressionParserRuleCall_0; }
+
+		//NegativeExpression
+		public RuleCall getNegativeExpressionParserRuleCall_1() { return cNegativeExpressionParserRuleCall_1; }
+
+		//Function
+		public RuleCall getFunctionParserRuleCall_2() { return cFunctionParserRuleCall_2; }
+
+		//Parenthesis
+		public RuleCall getParenthesisParserRuleCall_3() { return cParenthesisParserRuleCall_3; }
+
+		//Literal_Impl
+		public RuleCall getLiteral_ImplParserRuleCall_4() { return cLiteral_ImplParserRuleCall_4; }
+
+		//StringLiteral
+		public RuleCall getStringLiteralParserRuleCall_5() { return cStringLiteralParserRuleCall_5; }
+
+		//BoolLiteral
+		public RuleCall getBoolLiteralParserRuleCall_6() { return cBoolLiteralParserRuleCall_6; }
+
+		//IntLiteral
+		public RuleCall getIntLiteralParserRuleCall_7() { return cIntLiteralParserRuleCall_7; }
+
+		//DoubleLiteral
+		public RuleCall getDoubleLiteralParserRuleCall_8() { return cDoubleLiteralParserRuleCall_8; }
+
+		//FormalParameter
+		public RuleCall getFormalParameterParserRuleCall_9() { return cFormalParameterParserRuleCall_9; }
+
+		//ProbabilityMassFunction
+		public RuleCall getProbabilityMassFunctionParserRuleCall_10() { return cProbabilityMassFunctionParserRuleCall_10; }
+
+		//BoxedPDF
+		public RuleCall getBoxedPDFParserRuleCall_11() { return cBoxedPDFParserRuleCall_11; }
+
+		//NormalDistribution
+		public RuleCall getNormalDistributionParserRuleCall_12() { return cNormalDistributionParserRuleCall_12; }
+
+		//ExponentialDistribution
+		public RuleCall getExponentialDistributionParserRuleCall_13() { return cExponentialDistributionParserRuleCall_13; }
+	}
+
+	public class BooleanExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BooleanExpression");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cTermExpressionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cProductExpressionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cCompareExpressionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cPowerExpressionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cBooleanOperatorExpressionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cNotExpressionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cNegativeExpressionParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cFunctionParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cParenthesisParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cLiteral_ImplParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cStringLiteralParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cBoolLiteralParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cIntLiteralParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cDoubleLiteralParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		private final RuleCall cFormalParameterParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
+		private final RuleCall cProbabilityMassFunctionParserRuleCall_15 = (RuleCall)cAlternatives.eContents().get(15);
+		private final RuleCall cBoxedPDFParserRuleCall_16 = (RuleCall)cAlternatives.eContents().get(16);
+		private final RuleCall cNormalDistributionParserRuleCall_17 = (RuleCall)cAlternatives.eContents().get(17);
+		private final RuleCall cExponentialDistributionParserRuleCall_18 = (RuleCall)cAlternatives.eContents().get(18);
+		
+		//BooleanExpression:
+		//
+		//	TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression
+		//
+		//	| NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral |
+		//
+		//	DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+		public ParserRule getRule() { return rule; }
+
+		//TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression |
+		//
+		//NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral
+		//
+		//| FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//TermExpression
+		public RuleCall getTermExpressionParserRuleCall_0() { return cTermExpressionParserRuleCall_0; }
+
+		//ProductExpression
+		public RuleCall getProductExpressionParserRuleCall_1() { return cProductExpressionParserRuleCall_1; }
+
+		//CompareExpression
+		public RuleCall getCompareExpressionParserRuleCall_2() { return cCompareExpressionParserRuleCall_2; }
+
+		//PowerExpression
+		public RuleCall getPowerExpressionParserRuleCall_3() { return cPowerExpressionParserRuleCall_3; }
+
+		//BooleanOperatorExpression
+		public RuleCall getBooleanOperatorExpressionParserRuleCall_4() { return cBooleanOperatorExpressionParserRuleCall_4; }
+
+		//NotExpression
+		public RuleCall getNotExpressionParserRuleCall_5() { return cNotExpressionParserRuleCall_5; }
+
+		//NegativeExpression
+		public RuleCall getNegativeExpressionParserRuleCall_6() { return cNegativeExpressionParserRuleCall_6; }
+
+		//Function
+		public RuleCall getFunctionParserRuleCall_7() { return cFunctionParserRuleCall_7; }
+
+		//Parenthesis
+		public RuleCall getParenthesisParserRuleCall_8() { return cParenthesisParserRuleCall_8; }
+
+		//Literal_Impl
+		public RuleCall getLiteral_ImplParserRuleCall_9() { return cLiteral_ImplParserRuleCall_9; }
+
+		//StringLiteral
+		public RuleCall getStringLiteralParserRuleCall_10() { return cStringLiteralParserRuleCall_10; }
+
+		//BoolLiteral
+		public RuleCall getBoolLiteralParserRuleCall_11() { return cBoolLiteralParserRuleCall_11; }
+
+		//IntLiteral
+		public RuleCall getIntLiteralParserRuleCall_12() { return cIntLiteralParserRuleCall_12; }
+
+		//DoubleLiteral
+		public RuleCall getDoubleLiteralParserRuleCall_13() { return cDoubleLiteralParserRuleCall_13; }
+
+		//FormalParameter
+		public RuleCall getFormalParameterParserRuleCall_14() { return cFormalParameterParserRuleCall_14; }
+
+		//ProbabilityMassFunction
+		public RuleCall getProbabilityMassFunctionParserRuleCall_15() { return cProbabilityMassFunctionParserRuleCall_15; }
+
+		//BoxedPDF
+		public RuleCall getBoxedPDFParserRuleCall_16() { return cBoxedPDFParserRuleCall_16; }
+
+		//NormalDistribution
+		public RuleCall getNormalDistributionParserRuleCall_17() { return cNormalDistributionParserRuleCall_17; }
+
+		//ExponentialDistribution
+		public RuleCall getExponentialDistributionParserRuleCall_18() { return cExponentialDistributionParserRuleCall_18; }
+	}
+
+	public class EStringElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EString");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//EString returns ecore::EString:
+		//
+		//	STRING | ID;
+		public ParserRule getRule() { return rule; }
+
+		//STRING | ID
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//STRING
+		public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; }
+	}
+
+	public class TermExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TermExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cTermExpressionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final RuleCall cTermExpression2ParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Action cTermExpressionLeftAction_3_0 = (Action)cGroup_3.eContents().get(0);
+		private final Assignment cOperationAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cOperationTermOperationsParserRuleCall_3_1_0 = (RuleCall)cOperationAssignment_3_1.eContents().get(0);
+		private final Assignment cRightAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cRightProductParserRuleCall_3_2_0 = (RuleCall)cRightAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//TermExpression:
+		//
+		//	"TermExpression" "{" TermExpression2 ({TermExpression.left=current} operation=TermOperations right=Product)* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"TermExpression" "{" TermExpression2 ({TermExpression.left=current} operation=TermOperations right=Product)* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"TermExpression"
+		public Keyword getTermExpressionKeyword_0() { return cTermExpressionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//TermExpression2
+		public RuleCall getTermExpression2ParserRuleCall_2() { return cTermExpression2ParserRuleCall_2; }
+
+		//({TermExpression.left=current} operation=TermOperations right=Product)*
+		public Group getGroup_3() { return cGroup_3; }
+
+		//{TermExpression.left=current}
+		public Action getTermExpressionLeftAction_3_0() { return cTermExpressionLeftAction_3_0; }
+
+		//operation=TermOperations
+		public Assignment getOperationAssignment_3_1() { return cOperationAssignment_3_1; }
+
+		//TermOperations
+		public RuleCall getOperationTermOperationsParserRuleCall_3_1_0() { return cOperationTermOperationsParserRuleCall_3_1_0; }
+
+		//right=Product
+		public Assignment getRightAssignment_3_2() { return cRightAssignment_3_2; }
+
+		//Product
+		public RuleCall getRightProductParserRuleCall_3_2_0() { return cRightProductParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class TermExpression2Elements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TermExpression2");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cLeftAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cLeftTermParserRuleCall_0_0 = (RuleCall)cLeftAssignment_0.eContents().get(0);
+		private final Assignment cOperationAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cOperationTermOperationsParserRuleCall_1_0 = (RuleCall)cOperationAssignment_1.eContents().get(0);
+		private final Assignment cRightAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cRightProductParserRuleCall_2_0 = (RuleCall)cRightAssignment_2.eContents().get(0);
+		
+		//TermExpression2 returns TermExpression:
+		//
+		//	left=Term operation=TermOperations right=Product;
+		public ParserRule getRule() { return rule; }
+
+		//left=Term operation=TermOperations right=Product
+		public Group getGroup() { return cGroup; }
+
+		//left=Term
+		public Assignment getLeftAssignment_0() { return cLeftAssignment_0; }
+
+		//Term
+		public RuleCall getLeftTermParserRuleCall_0_0() { return cLeftTermParserRuleCall_0_0; }
+
+		//operation=TermOperations
+		public Assignment getOperationAssignment_1() { return cOperationAssignment_1; }
+
+		//TermOperations
+		public RuleCall getOperationTermOperationsParserRuleCall_1_0() { return cOperationTermOperationsParserRuleCall_1_0; }
+
+		//right=Product
+		public Assignment getRightAssignment_2() { return cRightAssignment_2; }
+
+		//Product
+		public RuleCall getRightProductParserRuleCall_2_0() { return cRightProductParserRuleCall_2_0; }
+	}
+
+	public class ProductExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProductExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cProductExpressionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final RuleCall cProductExpression2ParserRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Action cProductExpressionLeftAction_3_0 = (Action)cGroup_3.eContents().get(0);
+		private final Assignment cOperationAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cOperationProductOperationsParserRuleCall_3_1_0 = (RuleCall)cOperationAssignment_3_1.eContents().get(0);
+		private final Assignment cRightAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cRightPowerParserRuleCall_3_2_0 = (RuleCall)cRightAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ProductExpression:
+		//
+		//	"ProductExpression" "{" ProductExpression2 ({ProductExpression.left=current} operation=ProductOperations
+		//
+		//	right=Power)* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ProductExpression" "{" ProductExpression2 ({ProductExpression.left=current} operation=ProductOperations right=Power)*
+		//
+		//"}"
+		public Group getGroup() { return cGroup; }
+
+		//"ProductExpression"
+		public Keyword getProductExpressionKeyword_0() { return cProductExpressionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//ProductExpression2
+		public RuleCall getProductExpression2ParserRuleCall_2() { return cProductExpression2ParserRuleCall_2; }
+
+		//({ProductExpression.left=current} operation=ProductOperations right=Power)*
+		public Group getGroup_3() { return cGroup_3; }
+
+		//{ProductExpression.left=current}
+		public Action getProductExpressionLeftAction_3_0() { return cProductExpressionLeftAction_3_0; }
+
+		//operation=ProductOperations
+		public Assignment getOperationAssignment_3_1() { return cOperationAssignment_3_1; }
+
+		//ProductOperations
+		public RuleCall getOperationProductOperationsParserRuleCall_3_1_0() { return cOperationProductOperationsParserRuleCall_3_1_0; }
+
+		//right=Power
+		public Assignment getRightAssignment_3_2() { return cRightAssignment_3_2; }
+
+		//Power
+		public RuleCall getRightPowerParserRuleCall_3_2_0() { return cRightPowerParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class ProductExpression2Elements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProductExpression2");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cLeftAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cLeftProductParserRuleCall_0_0 = (RuleCall)cLeftAssignment_0.eContents().get(0);
+		private final Assignment cOperationAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cOperationProductOperationsParserRuleCall_1_0 = (RuleCall)cOperationAssignment_1.eContents().get(0);
+		private final Assignment cRightAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cRightPowerParserRuleCall_2_0 = (RuleCall)cRightAssignment_2.eContents().get(0);
+		
+		//ProductExpression2 returns ProductExpression:
+		//
+		//	left=Product operation=ProductOperations right=Power;
+		public ParserRule getRule() { return rule; }
+
+		//left=Product operation=ProductOperations right=Power
+		public Group getGroup() { return cGroup; }
+
+		//left=Product
+		public Assignment getLeftAssignment_0() { return cLeftAssignment_0; }
+
+		//Product
+		public RuleCall getLeftProductParserRuleCall_0_0() { return cLeftProductParserRuleCall_0_0; }
+
+		//operation=ProductOperations
+		public Assignment getOperationAssignment_1() { return cOperationAssignment_1; }
+
+		//ProductOperations
+		public RuleCall getOperationProductOperationsParserRuleCall_1_0() { return cOperationProductOperationsParserRuleCall_1_0; }
+
+		//right=Power
+		public Assignment getRightAssignment_2() { return cRightAssignment_2; }
+
+		//Power
+		public RuleCall getRightPowerParserRuleCall_2_0() { return cRightPowerParserRuleCall_2_0; }
+	}
+
+	public class CompareExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CompareExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCompareExpressionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cOperationKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cOperationAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cOperationCompareOperationsParserRuleCall_3_0 = (RuleCall)cOperationAssignment_3.eContents().get(0);
+		private final Keyword cLeftKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cLeftAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cLeftTermParserRuleCall_5_0 = (RuleCall)cLeftAssignment_5.eContents().get(0);
+		private final Keyword cRightKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cRightAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cRightTermParserRuleCall_7_0 = (RuleCall)cRightAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//CompareExpression:
+		//
+		//	"CompareExpression" "{" "operation" operation=CompareOperations "left" left=Term "right" right=Term "}";
+		public ParserRule getRule() { return rule; }
+
+		//"CompareExpression" "{" "operation" operation=CompareOperations "left" left=Term "right" right=Term "}"
+		public Group getGroup() { return cGroup; }
+
+		//"CompareExpression"
+		public Keyword getCompareExpressionKeyword_0() { return cCompareExpressionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"operation"
+		public Keyword getOperationKeyword_2() { return cOperationKeyword_2; }
+
+		//operation=CompareOperations
+		public Assignment getOperationAssignment_3() { return cOperationAssignment_3; }
+
+		//CompareOperations
+		public RuleCall getOperationCompareOperationsParserRuleCall_3_0() { return cOperationCompareOperationsParserRuleCall_3_0; }
+
+		//"left"
+		public Keyword getLeftKeyword_4() { return cLeftKeyword_4; }
+
+		//left=Term
+		public Assignment getLeftAssignment_5() { return cLeftAssignment_5; }
+
+		//Term
+		public RuleCall getLeftTermParserRuleCall_5_0() { return cLeftTermParserRuleCall_5_0; }
+
+		//"right"
+		public Keyword getRightKeyword_6() { return cRightKeyword_6; }
+
+		//right=Term
+		public Assignment getRightAssignment_7() { return cRightAssignment_7; }
+
+		//Term
+		public RuleCall getRightTermParserRuleCall_7_0() { return cRightTermParserRuleCall_7_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class PowerExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PowerExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPowerExpressionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cBaseKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cBaseAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cBasePowerParserRuleCall_3_0 = (RuleCall)cBaseAssignment_3.eContents().get(0);
+		private final Keyword cExponentKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cExponentAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cExponentUnaryParserRuleCall_5_0 = (RuleCall)cExponentAssignment_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//PowerExpression:
+		//
+		//	"PowerExpression" "{" "base" base=Power "exponent" exponent=Unary "}";
+		public ParserRule getRule() { return rule; }
+
+		//"PowerExpression" "{" "base" base=Power "exponent" exponent=Unary "}"
+		public Group getGroup() { return cGroup; }
+
+		//"PowerExpression"
+		public Keyword getPowerExpressionKeyword_0() { return cPowerExpressionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"base"
+		public Keyword getBaseKeyword_2() { return cBaseKeyword_2; }
+
+		//base=Power
+		public Assignment getBaseAssignment_3() { return cBaseAssignment_3; }
+
+		//Power
+		public RuleCall getBasePowerParserRuleCall_3_0() { return cBasePowerParserRuleCall_3_0; }
+
+		//"exponent"
+		public Keyword getExponentKeyword_4() { return cExponentKeyword_4; }
+
+		//exponent=Unary
+		public Assignment getExponentAssignment_5() { return cExponentAssignment_5; }
+
+		//Unary
+		public RuleCall getExponentUnaryParserRuleCall_5_0() { return cExponentUnaryParserRuleCall_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class BooleanOperatorExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BooleanOperatorExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cBooleanOperatorExpressionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cOperationKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cOperationAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cOperationBooleanOperationsParserRuleCall_3_0 = (RuleCall)cOperationAssignment_3.eContents().get(0);
+		private final Keyword cLeftKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cLeftAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cLeftBooleanExpressionParserRuleCall_5_0 = (RuleCall)cLeftAssignment_5.eContents().get(0);
+		private final Keyword cRightKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cRightAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cRightBooleanExpressionParserRuleCall_7_0 = (RuleCall)cRightAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//BooleanOperatorExpression:
+		//
+		//	"BooleanOperatorExpression" "{" "operation" operation=BooleanOperations "left" left=BooleanExpression "right"
+		//
+		//	right=BooleanExpression "}";
+		public ParserRule getRule() { return rule; }
+
+		//"BooleanOperatorExpression" "{" "operation" operation=BooleanOperations "left" left=BooleanExpression "right"
+		//
+		//right=BooleanExpression "}"
+		public Group getGroup() { return cGroup; }
+
+		//"BooleanOperatorExpression"
+		public Keyword getBooleanOperatorExpressionKeyword_0() { return cBooleanOperatorExpressionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"operation"
+		public Keyword getOperationKeyword_2() { return cOperationKeyword_2; }
+
+		//operation=BooleanOperations
+		public Assignment getOperationAssignment_3() { return cOperationAssignment_3; }
+
+		//BooleanOperations
+		public RuleCall getOperationBooleanOperationsParserRuleCall_3_0() { return cOperationBooleanOperationsParserRuleCall_3_0; }
+
+		//"left"
+		public Keyword getLeftKeyword_4() { return cLeftKeyword_4; }
+
+		//left=BooleanExpression
+		public Assignment getLeftAssignment_5() { return cLeftAssignment_5; }
+
+		//BooleanExpression
+		public RuleCall getLeftBooleanExpressionParserRuleCall_5_0() { return cLeftBooleanExpressionParserRuleCall_5_0; }
+
+		//"right"
+		public Keyword getRightKeyword_6() { return cRightKeyword_6; }
+
+		//right=BooleanExpression
+		public Assignment getRightAssignment_7() { return cRightAssignment_7; }
+
+		//BooleanExpression
+		public RuleCall getRightBooleanExpressionParserRuleCall_7_0() { return cRightBooleanExpressionParserRuleCall_7_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class NotExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NotExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cNotExpressionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cInnerKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cInnerAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cInnerUnaryParserRuleCall_3_0 = (RuleCall)cInnerAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//NotExpression:
+		//
+		//	"NotExpression" "{" "inner" inner=Unary "}";
+		public ParserRule getRule() { return rule; }
+
+		//"NotExpression" "{" "inner" inner=Unary "}"
+		public Group getGroup() { return cGroup; }
+
+		//"NotExpression"
+		public Keyword getNotExpressionKeyword_0() { return cNotExpressionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"inner"
+		public Keyword getInnerKeyword_2() { return cInnerKeyword_2; }
+
+		//inner=Unary
+		public Assignment getInnerAssignment_3() { return cInnerAssignment_3; }
+
+		//Unary
+		public RuleCall getInnerUnaryParserRuleCall_3_0() { return cInnerUnaryParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class NegativeExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NegativeExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cNegativeExpressionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cInnerKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cInnerAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cInnerUnaryParserRuleCall_3_0 = (RuleCall)cInnerAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//NegativeExpression:
+		//
+		//	"NegativeExpression" "{" "inner" inner=Unary "}";
+		public ParserRule getRule() { return rule; }
+
+		//"NegativeExpression" "{" "inner" inner=Unary "}"
+		public Group getGroup() { return cGroup; }
+
+		//"NegativeExpression"
+		public Keyword getNegativeExpressionKeyword_0() { return cNegativeExpressionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"inner"
+		public Keyword getInnerKeyword_2() { return cInnerKeyword_2; }
+
+		//inner=Unary
+		public Assignment getInnerAssignment_3() { return cInnerAssignment_3; }
+
+		//Unary
+		public RuleCall getInnerUnaryParserRuleCall_3_0() { return cInnerUnaryParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class IfElseExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IfElseExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cIfElseExpressionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cIfExpressionKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cIfExpressionAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cIfExpressionBooleanExpressionParserRuleCall_3_0 = (RuleCall)cIfExpressionAssignment_3.eContents().get(0);
+		private final Keyword cElseExpressionKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cElseExpressionAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cElseExpressionBooleanExpressionParserRuleCall_5_0 = (RuleCall)cElseExpressionAssignment_5.eContents().get(0);
+		private final Keyword cConditionExpressionKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cConditionExpressionAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cConditionExpressionBooleanExpressionParserRuleCall_7_0 = (RuleCall)cConditionExpressionAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//IfElseExpression:
+		//
+		//	"IfElseExpression" "{" "ifExpression" ifExpression=BooleanExpression "elseExpression"
+		//
+		//	elseExpression=BooleanExpression "conditionExpression" conditionExpression=BooleanExpression "}";
+		public ParserRule getRule() { return rule; }
+
+		//"IfElseExpression" "{" "ifExpression" ifExpression=BooleanExpression "elseExpression" elseExpression=BooleanExpression
+		//
+		//"conditionExpression" conditionExpression=BooleanExpression "}"
+		public Group getGroup() { return cGroup; }
+
+		//"IfElseExpression"
+		public Keyword getIfElseExpressionKeyword_0() { return cIfElseExpressionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"ifExpression"
+		public Keyword getIfExpressionKeyword_2() { return cIfExpressionKeyword_2; }
+
+		//ifExpression=BooleanExpression
+		public Assignment getIfExpressionAssignment_3() { return cIfExpressionAssignment_3; }
+
+		//BooleanExpression
+		public RuleCall getIfExpressionBooleanExpressionParserRuleCall_3_0() { return cIfExpressionBooleanExpressionParserRuleCall_3_0; }
+
+		//"elseExpression"
+		public Keyword getElseExpressionKeyword_4() { return cElseExpressionKeyword_4; }
+
+		//elseExpression=BooleanExpression
+		public Assignment getElseExpressionAssignment_5() { return cElseExpressionAssignment_5; }
+
+		//BooleanExpression
+		public RuleCall getElseExpressionBooleanExpressionParserRuleCall_5_0() { return cElseExpressionBooleanExpressionParserRuleCall_5_0; }
+
+		//"conditionExpression"
+		public Keyword getConditionExpressionKeyword_6() { return cConditionExpressionKeyword_6; }
+
+		//conditionExpression=BooleanExpression
+		public Assignment getConditionExpressionAssignment_7() { return cConditionExpressionAssignment_7; }
+
+		//BooleanExpression
+		public RuleCall getConditionExpressionBooleanExpressionParserRuleCall_7_0() { return cConditionExpressionBooleanExpressionParserRuleCall_7_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class FunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Function");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFunctionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cIdKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cIdAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cIdEStringParserRuleCall_3_0 = (RuleCall)cIdAssignment_3.eContents().get(0);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cParametersKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
+		private final Assignment cParametersAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
+		private final RuleCall cParametersExpressionParserRuleCall_4_2_0 = (RuleCall)cParametersAssignment_4_2.eContents().get(0);
+		private final Group cGroup_4_3 = (Group)cGroup_4.eContents().get(3);
+		private final Keyword cCommaKeyword_4_3_0 = (Keyword)cGroup_4_3.eContents().get(0);
+		private final Assignment cParametersAssignment_4_3_1 = (Assignment)cGroup_4_3.eContents().get(1);
+		private final RuleCall cParametersExpressionParserRuleCall_4_3_1_0 = (RuleCall)cParametersAssignment_4_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4_4 = (Keyword)cGroup_4.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//Function:
+		//
+		//	"Function" "{" "id" id=EString ("parameters" "{" parameters+=Expression ("," parameters+=Expression)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"Function" "{" "id" id=EString ("parameters" "{" parameters+=Expression ("," parameters+=Expression)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"Function"
+		public Keyword getFunctionKeyword_0() { return cFunctionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"id"
+		public Keyword getIdKeyword_2() { return cIdKeyword_2; }
+
+		//id=EString
+		public Assignment getIdAssignment_3() { return cIdAssignment_3; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_3_0() { return cIdEStringParserRuleCall_3_0; }
+
+		//("parameters" "{" parameters+=Expression ("," parameters+=Expression)* "}")?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"parameters"
+		public Keyword getParametersKeyword_4_0() { return cParametersKeyword_4_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_4_1() { return cLeftCurlyBracketKeyword_4_1; }
+
+		//parameters+=Expression
+		public Assignment getParametersAssignment_4_2() { return cParametersAssignment_4_2; }
+
+		//Expression
+		public RuleCall getParametersExpressionParserRuleCall_4_2_0() { return cParametersExpressionParserRuleCall_4_2_0; }
+
+		//("," parameters+=Expression)*
+		public Group getGroup_4_3() { return cGroup_4_3; }
+
+		//","
+		public Keyword getCommaKeyword_4_3_0() { return cCommaKeyword_4_3_0; }
+
+		//parameters+=Expression
+		public Assignment getParametersAssignment_4_3_1() { return cParametersAssignment_4_3_1; }
+
+		//Expression
+		public RuleCall getParametersExpressionParserRuleCall_4_3_1_0() { return cParametersExpressionParserRuleCall_4_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4_4() { return cRightCurlyBracketKeyword_4_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class ParenthesisElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Parenthesis");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cParenthesisKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cInnerExpressionKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cInnerExpressionAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cInnerExpressionExpressionParserRuleCall_3_0 = (RuleCall)cInnerExpressionAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//Parenthesis:
+		//
+		//	"Parenthesis" "{" "innerExpression" innerExpression=Expression "}";
+		public ParserRule getRule() { return rule; }
+
+		//"Parenthesis" "{" "innerExpression" innerExpression=Expression "}"
+		public Group getGroup() { return cGroup; }
+
+		//"Parenthesis"
+		public Keyword getParenthesisKeyword_0() { return cParenthesisKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"innerExpression"
+		public Keyword getInnerExpressionKeyword_2() { return cInnerExpressionKeyword_2; }
+
+		//innerExpression=Expression
+		public Assignment getInnerExpressionAssignment_3() { return cInnerExpressionAssignment_3; }
+
+		//Expression
+		public RuleCall getInnerExpressionExpressionParserRuleCall_3_0() { return cInnerExpressionExpressionParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class Literal_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Literal_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLiteralAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cLiteralKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//Literal_Impl returns Literal:
+		//
+		//	{Literal} "Literal";
+		public ParserRule getRule() { return rule; }
+
+		//{Literal} "Literal"
+		public Group getGroup() { return cGroup; }
+
+		//{Literal}
+		public Action getLiteralAction_0() { return cLiteralAction_0; }
+
+		//"Literal"
+		public Keyword getLiteralKeyword_1() { return cLiteralKeyword_1; }
+	}
+
+	public class StringLiteralElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StringLiteral");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cStringLiteralKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cValueKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cValueEStringParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//StringLiteral:
+		//
+		//	"StringLiteral" "{" "value" value=EString "}";
+		public ParserRule getRule() { return rule; }
+
+		//"StringLiteral" "{" "value" value=EString "}"
+		public Group getGroup() { return cGroup; }
+
+		//"StringLiteral"
+		public Keyword getStringLiteralKeyword_0() { return cStringLiteralKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"value"
+		public Keyword getValueKeyword_2() { return cValueKeyword_2; }
+
+		//value=EString
+		public Assignment getValueAssignment_3() { return cValueAssignment_3; }
+
+		//EString
+		public RuleCall getValueEStringParserRuleCall_3_0() { return cValueEStringParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class BoolLiteralElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BoolLiteral");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cValueAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final Keyword cValueValueKeyword_0_0 = (Keyword)cValueAssignment_0.eContents().get(0);
+		private final Keyword cBoolLiteralKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//BoolLiteral:
+		//
+		//	value?="value" "BoolLiteral";
+		public ParserRule getRule() { return rule; }
+
+		//value?="value" "BoolLiteral"
+		public Group getGroup() { return cGroup; }
+
+		//value?="value"
+		public Assignment getValueAssignment_0() { return cValueAssignment_0; }
+
+		//"value"
+		public Keyword getValueValueKeyword_0_0() { return cValueValueKeyword_0_0; }
+
+		//"BoolLiteral"
+		public Keyword getBoolLiteralKeyword_1() { return cBoolLiteralKeyword_1; }
+	}
+
+	public class IntLiteralElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "IntLiteral");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cIntLiteralKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cValueKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cValueEBigIntegerParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//IntLiteral:
+		//
+		//	"IntLiteral" "{" "value" value=EBigInteger "}";
+		public ParserRule getRule() { return rule; }
+
+		//"IntLiteral" "{" "value" value=EBigInteger "}"
+		public Group getGroup() { return cGroup; }
+
+		//"IntLiteral"
+		public Keyword getIntLiteralKeyword_0() { return cIntLiteralKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"value"
+		public Keyword getValueKeyword_2() { return cValueKeyword_2; }
+
+		//value=EBigInteger
+		public Assignment getValueAssignment_3() { return cValueAssignment_3; }
+
+		//EBigInteger
+		public RuleCall getValueEBigIntegerParserRuleCall_3_0() { return cValueEBigIntegerParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class DoubleLiteralElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DoubleLiteral");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDoubleLiteralKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cValueKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cValueEBigDecimalParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//DoubleLiteral:
+		//
+		//	"DoubleLiteral" "{" "value" value=EBigDecimal "}";
+		public ParserRule getRule() { return rule; }
+
+		//"DoubleLiteral" "{" "value" value=EBigDecimal "}"
+		public Group getGroup() { return cGroup; }
+
+		//"DoubleLiteral"
+		public Keyword getDoubleLiteralKeyword_0() { return cDoubleLiteralKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"value"
+		public Keyword getValueKeyword_2() { return cValueKeyword_2; }
+
+		//value=EBigDecimal
+		public Assignment getValueAssignment_3() { return cValueAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getValueEBigDecimalParserRuleCall_3_0() { return cValueEBigDecimalParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class FormalParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FormalParameter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cFormalParameterAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cFormalParameterKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameEStringParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		
+		//FormalParameter:
+		//
+		//	{FormalParameter} "FormalParameter" name=EString;
+		public ParserRule getRule() { return rule; }
+
+		//{FormalParameter} "FormalParameter" name=EString
+		public Group getGroup() { return cGroup; }
+
+		//{FormalParameter}
+		public Action getFormalParameterAction_0() { return cFormalParameterAction_0; }
+
+		//"FormalParameter"
+		public Keyword getFormalParameterKeyword_1() { return cFormalParameterKeyword_1; }
+
+		//name=EString
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_2_0() { return cNameEStringParserRuleCall_2_0; }
+	}
+
+	public class ProbabilityMassFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProbabilityMassFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cProbabilityMassFunctionAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cProbabilityMassFunctionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSampleKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cSampleAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cSampleSampleParserRuleCall_3_2_0 = (RuleCall)cSampleAssignment_3_2.eContents().get(0);
+		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
+		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
+		private final Assignment cSampleAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
+		private final RuleCall cSampleSampleParserRuleCall_3_3_1_0 = (RuleCall)cSampleAssignment_3_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ProbabilityMassFunction:
+		//
+		//	{ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{ProbabilityMassFunction}
+		public Action getProbabilityMassFunctionAction_0() { return cProbabilityMassFunctionAction_0; }
+
+		//"ProbabilityMassFunction"
+		public Keyword getProbabilityMassFunctionKeyword_1() { return cProbabilityMassFunctionKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("sample" "{" sample+=Sample ("," sample+=Sample)* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"sample"
+		public Keyword getSampleKeyword_3_0() { return cSampleKeyword_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
+
+		//sample+=Sample
+		public Assignment getSampleAssignment_3_2() { return cSampleAssignment_3_2; }
+
+		//Sample
+		public RuleCall getSampleSampleParserRuleCall_3_2_0() { return cSampleSampleParserRuleCall_3_2_0; }
+
+		//("," sample+=Sample)*
+		public Group getGroup_3_3() { return cGroup_3_3; }
+
+		//","
+		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }
+
+		//sample+=Sample
+		public Assignment getSampleAssignment_3_3_1() { return cSampleAssignment_3_3_1; }
+
+		//Sample
+		public RuleCall getSampleSampleParserRuleCall_3_3_1_0() { return cSampleSampleParserRuleCall_3_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class BoxedPDFElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BoxedPDF");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cBoxedPDFAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cBoxedPDFKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSampleKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cSampleAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cSampleContinuousSampleParserRuleCall_3_2_0 = (RuleCall)cSampleAssignment_3_2.eContents().get(0);
+		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
+		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
+		private final Assignment cSampleAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
+		private final RuleCall cSampleContinuousSampleParserRuleCall_3_3_1_0 = (RuleCall)cSampleAssignment_3_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//BoxedPDF:
+		//
+		//	{BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{BoxedPDF}
+		public Action getBoxedPDFAction_0() { return cBoxedPDFAction_0; }
+
+		//"BoxedPDF"
+		public Keyword getBoxedPDFKeyword_1() { return cBoxedPDFKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"sample"
+		public Keyword getSampleKeyword_3_0() { return cSampleKeyword_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
+
+		//sample+=ContinuousSample
+		public Assignment getSampleAssignment_3_2() { return cSampleAssignment_3_2; }
+
+		//ContinuousSample
+		public RuleCall getSampleContinuousSampleParserRuleCall_3_2_0() { return cSampleContinuousSampleParserRuleCall_3_2_0; }
+
+		//("," sample+=ContinuousSample)*
+		public Group getGroup_3_3() { return cGroup_3_3; }
+
+		//","
+		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }
+
+		//sample+=ContinuousSample
+		public Assignment getSampleAssignment_3_3_1() { return cSampleAssignment_3_3_1; }
+
+		//ContinuousSample
+		public RuleCall getSampleContinuousSampleParserRuleCall_3_3_1_0() { return cSampleContinuousSampleParserRuleCall_3_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class NormalDistributionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NormalDistribution");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cNormalDistributionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cMuKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cMuAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMuEBigDecimalParserRuleCall_3_0 = (RuleCall)cMuAssignment_3.eContents().get(0);
+		private final Keyword cSigmaKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cSigmaAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cSigmaEBigDecimalParserRuleCall_5_0 = (RuleCall)cSigmaAssignment_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//NormalDistribution:
+		//
+		//	"NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}";
+		public ParserRule getRule() { return rule; }
+
+		//"NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}"
+		public Group getGroup() { return cGroup; }
+
+		//"NormalDistribution"
+		public Keyword getNormalDistributionKeyword_0() { return cNormalDistributionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"mu"
+		public Keyword getMuKeyword_2() { return cMuKeyword_2; }
+
+		//mu=EBigDecimal
+		public Assignment getMuAssignment_3() { return cMuAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getMuEBigDecimalParserRuleCall_3_0() { return cMuEBigDecimalParserRuleCall_3_0; }
+
+		//"sigma"
+		public Keyword getSigmaKeyword_4() { return cSigmaKeyword_4; }
+
+		//sigma=EBigDecimal
+		public Assignment getSigmaAssignment_5() { return cSigmaAssignment_5; }
+
+		//EBigDecimal
+		public RuleCall getSigmaEBigDecimalParserRuleCall_5_0() { return cSigmaEBigDecimalParserRuleCall_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class ExponentialDistributionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExponentialDistribution");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cExponentialDistributionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cRateKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cRateAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cRateEBigDecimalParserRuleCall_3_0 = (RuleCall)cRateAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ExponentialDistribution:
+		//
+		//	"ExponentialDistribution" "{" "rate" rate=EBigDecimal "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ExponentialDistribution" "{" "rate" rate=EBigDecimal "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ExponentialDistribution"
+		public Keyword getExponentialDistributionKeyword_0() { return cExponentialDistributionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"rate"
+		public Keyword getRateKeyword_2() { return cRateKeyword_2; }
+
+		//rate=EBigDecimal
+		public Assignment getRateAssignment_3() { return cRateAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getRateEBigDecimalParserRuleCall_3_0() { return cRateEBigDecimalParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class TermOperationsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TermOperations");
+		private final Keyword cTermOperationsKeyword = (Keyword)rule.eContents().get(1);
+		
+		/// * TODO: implement this rule and an appropriate IValueConverter * / TermOperations:
+		//
+		//	"TermOperations";
+		public ParserRule getRule() { return rule; }
+
+		//"TermOperations"
+		public Keyword getTermOperationsKeyword() { return cTermOperationsKeyword; }
+	}
+
+	public class ProductOperationsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProductOperations");
+		private final Keyword cProductOperationsKeyword = (Keyword)rule.eContents().get(1);
+		
+		/// * TODO: implement this rule and an appropriate IValueConverter * / ProductOperations:
+		//
+		//	"ProductOperations";
+		public ParserRule getRule() { return rule; }
+
+		//"ProductOperations"
+		public Keyword getProductOperationsKeyword() { return cProductOperationsKeyword; }
+	}
+
+	public class CompareOperationsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CompareOperations");
+		private final Keyword cCompareOperationsKeyword = (Keyword)rule.eContents().get(1);
+		
+		/// * TODO: implement this rule and an appropriate IValueConverter * / CompareOperations:
+		//
+		//	"CompareOperations";
+		public ParserRule getRule() { return rule; }
+
+		//"CompareOperations"
+		public Keyword getCompareOperationsKeyword() { return cCompareOperationsKeyword; }
+	}
+
+	public class BooleanOperationsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BooleanOperations");
+		private final Keyword cBooleanOperationsKeyword = (Keyword)rule.eContents().get(1);
+		
+		/// * TODO: implement this rule and an appropriate IValueConverter * / BooleanOperations:
+		//
+		//	"BooleanOperations";
+		public ParserRule getRule() { return rule; }
+
+		//"BooleanOperations"
+		public Keyword getBooleanOperationsKeyword() { return cBooleanOperationsKeyword; }
+	}
+
+	public class EBooleanElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EBoolean");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final Keyword cTrueKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
+		private final Keyword cFalseKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
+		
+		//EBoolean returns ecore::EBoolean:
+		//
+		//	"true" | "false";
+		public ParserRule getRule() { return rule; }
+
+		//"true" | "false"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//"true"
+		public Keyword getTrueKeyword_0() { return cTrueKeyword_0; }
+
+		//"false"
+		public Keyword getFalseKeyword_1() { return cFalseKeyword_1; }
+	}
+
+	public class EBigIntegerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EBigInteger");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		//EBigInteger returns ecore::EBigInteger:
+		//
+		//	"-"? INT;
+		public ParserRule getRule() { return rule; }
+
+		//"-"? INT
+		public Group getGroup() { return cGroup; }
+
+		//"-"?
+		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
+	}
+
+	public class EBigDecimalElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EBigDecimal");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cINTTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final RuleCall cINTTerminalRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
+		
+		//EBigDecimal returns ecore::EBigDecimal:
+		//
+		//	INT? "." INT;
+		public ParserRule getRule() { return rule; }
+
+		//INT? "." INT
+		public Group getGroup() { return cGroup; }
+
+		//INT?
+		public RuleCall getINTTerminalRuleCall_0() { return cINTTerminalRuleCall_0; }
+
+		//"."
+		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_2() { return cINTTerminalRuleCall_2; }
+	}
+
+	public class SampleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Sample");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSampleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cProbabilityKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cProbabilityAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cProbabilityEBigDecimalParserRuleCall_3_0 = (RuleCall)cProbabilityAssignment_3.eContents().get(0);
+		private final Keyword cValueKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cValueAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cValueEObjectCrossReference_5_0 = (CrossReference)cValueAssignment_5.eContents().get(0);
+		private final RuleCall cValueEObjectEStringParserRuleCall_5_0_1 = (RuleCall)cValueEObjectCrossReference_5_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//Sample:
+		//
+		//	"Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"Sample"
+		public Keyword getSampleKeyword_0() { return cSampleKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"probability"
+		public Keyword getProbabilityKeyword_2() { return cProbabilityKeyword_2; }
+
+		//probability=EBigDecimal
+		public Assignment getProbabilityAssignment_3() { return cProbabilityAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getProbabilityEBigDecimalParserRuleCall_3_0() { return cProbabilityEBigDecimalParserRuleCall_3_0; }
+
+		//"value"
+		public Keyword getValueKeyword_4() { return cValueKeyword_4; }
+
+		//value=[ecore::EObject|EString]
+		public Assignment getValueAssignment_5() { return cValueAssignment_5; }
+
+		//[ecore::EObject|EString]
+		public CrossReference getValueEObjectCrossReference_5_0() { return cValueEObjectCrossReference_5_0; }
+
+		//EString
+		public RuleCall getValueEObjectEStringParserRuleCall_5_0_1() { return cValueEObjectEStringParserRuleCall_5_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class EObjectElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EObject");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cEObjectAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cEObjectKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//EObject returns ecore::EObject:
+		//
+		//	{ecore::EObject} "EObject";
+		public ParserRule getRule() { return rule; }
+
+		//{ecore::EObject} "EObject"
+		public Group getGroup() { return cGroup; }
+
+		//{ecore::EObject}
+		public Action getEObjectAction_0() { return cEObjectAction_0; }
+
+		//"EObject"
+		public Keyword getEObjectKeyword_1() { return cEObjectKeyword_1; }
+	}
+
+	public class ContinuousSampleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ContinuousSample");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cContinuousSampleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cValueKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cValueEBigDecimalParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
+		private final Keyword cProbabilityKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cProbabilityAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cProbabilityEBigDecimalParserRuleCall_5_0 = (RuleCall)cProbabilityAssignment_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//ContinuousSample:
+		//
+		//	"ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ContinuousSample"
+		public Keyword getContinuousSampleKeyword_0() { return cContinuousSampleKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"value"
+		public Keyword getValueKeyword_2() { return cValueKeyword_2; }
+
+		//value=EBigDecimal
+		public Assignment getValueAssignment_3() { return cValueAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getValueEBigDecimalParserRuleCall_3_0() { return cValueEBigDecimalParserRuleCall_3_0; }
+
+		//"probability"
+		public Keyword getProbabilityKeyword_4() { return cProbabilityKeyword_4; }
+
+		//probability=EBigDecimal
+		public Assignment getProbabilityAssignment_5() { return cProbabilityAssignment_5; }
+
+		//EBigDecimal
+		public RuleCall getProbabilityEBigDecimalParserRuleCall_5_0() { return cProbabilityEBigDecimalParserRuleCall_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+	
+	
+	private ExplicitFunctionElements pExplicitFunction;
+	private ExpressionElements pExpression;
+	private TermElements pTerm;
+	private ProductElements pProduct;
+	private PowerElements pPower;
+	private UnaryElements pUnary;
+	private BooleanExpressionElements pBooleanExpression;
+	private EStringElements pEString;
+	private TermExpressionElements pTermExpression;
+	private TermExpression2Elements pTermExpression2;
+	private ProductExpressionElements pProductExpression;
+	private ProductExpression2Elements pProductExpression2;
+	private CompareExpressionElements pCompareExpression;
+	private PowerExpressionElements pPowerExpression;
+	private BooleanOperatorExpressionElements pBooleanOperatorExpression;
+	private NotExpressionElements pNotExpression;
+	private NegativeExpressionElements pNegativeExpression;
+	private IfElseExpressionElements pIfElseExpression;
+	private FunctionElements pFunction;
+	private ParenthesisElements pParenthesis;
+	private Literal_ImplElements pLiteral_Impl;
+	private StringLiteralElements pStringLiteral;
+	private BoolLiteralElements pBoolLiteral;
+	private IntLiteralElements pIntLiteral;
+	private DoubleLiteralElements pDoubleLiteral;
+	private FormalParameterElements pFormalParameter;
+	private ProbabilityMassFunctionElements pProbabilityMassFunction;
+	private BoxedPDFElements pBoxedPDF;
+	private NormalDistributionElements pNormalDistribution;
+	private ExponentialDistributionElements pExponentialDistribution;
+	private TermOperationsElements pTermOperations;
+	private ProductOperationsElements pProductOperations;
+	private CompareOperationsElements pCompareOperations;
+	private BooleanOperationsElements pBooleanOperations;
+	private EBooleanElements pEBoolean;
+	private EBigIntegerElements pEBigInteger;
+	private EBigDecimalElements pEBigDecimal;
+	private SampleElements pSample;
+	private EObjectElements pEObject;
+	private ContinuousSampleElements pContinuousSample;
+	
+	private final Grammar grammar;
+
+	private TerminalsGrammarAccess gaTerminals;
+
+	@Inject
+	public MyDsl1GrammarAccess(GrammarProvider grammarProvider,
+		TerminalsGrammarAccess gaTerminals) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaTerminals = gaTerminals;
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.xtext.example.mydsl1.MyDsl1".equals(grammar.getName())) {
+				return grammar;
+			}
+			List<Grammar> grammars = grammar.getUsedGrammars();
+			if (!grammars.isEmpty()) {
+				grammar = grammars.iterator().next();
+			} else {
+				return null;
+			}
+		}
+		return grammar;
+	}
+	
+	
+	public Grammar getGrammar() {
+		return grammar;
+	}
+	
+
+	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
+		return gaTerminals;
+	}
+
+	
+	//ExplicitFunction:
+	//
+	//	{ExplicitFunction} "ExplicitFunction" "{" ("specification" specification=EString)? ("expression"
+	//
+	//	expression=Expression)? "}";
+	public ExplicitFunctionElements getExplicitFunctionAccess() {
+		return (pExplicitFunction != null) ? pExplicitFunction : (pExplicitFunction = new ExplicitFunctionElements());
+	}
+	
+	public ParserRule getExplicitFunctionRule() {
+		return getExplicitFunctionAccess().getRule();
+	}
+
+	//Expression:
+	//
+	//	TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression
+	//
+	//	| NegativeExpression | IfElseExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral |
+	//
+	//	IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+	//
+	//	ExponentialDistribution;
+	public ExpressionElements getExpressionAccess() {
+		return (pExpression != null) ? pExpression : (pExpression = new ExpressionElements());
+	}
+	
+	public ParserRule getExpressionRule() {
+		return getExpressionAccess().getRule();
+	}
+
+	//Term:
+	//
+	//	TermExpression | ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis |
+	//
+	//	Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction |
+	//
+	//	BoxedPDF | NormalDistribution | ExponentialDistribution;
+	public TermElements getTermAccess() {
+		return (pTerm != null) ? pTerm : (pTerm = new TermElements());
+	}
+	
+	public ParserRule getTermRule() {
+		return getTermAccess().getRule();
+	}
+
+	//Product:
+	//
+	//	ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl |
+	//
+	//	StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF |
+	//
+	//	NormalDistribution | ExponentialDistribution;
+	public ProductElements getProductAccess() {
+		return (pProduct != null) ? pProduct : (pProduct = new ProductElements());
+	}
+	
+	public ParserRule getProductRule() {
+		return getProductAccess().getRule();
+	}
+
+	//Power:
+	//
+	//	PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral |
+	//
+	//	BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution
+	//
+	//	| ExponentialDistribution;
+	public PowerElements getPowerAccess() {
+		return (pPower != null) ? pPower : (pPower = new PowerElements());
+	}
+	
+	public ParserRule getPowerRule() {
+		return getPowerAccess().getRule();
+	}
+
+	//Unary:
+	//
+	//	NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral
+	//
+	//	| DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution |
+	//
+	//	ExponentialDistribution;
+	public UnaryElements getUnaryAccess() {
+		return (pUnary != null) ? pUnary : (pUnary = new UnaryElements());
+	}
+	
+	public ParserRule getUnaryRule() {
+		return getUnaryAccess().getRule();
+	}
+
+	//BooleanExpression:
+	//
+	//	TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression
+	//
+	//	| NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral |
+	//
+	//	DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+	public BooleanExpressionElements getBooleanExpressionAccess() {
+		return (pBooleanExpression != null) ? pBooleanExpression : (pBooleanExpression = new BooleanExpressionElements());
+	}
+	
+	public ParserRule getBooleanExpressionRule() {
+		return getBooleanExpressionAccess().getRule();
+	}
+
+	//EString returns ecore::EString:
+	//
+	//	STRING | ID;
+	public EStringElements getEStringAccess() {
+		return (pEString != null) ? pEString : (pEString = new EStringElements());
+	}
+	
+	public ParserRule getEStringRule() {
+		return getEStringAccess().getRule();
+	}
+
+	//TermExpression:
+	//
+	//	"TermExpression" "{" TermExpression2 ({TermExpression.left=current} operation=TermOperations right=Product)* "}";
+	public TermExpressionElements getTermExpressionAccess() {
+		return (pTermExpression != null) ? pTermExpression : (pTermExpression = new TermExpressionElements());
+	}
+	
+	public ParserRule getTermExpressionRule() {
+		return getTermExpressionAccess().getRule();
+	}
+
+	//TermExpression2 returns TermExpression:
+	//
+	//	left=Term operation=TermOperations right=Product;
+	public TermExpression2Elements getTermExpression2Access() {
+		return (pTermExpression2 != null) ? pTermExpression2 : (pTermExpression2 = new TermExpression2Elements());
+	}
+	
+	public ParserRule getTermExpression2Rule() {
+		return getTermExpression2Access().getRule();
+	}
+
+	//ProductExpression:
+	//
+	//	"ProductExpression" "{" ProductExpression2 ({ProductExpression.left=current} operation=ProductOperations
+	//
+	//	right=Power)* "}";
+	public ProductExpressionElements getProductExpressionAccess() {
+		return (pProductExpression != null) ? pProductExpression : (pProductExpression = new ProductExpressionElements());
+	}
+	
+	public ParserRule getProductExpressionRule() {
+		return getProductExpressionAccess().getRule();
+	}
+
+	//ProductExpression2 returns ProductExpression:
+	//
+	//	left=Product operation=ProductOperations right=Power;
+	public ProductExpression2Elements getProductExpression2Access() {
+		return (pProductExpression2 != null) ? pProductExpression2 : (pProductExpression2 = new ProductExpression2Elements());
+	}
+	
+	public ParserRule getProductExpression2Rule() {
+		return getProductExpression2Access().getRule();
+	}
+
+	//CompareExpression:
+	//
+	//	"CompareExpression" "{" "operation" operation=CompareOperations "left" left=Term "right" right=Term "}";
+	public CompareExpressionElements getCompareExpressionAccess() {
+		return (pCompareExpression != null) ? pCompareExpression : (pCompareExpression = new CompareExpressionElements());
+	}
+	
+	public ParserRule getCompareExpressionRule() {
+		return getCompareExpressionAccess().getRule();
+	}
+
+	//PowerExpression:
+	//
+	//	"PowerExpression" "{" "base" base=Power "exponent" exponent=Unary "}";
+	public PowerExpressionElements getPowerExpressionAccess() {
+		return (pPowerExpression != null) ? pPowerExpression : (pPowerExpression = new PowerExpressionElements());
+	}
+	
+	public ParserRule getPowerExpressionRule() {
+		return getPowerExpressionAccess().getRule();
+	}
+
+	//BooleanOperatorExpression:
+	//
+	//	"BooleanOperatorExpression" "{" "operation" operation=BooleanOperations "left" left=BooleanExpression "right"
+	//
+	//	right=BooleanExpression "}";
+	public BooleanOperatorExpressionElements getBooleanOperatorExpressionAccess() {
+		return (pBooleanOperatorExpression != null) ? pBooleanOperatorExpression : (pBooleanOperatorExpression = new BooleanOperatorExpressionElements());
+	}
+	
+	public ParserRule getBooleanOperatorExpressionRule() {
+		return getBooleanOperatorExpressionAccess().getRule();
+	}
+
+	//NotExpression:
+	//
+	//	"NotExpression" "{" "inner" inner=Unary "}";
+	public NotExpressionElements getNotExpressionAccess() {
+		return (pNotExpression != null) ? pNotExpression : (pNotExpression = new NotExpressionElements());
+	}
+	
+	public ParserRule getNotExpressionRule() {
+		return getNotExpressionAccess().getRule();
+	}
+
+	//NegativeExpression:
+	//
+	//	"NegativeExpression" "{" "inner" inner=Unary "}";
+	public NegativeExpressionElements getNegativeExpressionAccess() {
+		return (pNegativeExpression != null) ? pNegativeExpression : (pNegativeExpression = new NegativeExpressionElements());
+	}
+	
+	public ParserRule getNegativeExpressionRule() {
+		return getNegativeExpressionAccess().getRule();
+	}
+
+	//IfElseExpression:
+	//
+	//	"IfElseExpression" "{" "ifExpression" ifExpression=BooleanExpression "elseExpression"
+	//
+	//	elseExpression=BooleanExpression "conditionExpression" conditionExpression=BooleanExpression "}";
+	public IfElseExpressionElements getIfElseExpressionAccess() {
+		return (pIfElseExpression != null) ? pIfElseExpression : (pIfElseExpression = new IfElseExpressionElements());
+	}
+	
+	public ParserRule getIfElseExpressionRule() {
+		return getIfElseExpressionAccess().getRule();
+	}
+
+	//Function:
+	//
+	//	"Function" "{" "id" id=EString ("parameters" "{" parameters+=Expression ("," parameters+=Expression)* "}")? "}";
+	public FunctionElements getFunctionAccess() {
+		return (pFunction != null) ? pFunction : (pFunction = new FunctionElements());
+	}
+	
+	public ParserRule getFunctionRule() {
+		return getFunctionAccess().getRule();
+	}
+
+	//Parenthesis:
+	//
+	//	"Parenthesis" "{" "innerExpression" innerExpression=Expression "}";
+	public ParenthesisElements getParenthesisAccess() {
+		return (pParenthesis != null) ? pParenthesis : (pParenthesis = new ParenthesisElements());
+	}
+	
+	public ParserRule getParenthesisRule() {
+		return getParenthesisAccess().getRule();
+	}
+
+	//Literal_Impl returns Literal:
+	//
+	//	{Literal} "Literal";
+	public Literal_ImplElements getLiteral_ImplAccess() {
+		return (pLiteral_Impl != null) ? pLiteral_Impl : (pLiteral_Impl = new Literal_ImplElements());
+	}
+	
+	public ParserRule getLiteral_ImplRule() {
+		return getLiteral_ImplAccess().getRule();
+	}
+
+	//StringLiteral:
+	//
+	//	"StringLiteral" "{" "value" value=EString "}";
+	public StringLiteralElements getStringLiteralAccess() {
+		return (pStringLiteral != null) ? pStringLiteral : (pStringLiteral = new StringLiteralElements());
+	}
+	
+	public ParserRule getStringLiteralRule() {
+		return getStringLiteralAccess().getRule();
+	}
+
+	//BoolLiteral:
+	//
+	//	value?="value" "BoolLiteral";
+	public BoolLiteralElements getBoolLiteralAccess() {
+		return (pBoolLiteral != null) ? pBoolLiteral : (pBoolLiteral = new BoolLiteralElements());
+	}
+	
+	public ParserRule getBoolLiteralRule() {
+		return getBoolLiteralAccess().getRule();
+	}
+
+	//IntLiteral:
+	//
+	//	"IntLiteral" "{" "value" value=EBigInteger "}";
+	public IntLiteralElements getIntLiteralAccess() {
+		return (pIntLiteral != null) ? pIntLiteral : (pIntLiteral = new IntLiteralElements());
+	}
+	
+	public ParserRule getIntLiteralRule() {
+		return getIntLiteralAccess().getRule();
+	}
+
+	//DoubleLiteral:
+	//
+	//	"DoubleLiteral" "{" "value" value=EBigDecimal "}";
+	public DoubleLiteralElements getDoubleLiteralAccess() {
+		return (pDoubleLiteral != null) ? pDoubleLiteral : (pDoubleLiteral = new DoubleLiteralElements());
+	}
+	
+	public ParserRule getDoubleLiteralRule() {
+		return getDoubleLiteralAccess().getRule();
+	}
+
+	//FormalParameter:
+	//
+	//	{FormalParameter} "FormalParameter" name=EString;
+	public FormalParameterElements getFormalParameterAccess() {
+		return (pFormalParameter != null) ? pFormalParameter : (pFormalParameter = new FormalParameterElements());
+	}
+	
+	public ParserRule getFormalParameterRule() {
+		return getFormalParameterAccess().getRule();
+	}
+
+	//ProbabilityMassFunction:
+	//
+	//	{ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)* "}")? "}";
+	public ProbabilityMassFunctionElements getProbabilityMassFunctionAccess() {
+		return (pProbabilityMassFunction != null) ? pProbabilityMassFunction : (pProbabilityMassFunction = new ProbabilityMassFunctionElements());
+	}
+	
+	public ParserRule getProbabilityMassFunctionRule() {
+		return getProbabilityMassFunctionAccess().getRule();
+	}
+
+	//BoxedPDF:
+	//
+	//	{BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}";
+	public BoxedPDFElements getBoxedPDFAccess() {
+		return (pBoxedPDF != null) ? pBoxedPDF : (pBoxedPDF = new BoxedPDFElements());
+	}
+	
+	public ParserRule getBoxedPDFRule() {
+		return getBoxedPDFAccess().getRule();
+	}
+
+	//NormalDistribution:
+	//
+	//	"NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}";
+	public NormalDistributionElements getNormalDistributionAccess() {
+		return (pNormalDistribution != null) ? pNormalDistribution : (pNormalDistribution = new NormalDistributionElements());
+	}
+	
+	public ParserRule getNormalDistributionRule() {
+		return getNormalDistributionAccess().getRule();
+	}
+
+	//ExponentialDistribution:
+	//
+	//	"ExponentialDistribution" "{" "rate" rate=EBigDecimal "}";
+	public ExponentialDistributionElements getExponentialDistributionAccess() {
+		return (pExponentialDistribution != null) ? pExponentialDistribution : (pExponentialDistribution = new ExponentialDistributionElements());
+	}
+	
+	public ParserRule getExponentialDistributionRule() {
+		return getExponentialDistributionAccess().getRule();
+	}
+
+	/// * TODO: implement this rule and an appropriate IValueConverter * / TermOperations:
+	//
+	//	"TermOperations";
+	public TermOperationsElements getTermOperationsAccess() {
+		return (pTermOperations != null) ? pTermOperations : (pTermOperations = new TermOperationsElements());
+	}
+	
+	public ParserRule getTermOperationsRule() {
+		return getTermOperationsAccess().getRule();
+	}
+
+	/// * TODO: implement this rule and an appropriate IValueConverter * / ProductOperations:
+	//
+	//	"ProductOperations";
+	public ProductOperationsElements getProductOperationsAccess() {
+		return (pProductOperations != null) ? pProductOperations : (pProductOperations = new ProductOperationsElements());
+	}
+	
+	public ParserRule getProductOperationsRule() {
+		return getProductOperationsAccess().getRule();
+	}
+
+	/// * TODO: implement this rule and an appropriate IValueConverter * / CompareOperations:
+	//
+	//	"CompareOperations";
+	public CompareOperationsElements getCompareOperationsAccess() {
+		return (pCompareOperations != null) ? pCompareOperations : (pCompareOperations = new CompareOperationsElements());
+	}
+	
+	public ParserRule getCompareOperationsRule() {
+		return getCompareOperationsAccess().getRule();
+	}
+
+	/// * TODO: implement this rule and an appropriate IValueConverter * / BooleanOperations:
+	//
+	//	"BooleanOperations";
+	public BooleanOperationsElements getBooleanOperationsAccess() {
+		return (pBooleanOperations != null) ? pBooleanOperations : (pBooleanOperations = new BooleanOperationsElements());
+	}
+	
+	public ParserRule getBooleanOperationsRule() {
+		return getBooleanOperationsAccess().getRule();
+	}
+
+	//EBoolean returns ecore::EBoolean:
+	//
+	//	"true" | "false";
+	public EBooleanElements getEBooleanAccess() {
+		return (pEBoolean != null) ? pEBoolean : (pEBoolean = new EBooleanElements());
+	}
+	
+	public ParserRule getEBooleanRule() {
+		return getEBooleanAccess().getRule();
+	}
+
+	//EBigInteger returns ecore::EBigInteger:
+	//
+	//	"-"? INT;
+	public EBigIntegerElements getEBigIntegerAccess() {
+		return (pEBigInteger != null) ? pEBigInteger : (pEBigInteger = new EBigIntegerElements());
+	}
+	
+	public ParserRule getEBigIntegerRule() {
+		return getEBigIntegerAccess().getRule();
+	}
+
+	//EBigDecimal returns ecore::EBigDecimal:
+	//
+	//	INT? "." INT;
+	public EBigDecimalElements getEBigDecimalAccess() {
+		return (pEBigDecimal != null) ? pEBigDecimal : (pEBigDecimal = new EBigDecimalElements());
+	}
+	
+	public ParserRule getEBigDecimalRule() {
+		return getEBigDecimalAccess().getRule();
+	}
+
+	//Sample:
+	//
+	//	"Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}";
+	public SampleElements getSampleAccess() {
+		return (pSample != null) ? pSample : (pSample = new SampleElements());
+	}
+	
+	public ParserRule getSampleRule() {
+		return getSampleAccess().getRule();
+	}
+
+	//EObject returns ecore::EObject:
+	//
+	//	{ecore::EObject} "EObject";
+	public EObjectElements getEObjectAccess() {
+		return (pEObject != null) ? pEObject : (pEObject = new EObjectElements());
+	}
+	
+	public ParserRule getEObjectRule() {
+		return getEObjectAccess().getRule();
+	}
+
+	//ContinuousSample:
+	//
+	//	"ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}";
+	public ContinuousSampleElements getContinuousSampleAccess() {
+		return (pContinuousSample != null) ? pContinuousSample : (pContinuousSample = new ContinuousSampleElements());
+	}
+	
+	public ParserRule getContinuousSampleRule() {
+		return getContinuousSampleAccess().getRule();
+	}
+
+	//terminal ID:
+	//
+	//	"^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaTerminals.getIDRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//
+	//	"0".."9"+;
+	public TerminalRule getINTRule() {
+		return gaTerminals.getINTRule();
+	} 
+
+	//terminal STRING:
+	//
+	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" |
+	//
+	//	"n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
+	public TerminalRule getSTRINGRule() {
+		return gaTerminals.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaTerminals.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaTerminals.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaTerminals.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaTerminals.getANY_OTHERRule();
+	} 
+}
diff --git a/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/validation/AbstractMyDsl1JavaValidator.java b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/validation/AbstractMyDsl1JavaValidator.java
new file mode 100644
index 00000000..2d248620
--- /dev/null
+++ b/org.xtext.example.mydsl1/src-gen/org/xtext/example/mydsl1/validation/AbstractMyDsl1JavaValidator.java
@@ -0,0 +1,19 @@
+package org.xtext.example.mydsl1.validation;
+ 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.AbstractDeclarativeValidator;
+
+public class AbstractMyDsl1JavaValidator extends AbstractDeclarativeValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.descartes-research.net/metamodel/functions/0.1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/emf/2002/Ecore"));
+		return result;
+	}
+
+}
diff --git a/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/GenerateMyDsl1.mwe2 b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/GenerateMyDsl1.mwe2
new file mode 100644
index 00000000..2d7cf2f9
--- /dev/null
+++ b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/GenerateMyDsl1.mwe2
@@ -0,0 +1,121 @@
+module org.xtext.example.mydsl1.MyDsl1
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+
+var grammarURI = "classpath:/org/xtext/example/mydsl1/MyDsl1.xtext"
+var file.extensions = "mydsl1"
+var projectName = "org.xtext.example.mydsl1"
+var runtimeProject = "../${projectName}"
+
+Workflow {
+	bean = StandaloneSetup {
+		scanClassPath  = true
+		platformUri = "${runtimeProject}/.."
+	registerGeneratedEPackage = "functions.FunctionsPackage"
+	registerGeneratedEPackage = "identifier.IdentifierPackage"
+	registerGeneratedEPackage = "core.CorePackage"
+	registerGeneratedEPackage = "servicebehavior.ServicebehaviorPackage"
+	registerGeneratedEPackage = "repository.RepositoryPackage"
+	registerGeneratedEPackage = "parameterdependencies.ParameterdependenciesPackage"
+	// registerGenModelFile = "platform:/resource/edu.kit.ipd.descartes.mm.applicationlevel/model/functions.genmodel"
+	
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}/src-gen"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.ui/src-gen"
+	}
+
+	component = Generator {
+		pathRtProject = runtimeProject
+		pathUiProject = "${runtimeProject}.ui"
+		projectNameRt = projectName
+		projectNameUi = "${projectName}.ui"
+		language = {
+			uri = grammarURI
+			fileExtensions = file.extensions
+
+			// Java API to access grammar elements (required by several other fragments)
+			fragment = grammarAccess.GrammarAccessFragment {}
+
+			// generates Java API for the generated EPackages
+			// fragment = ecore.EcoreGeneratorFragment {}
+
+			// the serialization component
+			fragment = parseTreeConstructor.ParseTreeConstructorFragment {}
+
+			// a custom ResourceFactory for use with EMF 
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = file.extensions
+			}
+
+			// the Antlr parser
+			fragment = parser.antlr.XtextAntlrGeneratorFragment {
+				options = {
+					classSplitting = true
+				}
+			}
+
+			// the Ecore2Xtext specific terminal converter
+			fragment = ecore2xtext.Ecore2XtextValueConverterServiceFragment {}
+
+			// java-based API for validation 
+			fragment = validation.JavaValidatorFragment {
+			// composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+			// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+			}
+
+			// scoping and exporting API
+			fragment = scoping.ImportURIScopingFragment {}
+			fragment = exporting.SimpleNamesFragment {}
+
+			// scoping and exporting API 
+
+			// fragment = scoping.ImportNamespacesScopingFragment {}
+			// fragment = exporting.QualifiedNamesFragment {}
+
+
+			// formatter API 
+			fragment = ecore2xtext.FormatterFragment {}
+
+			// labeling API 
+			fragment = labeling.LabelProviderFragment {}
+
+			// outline API 
+            fragment = outline.OutlineTreeProviderFragment {}
+            fragment = outline.QuickOutlineFragment {}
+
+			// java-based API for content assistance 
+			fragment = contentAssist.JavaBasedContentAssistFragment {}
+
+			// antlr parser generator tailored for content assist 
+			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
+				options = {
+					classSplitting = true
+				}
+			}
+
+			// provides a compare view
+            fragment = compare.CompareFragment {
+                fileExtensions = file.extensions
+            }
+
+			fragment = builder.BuilderIntegrationFragment {}
+
+			// project wizard (optional) 
+
+			// fragment = projectWizard.SimpleProjectWizardFragment {
+			//		generatorProjectName = "${projectName}.generator" 
+			//		modelFileExtension = file.extensions
+			// }
+
+			// quickfix API 
+			fragment = quickfix.QuickfixProviderFragment {}
+		}
+	}
+}
diff --git a/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1.xtext b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1.xtext
new file mode 100644
index 00000000..ada83ed1
--- /dev/null
+++ b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1.xtext
@@ -0,0 +1,224 @@
+// automatically generated by Xtext
+grammar org.xtext.example.mydsl1.MyDsl1 with org.eclipse.xtext.common.Terminals
+
+import "http://www.descartes-research.net/metamodel/functions/0.1" 
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+import "http://www.descartes-research.net/identifier/0.1" as identifier
+import "http://www.descartes-research.net/metamodel/core/0.1" as core
+import "http://www.descartes-research.net/metamodel/servicebehavior/0.1" as servicebehavior
+import "http://www.descartes-research.net/metamodel/repository/0.1" as repository
+import "http://www.descartes-research.net/metamodel/parameterdependencies/0.1" as parameterdependencies
+
+ExplicitFunction returns ExplicitFunction:
+	{ExplicitFunction}
+	'ExplicitFunction'
+	'{'
+		('specification' specification=EString)?
+		('expression' expression=Expression)?
+	'}';
+
+Expression returns Expression:
+	TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression | NegativeExpression | IfElseExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+
+Term returns Term:
+	TermExpression | ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+
+Product returns Product:
+	ProductExpression | PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+
+Power returns Power:
+	PowerExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+
+Unary returns Unary:
+	NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+
+BooleanExpression returns BooleanExpression:
+	TermExpression | ProductExpression | CompareExpression | PowerExpression | BooleanOperatorExpression | NotExpression | NegativeExpression | Function | Parenthesis | Literal_Impl | StringLiteral | BoolLiteral | IntLiteral | DoubleLiteral | FormalParameter | ProbabilityMassFunction | BoxedPDF | NormalDistribution | ExponentialDistribution;
+
+
+
+
+EString returns ecore::EString:
+	STRING | ID;
+
+TermExpression returns TermExpression:
+	'TermExpression' '{'
+		TermExpression2 ({TermExpression.left=current} 
+	operation=TermOperations
+ 	right=Product)*
+		'}'; 		
+		
+TermExpression2 returns TermExpression:
+		left=Term 
+		operation=TermOperations
+		right=Product;
+		
+ProductExpression returns ProductExpression:
+	'ProductExpression'
+	'{'
+	ProductExpression2 ({ProductExpression.left=current} 
+	operation=ProductOperations
+ 	right=Power)*
+	'}';
+
+ProductExpression2 returns ProductExpression:
+	left=Product
+	operation=ProductOperations
+	right=Power;
+
+
+CompareExpression returns CompareExpression:
+	'CompareExpression'
+	'{'
+		'operation' operation=CompareOperations
+		'left' left=Term
+		'right' right=Term
+	'}';
+
+PowerExpression returns PowerExpression:
+	'PowerExpression'
+	'{'
+		'base' base=Power
+		'exponent' exponent=Unary
+	'}';
+
+BooleanOperatorExpression returns BooleanOperatorExpression:
+	'BooleanOperatorExpression'
+	'{'
+		'operation' operation=BooleanOperations
+		'left' left=BooleanExpression
+		'right' right=BooleanExpression
+	'}';
+
+NotExpression returns NotExpression:
+	'NotExpression'
+	'{'
+		'inner' inner=Unary
+	'}';
+
+NegativeExpression returns NegativeExpression:
+	'NegativeExpression'
+	'{'
+		'inner' inner=Unary
+	'}';
+
+IfElseExpression returns IfElseExpression:
+	'IfElseExpression'
+	'{'
+		'ifExpression' ifExpression=BooleanExpression
+		'elseExpression' elseExpression=BooleanExpression
+		'conditionExpression' conditionExpression=BooleanExpression
+	'}';
+
+Function returns Function:
+	'Function'
+	'{'
+		'id' id=EString
+		('parameters' '{' parameters+=Expression ( "," parameters+=Expression)* '}' )?
+	'}';
+
+Parenthesis returns Parenthesis:
+	'Parenthesis'
+	'{'
+		'innerExpression' innerExpression=Expression
+	'}';
+
+Literal_Impl returns Literal:
+	{Literal}
+	'Literal'
+	;
+
+StringLiteral returns StringLiteral:
+	'StringLiteral'
+	'{'
+		'value' value=EString
+	'}';
+
+BoolLiteral returns BoolLiteral:
+	value?='value'
+	'BoolLiteral'
+	;
+
+IntLiteral returns IntLiteral:
+	'IntLiteral'
+	'{'
+		'value' value=EBigInteger
+	'}';
+
+DoubleLiteral returns DoubleLiteral:
+	'DoubleLiteral'
+	'{'
+		'value' value=EBigDecimal
+	'}';
+
+FormalParameter returns FormalParameter:
+	{FormalParameter}
+	'FormalParameter'
+	name=EString;
+
+ProbabilityMassFunction returns ProbabilityMassFunction:
+	{ProbabilityMassFunction}
+	'ProbabilityMassFunction'
+	'{'
+		('sample' '{' sample+=Sample ( "," sample+=Sample)* '}' )?
+	'}';
+
+BoxedPDF returns BoxedPDF:
+	{BoxedPDF}
+	'BoxedPDF'
+	'{'
+		('sample' '{' sample+=ContinuousSample ( "," sample+=ContinuousSample)* '}' )?
+	'}';
+
+NormalDistribution returns NormalDistribution:
+	'NormalDistribution'
+	'{'
+		'mu' mu=EBigDecimal
+		'sigma' sigma=EBigDecimal
+	'}';
+
+ExponentialDistribution returns ExponentialDistribution:
+	'ExponentialDistribution'
+	'{'
+		'rate' rate=EBigDecimal
+	'}';
+
+TermOperations returns TermOperations:
+	'TermOperations' /* TODO: implement this rule and an appropriate IValueConverter */;
+
+ProductOperations returns ProductOperations:
+	'ProductOperations' /* TODO: implement this rule and an appropriate IValueConverter */;
+
+CompareOperations returns CompareOperations:
+	'CompareOperations' /* TODO: implement this rule and an appropriate IValueConverter */;
+
+BooleanOperations returns BooleanOperations:
+	'BooleanOperations' /* TODO: implement this rule and an appropriate IValueConverter */;
+
+EBoolean returns ecore::EBoolean:
+	'true' | 'false';
+
+EBigInteger returns ecore::EBigInteger:
+	'-'? INT;
+
+EBigDecimal returns ecore::EBigDecimal:
+	INT? '.' INT;
+
+Sample returns Sample:
+	'Sample'
+	'{'
+		'probability' probability=EBigDecimal
+		'value' value=[ecore::EObject|EString]
+	'}';
+
+EObject returns ecore::EObject:
+	{ecore::EObject}
+	'EObject'
+	;
+
+ContinuousSample returns ContinuousSample:
+	'ContinuousSample'
+	'{'
+		'value' value=EBigDecimal
+		'probability' probability=EBigDecimal
+	'}';
diff --git a/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1RuntimeModule.java b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1RuntimeModule.java
new file mode 100644
index 00000000..0a96d932
--- /dev/null
+++ b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1RuntimeModule.java
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl1;
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class MyDsl1RuntimeModule extends org.xtext.example.mydsl1.AbstractMyDsl1RuntimeModule {
+
+}
diff --git a/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1StandaloneSetup.java b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1StandaloneSetup.java
new file mode 100644
index 00000000..e83a07d0
--- /dev/null
+++ b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/MyDsl1StandaloneSetup.java
@@ -0,0 +1,14 @@
+
+package org.xtext.example.mydsl1;
+
+/**
+ * Initialization support for running Xtext languages 
+ * without equinox extension registry
+ */
+public class MyDsl1StandaloneSetup extends MyDsl1StandaloneSetupGenerated{
+
+	public static void doSetup() {
+		new MyDsl1StandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/formatting/MyDsl1Formatter.java b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/formatting/MyDsl1Formatter.java
new file mode 100644
index 00000000..d4b360a3
--- /dev/null
+++ b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/formatting/MyDsl1Formatter.java
@@ -0,0 +1,39 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl1.formatting;
+
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.util.Pair;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it 
+ * 
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+public class MyDsl1Formatter extends AbstractDeclarativeFormatter {
+	
+	@Override
+	protected void configureFormatting(FormattingConfig c) {
+		org.xtext.example.mydsl1.services.MyDsl1GrammarAccess f = (org.xtext.example.mydsl1.services.MyDsl1GrammarAccess) getGrammarAccess();
+		for(Pair<Keyword, Keyword> pair: f.findKeywordPairs("{", "}")) {
+			c.setIndentation(pair.getFirst(), pair.getSecond());
+			c.setLinewrap(1).after(pair.getFirst());
+			c.setLinewrap(1).before(pair.getSecond());
+			c.setLinewrap(1).after(pair.getSecond());
+		}
+		for(Keyword comma: f.findKeywords(",")) {
+			c.setNoLinewrap().before(comma);
+			c.setNoSpace().before(comma);
+			c.setLinewrap().after(comma);
+		}
+		c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
+		c.setLinewrap(0, 1, 1).after(f.getML_COMMENTRule());
+	}
+}
diff --git a/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/scoping/MyDsl1ScopeProvider.java b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/scoping/MyDsl1ScopeProvider.java
new file mode 100644
index 00000000..8e4af41d
--- /dev/null
+++ b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/scoping/MyDsl1ScopeProvider.java
@@ -0,0 +1,17 @@
+/*
+ * generated by Xtext
+ */
+package org.xtext.example.mydsl1.scoping;
+
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * on how and when to use it 
+ *
+ */
+public class MyDsl1ScopeProvider extends AbstractDeclarativeScopeProvider {
+
+}
diff --git a/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/validation/MyDsl1JavaValidator.java b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/validation/MyDsl1JavaValidator.java
new file mode 100644
index 00000000..0b3db559
--- /dev/null
+++ b/org.xtext.example.mydsl1/src/org/xtext/example/mydsl1/validation/MyDsl1JavaValidator.java
@@ -0,0 +1,13 @@
+package org.xtext.example.mydsl1.validation;
+ 
+
+public class MyDsl1JavaValidator extends AbstractMyDsl1JavaValidator {
+
+//	@Check
+//	public void checkGreetingStartsWithCapital(Greeting greeting) {
+//		if (!Character.isUpperCase(greeting.getName().charAt(0))) {
+//			warning("Name should start with a capital", MyDslPackage.Literals.GREETING__NAME);
+//		}
+//	}
+
+}
-- 
GitLab