All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openxma.dsl.dom.parser.antlr.internal.InternalDomDslParser.g Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
/*
* generated by Xtext
*/
parser grammar InternalDomDslParser;

options {
	tokenVocab=InternalDomDslLexer;
	superClass=AbstractInternalAntlrParser;
	backtrack=true;
	 memoize=true;
	
}

@header {
package org.openxma.dsl.dom.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.openxma.dsl.dom.services.DomDslGrammarAccess;

}

@members {

/*
  This grammar contains a lot of empty actions to work around a bug in ANTLR.
  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
*/
 

	private DomDslGrammarAccess grammarAccess;
	 	
	public InternalDomDslParser(TokenStream input, DomDslGrammarAccess grammarAccess) {
		this(input);
		this.grammarAccess = grammarAccess;
		registerRules(grammarAccess.getGrammar());
	}
	
	@Override
	protected String getFirstRuleName() {
		return "Model";	
	} 
	   	   	
	@Override
	protected DomDslGrammarAccess 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(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getModelAccess().getModelAction_0(),
            $current);
    }
)(
	otherlv_1=KEYWORD_146
    {
    	newLeafNode(otherlv_1, grammarAccess.getModelAccess().getNamespaceKeyword_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getModelAccess().getNameQualifiedNameParserRuleCall_1_1_0()); 
	    }
		lv_name_2_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getModelRule());
	        }
       		set(
       			$current, 
       			"name",
        		lv_name_2_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
))?(
(
		{ 
	        newCompositeNode(grammarAccess.getModelAccess().getImportsImportParserRuleCall_2_0()); 
	    }
		lv_imports_3_0=ruleImport		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getModelRule());
	        }
       		add(
       			$current, 
       			"imports",
        		lv_imports_3_0, 
        		"Import");
	        afterParserOrEnumRuleCall();
	    }

)
)*(
(
		{ 
	        newCompositeNode(grammarAccess.getModelAccess().getElementsModelElementParserRuleCall_3_0()); 
	    }
		lv_elements_4_0=ruleModelElement		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getModelRule());
	        }
       		add(
       			$current, 
       			"elements",
        		lv_elements_4_0, 
        		"ModelElement");
	        afterParserOrEnumRuleCall();
	    }

)
)*)
;





// Entry rule entryRuleModelElement
entryRuleModelElement returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getModelElementRule()); }
	 iv_ruleModelElement=ruleModelElement 
	 { $current=$iv_ruleModelElement.current; } 
	 EOF 
;

// Rule ModelElement
ruleModelElement returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getModelElementAccess().getApplicationSessionParserRuleCall_0()); 
    }
    this_ApplicationSession_0=ruleApplicationSession
    {
        $current = $this_ApplicationSession_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getModelElementAccess().getServiceParserRuleCall_1()); 
    }
    this_Service_1=ruleService
    {
        $current = $this_Service_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getModelElementAccess().getComplexTypeParserRuleCall_2()); 
    }
    this_ComplexType_2=ruleComplexType
    {
        $current = $this_ComplexType_2.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getModelElementAccess().getDaoParserRuleCall_3()); 
    }
    this_Dao_3=ruleDao
    {
        $current = $this_Dao_3.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getModelElementAccess().getMapperParserRuleCall_4()); 
    }
    this_Mapper_4=ruleMapper
    {
        $current = $this_Mapper_4.current;
        afterParserOrEnumRuleCall();
    }
)
;







// Entry rule entryRuleComplexType
entryRuleComplexType returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getComplexTypeRule()); }
	 iv_ruleComplexType=ruleComplexType 
	 { $current=$iv_ruleComplexType.current; } 
	 EOF 
;

// Rule ComplexType
ruleComplexType returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getComplexTypeAccess().getEntityParserRuleCall_0()); 
    }
    this_Entity_0=ruleEntity
    {
        $current = $this_Entity_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getComplexTypeAccess().getDataViewParserRuleCall_1()); 
    }
    this_DataView_1=ruleDataView
    {
        $current = $this_DataView_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getComplexTypeAccess().getValueObjectParserRuleCall_2()); 
    }
    this_ValueObject_2=ruleValueObject
    {
        $current = $this_ValueObject_2.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleService
entryRuleService returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getServiceRule()); }
	 iv_ruleService=ruleService 
	 { $current=$iv_ruleService.current; } 
	 EOF 
;

// Rule Service
ruleService returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_132
    {
    	newLeafNode(otherlv_0, grammarAccess.getServiceAccess().getServiceKeyword_0());
    }
(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getServiceAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getServiceRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)(
	otherlv_2=KEYWORD_77
    {
    	newLeafNode(otherlv_2, grammarAccess.getServiceAccess().getUsesKeyword_2_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getServiceRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getServiceAccess().getDependenciesDependantCrossReference_2_1_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_4=KEYWORD_6
    {
    	newLeafNode(otherlv_4, grammarAccess.getServiceAccess().getCommaKeyword_2_2_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getServiceRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getServiceAccess().getDependenciesDependantCrossReference_2_2_1_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
))*)?
	otherlv_6=KEYWORD_16
    {
    	newLeafNode(otherlv_6, grammarAccess.getServiceAccess().getLeftCurlyBracketKeyword_3());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getServiceAccess().getOperationsOperationParserRuleCall_4_0_0()); 
	    }
		lv_operations_7_0=ruleOperation		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getServiceRule());
	        }
       		add(
       			$current, 
       			"operations",
        		lv_operations_7_0, 
        		"Operation");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getServiceAccess().getDelegateOperationsDelegateOperationParserRuleCall_4_1_0()); 
	    }
		lv_delegateOperations_8_0=ruleDelegateOperation		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getServiceRule());
	        }
       		add(
       			$current, 
       			"delegateOperations",
        		lv_delegateOperations_8_0, 
        		"DelegateOperation");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_9=KEYWORD_17
    {
    	newLeafNode(otherlv_9, grammarAccess.getServiceAccess().getRightCurlyBracketKeyword_5());
    }
)
;







// Entry rule entryRuleProperty
entryRuleProperty returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getPropertyRule()); }
	 iv_ruleProperty=ruleProperty 
	 { $current=$iv_ruleProperty.current; } 
	 EOF 
;

// Rule Property
ruleProperty returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_139
    {
    	newLeafNode(otherlv_0, grammarAccess.getPropertyAccess().getPropertyKeyword_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getPropertyAccess().getTypeSimpleTypeCrossReference_1_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_name_2_0=RULE_ID
		{
			newLeafNode(lv_name_2_0, grammarAccess.getPropertyAccess().getNameIDTerminalRuleCall_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_2_0, 
        		"ID");
	    }

)
)(
	otherlv_3=KEYWORD_12
    {
    	newLeafNode(otherlv_3, grammarAccess.getPropertyAccess().getEqualsSignKeyword_3_0());
    }
(
(
		lv_defaultValue_4_0=RULE_STRING
		{
			newLeafNode(lv_defaultValue_4_0, grammarAccess.getPropertyAccess().getDefaultValueSTRINGTerminalRuleCall_3_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"defaultValue",
        		lv_defaultValue_4_0, 
        		"STRING");
	    }

)
))?)
;





// Entry rule entryRuleOperation
entryRuleOperation returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getOperationRule()); }
	 iv_ruleOperation=ruleOperation 
	 { $current=$iv_ruleOperation.current; } 
	 EOF 
;

// Rule Operation
ruleOperation returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_147
    {
    	newLeafNode(otherlv_0, grammarAccess.getOperationAccess().getOperationKeyword_0());
    }
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getOperationRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getOperationAccess().getTypeTypeCrossReference_1_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_many_2_0=
	KEYWORD_26
    {
        newLeafNode(lv_many_2_0, grammarAccess.getOperationAccess().getManyLeftSquareBracketRightSquareBracketKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getOperationRule());
	        }
       		setWithLastConsumed($current, "many", true, "[]");
	    }

)
)?)?(
(
		lv_name_3_0=RULE_ID
		{
			newLeafNode(lv_name_3_0, grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getOperationRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_3_0, 
        		"ID");
	    }

)
)
	otherlv_4=KEYWORD_2
    {
    	newLeafNode(otherlv_4, grammarAccess.getOperationAccess().getLeftParenthesisKeyword_3());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getOperationAccess().getParametersParameterParserRuleCall_4_0_0()); 
	    }
		lv_parameters_5_0=ruleParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getOperationRule());
	        }
       		add(
       			$current, 
       			"parameters",
        		lv_parameters_5_0, 
        		"Parameter");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_6=KEYWORD_6
    {
    	newLeafNode(otherlv_6, grammarAccess.getOperationAccess().getCommaKeyword_4_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getOperationAccess().getParametersParameterParserRuleCall_4_1_1_0()); 
	    }
		lv_parameters_7_0=ruleParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getOperationRule());
	        }
       		add(
       			$current, 
       			"parameters",
        		lv_parameters_7_0, 
        		"Parameter");
	        afterParserOrEnumRuleCall();
	    }

)
))*)?
	otherlv_8=KEYWORD_3
    {
    	newLeafNode(otherlv_8, grammarAccess.getOperationAccess().getRightParenthesisKeyword_5());
    }
(
	otherlv_9=KEYWORD_12
    {
    	newLeafNode(otherlv_9, grammarAccess.getOperationAccess().getEqualsSignKeyword_6_0());
    }
(
(
		lv_expression_10_0=RULE_STRING
		{
			newLeafNode(lv_expression_10_0, grammarAccess.getOperationAccess().getExpressionSTRINGTerminalRuleCall_6_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getOperationRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"expression",
        		lv_expression_10_0, 
        		"STRING");
	    }

)
))?)
;





// Entry rule entryRuleParameter
entryRuleParameter returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getParameterRule()); }
	 iv_ruleParameter=ruleParameter 
	 { $current=$iv_ruleParameter.current; } 
	 EOF 
;

// Rule Parameter
ruleParameter returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getParameterAccess().getTypeTypeCrossReference_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_many_1_0=
	KEYWORD_26
    {
        newLeafNode(lv_many_1_0, grammarAccess.getParameterAccess().getManyLeftSquareBracketRightSquareBracketKeyword_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterRule());
	        }
       		setWithLastConsumed($current, "many", true, "[]");
	    }

)
)?(
(
		lv_name_2_0=RULE_ID
		{
			newLeafNode(lv_name_2_0, grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_2_0, 
        		"ID");
	    }

)
))
;





// Entry rule entryRuleDelegateOperation
entryRuleDelegateOperation returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getDelegateOperationRule()); }
	 iv_ruleDelegateOperation=ruleDelegateOperation 
	 { $current=$iv_ruleDelegateOperation.current; } 
	 EOF 
;

// Rule DelegateOperation
ruleDelegateOperation returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getDelegateOperationAccess().getDelegateOperationAction_0(),
            $current);
    }
)((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDelegateOperationRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getDelegateOperationAccess().getViewDataViewCrossReference_1_0_0()); 
	}

)
)(
(
		lv_many_2_0=
	KEYWORD_26
    {
        newLeafNode(lv_many_2_0, grammarAccess.getDelegateOperationAccess().getManyLeftSquareBracketRightSquareBracketKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDelegateOperationRule());
	        }
       		setWithLastConsumed($current, "many", true, "[]");
	    }

)
)?)?(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDelegateOperationRule());
	        }
        }
	otherlv_3=RULE_ID
	{
		newLeafNode(otherlv_3, grammarAccess.getDelegateOperationAccess().getRepositoryDaoCrossReference_2_0()); 
	}

)
)
	otherlv_4=KEYWORD_8
    {
    	newLeafNode(otherlv_4, grammarAccess.getDelegateOperationAccess().getFullStopKeyword_3());
    }
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDelegateOperationRule());
	        }
        }
	otherlv_5=RULE_ID
	{
		newLeafNode(otherlv_5, grammarAccess.getDelegateOperationAccess().getOperationDaoOperationCrossReference_4_0_0()); 
	}

)
)
    |((
(
		{ 
	        newCompositeNode(grammarAccess.getDelegateOperationAccess().getCrudOperationTypeCrudOperationTypeEnumRuleCall_4_1_0_0()); 
	    }
		lv_crudOperationType_6_0=ruleCrudOperationType		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDelegateOperationRule());
	        }
       		set(
       			$current, 
       			"crudOperationType",
        		lv_crudOperationType_6_0, 
        		"CrudOperationType");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_7=KEYWORD_2
    {
    	newLeafNode(otherlv_7, grammarAccess.getDelegateOperationAccess().getLeftParenthesisKeyword_4_1_1_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDelegateOperationRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getDelegateOperationAccess().getViewParameterDataViewCrossReference_4_1_1_1_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_9=KEYWORD_3
    {
    	newLeafNode(otherlv_9, grammarAccess.getDelegateOperationAccess().getRightParenthesisKeyword_4_1_1_2());
    }
)?))(
	otherlv_10=KEYWORD_27
    {
    	newLeafNode(otherlv_10, grammarAccess.getDelegateOperationAccess().getAsKeyword_5_0());
    }
(
(
		lv_name_11_0=RULE_ID
		{
			newLeafNode(lv_name_11_0, grammarAccess.getDelegateOperationAccess().getNameIDTerminalRuleCall_5_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDelegateOperationRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_11_0, 
        		"ID");
	    }

)
))?(
	otherlv_12=KEYWORD_104
    {
    	newLeafNode(otherlv_12, grammarAccess.getDelegateOperationAccess().getFilterKeyword_6_0());
    }

	otherlv_13=KEYWORD_12
    {
    	newLeafNode(otherlv_13, grammarAccess.getDelegateOperationAccess().getEqualsSignKeyword_6_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getDelegateOperationAccess().getFilterExpressionParserRuleCall_6_2_0()); 
	    }
		lv_filter_14_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDelegateOperationRule());
	        }
       		set(
       			$current, 
       			"filter",
        		lv_filter_14_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))?)
;







// Entry rule entryRuleValueObject
entryRuleValueObject returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getValueObjectRule()); }
	 iv_ruleValueObject=ruleValueObject 
	 { $current=$iv_ruleValueObject.current; } 
	 EOF 
;

// Rule ValueObject
ruleValueObject returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_170
    {
    	newLeafNode(otherlv_0, grammarAccess.getValueObjectAccess().getValueobjectKeyword_0());
    }
(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getValueObjectAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getValueObjectRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)
	otherlv_2=KEYWORD_16
    {
    	newLeafNode(otherlv_2, grammarAccess.getValueObjectAccess().getLeftCurlyBracketKeyword_2());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getValueObjectAccess().getAttributesAttributeParserRuleCall_3_0()); 
	    }
		lv_attributes_3_0=ruleAttribute		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getValueObjectRule());
	        }
       		add(
       			$current, 
       			"attributes",
        		lv_attributes_3_0, 
        		"Attribute");
	        afterParserOrEnumRuleCall();
	    }

)
)*
	otherlv_4=KEYWORD_17
    {
    	newLeafNode(otherlv_4, grammarAccess.getValueObjectAccess().getRightCurlyBracketKeyword_4());
    }
)
;





// Entry rule entryRuleDataView
entryRuleDataView returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getDataViewRule()); }
	 iv_ruleDataView=ruleDataView 
	 { $current=$iv_ruleDataView.current; } 
	 EOF 
;

// Rule DataView
ruleDataView returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_135
    {
    	newLeafNode(otherlv_0, grammarAccess.getDataViewAccess().getDataviewKeyword_0());
    }
(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getDataViewAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDataViewRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)(
	otherlv_2=KEYWORD_124
    {
    	newLeafNode(otherlv_2, grammarAccess.getDataViewAccess().getExtendsKeyword_2_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDataViewRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getDataViewAccess().getSuperTypeDataViewCrossReference_2_1_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
))?
	otherlv_4=KEYWORD_16
    {
    	newLeafNode(otherlv_4, grammarAccess.getDataViewAccess().getLeftCurlyBracketKeyword_3());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getDataViewAccess().getAttributesAttributeParserRuleCall_4_0_0()); 
	    }
		lv_attributes_5_0=ruleAttribute		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDataViewRule());
	        }
       		add(
       			$current, 
       			"attributes",
        		lv_attributes_5_0, 
        		"Attribute");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getDataViewAccess().getFeatureReferencesFeatureReferenceParserRuleCall_4_1_0()); 
	    }
		lv_featureReferences_6_0=ruleFeatureReference		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDataViewRule());
	        }
       		add(
       			$current, 
       			"featureReferences",
        		lv_featureReferences_6_0, 
        		"FeatureReference");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_7=KEYWORD_17
    {
    	newLeafNode(otherlv_7, grammarAccess.getDataViewAccess().getRightCurlyBracketKeyword_5());
    }
)
;





// Entry rule entryRuleFeatureReference
entryRuleFeatureReference returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getFeatureReferenceRule()); }
	 iv_ruleFeatureReference=ruleFeatureReference 
	 { $current=$iv_ruleFeatureReference.current; } 
	 EOF 
;

// Rule FeatureReference
ruleFeatureReference returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getFeatureReferenceRule());
	        }
        }
	otherlv_0=RULE_ID
	{
		newLeafNode(otherlv_0, grammarAccess.getFeatureReferenceAccess().getSourceEntityCrossReference_0_0()); 
	}

)
)((
	otherlv_1=KEYWORD_8
    {
    	newLeafNode(otherlv_1, grammarAccess.getFeatureReferenceAccess().getFullStopKeyword_1_0_0());
    }
(((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getFeatureReferenceRule());
	        }
        }
	otherlv_2=RULE_ID
	{
		newLeafNode(otherlv_2, grammarAccess.getFeatureReferenceAccess().getAttributeAttributeCrossReference_1_0_1_0_0_0()); 
	}

)
)(
	otherlv_3=KEYWORD_11
    {
    	newLeafNode(otherlv_3, grammarAccess.getFeatureReferenceAccess().getLessThanSignKeyword_1_0_1_0_1_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getFeatureReferenceRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getFeatureReferenceAccess().getViewDataViewCrossReference_1_0_1_0_1_1_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_5=KEYWORD_13
    {
    	newLeafNode(otherlv_5, grammarAccess.getFeatureReferenceAccess().getGreaterThanSignKeyword_1_0_1_0_1_2());
    }
)?(
	otherlv_6=KEYWORD_27
    {
    	newLeafNode(otherlv_6, grammarAccess.getFeatureReferenceAccess().getAsKeyword_1_0_1_0_2_0());
    }
(
(
		lv_name_7_0=RULE_ID
		{
			newLeafNode(lv_name_7_0, grammarAccess.getFeatureReferenceAccess().getNameIDTerminalRuleCall_1_0_1_0_2_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getFeatureReferenceRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_7_0, 
        		"ID");
	    }

)
))?)
    |(
(
		lv_all_8_0=
	KEYWORD_37
    {
        newLeafNode(lv_all_8_0, grammarAccess.getFeatureReferenceAccess().getAllAllKeyword_1_0_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getFeatureReferenceRule());
	        }
       		setWithLastConsumed($current, "all", true, "all");
	    }

)
)))
    |(
(
		lv_all_9_0=
	KEYWORD_20
    {
        newLeafNode(lv_all_9_0, grammarAccess.getFeatureReferenceAccess().getAllFullStopAsteriskKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getFeatureReferenceRule());
	        }
       		setWithLastConsumed($current, "all", true, ".*");
	    }

)
))(
(
		{ 
	        newCompositeNode(grammarAccess.getFeatureReferenceAccess().getPropertiesAttributePropertyParserRuleCall_2_0()); 
	    }
		lv_properties_10_0=ruleAttributeProperty		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getFeatureReferenceRule());
	        }
       		add(
       			$current, 
       			"properties",
        		lv_properties_10_0, 
        		"AttributeProperty");
	        afterParserOrEnumRuleCall();
	    }

)
)*)
;





// Entry rule entryRuleMapper
entryRuleMapper returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getMapperRule()); }
	 iv_ruleMapper=ruleMapper 
	 { $current=$iv_ruleMapper.current; } 
	 EOF 
;

// Rule Mapper
ruleMapper returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_110
    {
    	newLeafNode(otherlv_0, grammarAccess.getMapperAccess().getMapperKeyword_0());
    }
(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getMapperAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getMapperRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)
	otherlv_2=KEYWORD_68
    {
    	newLeafNode(otherlv_2, grammarAccess.getMapperAccess().getMapsKeyword_2());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getMapperRule());
	        }
        }
	otherlv_3=RULE_ID
	{
		newLeafNode(otherlv_3, grammarAccess.getMapperAccess().getLeftComplexTypeCrossReference_3_0()); 
	}

)
)((
(
		lv_biDirectional_4_0=
	KEYWORD_36
    {
        newLeafNode(lv_biDirectional_4_0, grammarAccess.getMapperAccess().getBiDirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_4_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getMapperRule());
	        }
       		setWithLastConsumed($current, "biDirectional", true, "<->");
	    }

)
)
    |(
(
		lv_toLeft_5_0=
	KEYWORD_21
    {
        newLeafNode(lv_toLeft_5_0, grammarAccess.getMapperAccess().getToLeftLessThanSignHyphenMinusKeyword_4_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getMapperRule());
	        }
       		setWithLastConsumed($current, "toLeft", true, "<-");
	    }

)
)
    |(
(
		lv_toRight_6_0=
	KEYWORD_19
    {
        newLeafNode(lv_toRight_6_0, grammarAccess.getMapperAccess().getToRightHyphenMinusGreaterThanSignKeyword_4_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getMapperRule());
	        }
       		setWithLastConsumed($current, "toRight", true, "->");
	    }

)
))(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getMapperRule());
	        }
        }
	otherlv_7=RULE_ID
	{
		newLeafNode(otherlv_7, grammarAccess.getMapperAccess().getRightComplexTypeCrossReference_5_0()); 
	}

)
)
	otherlv_8=KEYWORD_16
    {
    	newLeafNode(otherlv_8, grammarAccess.getMapperAccess().getLeftCurlyBracketKeyword_6());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getMapperAccess().getPropertyMappingsPropertyMappingParserRuleCall_7_0()); 
	    }
		lv_propertyMappings_9_0=rulePropertyMapping		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getMapperRule());
	        }
       		add(
       			$current, 
       			"propertyMappings",
        		lv_propertyMappings_9_0, 
        		"PropertyMapping");
	        afterParserOrEnumRuleCall();
	    }

)
)*
	otherlv_10=KEYWORD_17
    {
    	newLeafNode(otherlv_10, grammarAccess.getMapperAccess().getRightCurlyBracketKeyword_8());
    }
)
;





// Entry rule entryRulePropertyMapping
entryRulePropertyMapping returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getPropertyMappingRule()); }
	 iv_rulePropertyMapping=rulePropertyMapping 
	 { $current=$iv_rulePropertyMapping.current; } 
	 EOF 
;

// Rule PropertyMapping
rulePropertyMapping returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyMappingRule());
	        }
        }
	otherlv_0=RULE_ID
	{
		newLeafNode(otherlv_0, grammarAccess.getPropertyMappingAccess().getLeftAttributeCrossReference_0_0()); 
	}

)
)((
(
		lv_biDirectional_1_0=
	KEYWORD_36
    {
        newLeafNode(lv_biDirectional_1_0, grammarAccess.getPropertyMappingAccess().getBiDirectionalLessThanSignHyphenMinusGreaterThanSignKeyword_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyMappingRule());
	        }
       		setWithLastConsumed($current, "biDirectional", true, "<->");
	    }

)
)
    |(
(
		lv_toLeft_2_0=
	KEYWORD_21
    {
        newLeafNode(lv_toLeft_2_0, grammarAccess.getPropertyMappingAccess().getToLeftLessThanSignHyphenMinusKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyMappingRule());
	        }
       		setWithLastConsumed($current, "toLeft", true, "<-");
	    }

)
)
    |(
(
		lv_toRight_3_0=
	KEYWORD_19
    {
        newLeafNode(lv_toRight_3_0, grammarAccess.getPropertyMappingAccess().getToRightHyphenMinusGreaterThanSignKeyword_1_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyMappingRule());
	        }
       		setWithLastConsumed($current, "toRight", true, "->");
	    }

)
))(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyMappingRule());
	        }
        }
	otherlv_4=RULE_ID
	{
		newLeafNode(otherlv_4, grammarAccess.getPropertyMappingAccess().getRightAttributeCrossReference_2_0()); 
	}

)
))
;





// Entry rule entryRuleEntity
entryRuleEntity returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getEntityRule()); }
	 iv_ruleEntity=ruleEntity 
	 { $current=$iv_ruleEntity.current; } 
	 EOF 
;

// Rule Entity
ruleEntity returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_101
    {
    	newLeafNode(otherlv_0, grammarAccess.getEntityAccess().getEntityKeyword_0());
    }
(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEntityRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)(
	otherlv_2=KEYWORD_124
    {
    	newLeafNode(otherlv_2, grammarAccess.getEntityAccess().getExtendsKeyword_2_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getEntityRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getEntityAccess().getSuperTypeEntityCrossReference_2_1_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
))?
	otherlv_4=KEYWORD_16
    {
    	newLeafNode(otherlv_4, grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0_0()); 
	    }
		lv_attributes_5_0=ruleAttribute		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEntityRule());
	        }
       		add(
       			$current, 
       			"attributes",
        		lv_attributes_5_0, 
        		"Attribute");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getEntityAccess().getAttributeGroupsAttributeGroupParserRuleCall_4_1_0()); 
	    }
		lv_attributeGroups_6_0=ruleAttributeGroup		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEntityRule());
	        }
       		add(
       			$current, 
       			"attributeGroups",
        		lv_attributeGroups_6_0, 
        		"AttributeGroup");
	        afterParserOrEnumRuleCall();
	    }

)
))*(
(
		{ 
	        newCompositeNode(grammarAccess.getEntityAccess().getConditionsBlockConditionsBlockParserRuleCall_5_0()); 
	    }
		lv_conditionsBlock_7_0=ruleConditionsBlock		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEntityRule());
	        }
       		set(
       			$current, 
       			"conditionsBlock",
        		lv_conditionsBlock_7_0, 
        		"ConditionsBlock");
	        afterParserOrEnumRuleCall();
	    }

)
)?
	otherlv_8=KEYWORD_17
    {
    	newLeafNode(otherlv_8, grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_6());
    }
)
;





// Entry rule entryRuleAttribute
entryRuleAttribute returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAttributeRule()); }
	 iv_ruleAttribute=ruleAttribute 
	 { $current=$iv_ruleAttribute.current; } 
	 EOF 
;

// Rule Attribute
ruleAttribute returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getAttributeAccess().getAttributeAction_0(),
            $current);
    }
)((
(
		lv_identifier_1_0=
	KEYWORD_29
    {
        newLeafNode(lv_identifier_1_0, grammarAccess.getAttributeAccess().getIdentifierIdKeyword_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeRule());
	        }
       		setWithLastConsumed($current, "identifier", true, "id");
	    }

)
)
    |(
(
		lv_version_2_0=
	KEYWORD_134
    {
        newLeafNode(lv_version_2_0, grammarAccess.getAttributeAccess().getVersionVersionKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeRule());
	        }
       		setWithLastConsumed($current, "version", true, "version");
	    }

)
)
    |(
(
		lv_composition_3_0=
	KEYWORD_163
    {
        newLeafNode(lv_composition_3_0, grammarAccess.getAttributeAccess().getCompositionCompositionKeyword_1_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeRule());
	        }
       		setWithLastConsumed($current, "composition", true, "composition");
	    }

)
))?(
(
		{ 
	        newCompositeNode(grammarAccess.getAttributeAccess().getTypeDataTypeAndTypeParameterParserRuleCall_2_0()); 
	    }
		lv_type_4_0=ruleDataTypeAndTypeParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAttributeRule());
	        }
       		set(
       			$current, 
       			"type",
        		lv_type_4_0, 
        		"DataTypeAndTypeParameter");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_many_5_0=
	KEYWORD_26
    {
        newLeafNode(lv_many_5_0, grammarAccess.getAttributeAccess().getManyLeftSquareBracketRightSquareBracketKeyword_3_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeRule());
	        }
       		setWithLastConsumed($current, "many", true, "[]");
	    }

)
)?(
(
		lv_name_6_0=RULE_ID
		{
			newLeafNode(lv_name_6_0, grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_4_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_6_0, 
        		"ID");
	    }

)
)(
	otherlv_7=KEYWORD_12
    {
    	newLeafNode(otherlv_7, grammarAccess.getAttributeAccess().getEqualsSignKeyword_5_0());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getAttributeAccess().getIncrementerReferenceIncrementerReferenceParserRuleCall_5_1_0_0()); 
	    }
		lv_incrementerReference_8_0=ruleIncrementerReference		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAttributeRule());
	        }
       		set(
       			$current, 
       			"incrementerReference",
        		lv_incrementerReference_8_0, 
        		"IncrementerReference");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		lv_defaultValue_9_0=RULE_STRING
		{
			newLeafNode(lv_defaultValue_9_0, grammarAccess.getAttributeAccess().getDefaultValueSTRINGTerminalRuleCall_5_1_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"defaultValue",
        		lv_defaultValue_9_0, 
        		"STRING");
	    }

)
)))?(
	otherlv_10=KEYWORD_159
    {
    	newLeafNode(otherlv_10, grammarAccess.getAttributeAccess().getOppositeofKeyword_6_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeRule());
	        }
        }
	otherlv_11=RULE_ID
	{
		newLeafNode(otherlv_11, grammarAccess.getAttributeAccess().getOppositeAttributeCrossReference_6_1_0()); 
	}

)
))?(
(
		{ 
	        newCompositeNode(grammarAccess.getAttributeAccess().getAttributPropertiesAttributePropertyParserRuleCall_7_0()); 
	    }
		lv_attributProperties_12_0=ruleAttributeProperty		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAttributeRule());
	        }
       		add(
       			$current, 
       			"attributProperties",
        		lv_attributProperties_12_0, 
        		"AttributeProperty");
	        afterParserOrEnumRuleCall();
	    }

)
)*(
	otherlv_13=KEYWORD_130
    {
    	newLeafNode(otherlv_13, grammarAccess.getAttributeAccess().getOrderbyKeyword_8_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeRule());
	        }
        }
	otherlv_14=RULE_ID
	{
		newLeafNode(otherlv_14, grammarAccess.getAttributeAccess().getSortOrderAttributeGroupCrossReference_8_1_0()); 
	}

)
))?)
;





// Entry rule entryRuleAttributeFlag
entryRuleAttributeFlag returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAttributeFlagRule()); }
	 iv_ruleAttributeFlag=ruleAttributeFlag 
	 { $current=$iv_ruleAttributeFlag.current; } 
	 EOF 
;

// Rule AttributeFlag
ruleAttributeFlag returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAttributeFlagAccess().getExpressionFlagParserRuleCall_0()); 
    }
    this_ExpressionFlag_0=ruleExpressionFlag
    {
        $current = $this_ExpressionFlag_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAttributeFlagAccess().getDerivedFlagParserRuleCall_1()); 
    }
    this_DerivedFlag_1=ruleDerivedFlag
    {
        $current = $this_DerivedFlag_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAttributeFlagAccess().getTransientFlagParserRuleCall_2()); 
    }
    this_TransientFlag_2=ruleTransientFlag
    {
        $current = $this_TransientFlag_2.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleExpressionFlag
entryRuleExpressionFlag returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getExpressionFlagRule()); }
	 iv_ruleExpressionFlag=ruleExpressionFlag 
	 { $current=$iv_ruleExpressionFlag.current; } 
	 EOF 
;

// Rule ExpressionFlag
ruleExpressionFlag returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getExpressionFlagAccess().getRequiredFlagParserRuleCall_0()); 
    }
    this_RequiredFlag_0=ruleRequiredFlag
    {
        $current = $this_RequiredFlag_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getExpressionFlagAccess().getReadOnlyFlagParserRuleCall_1()); 
    }
    this_ReadOnlyFlag_1=ruleReadOnlyFlag
    {
        $current = $this_ReadOnlyFlag_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getExpressionFlagAccess().getAvailableFlagParserRuleCall_2()); 
    }
    this_AvailableFlag_2=ruleAvailableFlag
    {
        $current = $this_AvailableFlag_2.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleRequiredFlag
entryRuleRequiredFlag returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getRequiredFlagRule()); }
	 iv_ruleRequiredFlag=ruleRequiredFlag 
	 { $current=$iv_ruleRequiredFlag.current; } 
	 EOF 
;

// Rule RequiredFlag
ruleRequiredFlag returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_141
    {
    	newLeafNode(otherlv_0, grammarAccess.getRequiredFlagAccess().getRequiredKeyword_0());
    }

	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getRequiredFlagAccess().getEqualsSignKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getRequiredFlagAccess().getExpressionEqualityExprParserRuleCall_2_0()); 
	    }
		lv_expression_2_0=ruleEqualityExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRequiredFlagRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"EqualityExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleReadOnlyFlag
entryRuleReadOnlyFlag returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getReadOnlyFlagRule()); }
	 iv_ruleReadOnlyFlag=ruleReadOnlyFlag 
	 { $current=$iv_ruleReadOnlyFlag.current; } 
	 EOF 
;

// Rule ReadOnlyFlag
ruleReadOnlyFlag returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_140
    {
    	newLeafNode(otherlv_0, grammarAccess.getReadOnlyFlagAccess().getReadonlyKeyword_0());
    }

	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getReadOnlyFlagAccess().getEqualsSignKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getReadOnlyFlagAccess().getExpressionEqualityExprParserRuleCall_2_0()); 
	    }
		lv_expression_2_0=ruleEqualityExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getReadOnlyFlagRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"EqualityExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleAvailableFlag
entryRuleAvailableFlag returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAvailableFlagRule()); }
	 iv_ruleAvailableFlag=ruleAvailableFlag 
	 { $current=$iv_ruleAvailableFlag.current; } 
	 EOF 
;

// Rule AvailableFlag
ruleAvailableFlag returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_144
    {
    	newLeafNode(otherlv_0, grammarAccess.getAvailableFlagAccess().getAvailableKeyword_0());
    }

	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getAvailableFlagAccess().getEqualsSignKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAvailableFlagAccess().getExpressionEqualityExprParserRuleCall_2_0()); 
	    }
		lv_expression_2_0=ruleEqualityExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAvailableFlagRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"EqualityExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleDerivedFlag
entryRuleDerivedFlag returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getDerivedFlagRule()); }
	 iv_ruleDerivedFlag=ruleDerivedFlag 
	 { $current=$iv_ruleDerivedFlag.current; } 
	 EOF 
;

// Rule DerivedFlag
ruleDerivedFlag returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_123
    {
    	newLeafNode(otherlv_0, grammarAccess.getDerivedFlagAccess().getDerivedKeyword_0());
    }

	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getDerivedFlagAccess().getEqualsSignKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getDerivedFlagAccess().getExpressionBoolLiteralParserRuleCall_2_0()); 
	    }
		lv_expression_2_0=ruleBoolLiteral		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDerivedFlagRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"BoolLiteral");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleTransientFlag
entryRuleTransientFlag returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getTransientFlagRule()); }
	 iv_ruleTransientFlag=ruleTransientFlag 
	 { $current=$iv_ruleTransientFlag.current; } 
	 EOF 
;

// Rule TransientFlag
ruleTransientFlag returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_152
    {
    	newLeafNode(otherlv_0, grammarAccess.getTransientFlagAccess().getTransientKeyword_0());
    }

	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getTransientFlagAccess().getEqualsSignKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getTransientFlagAccess().getExpressionBoolLiteralParserRuleCall_2_0()); 
	    }
		lv_expression_2_0=ruleBoolLiteral		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getTransientFlagRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"BoolLiteral");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleAttributeProperty
entryRuleAttributeProperty returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAttributePropertyRule()); }
	 iv_ruleAttributeProperty=ruleAttributeProperty 
	 { $current=$iv_ruleAttributeProperty.current; } 
	 EOF 
;

// Rule AttributeProperty
ruleAttributeProperty returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAttributePropertyAccess().getAttributeFlagParserRuleCall_0()); 
    }
    this_AttributeFlag_0=ruleAttributeFlag
    {
        $current = $this_AttributeFlag_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAttributePropertyAccess().getAttributeValidationPropertyParserRuleCall_1()); 
    }
    this_AttributeValidationProperty_1=ruleAttributeValidationProperty
    {
        $current = $this_AttributeValidationProperty_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAttributePropertyAccess().getAttributeTextPropertyParserRuleCall_2()); 
    }
    this_AttributeTextProperty_2=ruleAttributeTextProperty
    {
        $current = $this_AttributeTextProperty_2.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleAttributeValidationProperty
entryRuleAttributeValidationProperty returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAttributeValidationPropertyRule()); }
	 iv_ruleAttributeValidationProperty=ruleAttributeValidationProperty 
	 { $current=$iv_ruleAttributeValidationProperty.current; } 
	 EOF 
;

// Rule AttributeValidationProperty
ruleAttributeValidationProperty returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	otherlv_0=KEYWORD_164
    {
    	newLeafNode(otherlv_0, grammarAccess.getAttributeValidationPropertyAccess().getConstraintsKeyword_0_0());
    }

	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getAttributeValidationPropertyAccess().getEqualsSignKeyword_0_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAttributeValidationPropertyAccess().getConstraintsConstraintParserRuleCall_0_2_0()); 
	    }
		lv_constraints_2_0=ruleConstraint		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAttributeValidationPropertyRule());
	        }
       		add(
       			$current, 
       			"constraints",
        		lv_constraints_2_0, 
        		"Constraint");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_3=KEYWORD_6
    {
    	newLeafNode(otherlv_3, grammarAccess.getAttributeValidationPropertyAccess().getCommaKeyword_0_3_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAttributeValidationPropertyAccess().getConstraintsConstraintParserRuleCall_0_3_1_0()); 
	    }
		lv_constraints_4_0=ruleConstraint		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAttributeValidationPropertyRule());
	        }
       		add(
       			$current, 
       			"constraints",
        		lv_constraints_4_0, 
        		"Constraint");
	        afterParserOrEnumRuleCall();
	    }

)
))*)
    |(
	otherlv_5=KEYWORD_105
    {
    	newLeafNode(otherlv_5, grammarAccess.getAttributeValidationPropertyAccess().getFormatKeyword_1_0());
    }

	otherlv_6=KEYWORD_12
    {
    	newLeafNode(otherlv_6, grammarAccess.getAttributeValidationPropertyAccess().getEqualsSignKeyword_1_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAttributeValidationPropertyAccess().getFormatValidatorReferenceParserRuleCall_1_2_0()); 
	    }
		lv_format_7_0=ruleValidatorReference		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAttributeValidationPropertyRule());
	        }
       		set(
       			$current, 
       			"format",
        		lv_format_7_0, 
        		"ValidatorReference");
	        afterParserOrEnumRuleCall();
	    }

)
)))
;





// Entry rule entryRuleAttributeTextProperty
entryRuleAttributeTextProperty returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAttributeTextPropertyRule()); }
	 iv_ruleAttributeTextProperty=ruleAttributeTextProperty 
	 { $current=$iv_ruleAttributeTextProperty.current; } 
	 EOF 
;

// Rule AttributeTextProperty
ruleAttributeTextProperty returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	otherlv_0=KEYWORD_93
    {
    	newLeafNode(otherlv_0, grammarAccess.getAttributeTextPropertyAccess().getTitleKeyword_0_0());
    }

	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getAttributeTextPropertyAccess().getEqualsSignKeyword_0_1());
    }
(
(
		lv_labelText_2_0=RULE_STRING
		{
			newLeafNode(lv_labelText_2_0, grammarAccess.getAttributeTextPropertyAccess().getLabelTextSTRINGTerminalRuleCall_0_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeTextPropertyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"labelText",
        		lv_labelText_2_0, 
        		"STRING");
	    }

)
))
    |(
	otherlv_3=KEYWORD_165
    {
    	newLeafNode(otherlv_3, grammarAccess.getAttributeTextPropertyAccess().getDescriptionKeyword_1_0());
    }

	otherlv_4=KEYWORD_12
    {
    	newLeafNode(otherlv_4, grammarAccess.getAttributeTextPropertyAccess().getEqualsSignKeyword_1_1());
    }
(
(
		lv_tooltipText_5_0=RULE_STRING
		{
			newLeafNode(lv_tooltipText_5_0, grammarAccess.getAttributeTextPropertyAccess().getTooltipTextSTRINGTerminalRuleCall_1_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeTextPropertyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"tooltipText",
        		lv_tooltipText_5_0, 
        		"STRING");
	    }

)
))
    |(
	otherlv_6=KEYWORD_76
    {
    	newLeafNode(otherlv_6, grammarAccess.getAttributeTextPropertyAccess().getUnitKeyword_2_0());
    }

	otherlv_7=KEYWORD_12
    {
    	newLeafNode(otherlv_7, grammarAccess.getAttributeTextPropertyAccess().getEqualsSignKeyword_2_1());
    }
((
(
		lv_unitText_8_0=RULE_STRING
		{
			newLeafNode(lv_unitText_8_0, grammarAccess.getAttributeTextPropertyAccess().getUnitTextSTRINGTerminalRuleCall_2_2_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeTextPropertyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"unitText",
        		lv_unitText_8_0, 
        		"STRING");
	    }

)
)
    |(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeTextPropertyRule());
	        }
        }
	otherlv_9=RULE_ID
	{
		newLeafNode(otherlv_9, grammarAccess.getAttributeTextPropertyAccess().getUnitAttributeAttributeCrossReference_2_2_1_0()); 
	}

)
)))
    |(
	otherlv_10=KEYWORD_107
    {
    	newLeafNode(otherlv_10, grammarAccess.getAttributeTextPropertyAccess().getHstoreKeyword_3_0());
    }

	otherlv_11=KEYWORD_12
    {
    	newLeafNode(otherlv_11, grammarAccess.getAttributeTextPropertyAccess().getEqualsSignKeyword_3_1());
    }
(
(
		lv_hstoreColumn_12_0=RULE_STRING
		{
			newLeafNode(lv_hstoreColumn_12_0, grammarAccess.getAttributeTextPropertyAccess().getHstoreColumnSTRINGTerminalRuleCall_3_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeTextPropertyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"hstoreColumn",
        		lv_hstoreColumn_12_0, 
        		"STRING");
	    }

)
)))
;





// Entry rule entryRuleAttributeGroup
entryRuleAttributeGroup returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAttributeGroupRule()); }
	 iv_ruleAttributeGroup=ruleAttributeGroup 
	 { $current=$iv_ruleAttributeGroup.current; } 
	 EOF 
;

// Rule AttributeGroup
ruleAttributeGroup returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(((
(
		lv_key_0_0=
	KEYWORD_45
    {
        newLeafNode(lv_key_0_0, grammarAccess.getAttributeGroupAccess().getKeyKeyKeyword_0_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeGroupRule());
	        }
       		setWithLastConsumed($current, "key", true, "key");
	    }

)
)
    |(
(
		lv_unique_1_0=
	KEYWORD_118
    {
        newLeafNode(lv_unique_1_0, grammarAccess.getAttributeGroupAccess().getUniqueUniqueKeyword_0_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeGroupRule());
	        }
       		setWithLastConsumed($current, "unique", true, "unique");
	    }

)
)
    |(
(
		lv_filter_2_0=
	KEYWORD_104
    {
        newLeafNode(lv_filter_2_0, grammarAccess.getAttributeGroupAccess().getFilterFilterKeyword_0_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeGroupRule());
	        }
       		setWithLastConsumed($current, "filter", true, "filter");
	    }

)
)
    |(
(
		lv_sortorder_3_0=
	KEYWORD_150
    {
        newLeafNode(lv_sortorder_3_0, grammarAccess.getAttributeGroupAccess().getSortorderSortorderKeyword_0_3_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeGroupRule());
	        }
       		setWithLastConsumed($current, "sortorder", true, "sortorder");
	    }

)
))(
(
		lv_name_4_0=RULE_ID
		{
			newLeafNode(lv_name_4_0, grammarAccess.getAttributeGroupAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeGroupRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_4_0, 
        		"ID");
	    }

)
)
	otherlv_5=KEYWORD_2
    {
    	newLeafNode(otherlv_5, grammarAccess.getAttributeGroupAccess().getLeftParenthesisKeyword_2());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAttributeGroupAccess().getAttributesAttributeSortOrderParserRuleCall_3_0()); 
	    }
		lv_attributes_6_0=ruleAttributeSortOrder		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAttributeGroupRule());
	        }
       		add(
       			$current, 
       			"attributes",
        		lv_attributes_6_0, 
        		"AttributeSortOrder");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_7=KEYWORD_6
    {
    	newLeafNode(otherlv_7, grammarAccess.getAttributeGroupAccess().getCommaKeyword_4_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAttributeGroupAccess().getAttributesAttributeSortOrderParserRuleCall_4_1_0()); 
	    }
		lv_attributes_8_0=ruleAttributeSortOrder		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAttributeGroupRule());
	        }
       		add(
       			$current, 
       			"attributes",
        		lv_attributes_8_0, 
        		"AttributeSortOrder");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_9=KEYWORD_3
    {
    	newLeafNode(otherlv_9, grammarAccess.getAttributeGroupAccess().getRightParenthesisKeyword_5());
    }
)
;





// Entry rule entryRuleAttributeSortOrder
entryRuleAttributeSortOrder returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAttributeSortOrderRule()); }
	 iv_ruleAttributeSortOrder=ruleAttributeSortOrder 
	 { $current=$iv_ruleAttributeSortOrder.current; } 
	 EOF 
;

// Rule AttributeSortOrder
ruleAttributeSortOrder returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeSortOrderRule());
	        }
        }
	otherlv_0=RULE_ID
	{
		newLeafNode(otherlv_0, grammarAccess.getAttributeSortOrderAccess().getAttributeAttributeCrossReference_0_0()); 
	}

)
)((
(
		lv_asc_1_0=
	KEYWORD_40
    {
        newLeafNode(lv_asc_1_0, grammarAccess.getAttributeSortOrderAccess().getAscAscKeyword_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeSortOrderRule());
	        }
       		setWithLastConsumed($current, "asc", true, "asc");
	    }

)
)
    |(
(
		lv_desc_2_0=
	KEYWORD_58
    {
        newLeafNode(lv_desc_2_0, grammarAccess.getAttributeSortOrderAccess().getDescDescKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAttributeSortOrderRule());
	        }
       		setWithLastConsumed($current, "desc", true, "desc");
	    }

)
))?)
;







// Entry rule entryRuleDao
entryRuleDao returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getDaoRule()); }
	 iv_ruleDao=ruleDao 
	 { $current=$iv_ruleDao.current; } 
	 EOF 
;

// Rule Dao
ruleDao returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_161
    {
    	newLeafNode(otherlv_0, grammarAccess.getDaoAccess().getRepositoryKeyword_0());
    }
(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getDaoAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDaoRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)
	otherlv_2=KEYWORD_44
    {
    	newLeafNode(otherlv_2, grammarAccess.getDaoAccess().getForKeyword_2());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDaoRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getEntityEntityCrossReference_3_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_4=KEYWORD_16
    {
    	newLeafNode(otherlv_4, grammarAccess.getDaoAccess().getLeftCurlyBracketKeyword_4());
    }
(
	otherlv_5=KEYWORD_92
    {
    	newLeafNode(otherlv_5, grammarAccess.getDaoAccess().getTableKeyword_5_0());
    }

	otherlv_6=KEYWORD_12
    {
    	newLeafNode(otherlv_6, grammarAccess.getDaoAccess().getEqualsSignKeyword_5_1());
    }
(
(
		lv_tableName_7_0=RULE_STRING
		{
			newLeafNode(lv_tableName_7_0, grammarAccess.getDaoAccess().getTableNameSTRINGTerminalRuleCall_5_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDaoRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"tableName",
        		lv_tableName_7_0, 
        		"STRING");
	    }

)
))?(
	otherlv_8=KEYWORD_174
    {
    	newLeafNode(otherlv_8, grammarAccess.getDaoAccess().getDiscriminatorKeyword_6_0());
    }

	otherlv_9=KEYWORD_12
    {
    	newLeafNode(otherlv_9, grammarAccess.getDaoAccess().getEqualsSignKeyword_6_1());
    }
(
(
		lv_discriminator_10_0=RULE_STRING
		{
			newLeafNode(lv_discriminator_10_0, grammarAccess.getDaoAccess().getDiscriminatorSTRINGTerminalRuleCall_6_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDaoRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"discriminator",
        		lv_discriminator_10_0, 
        		"STRING");
	    }

)
))?(
	otherlv_11=KEYWORD_148
    {
    	newLeafNode(otherlv_11, grammarAccess.getDaoAccess().getQualifierKeyword_7_0());
    }

	otherlv_12=KEYWORD_12
    {
    	newLeafNode(otherlv_12, grammarAccess.getDaoAccess().getEqualsSignKeyword_7_1());
    }
(
(
		lv_qualifier_13_0=RULE_STRING
		{
			newLeafNode(lv_qualifier_13_0, grammarAccess.getDaoAccess().getQualifierSTRINGTerminalRuleCall_7_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDaoRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"qualifier",
        		lv_qualifier_13_0, 
        		"STRING");
	    }

)
))?((
(
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getOperationsOperationParserRuleCall_8_0_0()); 
	    }
		lv_operations_14_0=ruleOperation		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDaoRule());
	        }
       		add(
       			$current, 
       			"operations",
        		lv_operations_14_0, 
        		"Operation");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getQueryOperationQueryOperationParserRuleCall_8_1_0()); 
	    }
		lv_queryOperation_15_0=ruleQueryOperation		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDaoRule());
	        }
       		add(
       			$current, 
       			"queryOperation",
        		lv_queryOperation_15_0, 
        		"QueryOperation");
	        afterParserOrEnumRuleCall();
	    }

)
))*((
(
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getDataBaseConstraintsDataBaseConstraintParserRuleCall_9_0_0()); 
	    }
		lv_dataBaseConstraints_16_0=ruleDataBaseConstraint		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDaoRule());
	        }
       		add(
       			$current, 
       			"dataBaseConstraints",
        		lv_dataBaseConstraints_16_0, 
        		"DataBaseConstraint");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getColumnsColumnParserRuleCall_9_1_0()); 
	    }
		lv_columns_17_0=ruleColumn		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDaoRule());
	        }
       		add(
       			$current, 
       			"columns",
        		lv_columns_17_0, 
        		"Column");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getManyToOneAssociationsManyToOneParserRuleCall_9_2_0()); 
	    }
		lv_manyToOneAssociations_18_0=ruleManyToOne		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDaoRule());
	        }
       		add(
       			$current, 
       			"manyToOneAssociations",
        		lv_manyToOneAssociations_18_0, 
        		"ManyToOne");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getOneToOneAssociationsOneToOneParserRuleCall_9_3_0()); 
	    }
		lv_oneToOneAssociations_19_0=ruleOneToOne		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDaoRule());
	        }
       		add(
       			$current, 
       			"oneToOneAssociations",
        		lv_oneToOneAssociations_19_0, 
        		"OneToOne");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getOneToManyAssociationsOneToManyParserRuleCall_9_4_0()); 
	    }
		lv_oneToManyAssociations_20_0=ruleOneToMany		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDaoRule());
	        }
       		add(
       			$current, 
       			"oneToManyAssociations",
        		lv_oneToManyAssociations_20_0, 
        		"OneToMany");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getDaoAccess().getManyToManyAssociationsManyToManyParserRuleCall_9_5_0()); 
	    }
		lv_manyToManyAssociations_21_0=ruleManyToMany		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDaoRule());
	        }
       		add(
       			$current, 
       			"manyToManyAssociations",
        		lv_manyToManyAssociations_21_0, 
        		"ManyToMany");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_22=KEYWORD_17
    {
    	newLeafNode(otherlv_22, grammarAccess.getDaoAccess().getRightCurlyBracketKeyword_10());
    }
)
;





// Entry rule entryRuleQueryOperation
entryRuleQueryOperation returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getQueryOperationRule()); }
	 iv_ruleQueryOperation=ruleQueryOperation 
	 { $current=$iv_ruleQueryOperation.current; } 
	 EOF 
;

// Rule QueryOperation
ruleQueryOperation returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_147
    {
    	newLeafNode(otherlv_0, grammarAccess.getQueryOperationAccess().getOperationKeyword_0());
    }
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getQueryOperationRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getQueryOperationAccess().getTypeTypeCrossReference_1_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_many_2_0=
	KEYWORD_26
    {
        newLeafNode(lv_many_2_0, grammarAccess.getQueryOperationAccess().getManyLeftSquareBracketRightSquareBracketKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getQueryOperationRule());
	        }
       		setWithLastConsumed($current, "many", true, "[]");
	    }

)
)?)?(
(
		lv_name_3_0=RULE_ID
		{
			newLeafNode(lv_name_3_0, grammarAccess.getQueryOperationAccess().getNameIDTerminalRuleCall_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getQueryOperationRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_3_0, 
        		"ID");
	    }

)
)
	otherlv_4=KEYWORD_2
    {
    	newLeafNode(otherlv_4, grammarAccess.getQueryOperationAccess().getLeftParenthesisKeyword_3());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getQueryOperationAccess().getQueryParametersQueryParameterParserRuleCall_4_0_0()); 
	    }
		lv_queryParameters_5_0=ruleQueryParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getQueryOperationRule());
	        }
       		add(
       			$current, 
       			"queryParameters",
        		lv_queryParameters_5_0, 
        		"QueryParameter");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_6=KEYWORD_6
    {
    	newLeafNode(otherlv_6, grammarAccess.getQueryOperationAccess().getCommaKeyword_4_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getQueryOperationAccess().getQueryParametersQueryParameterParserRuleCall_4_1_1_0()); 
	    }
		lv_queryParameters_7_0=ruleQueryParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getQueryOperationRule());
	        }
       		add(
       			$current, 
       			"queryParameters",
        		lv_queryParameters_7_0, 
        		"QueryParameter");
	        afterParserOrEnumRuleCall();
	    }

)
))*)?
	otherlv_8=KEYWORD_3
    {
    	newLeafNode(otherlv_8, grammarAccess.getQueryOperationAccess().getRightParenthesisKeyword_5());
    }

	otherlv_9=KEYWORD_10
    {
    	newLeafNode(otherlv_9, grammarAccess.getQueryOperationAccess().getColonKeyword_6());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getQueryOperationAccess().getStatementQlStatementParserRuleCall_7_0()); 
	    }
		lv_statement_10_0=ruleQlStatement		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getQueryOperationRule());
	        }
       		set(
       			$current, 
       			"statement",
        		lv_statement_10_0, 
        		"QlStatement");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleQueryParameter
entryRuleQueryParameter returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getQueryParameterRule()); }
	 iv_ruleQueryParameter=ruleQueryParameter 
	 { $current=$iv_ruleQueryParameter.current; } 
	 EOF 
;

// Rule QueryParameter
ruleQueryParameter returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getQueryParameterAccess().getParameterParserRuleCall_0()); 
    }
    this_Parameter_0=ruleParameter
    {
        $current = $this_Parameter_0.current;
        afterParserOrEnumRuleCall();
    }

    |(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getQueryParameterRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getQueryParameterAccess().getAttributeAttributeCrossReference_1_0()); 
	}

)
))
;





// Entry rule entryRuleColumn
entryRuleColumn returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getColumnRule()); }
	 iv_ruleColumn=ruleColumn 
	 { $current=$iv_ruleColumn.current; } 
	 EOF 
;

// Rule Column
ruleColumn returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_96
    {
    	newLeafNode(otherlv_0, grammarAccess.getColumnAccess().getColumnKeyword_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getColumnRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getColumnAccess().getAttributeAttributeCrossReference_1_0()); 
	}

)
)(
	otherlv_2=KEYWORD_36
    {
    	newLeafNode(otherlv_2, grammarAccess.getColumnAccess().getLessThanSignHyphenMinusGreaterThanSignKeyword_2_0());
    }
(
(
		lv_columnName_3_0=RULE_STRING
		{
			newLeafNode(lv_columnName_3_0, grammarAccess.getColumnAccess().getColumnNameSTRINGTerminalRuleCall_2_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getColumnRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"columnName",
        		lv_columnName_3_0, 
        		"STRING");
	    }

)
))?(
	otherlv_4=KEYWORD_143
    {
    	newLeafNode(otherlv_4, grammarAccess.getColumnAccess().getUsertypeKeyword_3_0());
    }

	otherlv_5=KEYWORD_12
    {
    	newLeafNode(otherlv_5, grammarAccess.getColumnAccess().getEqualsSignKeyword_3_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getColumnAccess().getUserTypeDataTypeAndTypeParameterParserRuleCall_3_2_0()); 
	    }
		lv_userType_6_0=ruleDataTypeAndTypeParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getColumnRule());
	        }
       		set(
       			$current, 
       			"userType",
        		lv_userType_6_0, 
        		"DataTypeAndTypeParameter");
	        afterParserOrEnumRuleCall();
	    }

)
))?(
	otherlv_7=KEYWORD_133
    {
    	newLeafNode(otherlv_7, grammarAccess.getColumnAccess().getSqltypeKeyword_4_0());
    }

	otherlv_8=KEYWORD_12
    {
    	newLeafNode(otherlv_8, grammarAccess.getColumnAccess().getEqualsSignKeyword_4_1());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getColumnRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getColumnAccess().getColumnTypeTypeCrossReference_4_2_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
))?(
	otherlv_10=KEYWORD_16
    {
    	newLeafNode(otherlv_10, grammarAccess.getColumnAccess().getLeftCurlyBracketKeyword_5_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getColumnAccess().getColumnsColumnParserRuleCall_5_1_0()); 
	    }
		lv_columns_11_0=ruleColumn		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getColumnRule());
	        }
       		add(
       			$current, 
       			"columns",
        		lv_columns_11_0, 
        		"Column");
	        afterParserOrEnumRuleCall();
	    }

)
)+
	otherlv_12=KEYWORD_17
    {
    	newLeafNode(otherlv_12, grammarAccess.getColumnAccess().getRightCurlyBracketKeyword_5_2());
    }
)?)
;





// Entry rule entryRuleManyToOne
entryRuleManyToOne returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getManyToOneRule()); }
	 iv_ruleManyToOne=ruleManyToOne 
	 { $current=$iv_ruleManyToOne.current; } 
	 EOF 
;

// Rule ManyToOne
ruleManyToOne returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_168
    {
    	newLeafNode(otherlv_0, grammarAccess.getManyToOneAccess().getManyToOneKeyword_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getManyToOneRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getManyToOneAccess().getAttributeAttributeCrossReference_1_0()); 
	}

)
)(
	otherlv_2=KEYWORD_36
    {
    	newLeafNode(otherlv_2, grammarAccess.getManyToOneAccess().getLessThanSignHyphenMinusGreaterThanSignKeyword_2_0());
    }
(
(
		lv_columnName_3_0=RULE_STRING
		{
			newLeafNode(lv_columnName_3_0, grammarAccess.getManyToOneAccess().getColumnNameSTRINGTerminalRuleCall_2_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getManyToOneRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"columnName",
        		lv_columnName_3_0, 
        		"STRING");
	    }

)
))?(
	otherlv_4=KEYWORD_143
    {
    	newLeafNode(otherlv_4, grammarAccess.getManyToOneAccess().getUsertypeKeyword_3_0());
    }

	otherlv_5=KEYWORD_12
    {
    	newLeafNode(otherlv_5, grammarAccess.getManyToOneAccess().getEqualsSignKeyword_3_1());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getManyToOneRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getManyToOneAccess().getUserTypeTypeCrossReference_3_2_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
))?(
	otherlv_7=KEYWORD_133
    {
    	newLeafNode(otherlv_7, grammarAccess.getManyToOneAccess().getSqltypeKeyword_4_0());
    }

	otherlv_8=KEYWORD_12
    {
    	newLeafNode(otherlv_8, grammarAccess.getManyToOneAccess().getEqualsSignKeyword_4_1());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getManyToOneRule());
	        }
        }
	otherlv_9=RULE_ID
	{
		newLeafNode(otherlv_9, grammarAccess.getManyToOneAccess().getSqlTypeSqlTypeCrossReference_4_2_0()); 
	}

)
))?(
	otherlv_10=KEYWORD_16
    {
    	newLeafNode(otherlv_10, grammarAccess.getManyToOneAccess().getLeftCurlyBracketKeyword_5_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getManyToOneAccess().getColumnsColumnParserRuleCall_5_1_0()); 
	    }
		lv_columns_11_0=ruleColumn		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getManyToOneRule());
	        }
       		add(
       			$current, 
       			"columns",
        		lv_columns_11_0, 
        		"Column");
	        afterParserOrEnumRuleCall();
	    }

)
)+
	otherlv_12=KEYWORD_17
    {
    	newLeafNode(otherlv_12, grammarAccess.getManyToOneAccess().getRightCurlyBracketKeyword_5_2());
    }
)?)
;





// Entry rule entryRuleOneToOne
entryRuleOneToOne returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getOneToOneRule()); }
	 iv_ruleOneToOne=ruleOneToOne 
	 { $current=$iv_ruleOneToOne.current; } 
	 EOF 
;

// Rule OneToOne
ruleOneToOne returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_158
    {
    	newLeafNode(otherlv_0, grammarAccess.getOneToOneAccess().getOneToOneKeyword_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getOneToOneRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getOneToOneAccess().getAttributeAttributeCrossReference_1_0()); 
	}

)
))
;





// Entry rule entryRuleOneToMany
entryRuleOneToMany returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getOneToManyRule()); }
	 iv_ruleOneToMany=ruleOneToMany 
	 { $current=$iv_ruleOneToMany.current; } 
	 EOF 
;

// Rule OneToMany
ruleOneToMany returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_169
    {
    	newLeafNode(otherlv_0, grammarAccess.getOneToManyAccess().getOneToManyKeyword_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getOneToManyRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getOneToManyAccess().getAttributeAttributeCrossReference_1_0()); 
	}

)
)(
	otherlv_2=KEYWORD_36
    {
    	newLeafNode(otherlv_2, grammarAccess.getOneToManyAccess().getLessThanSignHyphenMinusGreaterThanSignKeyword_2_0());
    }
(
(
		lv_columnName_3_0=RULE_STRING
		{
			newLeafNode(lv_columnName_3_0, grammarAccess.getOneToManyAccess().getColumnNameSTRINGTerminalRuleCall_2_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getOneToManyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"columnName",
        		lv_columnName_3_0, 
        		"STRING");
	    }

)
))?(
	otherlv_4=KEYWORD_16
    {
    	newLeafNode(otherlv_4, grammarAccess.getOneToManyAccess().getLeftCurlyBracketKeyword_3_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getOneToManyAccess().getColumnsColumnParserRuleCall_3_1_0()); 
	    }
		lv_columns_5_0=ruleColumn		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getOneToManyRule());
	        }
       		add(
       			$current, 
       			"columns",
        		lv_columns_5_0, 
        		"Column");
	        afterParserOrEnumRuleCall();
	    }

)
)+
	otherlv_6=KEYWORD_17
    {
    	newLeafNode(otherlv_6, grammarAccess.getOneToManyAccess().getRightCurlyBracketKeyword_3_2());
    }
)?)
;





// Entry rule entryRuleManyToMany
entryRuleManyToMany returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getManyToManyRule()); }
	 iv_ruleManyToMany=ruleManyToMany 
	 { $current=$iv_ruleManyToMany.current; } 
	 EOF 
;

// Rule ManyToMany
ruleManyToMany returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_173
    {
    	newLeafNode(otherlv_0, grammarAccess.getManyToManyAccess().getManyToManyKeyword_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getManyToManyRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getManyToManyAccess().getAttributeAttributeCrossReference_1_0()); 
	}

)
)
	otherlv_2=KEYWORD_36
    {
    	newLeafNode(otherlv_2, grammarAccess.getManyToManyAccess().getLessThanSignHyphenMinusGreaterThanSignKeyword_2());
    }
(
(
		lv_tableName_3_0=RULE_STRING
		{
			newLeafNode(lv_tableName_3_0, grammarAccess.getManyToManyAccess().getTableNameSTRINGTerminalRuleCall_3_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getManyToManyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"tableName",
        		lv_tableName_3_0, 
        		"STRING");
	    }

)
)(
	otherlv_4=KEYWORD_8
    {
    	newLeafNode(otherlv_4, grammarAccess.getManyToManyAccess().getFullStopKeyword_4_0());
    }
(
(
		lv_columnName_5_0=RULE_STRING
		{
			newLeafNode(lv_columnName_5_0, grammarAccess.getManyToManyAccess().getColumnNameSTRINGTerminalRuleCall_4_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getManyToManyRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"columnName",
        		lv_columnName_5_0, 
        		"STRING");
	    }

)
))?)
;





// Entry rule entryRuleDataBaseConstraint
entryRuleDataBaseConstraint returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getDataBaseConstraintRule()); }
	 iv_ruleDataBaseConstraint=ruleDataBaseConstraint 
	 { $current=$iv_ruleDataBaseConstraint.current; } 
	 EOF 
;

// Rule DataBaseConstraint
ruleDataBaseConstraint returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getDataBaseConstraintAccess().getTypeDataBaseConstraintTypeEnumRuleCall_0_0()); 
	    }
		lv_type_0_0=ruleDataBaseConstraintType		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDataBaseConstraintRule());
	        }
       		set(
       			$current, 
       			"type",
        		lv_type_0_0, 
        		"DataBaseConstraintType");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getDataBaseConstraintAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDataBaseConstraintRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)
	otherlv_2=KEYWORD_2
    {
    	newLeafNode(otherlv_2, grammarAccess.getDataBaseConstraintAccess().getLeftParenthesisKeyword_2());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDataBaseConstraintRule());
	        }
        }
	otherlv_3=RULE_ID
	{
		newLeafNode(otherlv_3, grammarAccess.getDataBaseConstraintAccess().getAttributesAttributeCrossReference_3_0()); 
	}

)
)(
	otherlv_4=KEYWORD_6
    {
    	newLeafNode(otherlv_4, grammarAccess.getDataBaseConstraintAccess().getCommaKeyword_4_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDataBaseConstraintRule());
	        }
        }
	otherlv_5=RULE_ID
	{
		newLeafNode(otherlv_5, grammarAccess.getDataBaseConstraintAccess().getAttributesAttributeCrossReference_4_1_0()); 
	}

)
))*
	otherlv_6=KEYWORD_3
    {
    	newLeafNode(otherlv_6, grammarAccess.getDataBaseConstraintAccess().getRightParenthesisKeyword_5());
    }
)
;







// Entry rule entryRuleApplicationSession
entryRuleApplicationSession returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getApplicationSessionRule()); }
	 iv_ruleApplicationSession=ruleApplicationSession 
	 { $current=$iv_ruleApplicationSession.current; } 
	 EOF 
;

// Rule ApplicationSession
ruleApplicationSession returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_122
    {
    	newLeafNode(otherlv_0, grammarAccess.getApplicationSessionAccess().getContextKeyword_0());
    }
(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getApplicationSessionAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getApplicationSessionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)
	otherlv_2=KEYWORD_16
    {
    	newLeafNode(otherlv_2, grammarAccess.getApplicationSessionAccess().getLeftCurlyBracketKeyword_2());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getApplicationSessionAccess().getPropertiesPropertyParserRuleCall_3_0()); 
	    }
		lv_properties_3_0=ruleProperty		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getApplicationSessionRule());
	        }
       		add(
       			$current, 
       			"properties",
        		lv_properties_3_0, 
        		"Property");
	        afterParserOrEnumRuleCall();
	    }

)
)*(
(
		{ 
	        newCompositeNode(grammarAccess.getApplicationSessionAccess().getFunctionsSessionFunctionParserRuleCall_4_0()); 
	    }
		lv_functions_4_0=ruleSessionFunction		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getApplicationSessionRule());
	        }
       		add(
       			$current, 
       			"functions",
        		lv_functions_4_0, 
        		"SessionFunction");
	        afterParserOrEnumRuleCall();
	    }

)
)*(
(
		{ 
	        newCompositeNode(grammarAccess.getApplicationSessionAccess().getConditionsBlockConditionsBlockParserRuleCall_5_0()); 
	    }
		lv_conditionsBlock_5_0=ruleConditionsBlock		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getApplicationSessionRule());
	        }
       		set(
       			$current, 
       			"conditionsBlock",
        		lv_conditionsBlock_5_0, 
        		"ConditionsBlock");
	        afterParserOrEnumRuleCall();
	    }

)
)?
	otherlv_6=KEYWORD_17
    {
    	newLeafNode(otherlv_6, grammarAccess.getApplicationSessionAccess().getRightCurlyBracketKeyword_6());
    }
)
;





// Entry rule entryRuleSessionFunction
entryRuleSessionFunction returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getSessionFunctionRule()); }
	 iv_ruleSessionFunction=ruleSessionFunction 
	 { $current=$iv_ruleSessionFunction.current; } 
	 EOF 
;

// Rule SessionFunction
ruleSessionFunction returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_138
    {
    	newLeafNode(otherlv_0, grammarAccess.getSessionFunctionAccess().getFunctionKeyword_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getSessionFunctionRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getSessionFunctionAccess().getResultTypeSimpleTypeCrossReference_1_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_name_2_0=RULE_ID
		{
			newLeafNode(lv_name_2_0, grammarAccess.getSessionFunctionAccess().getNameIDTerminalRuleCall_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getSessionFunctionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_2_0, 
        		"ID");
	    }

)
)
	otherlv_3=KEYWORD_2
    {
    	newLeafNode(otherlv_3, grammarAccess.getSessionFunctionAccess().getLeftParenthesisKeyword_3());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getSessionFunctionRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getSessionFunctionAccess().getParameterTypeSimpleTypeCrossReference_4_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_parameterName_5_0=RULE_ID
		{
			newLeafNode(lv_parameterName_5_0, grammarAccess.getSessionFunctionAccess().getParameterNameIDTerminalRuleCall_5_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getSessionFunctionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"parameterName",
        		lv_parameterName_5_0, 
        		"ID");
	    }

)
)
	otherlv_6=KEYWORD_3
    {
    	newLeafNode(otherlv_6, grammarAccess.getSessionFunctionAccess().getRightParenthesisKeyword_6());
    }
)
;





// Entry rule entryRuleQlStatement
entryRuleQlStatement returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getQlStatementRule()); }
	 iv_ruleQlStatement=ruleQlStatement 
	 { $current=$iv_ruleQlStatement.current; } 
	 EOF 
;

// Rule QlStatement
ruleQlStatement returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getQlStatementAccess().getInsertStatementParserRuleCall_0()); 
    }
    this_InsertStatement_0=ruleInsertStatement
    {
        $current = $this_InsertStatement_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getQlStatementAccess().getSelectStatementParserRuleCall_1()); 
    }
    this_SelectStatement_1=ruleSelectStatement
    {
        $current = $this_SelectStatement_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getQlStatementAccess().getUpdateStatementParserRuleCall_2()); 
    }
    this_UpdateStatement_2=ruleUpdateStatement
    {
        $current = $this_UpdateStatement_2.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getQlStatementAccess().getDeleteStatementParserRuleCall_3()); 
    }
    this_DeleteStatement_3=ruleDeleteStatement
    {
        $current = $this_DeleteStatement_3.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getQlStatementAccess().getCallableStatementParserRuleCall_4()); 
    }
    this_CallableStatement_4=ruleCallableStatement
    {
        $current = $this_CallableStatement_4.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleCallableStatement
entryRuleCallableStatement returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCallableStatementRule()); }
	 iv_ruleCallableStatement=ruleCallableStatement 
	 { $current=$iv_ruleCallableStatement.current; } 
	 EOF 
;

// Rule CallableStatement
ruleCallableStatement returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_53
    {
    	newLeafNode(otherlv_0, grammarAccess.getCallableStatementAccess().getCallKeyword_0());
    }
(
(
		lv_functionCall_1_0=
	KEYWORD_138
    {
        newLeafNode(lv_functionCall_1_0, grammarAccess.getCallableStatementAccess().getFunctionCallFunctionKeyword_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCallableStatementRule());
	        }
       		setWithLastConsumed($current, "functionCall", true, "function");
	    }

)
)?(
(
		{ 
	        newCompositeNode(grammarAccess.getCallableStatementAccess().getNameQualifiedNameParserRuleCall_2_0()); 
	    }
		lv_name_2_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCallableStatementRule());
	        }
       		set(
       			$current, 
       			"name",
        		lv_name_2_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_3=KEYWORD_2
    {
    	newLeafNode(otherlv_3, grammarAccess.getCallableStatementAccess().getLeftParenthesisKeyword_3());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getCallableStatementAccess().getInParameterCallInputParameterParserRuleCall_4_0_0()); 
	    }
		lv_inParameter_4_0=ruleCallInputParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCallableStatementRule());
	        }
       		add(
       			$current, 
       			"inParameter",
        		lv_inParameter_4_0, 
        		"CallInputParameter");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_5=KEYWORD_6
    {
    	newLeafNode(otherlv_5, grammarAccess.getCallableStatementAccess().getCommaKeyword_4_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCallableStatementAccess().getInParameterCallInputParameterParserRuleCall_4_1_1_0()); 
	    }
		lv_inParameter_6_0=ruleCallInputParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCallableStatementRule());
	        }
       		add(
       			$current, 
       			"inParameter",
        		lv_inParameter_6_0, 
        		"CallInputParameter");
	        afterParserOrEnumRuleCall();
	    }

)
))*)?
	otherlv_7=KEYWORD_3
    {
    	newLeafNode(otherlv_7, grammarAccess.getCallableStatementAccess().getRightParenthesisKeyword_5());
    }
(
	otherlv_8=KEYWORD_114
    {
    	newLeafNode(otherlv_8, grammarAccess.getCallableStatementAccess().getReturnKeyword_6_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCallableStatementAccess().getOutParameterCallOutputParameterParserRuleCall_6_1_0()); 
	    }
		lv_outParameter_9_0=ruleCallOutputParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCallableStatementRule());
	        }
       		add(
       			$current, 
       			"outParameter",
        		lv_outParameter_9_0, 
        		"CallOutputParameter");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_10=KEYWORD_6
    {
    	newLeafNode(otherlv_10, grammarAccess.getCallableStatementAccess().getCommaKeyword_6_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCallableStatementAccess().getOutParameterCallOutputParameterParserRuleCall_6_2_1_0()); 
	    }
		lv_outParameter_11_0=ruleCallOutputParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCallableStatementRule());
	        }
       		add(
       			$current, 
       			"outParameter",
        		lv_outParameter_11_0, 
        		"CallOutputParameter");
	        afterParserOrEnumRuleCall();
	    }

)
))*)?)
;





// Entry rule entryRuleCallInputParameter
entryRuleCallInputParameter returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCallInputParameterRule()); }
	 iv_ruleCallInputParameter=ruleCallInputParameter 
	 { $current=$iv_ruleCallInputParameter.current; } 
	 EOF 
;

// Rule CallInputParameter
ruleCallInputParameter returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getCallInputParameterAccess().getCallInputParameterAction_0(),
            $current);
    }
)(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getCallInputParameterRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getCallInputParameterAccess().getParameterQueryParameterCrossReference_1_0()); 
	}

)
)(
	otherlv_2=KEYWORD_8
    {
    	newLeafNode(otherlv_2, grammarAccess.getCallInputParameterAccess().getFullStopKeyword_2_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getCallInputParameterRule());
	        }
        }
	otherlv_3=RULE_ID
	{
		newLeafNode(otherlv_3, grammarAccess.getCallInputParameterAccess().getAttributeAttributeCrossReference_2_1_0()); 
	}

)
))?(
	otherlv_4=KEYWORD_27
    {
    	newLeafNode(otherlv_4, grammarAccess.getCallInputParameterAccess().getAsKeyword_3_0());
    }
(
(
		lv_name_5_0=RULE_ID
		{
			newLeafNode(lv_name_5_0, grammarAccess.getCallInputParameterAccess().getNameIDTerminalRuleCall_3_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCallInputParameterRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_5_0, 
        		"ID");
	    }

)
))?)
;





// Entry rule entryRuleCallOutputParameter
entryRuleCallOutputParameter returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCallOutputParameterRule()); }
	 iv_ruleCallOutputParameter=ruleCallOutputParameter 
	 { $current=$iv_ruleCallOutputParameter.current; } 
	 EOF 
;

// Rule CallOutputParameter
ruleCallOutputParameter returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getCallOutputParameterAccess().getCallOutputParameterAction_0(),
            $current);
    }
)((
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getCallOutputParameterAccess().getNameIDTerminalRuleCall_1_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCallOutputParameterRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)(
	otherlv_2=KEYWORD_27
    {
    	newLeafNode(otherlv_2, grammarAccess.getCallOutputParameterAccess().getAsKeyword_1_1());
    }
)?)?(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getCallOutputParameterRule());
	        }
        }
	otherlv_3=RULE_ID
	{
		newLeafNode(otherlv_3, grammarAccess.getCallOutputParameterAccess().getAttributeAttributeCrossReference_2_0()); 
	}

)
)?(
	otherlv_4=KEYWORD_8
    {
    	newLeafNode(otherlv_4, grammarAccess.getCallOutputParameterAccess().getFullStopKeyword_3_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getCallOutputParameterRule());
	        }
        }
	otherlv_5=RULE_ID
	{
		newLeafNode(otherlv_5, grammarAccess.getCallOutputParameterAccess().getNestedAttributeAttributeCrossReference_3_1_0()); 
	}

)
))?)
;





// Entry rule entryRuleInsertStatement
entryRuleInsertStatement returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getInsertStatementRule()); }
	 iv_ruleInsertStatement=ruleInsertStatement 
	 { $current=$iv_ruleInsertStatement.current; } 
	 EOF 
;

// Rule InsertStatement
ruleInsertStatement returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_109
    {
    	newLeafNode(otherlv_0, grammarAccess.getInsertStatementAccess().getInsertKeyword_0());
    }

	otherlv_1=KEYWORD_64
    {
    	newLeafNode(otherlv_1, grammarAccess.getInsertStatementAccess().getIntoKeyword_1());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getInsertStatementRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getInsertStatementAccess().getEntityEntityCrossReference_2_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_3=KEYWORD_2
    {
    	newLeafNode(otherlv_3, grammarAccess.getInsertStatementAccess().getLeftParenthesisKeyword_3());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getInsertStatementAccess().getExpressionPrimaryExpressionParserRuleCall_4_0()); 
	    }
		lv_expression_4_0=rulePrimaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getInsertStatementRule());
	        }
       		add(
       			$current, 
       			"expression",
        		lv_expression_4_0, 
        		"PrimaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_5=KEYWORD_6
    {
    	newLeafNode(otherlv_5, grammarAccess.getInsertStatementAccess().getCommaKeyword_5_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getInsertStatementAccess().getExpressionPrimaryExpressionParserRuleCall_5_1_0()); 
	    }
		lv_expression_6_0=rulePrimaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getInsertStatementRule());
	        }
       		add(
       			$current, 
       			"expression",
        		lv_expression_6_0, 
        		"PrimaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_7=KEYWORD_3
    {
    	newLeafNode(otherlv_7, grammarAccess.getInsertStatementAccess().getRightParenthesisKeyword_6());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getInsertStatementAccess().getSelectStatementSelectStatementParserRuleCall_7_0()); 
	    }
		lv_selectStatement_8_0=ruleSelectStatement		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getInsertStatementRule());
	        }
       		set(
       			$current, 
       			"selectStatement",
        		lv_selectStatement_8_0, 
        		"SelectStatement");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleDeleteStatement
entryRuleDeleteStatement returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getDeleteStatementRule()); }
	 iv_ruleDeleteStatement=ruleDeleteStatement 
	 { $current=$iv_ruleDeleteStatement.current; } 
	 EOF 
;

// Rule DeleteStatement
ruleDeleteStatement returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_98
    {
    	newLeafNode(otherlv_0, grammarAccess.getDeleteStatementAccess().getDeleteKeyword_0());
    }
(
	otherlv_1=KEYWORD_62
    {
    	newLeafNode(otherlv_1, grammarAccess.getDeleteStatementAccess().getFromKeyword_1());
    }
)?(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDeleteStatementRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getDeleteStatementAccess().getEntityEntityCrossReference_2_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_3=KEYWORD_27
    {
    	newLeafNode(otherlv_3, grammarAccess.getDeleteStatementAccess().getAsKeyword_3());
    }
)?(
(
		lv_name_4_0=RULE_ID
		{
			newLeafNode(lv_name_4_0, grammarAccess.getDeleteStatementAccess().getNameIDTerminalRuleCall_4_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getDeleteStatementRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_4_0, 
        		"ID");
	    }

)
)(
	otherlv_5=KEYWORD_95
    {
    	newLeafNode(otherlv_5, grammarAccess.getDeleteStatementAccess().getWhereKeyword_5_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getDeleteStatementAccess().getWhereExpressionParserRuleCall_5_1_0()); 
	    }
		lv_where_6_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDeleteStatementRule());
	        }
       		set(
       			$current, 
       			"where",
        		lv_where_6_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))?)
;





// Entry rule entryRuleUpdateStatement
entryRuleUpdateStatement returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getUpdateStatementRule()); }
	 iv_ruleUpdateStatement=ruleUpdateStatement 
	 { $current=$iv_ruleUpdateStatement.current; } 
	 EOF 
;

// Rule UpdateStatement
ruleUpdateStatement returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_119
    {
    	newLeafNode(otherlv_0, grammarAccess.getUpdateStatementAccess().getUpdateKeyword_0());
    }
(
(
		lv_versioned_1_0=
	KEYWORD_154
    {
        newLeafNode(lv_versioned_1_0, grammarAccess.getUpdateStatementAccess().getVersionedVersionedKeyword_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getUpdateStatementRule());
	        }
       		setWithLastConsumed($current, "versioned", true, "versioned");
	    }

)
)?(
	otherlv_2=KEYWORD_62
    {
    	newLeafNode(otherlv_2, grammarAccess.getUpdateStatementAccess().getFromKeyword_2());
    }
)?(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getUpdateStatementRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getUpdateStatementAccess().getEntityEntityCrossReference_3_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_4=KEYWORD_27
    {
    	newLeafNode(otherlv_4, grammarAccess.getUpdateStatementAccess().getAsKeyword_4());
    }
)?(
(
		lv_name_5_0=RULE_ID
		{
			newLeafNode(lv_name_5_0, grammarAccess.getUpdateStatementAccess().getNameIDTerminalRuleCall_5_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getUpdateStatementRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_5_0, 
        		"ID");
	    }

)
)
	otherlv_6=KEYWORD_50
    {
    	newLeafNode(otherlv_6, grammarAccess.getUpdateStatementAccess().getSetKeyword_6());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getUpdateStatementAccess().getAssignmentPropertyAssignmentParserRuleCall_7_0()); 
	    }
		lv_assignment_7_0=rulePropertyAssignment		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getUpdateStatementRule());
	        }
       		add(
       			$current, 
       			"assignment",
        		lv_assignment_7_0, 
        		"PropertyAssignment");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_8=KEYWORD_6
    {
    	newLeafNode(otherlv_8, grammarAccess.getUpdateStatementAccess().getCommaKeyword_8_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getUpdateStatementAccess().getAssignmentPropertyAssignmentParserRuleCall_8_1_0()); 
	    }
		lv_assignment_9_0=rulePropertyAssignment		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getUpdateStatementRule());
	        }
       		add(
       			$current, 
       			"assignment",
        		lv_assignment_9_0, 
        		"PropertyAssignment");
	        afterParserOrEnumRuleCall();
	    }

)
))*(
	otherlv_10=KEYWORD_95
    {
    	newLeafNode(otherlv_10, grammarAccess.getUpdateStatementAccess().getWhereKeyword_9_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getUpdateStatementAccess().getWhereExpressionParserRuleCall_9_1_0()); 
	    }
		lv_where_11_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getUpdateStatementRule());
	        }
       		set(
       			$current, 
       			"where",
        		lv_where_11_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))?)
;





// Entry rule entryRulePropertyAssignment
entryRulePropertyAssignment returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getPropertyAssignmentRule()); }
	 iv_rulePropertyAssignment=rulePropertyAssignment 
	 { $current=$iv_rulePropertyAssignment.current; } 
	 EOF 
;

// Rule PropertyAssignment
rulePropertyAssignment returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getPropertyAssignmentAccess().getPropertyPropertyValueParserRuleCall_0_0()); 
	    }
		lv_property_0_0=rulePropertyValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getPropertyAssignmentRule());
	        }
       		set(
       			$current, 
       			"property",
        		lv_property_0_0, 
        		"PropertyValue");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getPropertyAssignmentAccess().getEqualsSignKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getPropertyAssignmentAccess().getExpressionConcatenationExpressionParserRuleCall_2_0()); 
	    }
		lv_expression_2_0=ruleConcatenationExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getPropertyAssignmentRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"ConcatenationExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleSelectStatement
entryRuleSelectStatement returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getSelectStatementRule()); }
	 iv_ruleSelectStatement=ruleSelectStatement 
	 { $current=$iv_ruleSelectStatement.current; } 
	 EOF 
;

// Rule SelectStatement
ruleSelectStatement returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	otherlv_0=KEYWORD_115
    {
    	newLeafNode(otherlv_0, grammarAccess.getSelectStatementAccess().getSelectKeyword_0_0());
    }
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getSelectStatementAccess().getSelectPropertiesParserRuleCall_0_1_0()); 
    }
    this_SelectProperties_1=ruleSelectProperties
    {
        $current = $this_SelectProperties_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getSelectStatementAccess().getSelectClassParserRuleCall_0_1_1()); 
    }
    this_SelectClass_2=ruleSelectClass
    {
        $current = $this_SelectClass_2.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getSelectStatementAccess().getSelectObjectParserRuleCall_0_1_2()); 
    }
    this_SelectObject_3=ruleSelectObject
    {
        $current = $this_SelectObject_3.current;
        afterParserOrEnumRuleCall();
    }
))?(
	otherlv_4=KEYWORD_62
    {
    	newLeafNode(otherlv_4, grammarAccess.getSelectStatementAccess().getFromKeyword_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getFromFromRangeParserRuleCall_1_1_0()); 
	    }
		lv_from_5_0=ruleFromRange		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		add(
       			$current, 
       			"from",
        		lv_from_5_0, 
        		"FromRange");
	        afterParserOrEnumRuleCall();
	    }

)
)((
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getJoinJoinParserRuleCall_1_2_0_0()); 
	    }
		lv_join_6_0=ruleJoin		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		add(
       			$current, 
       			"join",
        		lv_join_6_0, 
        		"Join");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
	otherlv_7=KEYWORD_6
    {
    	newLeafNode(otherlv_7, grammarAccess.getSelectStatementAccess().getCommaKeyword_1_2_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getFromFromRangeParserRuleCall_1_2_1_1_0()); 
	    }
		lv_from_8_0=ruleFromRange		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		add(
       			$current, 
       			"from",
        		lv_from_8_0, 
        		"FromRange");
	        afterParserOrEnumRuleCall();
	    }

)
)))*)?(
	otherlv_9=KEYWORD_95
    {
    	newLeafNode(otherlv_9, grammarAccess.getSelectStatementAccess().getWhereKeyword_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getWhereExpressionParserRuleCall_2_1_0()); 
	    }
		lv_where_10_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		set(
       			$current, 
       			"where",
        		lv_where_10_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))?(
	otherlv_11=KEYWORD_85
    {
    	newLeafNode(otherlv_11, grammarAccess.getSelectStatementAccess().getGroupKeyword_3_0());
    }

	otherlv_12=KEYWORD_28
    {
    	newLeafNode(otherlv_12, grammarAccess.getSelectStatementAccess().getByKeyword_3_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getGroupByExpressionParserRuleCall_3_2_0()); 
	    }
		lv_groupBy_13_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		add(
       			$current, 
       			"groupBy",
        		lv_groupBy_13_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_14=KEYWORD_6
    {
    	newLeafNode(otherlv_14, grammarAccess.getSelectStatementAccess().getCommaKeyword_3_3_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getGroupByExpressionParserRuleCall_3_3_1_0()); 
	    }
		lv_groupBy_15_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		add(
       			$current, 
       			"groupBy",
        		lv_groupBy_15_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))*(
	otherlv_16=KEYWORD_106
    {
    	newLeafNode(otherlv_16, grammarAccess.getSelectStatementAccess().getHavingKeyword_3_4_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getHavingExpressionParserRuleCall_3_4_1_0()); 
	    }
		lv_having_17_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		set(
       			$current, 
       			"having",
        		lv_having_17_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))?)?(
	otherlv_18=KEYWORD_88
    {
    	newLeafNode(otherlv_18, grammarAccess.getSelectStatementAccess().getOrderKeyword_4_0());
    }

	otherlv_19=KEYWORD_28
    {
    	newLeafNode(otherlv_19, grammarAccess.getSelectStatementAccess().getByKeyword_4_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getOrderBySortOrderElementParserRuleCall_4_2_0()); 
	    }
		lv_orderBy_20_0=ruleSortOrderElement		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		add(
       			$current, 
       			"orderBy",
        		lv_orderBy_20_0, 
        		"SortOrderElement");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_21=KEYWORD_6
    {
    	newLeafNode(otherlv_21, grammarAccess.getSelectStatementAccess().getCommaKeyword_4_3_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectStatementAccess().getOrderBySortOrderElementParserRuleCall_4_3_1_0()); 
	    }
		lv_orderBy_22_0=ruleSortOrderElement		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectStatementRule());
	        }
       		add(
       			$current, 
       			"orderBy",
        		lv_orderBy_22_0, 
        		"SortOrderElement");
	        afterParserOrEnumRuleCall();
	    }

)
))*)?)
;





// Entry rule entryRuleSortOrderElement
entryRuleSortOrderElement returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getSortOrderElementRule()); }
	 iv_ruleSortOrderElement=ruleSortOrderElement 
	 { $current=$iv_ruleSortOrderElement.current; } 
	 EOF 
;

// Rule SortOrderElement
ruleSortOrderElement returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getSortOrderElementAccess().getExpressionExpressionParserRuleCall_0_0()); 
	    }
		lv_expression_0_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSortOrderElementRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_0_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getSortOrderElementAccess().getSortOrderAscendingOrDescendingParserRuleCall_1_0()); 
	    }
		lv_sortOrder_1_0=ruleAscendingOrDescending		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSortOrderElementRule());
	        }
       		set(
       			$current, 
       			"sortOrder",
        		lv_sortOrder_1_0, 
        		"AscendingOrDescending");
	        afterParserOrEnumRuleCall();
	    }

)
)?)
;





// Entry rule entryRuleSelectProperties
entryRuleSelectProperties returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getSelectPropertiesRule()); }
	 iv_ruleSelectProperties=ruleSelectProperties 
	 { $current=$iv_ruleSelectProperties.current; } 
	 EOF 
;

// Rule SelectProperties
ruleSelectProperties returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_distinct_0_0=
	KEYWORD_136
    {
        newLeafNode(lv_distinct_0_0, grammarAccess.getSelectPropertiesAccess().getDistinctDistinctKeyword_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getSelectPropertiesRule());
	        }
       		setWithLastConsumed($current, "distinct", true, "distinct");
	    }

)
)?(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectPropertiesAccess().getPropertiesAliasedExpressionParserRuleCall_1_0()); 
	    }
		lv_properties_1_0=ruleAliasedExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectPropertiesRule());
	        }
       		add(
       			$current, 
       			"properties",
        		lv_properties_1_0, 
        		"AliasedExpression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_2=KEYWORD_6
    {
    	newLeafNode(otherlv_2, grammarAccess.getSelectPropertiesAccess().getCommaKeyword_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectPropertiesAccess().getPropertiesAliasedExpressionParserRuleCall_2_1_0()); 
	    }
		lv_properties_3_0=ruleAliasedExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectPropertiesRule());
	        }
       		add(
       			$current, 
       			"properties",
        		lv_properties_3_0, 
        		"AliasedExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*)
;





// Entry rule entryRuleSelectClass
entryRuleSelectClass returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getSelectClassRule()); }
	 iv_ruleSelectClass=ruleSelectClass 
	 { $current=$iv_ruleSelectClass.current; } 
	 EOF 
;

// Rule SelectClass
ruleSelectClass returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_48
    {
    	newLeafNode(otherlv_0, grammarAccess.getSelectClassAccess().getNewKeyword_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectClassAccess().getClassQualifiedNameParserRuleCall_1_0()); 
	    }
		lv_class_1_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectClassRule());
	        }
       		set(
       			$current, 
       			"class",
        		lv_class_1_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_2=KEYWORD_2
    {
    	newLeafNode(otherlv_2, grammarAccess.getSelectClassAccess().getLeftParenthesisKeyword_2());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectClassAccess().getArgumentsAliasedExpressionParserRuleCall_3_0()); 
	    }
		lv_arguments_3_0=ruleAliasedExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectClassRule());
	        }
       		add(
       			$current, 
       			"arguments",
        		lv_arguments_3_0, 
        		"AliasedExpression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_4=KEYWORD_6
    {
    	newLeafNode(otherlv_4, grammarAccess.getSelectClassAccess().getCommaKeyword_4_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSelectClassAccess().getArgumentsAliasedExpressionParserRuleCall_4_1_0()); 
	    }
		lv_arguments_5_0=ruleAliasedExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSelectClassRule());
	        }
       		add(
       			$current, 
       			"arguments",
        		lv_arguments_5_0, 
        		"AliasedExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_6=KEYWORD_3
    {
    	newLeafNode(otherlv_6, grammarAccess.getSelectClassAccess().getRightParenthesisKeyword_5());
    }
)
;





// Entry rule entryRuleSelectObject
entryRuleSelectObject returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getSelectObjectRule()); }
	 iv_ruleSelectObject=ruleSelectObject 
	 { $current=$iv_ruleSelectObject.current; } 
	 EOF 
;

// Rule SelectObject
ruleSelectObject returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_113
    {
    	newLeafNode(otherlv_0, grammarAccess.getSelectObjectAccess().getObjectKeyword_0());
    }

	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getSelectObjectAccess().getLeftParenthesisKeyword_1());
    }
(
(
		lv_name_2_0=RULE_ID
		{
			newLeafNode(lv_name_2_0, grammarAccess.getSelectObjectAccess().getNameIDTerminalRuleCall_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getSelectObjectRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_2_0, 
        		"ID");
	    }

)
)
	otherlv_3=KEYWORD_3
    {
    	newLeafNode(otherlv_3, grammarAccess.getSelectObjectAccess().getRightParenthesisKeyword_3());
    }
)
;





// Entry rule entryRuleFromRange
entryRuleFromRange returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getFromRangeRule()); }
	 iv_ruleFromRange=ruleFromRange 
	 { $current=$iv_ruleFromRange.current; } 
	 EOF 
;

// Rule FromRange
ruleFromRange returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getFromRangeAccess().getFromClassParserRuleCall_0()); 
    }
    this_FromClass_0=ruleFromClass
    {
        $current = $this_FromClass_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getFromRangeAccess().getInClassParserRuleCall_1()); 
    }
    this_InClass_1=ruleInClass
    {
        $current = $this_InClass_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getFromRangeAccess().getInCollectionParserRuleCall_2()); 
    }
    this_InCollection_2=ruleInCollection
    {
        $current = $this_InCollection_2.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getFromRangeAccess().getInCollectionElementsParserRuleCall_3()); 
    }
    this_InCollectionElements_3=ruleInCollectionElements
    {
        $current = $this_InCollectionElements_3.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleFromClass
entryRuleFromClass returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getFromClassRule()); }
	 iv_ruleFromClass=ruleFromClass 
	 { $current=$iv_ruleFromClass.current; } 
	 EOF 
;

// Rule FromClass
ruleFromClass returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getFromClassRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getFromClassAccess().getEntityEntityCrossReference_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_1=KEYWORD_27
    {
    	newLeafNode(otherlv_1, grammarAccess.getFromClassAccess().getAsKeyword_1());
    }
)?(
(
		lv_name_2_0=RULE_ID
		{
			newLeafNode(lv_name_2_0, grammarAccess.getFromClassAccess().getNameIDTerminalRuleCall_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getFromClassRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_2_0, 
        		"ID");
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getFromClassAccess().getPopertyFetchPropertyFetchParserRuleCall_3_0()); 
	    }
		lv_popertyFetch_3_0=rulePropertyFetch		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getFromClassRule());
	        }
       		set(
       			$current, 
       			"popertyFetch",
        		true, 
        		"PropertyFetch");
	        afterParserOrEnumRuleCall();
	    }

)
)?)
;





// Entry rule entryRuleInClass
entryRuleInClass returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getInClassRule()); }
	 iv_ruleInClass=ruleInClass 
	 { $current=$iv_ruleInClass.current; } 
	 EOF 
;

// Rule InClass
ruleInClass returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_name_0_0=RULE_ID
		{
			newLeafNode(lv_name_0_0, grammarAccess.getInClassAccess().getNameIDTerminalRuleCall_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getInClassRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_0_0, 
        		"ID");
	    }

)
)
	otherlv_1=KEYWORD_30
    {
    	newLeafNode(otherlv_1, grammarAccess.getInClassAccess().getInKeyword_1());
    }

	otherlv_2=KEYWORD_80
    {
    	newLeafNode(otherlv_2, grammarAccess.getInClassAccess().getClassKeyword_2());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getInClassAccess().getClassQualifiedNameParserRuleCall_3_0()); 
	    }
		lv_class_3_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getInClassRule());
	        }
       		set(
       			$current, 
       			"class",
        		lv_class_3_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleInCollection
entryRuleInCollection returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getInCollectionRule()); }
	 iv_ruleInCollection=ruleInCollection 
	 { $current=$iv_ruleInCollection.current; } 
	 EOF 
;

// Rule InCollection
ruleInCollection returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_30
    {
    	newLeafNode(otherlv_0, grammarAccess.getInCollectionAccess().getInKeyword_0());
    }

	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getInCollectionAccess().getLeftParenthesisKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getInCollectionAccess().getPathQualifiedNameParserRuleCall_2_0()); 
	    }
		lv_path_2_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getInCollectionRule());
	        }
       		set(
       			$current, 
       			"path",
        		lv_path_2_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_3=KEYWORD_3
    {
    	newLeafNode(otherlv_3, grammarAccess.getInCollectionAccess().getRightParenthesisKeyword_3());
    }
(
(
		lv_alias_4_0=RULE_ID
		{
			newLeafNode(lv_alias_4_0, grammarAccess.getInCollectionAccess().getAliasIDTerminalRuleCall_4_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getInCollectionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"alias",
        		lv_alias_4_0, 
        		"ID");
	    }

)
))
;





// Entry rule entryRuleInCollectionElements
entryRuleInCollectionElements returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getInCollectionElementsRule()); }
	 iv_ruleInCollectionElements=ruleInCollectionElements 
	 { $current=$iv_ruleInCollectionElements.current; } 
	 EOF 
;

// Rule InCollectionElements
ruleInCollectionElements returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_name_0_0=RULE_ID
		{
			newLeafNode(lv_name_0_0, grammarAccess.getInCollectionElementsAccess().getNameIDTerminalRuleCall_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getInCollectionElementsRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_0_0, 
        		"ID");
	    }

)
)
	otherlv_1=KEYWORD_30
    {
    	newLeafNode(otherlv_1, grammarAccess.getInCollectionElementsAccess().getInKeyword_1());
    }

	otherlv_2=KEYWORD_137
    {
    	newLeafNode(otherlv_2, grammarAccess.getInCollectionElementsAccess().getElementsKeyword_2());
    }

	otherlv_3=KEYWORD_2
    {
    	newLeafNode(otherlv_3, grammarAccess.getInCollectionElementsAccess().getLeftParenthesisKeyword_3());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getInCollectionElementsAccess().getReferenceQualifiedNameParserRuleCall_4_0()); 
	    }
		lv_reference_4_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getInCollectionElementsRule());
	        }
       		set(
       			$current, 
       			"reference",
        		lv_reference_4_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_5=KEYWORD_3
    {
    	newLeafNode(otherlv_5, grammarAccess.getInCollectionElementsAccess().getRightParenthesisKeyword_5());
    }
)
;





// Entry rule entryRuleJoin
entryRuleJoin returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getJoinRule()); }
	 iv_ruleJoin=ruleJoin 
	 { $current=$iv_ruleJoin.current; } 
	 EOF 
;

// Rule Join
ruleJoin returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getJoinAccess().getTypeJoinTypeParserRuleCall_0_0()); 
	    }
		lv_type_0_0=ruleJoinType		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getJoinRule());
	        }
       		set(
       			$current, 
       			"type",
        		lv_type_0_0, 
        		"JoinType");
	        afterParserOrEnumRuleCall();
	    }

)
)?
	otherlv_1=KEYWORD_65
    {
    	newLeafNode(otherlv_1, grammarAccess.getJoinAccess().getJoinKeyword_1());
    }
(
(
		lv_fetch_2_0=
	KEYWORD_84
    {
        newLeafNode(lv_fetch_2_0, grammarAccess.getJoinAccess().getFetchFetchKeyword_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getJoinRule());
	        }
       		setWithLastConsumed($current, "fetch", true, "fetch");
	    }

)
)?(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getJoinRule());
	        }
        }
	otherlv_3=RULE_ID
	{
		newLeafNode(otherlv_3, grammarAccess.getJoinAccess().getEntityJoinEntityCrossReference_3_0()); 
	}

)
)
	otherlv_4=KEYWORD_8
    {
    	newLeafNode(otherlv_4, grammarAccess.getJoinAccess().getFullStopKeyword_4());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getJoinRule());
	        }
        }
	otherlv_5=RULE_ID
	{
		newLeafNode(otherlv_5, grammarAccess.getJoinAccess().getReferenceAttributeCrossReference_5_0()); 
	}

)
)(
	otherlv_6=KEYWORD_27
    {
    	newLeafNode(otherlv_6, grammarAccess.getJoinAccess().getAsKeyword_6());
    }
)?(
(
		lv_name_7_0=RULE_ID
		{
			newLeafNode(lv_name_7_0, grammarAccess.getJoinAccess().getNameIDTerminalRuleCall_7_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getJoinRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_7_0, 
        		"ID");
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getJoinAccess().getPropertyFetchPropertyFetchParserRuleCall_8_0()); 
	    }
		lv_propertyFetch_8_0=rulePropertyFetch		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getJoinRule());
	        }
       		set(
       			$current, 
       			"propertyFetch",
        		true, 
        		"PropertyFetch");
	        afterParserOrEnumRuleCall();
	    }

)
)?(
	otherlv_9=KEYWORD_79
    {
    	newLeafNode(otherlv_9, grammarAccess.getJoinAccess().getWithKeyword_9_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getJoinAccess().getExpressionExpressionParserRuleCall_9_1_0()); 
	    }
		lv_expression_10_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getJoinRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_10_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))?)
;







// Entry rule entryRuleAliasedExpression
entryRuleAliasedExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAliasedExpressionRule()); }
	 iv_ruleAliasedExpression=ruleAliasedExpression 
	 { $current=$iv_ruleAliasedExpression.current; } 
	 EOF 
;

// Rule AliasedExpression
ruleAliasedExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAliasedExpressionAccess().getExpressionParserRuleCall_0()); 
    }
    this_Expression_0=ruleExpression
    {
        $current = $this_Expression_0.current;
        afterParserOrEnumRuleCall();
    }
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getAliasedExpressionAccess().getAliasedExpressionExpressionAction_1_0(),
            $current);
    }
)
	otherlv_2=KEYWORD_27
    {
    	newLeafNode(otherlv_2, grammarAccess.getAliasedExpressionAccess().getAsKeyword_1_1());
    }
(
(
		lv_name_3_0=RULE_ID
		{
			newLeafNode(lv_name_3_0, grammarAccess.getAliasedExpressionAccess().getNameIDTerminalRuleCall_1_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAliasedExpressionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_3_0, 
        		"ID");
	    }

)
))?)
;





// 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().getLogicalOrExpressionParserRuleCall()); 
    }
    this_LogicalOrExpression_0=ruleLogicalOrExpression
    {
        $current = $this_LogicalOrExpression_0.current;
        afterParserOrEnumRuleCall();
    }

;





// Entry rule entryRuleLogicalOrExpression
entryRuleLogicalOrExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getLogicalOrExpressionRule()); }
	 iv_ruleLogicalOrExpression=ruleLogicalOrExpression 
	 { $current=$iv_ruleLogicalOrExpression.current; } 
	 EOF 
;

// Rule LogicalOrExpression
ruleLogicalOrExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLogicalOrExpressionAccess().getLogicalAndExpressionParserRuleCall_0()); 
    }
    this_LogicalAndExpression_0=ruleLogicalAndExpression
    {
        $current = $this_LogicalAndExpression_0.current;
        afterParserOrEnumRuleCall();
    }
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getLogicalOrExpressionAccess().getBinaryExpressionLeftAction_1_0(),
            $current);
    }
)(
(
		lv_operator_2_0=
	KEYWORD_33
    {
        newLeafNode(lv_operator_2_0, grammarAccess.getLogicalOrExpressionAccess().getOperatorOrKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getLogicalOrExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_0, "or");
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getLogicalOrExpressionAccess().getRightLogicalAndExpressionParserRuleCall_1_2_0()); 
	    }
		lv_right_3_0=ruleLogicalAndExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getLogicalOrExpressionRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_3_0, 
        		"LogicalAndExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*)
;





// Entry rule entryRuleLogicalAndExpression
entryRuleLogicalAndExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getLogicalAndExpressionRule()); }
	 iv_ruleLogicalAndExpression=ruleLogicalAndExpression 
	 { $current=$iv_ruleLogicalAndExpression.current; } 
	 EOF 
;

// Rule LogicalAndExpression
ruleLogicalAndExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLogicalAndExpressionAccess().getPrefixExpressionParserRuleCall_0()); 
    }
    this_PrefixExpression_0=rulePrefixExpression
    {
        $current = $this_PrefixExpression_0.current;
        afterParserOrEnumRuleCall();
    }
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getLogicalAndExpressionAccess().getBinaryExpressionLeftAction_1_0(),
            $current);
    }
)(
(
		lv_operator_2_0=
	KEYWORD_38
    {
        newLeafNode(lv_operator_2_0, grammarAccess.getLogicalAndExpressionAccess().getOperatorAndKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getLogicalAndExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_0, "and");
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getLogicalAndExpressionAccess().getRightPrefixExpressionParserRuleCall_1_2_0()); 
	    }
		lv_right_3_0=rulePrefixExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getLogicalAndExpressionRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_3_0, 
        		"PrefixExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*)
;





// Entry rule entryRulePrefixExpression
entryRulePrefixExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getPrefixExpressionRule()); }
	 iv_rulePrefixExpression=rulePrefixExpression 
	 { $current=$iv_rulePrefixExpression.current; } 
	 EOF 
;

// Rule PrefixExpression
rulePrefixExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getPrefixExpressionAccess().getNotExpressionAction_0_0(),
            $current);
    }
)
	otherlv_1=KEYWORD_49
    {
    	newLeafNode(otherlv_1, grammarAccess.getPrefixExpressionAccess().getNotKeyword_0_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getPrefixExpressionAccess().getExpressionPrefixExpressionParserRuleCall_0_2_0()); 
	    }
		lv_expression_2_0=rulePrefixExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getPrefixExpressionRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"PrefixExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))
    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrefixExpressionAccess().getEqualityExpressionParserRuleCall_1()); 
    }
    this_EqualityExpression_3=ruleEqualityExpression
    {
        $current = $this_EqualityExpression_3.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleEqualityExpression
entryRuleEqualityExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getEqualityExpressionRule()); }
	 iv_ruleEqualityExpression=ruleEqualityExpression 
	 { $current=$iv_ruleEqualityExpression.current; } 
	 EOF 
;

// Rule EqualityExpression
ruleEqualityExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getEqualityExpressionAccess().getRelationalExpressionParserRuleCall_0()); 
    }
    this_RelationalExpression_0=ruleRelationalExpression
    {
        $current = $this_RelationalExpression_0.current;
        afterParserOrEnumRuleCall();
    }
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getEqualityExpressionAccess().getBinaryExpressionLeftAction_1_0(),
            $current);
    }
)(
(
(
		lv_operator_2_1=
	KEYWORD_12
    {
        newLeafNode(lv_operator_2_1, grammarAccess.getEqualityExpressionAccess().getOperatorEqualsSignKeyword_1_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEqualityExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_1, null);
	    }

    |		lv_operator_2_2=
	KEYWORD_31
    {
        newLeafNode(lv_operator_2_2, grammarAccess.getEqualityExpressionAccess().getOperatorIsKeyword_1_1_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEqualityExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_2, null);
	    }

    |		{ 
	        newCompositeNode(grammarAccess.getEqualityExpressionAccess().getOperatorIsNotParserRuleCall_1_1_0_2()); 
	    }
		lv_operator_2_3=ruleIsNot		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEqualityExpressionRule());
	        }
       		set(
       			$current, 
       			"operator",
        		lv_operator_2_3, 
        		"IsNot");
	        afterParserOrEnumRuleCall();
	    }

    |		lv_operator_2_4=
	KEYWORD_18
    {
        newLeafNode(lv_operator_2_4, grammarAccess.getEqualityExpressionAccess().getOperatorExclamationMarkEqualsSignKeyword_1_1_0_3());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEqualityExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_4, null);
	    }

    |		lv_operator_2_5=
	KEYWORD_23
    {
        newLeafNode(lv_operator_2_5, grammarAccess.getEqualityExpressionAccess().getOperatorLessThanSignGreaterThanSignKeyword_1_1_0_4());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEqualityExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_5, null);
	    }

)

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getEqualityExpressionAccess().getRightRelationalExpressionParserRuleCall_1_2_0()); 
	    }
		lv_right_3_0=ruleRelationalExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEqualityExpressionRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_3_0, 
        		"RelationalExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*)
;





// Entry rule entryRuleRelationalExpression
entryRuleRelationalExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getRelationalExpressionRule()); }
	 iv_ruleRelationalExpression=ruleRelationalExpression 
	 { $current=$iv_ruleRelationalExpression.current; } 
	 EOF 
;

// Rule RelationalExpression
ruleRelationalExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getConcatenationExpressionParserRuleCall_0()); 
    }
    this_ConcatenationExpression_0=ruleConcatenationExpression
    {
        $current = $this_ConcatenationExpression_0.current;
        afterParserOrEnumRuleCall();
    }
(((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getRelationalExpressionAccess().getBinaryExpressionLeftAction_1_0_0(),
            $current);
    }
)(
(
(
		lv_operator_2_1=
	KEYWORD_11
    {
        newLeafNode(lv_operator_2_1, grammarAccess.getRelationalExpressionAccess().getOperatorLessThanSignKeyword_1_0_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_1, null);
	    }

    |		lv_operator_2_2=
	KEYWORD_13
    {
        newLeafNode(lv_operator_2_2, grammarAccess.getRelationalExpressionAccess().getOperatorGreaterThanSignKeyword_1_0_1_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_2, null);
	    }

    |		lv_operator_2_3=
	KEYWORD_22
    {
        newLeafNode(lv_operator_2_3, grammarAccess.getRelationalExpressionAccess().getOperatorLessThanSignEqualsSignKeyword_1_0_1_0_2());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_3, null);
	    }

    |		lv_operator_2_4=
	KEYWORD_25
    {
        newLeafNode(lv_operator_2_4, grammarAccess.getRelationalExpressionAccess().getOperatorGreaterThanSignEqualsSignKeyword_1_0_1_0_3());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_4, null);
	    }

)

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getRightAdditiveExpressionParserRuleCall_1_0_2_0()); 
	    }
		lv_right_3_0=ruleAdditiveExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_3_0, 
        		"AdditiveExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*
    |((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getRelationalExpressionAccess().getInExpressionExpressionAction_1_1_0(),
            $current);
    }
)(
(
		lv_not_5_0=
	KEYWORD_49
    {
        newLeafNode(lv_not_5_0, grammarAccess.getRelationalExpressionAccess().getNotNotKeyword_1_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "not", true, "not");
	    }

)
)?(
(
		lv_operator_6_0=
	KEYWORD_30
    {
        newLeafNode(lv_operator_6_0, grammarAccess.getRelationalExpressionAccess().getOperatorInKeyword_1_1_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_6_0, "in");
	    }

)
)(
(
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getInCollectionFunctionParserRuleCall_1_1_3_0_0()); 
	    }
		lv_in_7_1=ruleCollectionFunction		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"in",
        		lv_in_7_1, 
        		"CollectionFunction");
	        afterParserOrEnumRuleCall();
	    }

    |		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getInParenthesizedExpressionParserRuleCall_1_1_3_0_1()); 
	    }
		lv_in_7_2=ruleParenthesizedExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"in",
        		lv_in_7_2, 
        		"ParenthesizedExpression");
	        afterParserOrEnumRuleCall();
	    }

    |		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getInSubQueryParserRuleCall_1_1_3_0_2()); 
	    }
		lv_in_7_3=ruleSubQuery		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"in",
        		lv_in_7_3, 
        		"SubQuery");
	        afterParserOrEnumRuleCall();
	    }

)

)
))
    |((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getRelationalExpressionAccess().getBetweenExpressionExpressionAction_1_2_0(),
            $current);
    }
)(
(
		lv_not_9_0=
	KEYWORD_49
    {
        newLeafNode(lv_not_9_0, grammarAccess.getRelationalExpressionAccess().getNotNotKeyword_1_2_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "not", true, "not");
	    }

)
)?(
(
		lv_operator_10_0=
	KEYWORD_120
    {
        newLeafNode(lv_operator_10_0, grammarAccess.getRelationalExpressionAccess().getOperatorBetweenKeyword_1_2_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_10_0, "between");
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getLeftConcatenationExpressionParserRuleCall_1_2_3_0()); 
	    }
		lv_left_11_0=ruleConcatenationExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"left",
        		lv_left_11_0, 
        		"ConcatenationExpression");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_12=KEYWORD_38
    {
    	newLeafNode(otherlv_12, grammarAccess.getRelationalExpressionAccess().getAndKeyword_1_2_4());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getRightConcatenationExpressionParserRuleCall_1_2_5_0()); 
	    }
		lv_right_13_0=ruleConcatenationExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_13_0, 
        		"ConcatenationExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))
    |((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getRelationalExpressionAccess().getLikeExpressionExpressionAction_1_3_0(),
            $current);
    }
)(
(
		lv_not_15_0=
	KEYWORD_49
    {
        newLeafNode(lv_not_15_0, grammarAccess.getRelationalExpressionAccess().getNotNotKeyword_1_3_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "not", true, "not");
	    }

)
)?(
(
		lv_operator_16_0=
	KEYWORD_67
    {
        newLeafNode(lv_operator_16_0, grammarAccess.getRelationalExpressionAccess().getOperatorLikeKeyword_1_3_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_16_0, "like");
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getLikeConcatenationExpressionParserRuleCall_1_3_3_0()); 
	    }
		lv_like_17_0=ruleConcatenationExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"like",
        		lv_like_17_0, 
        		"ConcatenationExpression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_18=KEYWORD_102
    {
    	newLeafNode(otherlv_18, grammarAccess.getRelationalExpressionAccess().getEscapeKeyword_1_3_4_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getEscapeConcatenationExpressionParserRuleCall_1_3_4_1_0()); 
	    }
		lv_escape_19_0=ruleConcatenationExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"escape",
        		lv_escape_19_0, 
        		"ConcatenationExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))?)
    |((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getRelationalExpressionAccess().getMemberOfExpressionExpressionAction_1_4_0(),
            $current);
    }
)(
(
		lv_not_21_0=
	KEYWORD_49
    {
        newLeafNode(lv_not_21_0, grammarAccess.getRelationalExpressionAccess().getNotNotKeyword_1_4_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "not", true, "not");
	    }

)
)?(
(
		lv_operator_22_0=
	KEYWORD_111
    {
        newLeafNode(lv_operator_22_0, grammarAccess.getRelationalExpressionAccess().getOperatorMemberKeyword_1_4_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getRelationalExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_22_0, "member");
	    }

)
)(
	otherlv_23=KEYWORD_32
    {
    	newLeafNode(otherlv_23, grammarAccess.getRelationalExpressionAccess().getOfKeyword_1_4_3());
    }
)?(
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getMemberOfQualifiedNameParserRuleCall_1_4_4_0()); 
	    }
		lv_memberOf_24_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
	        }
       		set(
       			$current, 
       			"memberOf",
        		lv_memberOf_24_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
))))
;





// Entry rule entryRuleConcatenationExpression
entryRuleConcatenationExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getConcatenationExpressionRule()); }
	 iv_ruleConcatenationExpression=ruleConcatenationExpression 
	 { $current=$iv_ruleConcatenationExpression.current; } 
	 EOF 
;

// Rule ConcatenationExpression
ruleConcatenationExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getConcatenationExpressionAccess().getAdditiveExpressionParserRuleCall_0()); 
    }
    this_AdditiveExpression_0=ruleAdditiveExpression
    {
        $current = $this_AdditiveExpression_0.current;
        afterParserOrEnumRuleCall();
    }
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getConcatenationExpressionAccess().getBinaryExpressionLeftAction_1_0(),
            $current);
    }
)(
(
		lv_operator_2_0=
	KEYWORD_34
    {
        newLeafNode(lv_operator_2_0, grammarAccess.getConcatenationExpressionAccess().getOperatorVerticalLineVerticalLineKeyword_1_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getConcatenationExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_0, "||");
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getConcatenationExpressionAccess().getRightAdditiveExpressionParserRuleCall_1_2_0()); 
	    }
		lv_right_3_0=ruleAdditiveExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getConcatenationExpressionRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_3_0, 
        		"AdditiveExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*)
;





// Entry rule entryRuleAdditiveExpression
entryRuleAdditiveExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAdditiveExpressionRule()); }
	 iv_ruleAdditiveExpression=ruleAdditiveExpression 
	 { $current=$iv_ruleAdditiveExpression.current; } 
	 EOF 
;

// Rule AdditiveExpression
ruleAdditiveExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getMultiplyExpressionParserRuleCall_0()); 
    }
    this_MultiplyExpression_0=ruleMultiplyExpression
    {
        $current = $this_MultiplyExpression_0.current;
        afterParserOrEnumRuleCall();
    }
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getAdditiveExpressionAccess().getBinaryExpressionLeftAction_1_0(),
            $current);
    }
)(
(
(
		lv_operator_2_1=
	KEYWORD_5
    {
        newLeafNode(lv_operator_2_1, grammarAccess.getAdditiveExpressionAccess().getOperatorPlusSignKeyword_1_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAdditiveExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_1, null);
	    }

    |		lv_operator_2_2=
	KEYWORD_7
    {
        newLeafNode(lv_operator_2_2, grammarAccess.getAdditiveExpressionAccess().getOperatorHyphenMinusKeyword_1_1_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAdditiveExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_2, null);
	    }

)

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getRightMultiplyExpressionParserRuleCall_1_2_0()); 
	    }
		lv_right_3_0=ruleMultiplyExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_3_0, 
        		"MultiplyExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*)
;





// Entry rule entryRuleMultiplyExpression
entryRuleMultiplyExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getMultiplyExpressionRule()); }
	 iv_ruleMultiplyExpression=ruleMultiplyExpression 
	 { $current=$iv_ruleMultiplyExpression.current; } 
	 EOF 
;

// Rule MultiplyExpression
ruleMultiplyExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getMultiplyExpressionAccess().getUnaryExpressionParserRuleCall_0()); 
    }
    this_UnaryExpression_0=ruleUnaryExpression
    {
        $current = $this_UnaryExpression_0.current;
        afterParserOrEnumRuleCall();
    }
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElementAndSet(
            grammarAccess.getMultiplyExpressionAccess().getBinaryExpressionLeftAction_1_0(),
            $current);
    }
)(
(
(
		lv_operator_2_1=
	KEYWORD_4
    {
        newLeafNode(lv_operator_2_1, grammarAccess.getMultiplyExpressionAccess().getOperatorAsteriskKeyword_1_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getMultiplyExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_1, null);
	    }

    |		lv_operator_2_2=
	KEYWORD_9
    {
        newLeafNode(lv_operator_2_2, grammarAccess.getMultiplyExpressionAccess().getOperatorSolidusKeyword_1_1_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getMultiplyExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_2, null);
	    }

    |		lv_operator_2_3=
	KEYWORD_1
    {
        newLeafNode(lv_operator_2_3, grammarAccess.getMultiplyExpressionAccess().getOperatorPercentSignKeyword_1_1_0_2());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getMultiplyExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_2_3, null);
	    }

)

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getMultiplyExpressionAccess().getRightUnaryExpressionParserRuleCall_1_2_0()); 
	    }
		lv_right_3_0=ruleUnaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getMultiplyExpressionRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_3_0, 
        		"UnaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))*)
;





// Entry rule entryRuleUnaryExpression
entryRuleUnaryExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getUnaryExpressionRule()); }
	 iv_ruleUnaryExpression=ruleUnaryExpression 
	 { $current=$iv_ruleUnaryExpression.current; } 
	 EOF 
;

// Rule UnaryExpression
ruleUnaryExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getUnaryExpressionAccess().getUnaryExpressionAction_0_0(),
            $current);
    }
)(
(
(
		lv_operator_1_1=
	KEYWORD_7
    {
        newLeafNode(lv_operator_1_1, grammarAccess.getUnaryExpressionAccess().getOperatorHyphenMinusKeyword_0_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getUnaryExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_1_1, null);
	    }

    |		lv_operator_1_2=
	KEYWORD_5
    {
        newLeafNode(lv_operator_1_2, grammarAccess.getUnaryExpressionAccess().getOperatorPlusSignKeyword_0_1_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getUnaryExpressionRule());
	        }
       		setWithLastConsumed($current, "operator", lv_operator_1_2, null);
	    }

)

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getUnaryExpressionAccess().getExpressionUnaryExpressionParserRuleCall_0_2_0()); 
	    }
		lv_expression_2_0=ruleUnaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getUnaryExpressionRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"UnaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))
    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getUnaryExpressionAccess().getPrimaryExpressionParserRuleCall_1()); 
    }
    this_PrimaryExpression_3=rulePrimaryExpression
    {
        $current = $this_PrimaryExpression_3.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getUnaryExpressionAccess().getCaseExpressionParserRuleCall_2()); 
    }
    this_CaseExpression_4=ruleCaseExpression
    {
        $current = $this_CaseExpression_4.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getUnaryExpressionAccess().getQuantifiedExpressionParserRuleCall_3()); 
    }
    this_QuantifiedExpression_5=ruleQuantifiedExpression
    {
        $current = $this_QuantifiedExpression_5.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRulePrimaryExpression
entryRulePrimaryExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getPrimaryExpressionRule()); }
	 iv_rulePrimaryExpression=rulePrimaryExpression 
	 { $current=$iv_rulePrimaryExpression.current; } 
	 EOF 
;

// Rule PrimaryExpression
rulePrimaryExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getPropertyValueParserRuleCall_0()); 
    }
    this_PropertyValue_0=rulePropertyValue
    {
        $current = $this_PropertyValue_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getTrimFunctionParserRuleCall_1()); 
    }
    this_TrimFunction_1=ruleTrimFunction
    {
        $current = $this_TrimFunction_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getCastFunctionParserRuleCall_2()); 
    }
    this_CastFunction_2=ruleCastFunction
    {
        $current = $this_CastFunction_2.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getAggregateFunctionParserRuleCall_3()); 
    }
    this_AggregateFunction_3=ruleAggregateFunction
    {
        $current = $this_AggregateFunction_3.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getCollectionFunctionParserRuleCall_4()); 
    }
    this_CollectionFunction_4=ruleCollectionFunction
    {
        $current = $this_CollectionFunction_4.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getFunctionCallParserRuleCall_5()); 
    }
    this_FunctionCall_5=ruleFunctionCall
    {
        $current = $this_FunctionCall_5.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getParenthesizedExpressionParserRuleCall_6()); 
    }
    this_ParenthesizedExpression_6=ruleParenthesizedExpression
    {
        $current = $this_ParenthesizedExpression_6.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getSubQueryParserRuleCall_7()); 
    }
    this_SubQuery_7=ruleSubQuery
    {
        $current = $this_SubQuery_7.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getLiteralValueParserRuleCall_8()); 
    }
    this_LiteralValue_8=ruleLiteralValue
    {
        $current = $this_LiteralValue_8.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getQueryParameterValueParserRuleCall_9()); 
    }
    this_QueryParameterValue_9=ruleQueryParameterValue
    {
        $current = $this_QueryParameterValue_9.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRulePropertyValue
entryRulePropertyValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getPropertyValueRule()); }
	 iv_rulePropertyValue=rulePropertyValue 
	 { $current=$iv_rulePropertyValue.current; } 
	 EOF 
;

// Rule PropertyValue
rulePropertyValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_name_0_0=RULE_ID
		{
			newLeafNode(lv_name_0_0, grammarAccess.getPropertyValueAccess().getNameIDTerminalRuleCall_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyValueRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_0_0, 
        		"ID");
	    }

)
)(
	otherlv_1=KEYWORD_8
    {
    	newLeafNode(otherlv_1, grammarAccess.getPropertyValueAccess().getFullStopKeyword_1_0());
    }
(
(
		lv_segments_2_0=RULE_ID
		{
			newLeafNode(lv_segments_2_0, grammarAccess.getPropertyValueAccess().getSegmentsIDTerminalRuleCall_1_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyValueRule());
	        }
       		addWithLastConsumed(
       			$current, 
       			"segments",
        		lv_segments_2_0, 
        		"ID");
	    }

)
)?(
	otherlv_3=KEYWORD_14
    {
    	newLeafNode(otherlv_3, grammarAccess.getPropertyValueAccess().getLeftSquareBracketKeyword_1_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getPropertyValueAccess().getIndexExpressionParserRuleCall_1_2_1_0()); 
	    }
		lv_index_4_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getPropertyValueRule());
	        }
       		add(
       			$current, 
       			"index",
        		lv_index_4_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_5=KEYWORD_15
    {
    	newLeafNode(otherlv_5, grammarAccess.getPropertyValueAccess().getRightSquareBracketKeyword_1_2_2());
    }
)?)*(
(
		lv_classProperty_6_0=
	KEYWORD_80
    {
        newLeafNode(lv_classProperty_6_0, grammarAccess.getPropertyValueAccess().getClassPropertyClassKeyword_2_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getPropertyValueRule());
	        }
       		setWithLastConsumed($current, "classProperty", true, "class");
	    }

)
)?)
;





// Entry rule entryRuleFunctionCall
entryRuleFunctionCall returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getFunctionCallRule()); }
	 iv_ruleFunctionCall=ruleFunctionCall 
	 { $current=$iv_ruleFunctionCall.current; } 
	 EOF 
;

// Rule FunctionCall
ruleFunctionCall returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_function_0_0=RULE_ID
		{
			newLeafNode(lv_function_0_0, grammarAccess.getFunctionCallAccess().getFunctionIDTerminalRuleCall_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getFunctionCallRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"function",
        		lv_function_0_0, 
        		"ID");
	    }

)
)
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getFunctionCallAccess().getLeftParenthesisKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getFunctionCallAccess().getArgumentsExpressionParserRuleCall_2_0()); 
	    }
		lv_arguments_2_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getFunctionCallRule());
	        }
       		add(
       			$current, 
       			"arguments",
        		lv_arguments_2_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_3=KEYWORD_6
    {
    	newLeafNode(otherlv_3, grammarAccess.getFunctionCallAccess().getCommaKeyword_3_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getFunctionCallAccess().getArgumentsExpressionParserRuleCall_3_1_0()); 
	    }
		lv_arguments_4_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getFunctionCallRule());
	        }
       		add(
       			$current, 
       			"arguments",
        		lv_arguments_4_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_5=KEYWORD_3
    {
    	newLeafNode(otherlv_5, grammarAccess.getFunctionCallAccess().getRightParenthesisKeyword_4());
    }
)
;





// Entry rule entryRuleTrimFunction
entryRuleTrimFunction returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getTrimFunctionRule()); }
	 iv_ruleTrimFunction=ruleTrimFunction 
	 { $current=$iv_ruleTrimFunction.current; } 
	 EOF 
;

// Rule TrimFunction
ruleTrimFunction returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_function_0_0=
	KEYWORD_73
    {
        newLeafNode(lv_function_0_0, grammarAccess.getTrimFunctionAccess().getFunctionTrimKeyword_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getTrimFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_0_0, "trim");
	    }

)
)
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getTrimFunctionAccess().getLeftParenthesisKeyword_1());
    }
(
(
(
		lv_mode_2_1=
	KEYWORD_142
    {
        newLeafNode(lv_mode_2_1, grammarAccess.getTrimFunctionAccess().getModeTrailingKeyword_2_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getTrimFunctionRule());
	        }
       		setWithLastConsumed($current, "mode", lv_mode_2_1, null);
	    }

    |		lv_mode_2_2=
	KEYWORD_128
    {
        newLeafNode(lv_mode_2_2, grammarAccess.getTrimFunctionAccess().getModeLeadingKeyword_2_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getTrimFunctionRule());
	        }
       		setWithLastConsumed($current, "mode", lv_mode_2_2, null);
	    }

    |		lv_mode_2_3=
	KEYWORD_52
    {
        newLeafNode(lv_mode_2_3, grammarAccess.getTrimFunctionAccess().getModeBothKeyword_2_0_2());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getTrimFunctionRule());
	        }
       		setWithLastConsumed($current, "mode", lv_mode_2_3, null);
	    }

)

)
)?((
(
		{ 
	        newCompositeNode(grammarAccess.getTrimFunctionAccess().getCharacterStringLiteralValueParserRuleCall_3_0_0()); 
	    }
		lv_character_3_0=ruleStringLiteralValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getTrimFunctionRule());
	        }
       		set(
       			$current, 
       			"character",
        		lv_character_3_0, 
        		"StringLiteralValue");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_4=KEYWORD_62
    {
    	newLeafNode(otherlv_4, grammarAccess.getTrimFunctionAccess().getFromKeyword_3_1());
    }
)?(
(
		{ 
	        newCompositeNode(grammarAccess.getTrimFunctionAccess().getFromExpressionParserRuleCall_4_0()); 
	    }
		lv_from_5_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getTrimFunctionRule());
	        }
       		set(
       			$current, 
       			"from",
        		lv_from_5_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_6=KEYWORD_3
    {
    	newLeafNode(otherlv_6, grammarAccess.getTrimFunctionAccess().getRightParenthesisKeyword_5());
    }
)
;





// Entry rule entryRuleCastFunction
entryRuleCastFunction returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCastFunctionRule()); }
	 iv_ruleCastFunction=ruleCastFunction 
	 { $current=$iv_ruleCastFunction.current; } 
	 EOF 
;

// Rule CastFunction
ruleCastFunction returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(((
(
		lv_function_0_0=
	KEYWORD_55
    {
        newLeafNode(lv_function_0_0, grammarAccess.getCastFunctionAccess().getFunctionCastKeyword_0_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCastFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_0_0, "cast");
	    }

)
)
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getCastFunctionAccess().getLeftParenthesisKeyword_0_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCastFunctionAccess().getFromExpressionParserRuleCall_0_2_0()); 
	    }
		lv_from_2_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCastFunctionRule());
	        }
       		set(
       			$current, 
       			"from",
        		lv_from_2_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_3=KEYWORD_27
    {
    	newLeafNode(otherlv_3, grammarAccess.getCastFunctionAccess().getAsKeyword_0_3());
    }
(
(
		lv_name_4_0=RULE_ID
		{
			newLeafNode(lv_name_4_0, grammarAccess.getCastFunctionAccess().getNameIDTerminalRuleCall_0_4_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCastFunctionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_4_0, 
        		"ID");
	    }

)
)
	otherlv_5=KEYWORD_3
    {
    	newLeafNode(otherlv_5, grammarAccess.getCastFunctionAccess().getRightParenthesisKeyword_0_5());
    }
)
    |((
(
		lv_function_6_0=
	KEYWORD_125
    {
        newLeafNode(lv_function_6_0, grammarAccess.getCastFunctionAccess().getFunctionExtractKeyword_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCastFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_6_0, "extract");
	    }

)
)
	otherlv_7=KEYWORD_2
    {
    	newLeafNode(otherlv_7, grammarAccess.getCastFunctionAccess().getLeftParenthesisKeyword_1_1());
    }
(
(
		lv_name_8_0=RULE_ID
		{
			newLeafNode(lv_name_8_0, grammarAccess.getCastFunctionAccess().getNameIDTerminalRuleCall_1_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCastFunctionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_8_0, 
        		"ID");
	    }

)
)
	otherlv_9=KEYWORD_62
    {
    	newLeafNode(otherlv_9, grammarAccess.getCastFunctionAccess().getFromKeyword_1_3());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCastFunctionAccess().getFromExpressionParserRuleCall_1_4_0()); 
	    }
		lv_from_10_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCastFunctionRule());
	        }
       		set(
       			$current, 
       			"from",
        		lv_from_10_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_11=KEYWORD_3
    {
    	newLeafNode(otherlv_11, grammarAccess.getCastFunctionAccess().getRightParenthesisKeyword_1_5());
    }
))
;





// Entry rule entryRuleAggregateFunction
entryRuleAggregateFunction returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAggregateFunctionRule()); }
	 iv_ruleAggregateFunction=ruleAggregateFunction 
	 { $current=$iv_ruleAggregateFunction.current; } 
	 EOF 
;

// Rule AggregateFunction
ruleAggregateFunction returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(((
(
(
		lv_function_0_1=
	KEYWORD_51
    {
        newLeafNode(lv_function_0_1, grammarAccess.getAggregateFunctionAccess().getFunctionSumKeyword_0_0_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAggregateFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_0_1, null);
	    }

    |		lv_function_0_2=
	KEYWORD_41
    {
        newLeafNode(lv_function_0_2, grammarAccess.getAggregateFunctionAccess().getFunctionAvgKeyword_0_0_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAggregateFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_0_2, null);
	    }

    |		lv_function_0_3=
	KEYWORD_46
    {
        newLeafNode(lv_function_0_3, grammarAccess.getAggregateFunctionAccess().getFunctionMaxKeyword_0_0_0_2());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAggregateFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_0_3, null);
	    }

    |		lv_function_0_4=
	KEYWORD_47
    {
        newLeafNode(lv_function_0_4, grammarAccess.getAggregateFunctionAccess().getFunctionMinKeyword_0_0_0_3());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAggregateFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_0_4, null);
	    }

)

)
)
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getAggregateFunctionAccess().getLeftParenthesisKeyword_0_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAggregateFunctionAccess().getAggregateExpressionAdditiveExpressionParserRuleCall_0_2_0()); 
	    }
		lv_aggregateExpression_2_0=ruleAdditiveExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAggregateFunctionRule());
	        }
       		set(
       			$current, 
       			"aggregateExpression",
        		lv_aggregateExpression_2_0, 
        		"AdditiveExpression");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_3=KEYWORD_3
    {
    	newLeafNode(otherlv_3, grammarAccess.getAggregateFunctionAccess().getRightParenthesisKeyword_0_3());
    }
)
    |((
(
		lv_function_4_0=
	KEYWORD_81
    {
        newLeafNode(lv_function_4_0, grammarAccess.getAggregateFunctionAccess().getFunctionCountKeyword_1_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAggregateFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_4_0, "count");
	    }

)
)
	otherlv_5=KEYWORD_2
    {
    	newLeafNode(otherlv_5, grammarAccess.getAggregateFunctionAccess().getLeftParenthesisKeyword_1_1());
    }
((
(
		lv_all_6_0=
	KEYWORD_4
    {
        newLeafNode(lv_all_6_0, grammarAccess.getAggregateFunctionAccess().getAllAsteriskKeyword_1_2_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAggregateFunctionRule());
	        }
       		setWithLastConsumed($current, "all", true, "*");
	    }

)
)
    |(((
(
		lv_distinct_7_0=
	KEYWORD_136
    {
        newLeafNode(lv_distinct_7_0, grammarAccess.getAggregateFunctionAccess().getDistinctDistinctKeyword_1_2_1_0_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAggregateFunctionRule());
	        }
       		setWithLastConsumed($current, "distinct", true, "distinct");
	    }

)
)
    |(
(
		lv_all_8_0=
	KEYWORD_37
    {
        newLeafNode(lv_all_8_0, grammarAccess.getAggregateFunctionAccess().getAllAllKeyword_1_2_1_0_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getAggregateFunctionRule());
	        }
       		setWithLastConsumed($current, "all", true, "all");
	    }

)
))?((
(
		{ 
	        newCompositeNode(grammarAccess.getAggregateFunctionAccess().getFromQualifiedNameParserRuleCall_1_2_1_1_0_0()); 
	    }
		lv_from_9_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAggregateFunctionRule());
	        }
       		set(
       			$current, 
       			"from",
        		lv_from_9_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getAggregateFunctionAccess().getCollectionCollectionFunctionParserRuleCall_1_2_1_1_1_0()); 
	    }
		lv_collection_10_0=ruleCollectionFunction		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAggregateFunctionRule());
	        }
       		set(
       			$current, 
       			"collection",
        		lv_collection_10_0, 
        		"CollectionFunction");
	        afterParserOrEnumRuleCall();
	    }

)
))))
	otherlv_11=KEYWORD_3
    {
    	newLeafNode(otherlv_11, grammarAccess.getAggregateFunctionAccess().getRightParenthesisKeyword_1_3());
    }
))
;







// Entry rule entryRuleQueryParameterValue
entryRuleQueryParameterValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getQueryParameterValueRule()); }
	 iv_ruleQueryParameterValue=ruleQueryParameterValue 
	 { $current=$iv_ruleQueryParameterValue.current; } 
	 EOF 
;

// Rule QueryParameterValue
ruleQueryParameterValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_10
    {
    	newLeafNode(otherlv_0, grammarAccess.getQueryParameterValueAccess().getColonKeyword_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getQueryParameterValueRule());
	        }
        }
	otherlv_1=RULE_ID
	{
		newLeafNode(otherlv_1, grammarAccess.getQueryParameterValueAccess().getParameterQueryParameterReferenceCrossReference_1_0()); 
	}

)
)(
	otherlv_2=KEYWORD_8
    {
    	newLeafNode(otherlv_2, grammarAccess.getQueryParameterValueAccess().getFullStopKeyword_2_0());
    }
(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getQueryParameterValueRule());
	        }
        }
	otherlv_3=RULE_ID
	{
		newLeafNode(otherlv_3, grammarAccess.getQueryParameterValueAccess().getAttributeAttributeCrossReference_2_1_0()); 
	}

)
))?)
;





// Entry rule entryRuleQuantifiedExpression
entryRuleQuantifiedExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getQuantifiedExpressionRule()); }
	 iv_ruleQuantifiedExpression=ruleQuantifiedExpression 
	 { $current=$iv_ruleQuantifiedExpression.current; } 
	 EOF 
;

// Rule QuantifiedExpression
ruleQuantifiedExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
(
		lv_quantifier_0_1=
	KEYWORD_71
    {
        newLeafNode(lv_quantifier_0_1, grammarAccess.getQuantifiedExpressionAccess().getQuantifierSomeKeyword_0_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getQuantifiedExpressionRule());
	        }
       		setWithLastConsumed($current, "quantifier", lv_quantifier_0_1, null);
	    }

    |		lv_quantifier_0_2=
	KEYWORD_103
    {
        newLeafNode(lv_quantifier_0_2, grammarAccess.getQuantifiedExpressionAccess().getQuantifierExistsKeyword_0_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getQuantifiedExpressionRule());
	        }
       		setWithLastConsumed($current, "quantifier", lv_quantifier_0_2, null);
	    }

    |		lv_quantifier_0_3=
	KEYWORD_37
    {
        newLeafNode(lv_quantifier_0_3, grammarAccess.getQuantifiedExpressionAccess().getQuantifierAllKeyword_0_0_2());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getQuantifiedExpressionRule());
	        }
       		setWithLastConsumed($current, "quantifier", lv_quantifier_0_3, null);
	    }

    |		lv_quantifier_0_4=
	KEYWORD_39
    {
        newLeafNode(lv_quantifier_0_4, grammarAccess.getQuantifiedExpressionAccess().getQuantifierAnyKeyword_0_0_3());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getQuantifiedExpressionRule());
	        }
       		setWithLastConsumed($current, "quantifier", lv_quantifier_0_4, null);
	    }

)

)
)((
(
(
		{ 
	        newCompositeNode(grammarAccess.getQuantifiedExpressionAccess().getExpressionCollectionFunctionParserRuleCall_1_0_0_0()); 
	    }
		lv_expression_1_1=ruleCollectionFunction		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getQuantifiedExpressionRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_1_1, 
        		"CollectionFunction");
	        afterParserOrEnumRuleCall();
	    }

    |		{ 
	        newCompositeNode(grammarAccess.getQuantifiedExpressionAccess().getExpressionSubQueryParserRuleCall_1_0_0_1()); 
	    }
		lv_expression_1_2=ruleSubQuery		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getQuantifiedExpressionRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_1_2, 
        		"SubQuery");
	        afterParserOrEnumRuleCall();
	    }

)

)
)
    |(
(
		lv_name_2_0=RULE_ID
		{
			newLeafNode(lv_name_2_0, grammarAccess.getQuantifiedExpressionAccess().getNameIDTerminalRuleCall_1_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getQuantifiedExpressionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_2_0, 
        		"ID");
	    }

)
)))
;





// Entry rule entryRuleCaseExpression
entryRuleCaseExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCaseExpressionRule()); }
	 iv_ruleCaseExpression=ruleCaseExpression 
	 { $current=$iv_ruleCaseExpression.current; } 
	 EOF 
;

// Rule CaseExpression
ruleCaseExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	otherlv_0=KEYWORD_54
    {
    	newLeafNode(otherlv_0, grammarAccess.getCaseExpressionAccess().getCaseKeyword_0_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCaseExpressionAccess().getWhenClauseWhenClauseParserRuleCall_0_1_0()); 
	    }
		lv_whenClause_1_0=ruleWhenClause		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCaseExpressionRule());
	        }
       		add(
       			$current, 
       			"whenClause",
        		lv_whenClause_1_0, 
        		"WhenClause");
	        afterParserOrEnumRuleCall();
	    }

)
)+(
	otherlv_2=KEYWORD_60
    {
    	newLeafNode(otherlv_2, grammarAccess.getCaseExpressionAccess().getElseKeyword_0_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCaseExpressionAccess().getElseExpressionUnaryExpressionParserRuleCall_0_2_1_0()); 
	    }
		lv_elseExpression_3_0=ruleUnaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCaseExpressionRule());
	        }
       		set(
       			$current, 
       			"elseExpression",
        		lv_elseExpression_3_0, 
        		"UnaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))?
	otherlv_4=KEYWORD_43
    {
    	newLeafNode(otherlv_4, grammarAccess.getCaseExpressionAccess().getEndKeyword_0_3());
    }
)
    |(
	otherlv_5=KEYWORD_54
    {
    	newLeafNode(otherlv_5, grammarAccess.getCaseExpressionAccess().getCaseKeyword_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCaseExpressionAccess().getExpressionUnaryExpressionParserRuleCall_1_1_0()); 
	    }
		lv_expression_6_0=ruleUnaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCaseExpressionRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_6_0, 
        		"UnaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getCaseExpressionAccess().getAltWhenClauseAltWhenClauseParserRuleCall_1_2_0()); 
	    }
		lv_altWhenClause_7_0=ruleAltWhenClause		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCaseExpressionRule());
	        }
       		add(
       			$current, 
       			"altWhenClause",
        		lv_altWhenClause_7_0, 
        		"AltWhenClause");
	        afterParserOrEnumRuleCall();
	    }

)
)+(
	otherlv_8=KEYWORD_60
    {
    	newLeafNode(otherlv_8, grammarAccess.getCaseExpressionAccess().getElseKeyword_1_3_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCaseExpressionAccess().getElseExpressionUnaryExpressionParserRuleCall_1_3_1_0()); 
	    }
		lv_elseExpression_9_0=ruleUnaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCaseExpressionRule());
	        }
       		set(
       			$current, 
       			"elseExpression",
        		lv_elseExpression_9_0, 
        		"UnaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))?
	otherlv_10=KEYWORD_43
    {
    	newLeafNode(otherlv_10, grammarAccess.getCaseExpressionAccess().getEndKeyword_1_4());
    }
))
;





// Entry rule entryRuleWhenClause
entryRuleWhenClause returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getWhenClauseRule()); }
	 iv_ruleWhenClause=ruleWhenClause 
	 { $current=$iv_ruleWhenClause.current; } 
	 EOF 
;

// Rule WhenClause
ruleWhenClause returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_78
    {
    	newLeafNode(otherlv_0, grammarAccess.getWhenClauseAccess().getWhenKeyword_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getWhenClauseAccess().getWhenExpressionExpressionParserRuleCall_1_0()); 
	    }
		lv_whenExpression_1_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getWhenClauseRule());
	        }
       		set(
       			$current, 
       			"whenExpression",
        		lv_whenExpression_1_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_2=KEYWORD_72
    {
    	newLeafNode(otherlv_2, grammarAccess.getWhenClauseAccess().getThenKeyword_2());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getWhenClauseAccess().getThenExpressionUnaryExpressionParserRuleCall_3_0()); 
	    }
		lv_thenExpression_3_0=ruleUnaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getWhenClauseRule());
	        }
       		set(
       			$current, 
       			"thenExpression",
        		lv_thenExpression_3_0, 
        		"UnaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleAltWhenClause
entryRuleAltWhenClause returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAltWhenClauseRule()); }
	 iv_ruleAltWhenClause=ruleAltWhenClause 
	 { $current=$iv_ruleAltWhenClause.current; } 
	 EOF 
;

// Rule AltWhenClause
ruleAltWhenClause returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_78
    {
    	newLeafNode(otherlv_0, grammarAccess.getAltWhenClauseAccess().getWhenKeyword_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAltWhenClauseAccess().getWhenExpressionUnaryExpressionParserRuleCall_1_0()); 
	    }
		lv_whenExpression_1_0=ruleUnaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAltWhenClauseRule());
	        }
       		set(
       			$current, 
       			"whenExpression",
        		lv_whenExpression_1_0, 
        		"UnaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_2=KEYWORD_72
    {
    	newLeafNode(otherlv_2, grammarAccess.getAltWhenClauseAccess().getThenKeyword_2());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getAltWhenClauseAccess().getThenExpressionUnaryExpressionParserRuleCall_3_0()); 
	    }
		lv_thenExpression_3_0=ruleUnaryExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAltWhenClauseRule());
	        }
       		set(
       			$current, 
       			"thenExpression",
        		lv_thenExpression_3_0, 
        		"UnaryExpression");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleCollectionFunction
entryRuleCollectionFunction returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCollectionFunctionRule()); }
	 iv_ruleCollectionFunction=ruleCollectionFunction 
	 { $current=$iv_ruleCollectionFunction.current; } 
	 EOF 
;

// Rule CollectionFunction
ruleCollectionFunction returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
(
		lv_function_0_1=
	KEYWORD_137
    {
        newLeafNode(lv_function_0_1, grammarAccess.getCollectionFunctionAccess().getFunctionElementsKeyword_0_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCollectionFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_0_1, null);
	    }

    |		lv_function_0_2=
	KEYWORD_126
    {
        newLeafNode(lv_function_0_2, grammarAccess.getCollectionFunctionAccess().getFunctionIndicesKeyword_0_0_1());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getCollectionFunctionRule());
	        }
       		setWithLastConsumed($current, "function", lv_function_0_2, null);
	    }

)

)
)
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getCollectionFunctionAccess().getLeftParenthesisKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCollectionFunctionAccess().getPropertyPropertyValueParserRuleCall_2_0()); 
	    }
		lv_property_2_0=rulePropertyValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCollectionFunctionRule());
	        }
       		set(
       			$current, 
       			"property",
        		lv_property_2_0, 
        		"PropertyValue");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_3=KEYWORD_3
    {
    	newLeafNode(otherlv_3, grammarAccess.getCollectionFunctionAccess().getRightParenthesisKeyword_3());
    }
)
;





// Entry rule entryRuleSubQuery
entryRuleSubQuery returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getSubQueryRule()); }
	 iv_ruleSubQuery=ruleSubQuery 
	 { $current=$iv_ruleSubQuery.current; } 
	 EOF 
;

// Rule SubQuery
ruleSubQuery returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_2
    {
    	newLeafNode(otherlv_0, grammarAccess.getSubQueryAccess().getLeftParenthesisKeyword_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSubQueryAccess().getQueriesSelectStatementParserRuleCall_1_0()); 
	    }
		lv_queries_1_0=ruleSelectStatement		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSubQueryRule());
	        }
       		add(
       			$current, 
       			"queries",
        		lv_queries_1_0, 
        		"SelectStatement");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_2=KEYWORD_94
    {
    	newLeafNode(otherlv_2, grammarAccess.getSubQueryAccess().getUnionKeyword_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getSubQueryAccess().getQueriesSelectStatementParserRuleCall_2_1_0()); 
	    }
		lv_queries_3_0=ruleSelectStatement		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getSubQueryRule());
	        }
       		add(
       			$current, 
       			"queries",
        		lv_queries_3_0, 
        		"SelectStatement");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_4=KEYWORD_3
    {
    	newLeafNode(otherlv_4, grammarAccess.getSubQueryAccess().getRightParenthesisKeyword_3());
    }
)
;





// Entry rule entryRuleParenthesizedExpression
entryRuleParenthesizedExpression returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getParenthesizedExpressionRule()); }
	 iv_ruleParenthesizedExpression=ruleParenthesizedExpression 
	 { $current=$iv_ruleParenthesizedExpression.current; } 
	 EOF 
;

// Rule ParenthesizedExpression
ruleParenthesizedExpression returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_2
    {
    	newLeafNode(otherlv_0, grammarAccess.getParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getParenthesizedExpressionAccess().getExpressionsExpressionParserRuleCall_1_0()); 
	    }
		lv_expressions_1_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getParenthesizedExpressionRule());
	        }
       		add(
       			$current, 
       			"expressions",
        		lv_expressions_1_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_2=KEYWORD_6
    {
    	newLeafNode(otherlv_2, grammarAccess.getParenthesizedExpressionAccess().getCommaKeyword_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getParenthesizedExpressionAccess().getExpressionsExpressionParserRuleCall_2_1_0()); 
	    }
		lv_expressions_3_0=ruleExpression		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getParenthesizedExpressionRule());
	        }
       		add(
       			$current, 
       			"expressions",
        		lv_expressions_3_0, 
        		"Expression");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_4=KEYWORD_3
    {
    	newLeafNode(otherlv_4, grammarAccess.getParenthesizedExpressionAccess().getRightParenthesisKeyword_3());
    }
)
;





// Entry rule entryRuleLiteralValue
entryRuleLiteralValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getLiteralValueRule()); }
	 iv_ruleLiteralValue=ruleLiteralValue 
	 { $current=$iv_ruleLiteralValue.current; } 
	 EOF 
;

// Rule LiteralValue
ruleLiteralValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralValueAccess().getBooleanLiteralValueParserRuleCall_0()); 
    }
    this_BooleanLiteralValue_0=ruleBooleanLiteralValue
    {
        $current = $this_BooleanLiteralValue_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralValueAccess().getRealLiteralValueParserRuleCall_1()); 
    }
    this_RealLiteralValue_1=ruleRealLiteralValue
    {
        $current = $this_RealLiteralValue_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralValueAccess().getIntegerLiteralValueParserRuleCall_2()); 
    }
    this_IntegerLiteralValue_2=ruleIntegerLiteralValue
    {
        $current = $this_IntegerLiteralValue_2.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralValueAccess().getNullLiteralValueParserRuleCall_3()); 
    }
    this_NullLiteralValue_3=ruleNullLiteralValue
    {
        $current = $this_NullLiteralValue_3.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralValueAccess().getEmptyLiteralValueParserRuleCall_4()); 
    }
    this_EmptyLiteralValue_4=ruleEmptyLiteralValue
    {
        $current = $this_EmptyLiteralValue_4.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralValueAccess().getStringLiteralValueParserRuleCall_5()); 
    }
    this_StringLiteralValue_5=ruleStringLiteralValue
    {
        $current = $this_StringLiteralValue_5.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleStringLiteralValue
entryRuleStringLiteralValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getStringLiteralValueRule()); }
	 iv_ruleStringLiteralValue=ruleStringLiteralValue 
	 { $current=$iv_ruleStringLiteralValue.current; } 
	 EOF 
;

// Rule StringLiteralValue
ruleStringLiteralValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getStringLiteralValueAccess().getStringLiteralValueAction_0(),
            $current);
    }
)(
(
		lv_value_1_0=RULE_STRING
		{
			newLeafNode(lv_value_1_0, grammarAccess.getStringLiteralValueAccess().getValueSTRINGTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getStringLiteralValueRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"value",
        		lv_value_1_0, 
        		"STRING");
	    }

)
))
;





// Entry rule entryRuleIntegerLiteralValue
entryRuleIntegerLiteralValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getIntegerLiteralValueRule()); }
	 iv_ruleIntegerLiteralValue=ruleIntegerLiteralValue 
	 { $current=$iv_ruleIntegerLiteralValue.current; } 
	 EOF 
;

// Rule IntegerLiteralValue
ruleIntegerLiteralValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getIntegerLiteralValueAccess().getIntegerLiteralValueAction_0(),
            $current);
    }
)(
(
		{ 
	        newCompositeNode(grammarAccess.getIntegerLiteralValueAccess().getValueIntValueParserRuleCall_1_0()); 
	    }
		lv_value_1_0=ruleIntValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getIntegerLiteralValueRule());
	        }
       		set(
       			$current, 
       			"value",
        		lv_value_1_0, 
        		"IntValue");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleRealLiteralValue
entryRuleRealLiteralValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getRealLiteralValueRule()); }
	 iv_ruleRealLiteralValue=ruleRealLiteralValue 
	 { $current=$iv_ruleRealLiteralValue.current; } 
	 EOF 
;

// Rule RealLiteralValue
ruleRealLiteralValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getRealLiteralValueAccess().getRealLiteralValueAction_0(),
            $current);
    }
)(
(
		{ 
	        newCompositeNode(grammarAccess.getRealLiteralValueAccess().getValueRealValueParserRuleCall_1_0()); 
	    }
		lv_value_1_0=ruleRealValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRealLiteralValueRule());
	        }
       		set(
       			$current, 
       			"value",
        		lv_value_1_0, 
        		"RealValue");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleBooleanLiteralValue
entryRuleBooleanLiteralValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getBooleanLiteralValueRule()); }
	 iv_ruleBooleanLiteralValue=ruleBooleanLiteralValue 
	 { $current=$iv_ruleBooleanLiteralValue.current; } 
	 EOF 
;

// Rule BooleanLiteralValue
ruleBooleanLiteralValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getBooleanLiteralValueAccess().getBooleanLiteralValueAction_0_0(),
            $current);
    }
)
	otherlv_1=KEYWORD_83
    {
    	newLeafNode(otherlv_1, grammarAccess.getBooleanLiteralValueAccess().getFalseKeyword_0_1());
    }
)
    |(
(
		lv_isTrue_2_0=
	KEYWORD_74
    {
        newLeafNode(lv_isTrue_2_0, grammarAccess.getBooleanLiteralValueAccess().getIsTrueTrueKeyword_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getBooleanLiteralValueRule());
	        }
       		setWithLastConsumed($current, "isTrue", true, "true");
	    }

)
))
;





// Entry rule entryRuleNullLiteralValue
entryRuleNullLiteralValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getNullLiteralValueRule()); }
	 iv_ruleNullLiteralValue=ruleNullLiteralValue 
	 { $current=$iv_ruleNullLiteralValue.current; } 
	 EOF 
;

// Rule NullLiteralValue
ruleNullLiteralValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getNullLiteralValueAccess().getNullLiteralValueAction_0(),
            $current);
    }
)
	otherlv_1=KEYWORD_69
    {
    	newLeafNode(otherlv_1, grammarAccess.getNullLiteralValueAccess().getNullKeyword_1());
    }
)
;





// Entry rule entryRuleEmptyLiteralValue
entryRuleEmptyLiteralValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getEmptyLiteralValueRule()); }
	 iv_ruleEmptyLiteralValue=ruleEmptyLiteralValue 
	 { $current=$iv_ruleEmptyLiteralValue.current; } 
	 EOF 
;

// Rule EmptyLiteralValue
ruleEmptyLiteralValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getEmptyLiteralValueAccess().getEmptyLiteralValueAction_0(),
            $current);
    }
)
	otherlv_1=KEYWORD_82
    {
    	newLeafNode(otherlv_1, grammarAccess.getEmptyLiteralValueAccess().getEmptyKeyword_1());
    }
)
;





// Entry rule entryRuleRealValue
entryRuleRealValue returns [String current=null] 
:
	{ newCompositeNode(grammarAccess.getRealValueRule()); } 
	 iv_ruleRealValue=ruleRealValue 
	 { $current=$iv_ruleRealValue.current.getText(); }  
	 EOF 
;

// Rule RealValue
ruleRealValue returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
    }
    @after { leaveRule();
    }:

    { 
        newCompositeNode(grammarAccess.getRealValueAccess().getREALParserRuleCall()); 
    }
    this_REAL_0=ruleREAL    {
		$current.merge(this_REAL_0);
    }

    { 
        afterParserOrEnumRuleCall();
    }

    ;





// Entry rule entryRuleIntValue
entryRuleIntValue returns [String current=null] 
:
	{ newCompositeNode(grammarAccess.getIntValueRule()); } 
	 iv_ruleIntValue=ruleIntValue 
	 { $current=$iv_ruleIntValue.current.getText(); }  
	 EOF 
;

// Rule IntValue
ruleIntValue returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
    }
    @after { leaveRule();
    }:
(    this_INT_0=RULE_INT    {
		$current.merge(this_INT_0);
    }

    { 
    newLeafNode(this_INT_0, grammarAccess.getIntValueAccess().getINTTerminalRuleCall_0()); 
    }

    |    this_HEX_1=RULE_HEX    {
		$current.merge(this_HEX_1);
    }

    { 
    newLeafNode(this_HEX_1, grammarAccess.getIntValueAccess().getHEXTerminalRuleCall_1()); 
    }
)
    ;





// Entry rule entryRuleIsNot
entryRuleIsNot returns [String current=null] 
:
	{ newCompositeNode(grammarAccess.getIsNotRule()); } 
	 iv_ruleIsNot=ruleIsNot 
	 { $current=$iv_ruleIsNot.current.getText(); }  
	 EOF 
;

// Rule IsNot
ruleIsNot returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
    }
    @after { leaveRule();
    }:
(
	kw=KEYWORD_31 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getIsNotAccess().getIsKeyword_0()); 
    }

	kw=KEYWORD_49 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getIsNotAccess().getNotKeyword_1()); 
    }
)
    ;





// Entry rule entryRulePropertyFetch
entryRulePropertyFetch returns [String current=null] 
:
	{ newCompositeNode(grammarAccess.getPropertyFetchRule()); } 
	 iv_rulePropertyFetch=rulePropertyFetch 
	 { $current=$iv_rulePropertyFetch.current.getText(); }  
	 EOF 
;

// Rule PropertyFetch
rulePropertyFetch returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
    }
    @after { leaveRule();
    }:
(
	kw=KEYWORD_84 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getPropertyFetchAccess().getFetchKeyword_0()); 
    }

	kw=KEYWORD_37 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getPropertyFetchAccess().getAllKeyword_1()); 
    }

	kw=KEYWORD_160 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getPropertyFetchAccess().getPropertiesKeyword_2()); 
    }
)
    ;





// Entry rule entryRuleAscendingOrDescending
entryRuleAscendingOrDescending returns [String current=null] 
:
	{ newCompositeNode(grammarAccess.getAscendingOrDescendingRule()); } 
	 iv_ruleAscendingOrDescending=ruleAscendingOrDescending 
	 { $current=$iv_ruleAscendingOrDescending.current.getText(); }  
	 EOF 
;

// Rule AscendingOrDescending
ruleAscendingOrDescending returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
    }
    @after { leaveRule();
    }:
(
	kw=KEYWORD_40 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getAscendingOrDescendingAccess().getAscKeyword_0()); 
    }

    |
	kw=KEYWORD_58 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getAscendingOrDescendingAccess().getDescKeyword_1()); 
    }
)
    ;





// Entry rule entryRuleJoinType
entryRuleJoinType returns [String current=null] 
:
	{ newCompositeNode(grammarAccess.getJoinTypeRule()); } 
	 iv_ruleJoinType=ruleJoinType 
	 { $current=$iv_ruleJoinType.current.getText(); }  
	 EOF 
;

// Rule JoinType
ruleJoinType returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
    }
    @after { leaveRule();
    }:
(((
	kw=KEYWORD_66 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getJoinTypeAccess().getLeftKeyword_0_0_0()); 
    }

    |
	kw=KEYWORD_90 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getJoinTypeAccess().getRightKeyword_0_0_1()); 
    }
)(
	kw=KEYWORD_89 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getJoinTypeAccess().getOuterKeyword_0_1()); 
    }
)?)
    |
	kw=KEYWORD_63 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getJoinTypeAccess().getFullKeyword_1()); 
    }

    |
	kw=KEYWORD_87 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getJoinTypeAccess().getInnerKeyword_2()); 
    }
)
    ;





// Entry rule entryRuleREAL
entryRuleREAL returns [String current=null] 
	@init { 
		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
	}
:
	{ newCompositeNode(grammarAccess.getREALRule()); } 
	 iv_ruleREAL=ruleREAL 
	 { $current=$iv_ruleREAL.current.getText(); }  
	 EOF 
;
finally {
	myHiddenTokenState.restore();
}

// Rule REAL
ruleREAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
    }
    @after { leaveRule();
    }:
((    this_INT_0=RULE_INT    {
		$current.merge(this_INT_0);
    }

    { 
    newLeafNode(this_INT_0, grammarAccess.getREALAccess().getINTTerminalRuleCall_0()); 
    }
)?
	kw=KEYWORD_8 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getREALAccess().getFullStopKeyword_1()); 
    }
(    this_EXP_INT_2=RULE_EXP_INT    {
		$current.merge(this_EXP_INT_2);
    }

    { 
    newLeafNode(this_EXP_INT_2, grammarAccess.getREALAccess().getEXP_INTTerminalRuleCall_2_0()); 
    }

    |    this_INT_3=RULE_INT    {
		$current.merge(this_INT_3);
    }

    { 
    newLeafNode(this_INT_3, grammarAccess.getREALAccess().getINTTerminalRuleCall_2_1()); 
    }
))
    ;
finally {
	myHiddenTokenState.restore();
}





// Entry rule entryRuleIElementWithNoName
entryRuleIElementWithNoName returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getIElementWithNoNameRule()); }
	 iv_ruleIElementWithNoName=ruleIElementWithNoName 
	 { $current=$iv_ruleIElementWithNoName.current; } 
	 EOF 
;

// Rule IElementWithNoName
ruleIElementWithNoName returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
(
		lv_noName_0_0=RULE_ID
		{
			newLeafNode(lv_noName_0_0, grammarAccess.getIElementWithNoNameAccess().getNoNameIDTerminalRuleCall_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getIElementWithNoNameRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"noName",
        		lv_noName_0_0, 
        		"ID");
	    }

)
)
;







// Entry rule entryRuleImport
entryRuleImport returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getImportRule()); }
	 iv_ruleImport=ruleImport 
	 { $current=$iv_ruleImport.current; } 
	 EOF 
;

// Rule Import
ruleImport returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	otherlv_0=KEYWORD_108
    {
    	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0_0());
    }
(
(
		lv_importURI_1_0=RULE_STRING
		{
			newLeafNode(lv_importURI_1_0, grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_0_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getImportRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"importURI",
        		lv_importURI_1_0, 
        		"STRING");
	    }

)
))
    |(
	otherlv_2=KEYWORD_108
    {
    	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getImportKeyword_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceQualifiedNameWithWildCardParserRuleCall_1_1_0()); 
	    }
		lv_importedNamespace_3_0=ruleQualifiedNameWithWildCard		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getImportRule());
	        }
       		set(
       			$current, 
       			"importedNamespace",
        		lv_importedNamespace_3_0, 
        		"QualifiedNameWithWildCard");
	        afterParserOrEnumRuleCall();
	    }

)
)))
;









// Entry rule entryRuleEnumType
entryRuleEnumType returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getEnumTypeRule()); }
	 iv_ruleEnumType=ruleEnumType 
	 { $current=$iv_ruleEnumType.current; } 
	 EOF 
;

// Rule EnumType
ruleEnumType returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_61
    {
    	newLeafNode(otherlv_0, grammarAccess.getEnumTypeAccess().getEnumKeyword_0());
    }
(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getEnumTypeAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEnumTypeRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)(
	otherlv_2=KEYWORD_162
    {
    	newLeafNode(otherlv_2, grammarAccess.getEnumTypeAccess().getValidationKeyword_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getEnumTypeAccess().getValidatorReferenceValidatorReferenceParserRuleCall_2_1_0()); 
	    }
		lv_validatorReference_3_0=ruleValidatorReference		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEnumTypeRule());
	        }
       		set(
       			$current, 
       			"validatorReference",
        		lv_validatorReference_3_0, 
        		"ValidatorReference");
	        afterParserOrEnumRuleCall();
	    }

)
))?((
	otherlv_4=KEYWORD_16
    {
    	newLeafNode(otherlv_4, grammarAccess.getEnumTypeAccess().getLeftCurlyBracketKeyword_3_0_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getEnumTypeAccess().getLiteralsEnumLiteralParserRuleCall_3_0_1_0()); 
	    }
		lv_literals_5_0=ruleEnumLiteral		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEnumTypeRule());
	        }
       		add(
       			$current, 
       			"literals",
        		lv_literals_5_0, 
        		"EnumLiteral");
	        afterParserOrEnumRuleCall();
	    }

)
)*
	otherlv_6=KEYWORD_17
    {
    	newLeafNode(otherlv_6, grammarAccess.getEnumTypeAccess().getRightCurlyBracketKeyword_3_0_2());
    }
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getEnumTypeAccess().getTypeDefinitionTypeDefinitionParserRuleCall_3_1_0()); 
	    }
		lv_typeDefinition_7_0=ruleTypeDefinition		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEnumTypeRule());
	        }
       		set(
       			$current, 
       			"typeDefinition",
        		lv_typeDefinition_7_0, 
        		"TypeDefinition");
	        afterParserOrEnumRuleCall();
	    }

)
)))
;





// Entry rule entryRuleEnumLiteral
entryRuleEnumLiteral returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getEnumLiteralRule()); }
	 iv_ruleEnumLiteral=ruleEnumLiteral 
	 { $current=$iv_ruleEnumLiteral.current; } 
	 EOF 
;

// Rule EnumLiteral
ruleEnumLiteral returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_name_0_0=RULE_ID
		{
			newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_0_0, 
        		"ID");
	    }

)
)(
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0());
    }
(
(
		lv_key_2_0=RULE_STRING
		{
			newLeafNode(lv_key_2_0, grammarAccess.getEnumLiteralAccess().getKeySTRINGTerminalRuleCall_1_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"key",
        		lv_key_2_0, 
        		"STRING");
	    }

)
)(
	otherlv_3=KEYWORD_6
    {
    	newLeafNode(otherlv_3, grammarAccess.getEnumLiteralAccess().getCommaKeyword_1_2_0());
    }
(
(
		lv_shortValue_4_0=RULE_STRING
		{
			newLeafNode(lv_shortValue_4_0, grammarAccess.getEnumLiteralAccess().getShortValueSTRINGTerminalRuleCall_1_2_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"shortValue",
        		lv_shortValue_4_0, 
        		"STRING");
	    }

)
)(
	otherlv_5=KEYWORD_6
    {
    	newLeafNode(otherlv_5, grammarAccess.getEnumLiteralAccess().getCommaKeyword_1_2_2_0());
    }
(
(
		lv_longValue_6_0=RULE_STRING
		{
			newLeafNode(lv_longValue_6_0, grammarAccess.getEnumLiteralAccess().getLongValueSTRINGTerminalRuleCall_1_2_2_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"longValue",
        		lv_longValue_6_0, 
        		"STRING");
	    }

)
))?)?
	otherlv_7=KEYWORD_3
    {
    	newLeafNode(otherlv_7, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_3());
    }
)?)
;





// Entry rule entryRuleParameterDefinition
entryRuleParameterDefinition returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getParameterDefinitionRule()); }
	 iv_ruleParameterDefinition=ruleParameterDefinition 
	 { $current=$iv_ruleParameterDefinition.current; } 
	 EOF 
;

// Rule ParameterDefinition
ruleParameterDefinition returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getParameterDefinitionAccess().getTypeParameterDefinitionTypeEnumRuleCall_0_0()); 
	    }
		lv_type_0_0=ruleParameterDefinitionType		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getParameterDefinitionRule());
	        }
       		set(
       			$current, 
       			"type",
        		lv_type_0_0, 
        		"ParameterDefinitionType");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		lv_name_1_0=RULE_ID
		{
			newLeafNode(lv_name_1_0, grammarAccess.getParameterDefinitionAccess().getNameIDTerminalRuleCall_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterDefinitionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_1_0, 
        		"ID");
	    }

)
)(
	otherlv_2=KEYWORD_12
    {
    	newLeafNode(otherlv_2, grammarAccess.getParameterDefinitionAccess().getEqualsSignKeyword_2_0());
    }
((
(
		lv_defaultInteger_3_0=RULE_INT
		{
			newLeafNode(lv_defaultInteger_3_0, grammarAccess.getParameterDefinitionAccess().getDefaultIntegerINTTerminalRuleCall_2_1_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterDefinitionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"defaultInteger",
        		lv_defaultInteger_3_0, 
        		"INT");
	    }

)
)
    |(
(
		lv_defaultString_4_0=RULE_STRING
		{
			newLeafNode(lv_defaultString_4_0, grammarAccess.getParameterDefinitionAccess().getDefaultStringSTRINGTerminalRuleCall_2_1_1_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterDefinitionRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"defaultString",
        		lv_defaultString_4_0, 
        		"STRING");
	    }

)
)
    |(
(
		{ 
	        newCompositeNode(grammarAccess.getParameterDefinitionAccess().getDefaultBooleanBooleanValueEnumRuleCall_2_1_2_0()); 
	    }
		lv_defaultBoolean_5_0=ruleBooleanValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getParameterDefinitionRule());
	        }
       		set(
       			$current, 
       			"defaultBoolean",
        		lv_defaultBoolean_5_0, 
        		"BooleanValue");
	        afterParserOrEnumRuleCall();
	    }

)
)))?)
;







// Entry rule entryRuleValidatorReference
entryRuleValidatorReference returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getValidatorReferenceRule()); }
	 iv_ruleValidatorReference=ruleValidatorReference 
	 { $current=$iv_ruleValidatorReference.current; } 
	 EOF 
;

// Rule ValidatorReference
ruleValidatorReference returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getValidatorReferenceRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getValidatorReferenceAccess().getValidatorValidatorCrossReference_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getValidatorReferenceAccess().getLeftParenthesisKeyword_1_0());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getValidatorReferenceAccess().getParameterValuesParameterValueParserRuleCall_1_1_0_0()); 
	    }
		lv_parameterValues_2_0=ruleParameterValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getValidatorReferenceRule());
	        }
       		add(
       			$current, 
       			"parameterValues",
        		lv_parameterValues_2_0, 
        		"ParameterValue");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_3=KEYWORD_6
    {
    	newLeafNode(otherlv_3, grammarAccess.getValidatorReferenceAccess().getCommaKeyword_1_1_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getValidatorReferenceAccess().getParameterValuesParameterValueParserRuleCall_1_1_1_1_0()); 
	    }
		lv_parameterValues_4_0=ruleParameterValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getValidatorReferenceRule());
	        }
       		add(
       			$current, 
       			"parameterValues",
        		lv_parameterValues_4_0, 
        		"ParameterValue");
	        afterParserOrEnumRuleCall();
	    }

)
))*)?
	otherlv_5=KEYWORD_3
    {
    	newLeafNode(otherlv_5, grammarAccess.getValidatorReferenceAccess().getRightParenthesisKeyword_1_2());
    }
)?)
;









// Entry rule entryRuleIncrementerReference
entryRuleIncrementerReference returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getIncrementerReferenceRule()); }
	 iv_ruleIncrementerReference=ruleIncrementerReference 
	 { $current=$iv_ruleIncrementerReference.current; } 
	 EOF 
;

// Rule IncrementerReference
ruleIncrementerReference returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getIncrementerReferenceRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getIncrementerReferenceAccess().getIncrementerIncrementerCrossReference_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getIncrementerReferenceAccess().getLeftParenthesisKeyword_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getIncrementerReferenceAccess().getIncrementerParameterParameterValueParserRuleCall_1_1_0()); 
	    }
		lv_incrementerParameter_2_0=ruleParameterValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getIncrementerReferenceRule());
	        }
       		add(
       			$current, 
       			"incrementerParameter",
        		lv_incrementerParameter_2_0, 
        		"ParameterValue");
	        afterParserOrEnumRuleCall();
	    }

)
)?(
	otherlv_3=KEYWORD_6
    {
    	newLeafNode(otherlv_3, grammarAccess.getIncrementerReferenceAccess().getCommaKeyword_1_2_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getIncrementerReferenceAccess().getIncrementerParameterParameterValueParserRuleCall_1_2_1_0()); 
	    }
		lv_incrementerParameter_4_0=ruleParameterValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getIncrementerReferenceRule());
	        }
       		add(
       			$current, 
       			"incrementerParameter",
        		lv_incrementerParameter_4_0, 
        		"ParameterValue");
	        afterParserOrEnumRuleCall();
	    }

)
))*
	otherlv_5=KEYWORD_3
    {
    	newLeafNode(otherlv_5, grammarAccess.getIncrementerReferenceAccess().getRightParenthesisKeyword_1_3());
    }
)?)
;









// Entry rule entryRuleTypeDefinition
entryRuleTypeDefinition returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getTypeDefinitionRule()); }
	 iv_ruleTypeDefinition=ruleTypeDefinition 
	 { $current=$iv_ruleTypeDefinition.current; } 
	 EOF 
;

// Rule TypeDefinition
ruleTypeDefinition returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	otherlv_0=KEYWORD_171
    {
    	newLeafNode(otherlv_0, grammarAccess.getTypeDefinitionAccess().getInstancetypeKeyword_0_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getTypeDefinitionAccess().getInstanceTypeQualifiedNameParserRuleCall_0_1_0()); 
	    }
		lv_instanceType_1_0=ruleQualifiedName		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getTypeDefinitionRule());
	        }
       		set(
       			$current, 
       			"instanceType",
        		lv_instanceType_1_0, 
        		"QualifiedName");
	        afterParserOrEnumRuleCall();
	    }

)
))
    |(
	otherlv_2=KEYWORD_149
    {
    	newLeafNode(otherlv_2, grammarAccess.getTypeDefinitionAccess().getRedefinesKeyword_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getTypeDefinitionAccess().getDefinitionDataTypeAndTypeParameterParserRuleCall_1_1_0()); 
	    }
		lv_definition_3_0=ruleDataTypeAndTypeParameter		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getTypeDefinitionRule());
	        }
       		set(
       			$current, 
       			"definition",
        		lv_definition_3_0, 
        		"DataTypeAndTypeParameter");
	        afterParserOrEnumRuleCall();
	    }

)
)))
;





// Entry rule entryRuleDataTypeAndTypeParameter
entryRuleDataTypeAndTypeParameter returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getDataTypeAndTypeParameterRule()); }
	 iv_ruleDataTypeAndTypeParameter=ruleDataTypeAndTypeParameter 
	 { $current=$iv_ruleDataTypeAndTypeParameter.current; } 
	 EOF 
;

// Rule DataTypeAndTypeParameter
ruleDataTypeAndTypeParameter returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getDataTypeAndTypeParameterRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getDataTypeAndTypeParameterAccess().getDataTypeTypeCrossReference_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getDataTypeAndTypeParameterAccess().getLeftParenthesisKeyword_1_0());
    }
((
(
		{ 
	        newCompositeNode(grammarAccess.getDataTypeAndTypeParameterAccess().getParameterValuesParameterValueParserRuleCall_1_1_0_0()); 
	    }
		lv_parameterValues_2_0=ruleParameterValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDataTypeAndTypeParameterRule());
	        }
       		add(
       			$current, 
       			"parameterValues",
        		lv_parameterValues_2_0, 
        		"ParameterValue");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_3=KEYWORD_6
    {
    	newLeafNode(otherlv_3, grammarAccess.getDataTypeAndTypeParameterAccess().getCommaKeyword_1_1_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getDataTypeAndTypeParameterAccess().getParameterValuesParameterValueParserRuleCall_1_1_1_1_0()); 
	    }
		lv_parameterValues_4_0=ruleParameterValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getDataTypeAndTypeParameterRule());
	        }
       		add(
       			$current, 
       			"parameterValues",
        		lv_parameterValues_4_0, 
        		"ParameterValue");
	        afterParserOrEnumRuleCall();
	    }

)
))*)?
	otherlv_5=KEYWORD_3
    {
    	newLeafNode(otherlv_5, grammarAccess.getDataTypeAndTypeParameterAccess().getRightParenthesisKeyword_1_2());
    }
)?)
;





// Entry rule entryRuleParameterValue
entryRuleParameterValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getParameterValueRule()); }
	 iv_ruleParameterValue=ruleParameterValue 
	 { $current=$iv_ruleParameterValue.current; } 
	 EOF 
;

// Rule ParameterValue
ruleParameterValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_isNull_0_0=
	KEYWORD_69
    {
        newLeafNode(lv_isNull_0_0, grammarAccess.getParameterValueAccess().getIsNullNullKeyword_0_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterValueRule());
	        }
       		setWithLastConsumed($current, "isNull", true, "null");
	    }

)
)
    |(
(
		lv_keepParentValue_1_0=
	KEYWORD_35
    {
        newLeafNode(lv_keepParentValue_1_0, grammarAccess.getParameterValueAccess().getKeepParentValueFullStopFullStopFullStopKeyword_1_0());
    }

	    {
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterValueRule());
	        }
       		setWithLastConsumed($current, "keepParentValue", true, "...");
	    }

)
)
    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getParameterValueAccess().getIntegerParameterValueParserRuleCall_2()); 
    }
    this_IntegerParameterValue_2=ruleIntegerParameterValue
    {
        $current = $this_IntegerParameterValue_2.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getParameterValueAccess().getStringParameterValueParserRuleCall_3()); 
    }
    this_StringParameterValue_3=ruleStringParameterValue
    {
        $current = $this_StringParameterValue_3.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getParameterValueAccess().getBooleanParameterValueParserRuleCall_4()); 
    }
    this_BooleanParameterValue_4=ruleBooleanParameterValue
    {
        $current = $this_BooleanParameterValue_4.current;
        afterParserOrEnumRuleCall();
    }

    |(
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getParameterValueRule());
	        }
        }
	otherlv_5=RULE_ID
	{
		newLeafNode(otherlv_5, grammarAccess.getParameterValueAccess().getReferencedParameterParameterDefinitionCrossReference_5_0()); 
	}

)
))
;





// Entry rule entryRuleIntegerParameterValue
entryRuleIntegerParameterValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getIntegerParameterValueRule()); }
	 iv_ruleIntegerParameterValue=ruleIntegerParameterValue 
	 { $current=$iv_ruleIntegerParameterValue.current; } 
	 EOF 
;

// Rule IntegerParameterValue
ruleIntegerParameterValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
(
		{ 
	        newCompositeNode(grammarAccess.getIntegerParameterValueAccess().getIntValueSINTParserRuleCall_0()); 
	    }
		lv_intValue_0_0=ruleSINT		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getIntegerParameterValueRule());
	        }
       		set(
       			$current, 
       			"intValue",
        		lv_intValue_0_0, 
        		"SINT");
	        afterParserOrEnumRuleCall();
	    }

)
)
;





// Entry rule entryRuleStringParameterValue
entryRuleStringParameterValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getStringParameterValueRule()); }
	 iv_ruleStringParameterValue=ruleStringParameterValue 
	 { $current=$iv_ruleStringParameterValue.current; } 
	 EOF 
;

// Rule StringParameterValue
ruleStringParameterValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
(
		lv_stringValue_0_0=RULE_STRING
		{
			newLeafNode(lv_stringValue_0_0, grammarAccess.getStringParameterValueAccess().getStringValueSTRINGTerminalRuleCall_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getStringParameterValueRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"stringValue",
        		lv_stringValue_0_0, 
        		"STRING");
	    }

)
)
;





// Entry rule entryRuleBooleanParameterValue
entryRuleBooleanParameterValue returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getBooleanParameterValueRule()); }
	 iv_ruleBooleanParameterValue=ruleBooleanParameterValue 
	 { $current=$iv_ruleBooleanParameterValue.current; } 
	 EOF 
;

// Rule BooleanParameterValue
ruleBooleanParameterValue returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
(
		{ 
	        newCompositeNode(grammarAccess.getBooleanParameterValueAccess().getBooleanValueBooleanValueEnumRuleCall_0()); 
	    }
		lv_booleanValue_0_0=ruleBooleanValue		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getBooleanParameterValueRule());
	        }
       		set(
       			$current, 
       			"booleanValue",
        		lv_booleanValue_0_0, 
        		"BooleanValue");
	        afterParserOrEnumRuleCall();
	    }

)
)
;





// Entry rule entryRuleConditionsBlock
entryRuleConditionsBlock returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getConditionsBlockRule()); }
	 iv_ruleConditionsBlock=ruleConditionsBlock 
	 { $current=$iv_ruleConditionsBlock.current; } 
	 EOF 
;

// Rule ConditionsBlock
ruleConditionsBlock returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getConditionsBlockAccess().getConditionsBlockAction_0(),
            $current);
    }
)
	otherlv_1=KEYWORD_155
    {
    	newLeafNode(otherlv_1, grammarAccess.getConditionsBlockAccess().getConditionsKeyword_1());
    }

	otherlv_2=KEYWORD_16
    {
    	newLeafNode(otherlv_2, grammarAccess.getConditionsBlockAccess().getLeftCurlyBracketKeyword_2());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getConditionsBlockAccess().getStatusFlagsStatusFlagParserRuleCall_3_0()); 
	    }
		lv_statusFlags_3_0=ruleStatusFlag		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getConditionsBlockRule());
	        }
       		add(
       			$current, 
       			"statusFlags",
        		lv_statusFlags_3_0, 
        		"StatusFlag");
	        afterParserOrEnumRuleCall();
	    }

)
)*
	otherlv_4=KEYWORD_17
    {
    	newLeafNode(otherlv_4, grammarAccess.getConditionsBlockAccess().getRightCurlyBracketKeyword_4());
    }
)
;





// Entry rule entryRuleConstraint
entryRuleConstraint returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getConstraintRule()); }
	 iv_ruleConstraint=ruleConstraint 
	 { $current=$iv_ruleConstraint.current; } 
	 EOF 
;

// Rule Constraint
ruleConstraint returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getConstraintAccess().getValidatorReferenceValidatorReferenceParserRuleCall_0_0()); 
	    }
		lv_validatorReference_0_0=ruleValidatorReference		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getConstraintRule());
	        }
       		set(
       			$current, 
       			"validatorReference",
        		lv_validatorReference_0_0, 
        		"ValidatorReference");
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_1=KEYWORD_14
    {
    	newLeafNode(otherlv_1, grammarAccess.getConstraintAccess().getLeftSquareBracketKeyword_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getConstraintAccess().getConditionEqualityExprParserRuleCall_1_1_0()); 
	    }
		lv_condition_2_0=ruleEqualityExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getConstraintRule());
	        }
       		set(
       			$current, 
       			"condition",
        		lv_condition_2_0, 
        		"EqualityExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_3=KEYWORD_15
    {
    	newLeafNode(otherlv_3, grammarAccess.getConstraintAccess().getRightSquareBracketKeyword_1_2());
    }
)?)
;





// Entry rule entryRuleEqualityExpr
entryRuleEqualityExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getEqualityExprRule()); }
	 iv_ruleEqualityExpr=ruleEqualityExpr 
	 { $current=$iv_ruleEqualityExpr.current; } 
	 EOF 
;

// Rule EqualityExpr
ruleEqualityExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getEqualityExprAccess().getLeftCondORExprParserRuleCall_0_0()); 
	    }
		lv_left_0_0=ruleCondORExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEqualityExprRule());
	        }
       		set(
       			$current, 
       			"left",
        		lv_left_0_0, 
        		"CondORExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)((
(
		{ 
	        newCompositeNode(grammarAccess.getEqualityExprAccess().getOpEqualityOpEnumRuleCall_1_0_0()); 
	    }
		lv_op_1_0=ruleEqualityOp		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEqualityExprRule());
	        }
       		set(
       			$current, 
       			"op",
        		lv_op_1_0, 
        		"EqualityOp");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getEqualityExprAccess().getRightCondORExprParserRuleCall_1_1_0()); 
	    }
		lv_right_2_0=ruleCondORExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getEqualityExprRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_2_0, 
        		"CondORExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))?)
;





// Entry rule entryRuleCondORExpr
entryRuleCondORExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCondORExprRule()); }
	 iv_ruleCondORExpr=ruleCondORExpr 
	 { $current=$iv_ruleCondORExpr.current; } 
	 EOF 
;

// Rule CondORExpr
ruleCondORExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getCondORExprAccess().getLeftCondANDExprParserRuleCall_0_0()); 
	    }
		lv_left_0_0=ruleCondANDExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCondORExprRule());
	        }
       		set(
       			$current, 
       			"left",
        		lv_left_0_0, 
        		"CondANDExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getCondORExprAccess().getRightsCondORRightsParserRuleCall_1_0()); 
	    }
		lv_rights_1_0=ruleCondORRights		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCondORExprRule());
	        }
       		add(
       			$current, 
       			"rights",
        		lv_rights_1_0, 
        		"CondORRights");
	        afterParserOrEnumRuleCall();
	    }

)
)*)
;





// Entry rule entryRuleCondORRights
entryRuleCondORRights returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCondORRightsRule()); }
	 iv_ruleCondORRights=ruleCondORRights 
	 { $current=$iv_ruleCondORRights.current; } 
	 EOF 
;

// Rule CondORRights
ruleCondORRights returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getCondORRightsAccess().getOpOrOpEnumRuleCall_0_0()); 
	    }
		lv_op_0_0=ruleOrOp		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCondORRightsRule());
	        }
       		set(
       			$current, 
       			"op",
        		lv_op_0_0, 
        		"OrOp");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getCondORRightsAccess().getRightCondANDExprParserRuleCall_1_0()); 
	    }
		lv_right_1_0=ruleCondANDExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCondORRightsRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_1_0, 
        		"CondANDExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleCondANDExpr
entryRuleCondANDExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCondANDExprRule()); }
	 iv_ruleCondANDExpr=ruleCondANDExpr 
	 { $current=$iv_ruleCondANDExpr.current; } 
	 EOF 
;

// Rule CondANDExpr
ruleCondANDExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getCondANDExprAccess().getLeftAtomicBoolExprParserRuleCall_0_0()); 
	    }
		lv_left_0_0=ruleAtomicBoolExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCondANDExprRule());
	        }
       		set(
       			$current, 
       			"left",
        		lv_left_0_0, 
        		"AtomicBoolExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getCondANDExprAccess().getRightsCondANDRightsParserRuleCall_1_0()); 
	    }
		lv_rights_1_0=ruleCondANDRights		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCondANDExprRule());
	        }
       		add(
       			$current, 
       			"rights",
        		lv_rights_1_0, 
        		"CondANDRights");
	        afterParserOrEnumRuleCall();
	    }

)
)*)
;





// Entry rule entryRuleCondANDRights
entryRuleCondANDRights returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCondANDRightsRule()); }
	 iv_ruleCondANDRights=ruleCondANDRights 
	 { $current=$iv_ruleCondANDRights.current; } 
	 EOF 
;

// Rule CondANDRights
ruleCondANDRights returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getCondANDRightsAccess().getOpAndOpEnumRuleCall_0_0()); 
	    }
		lv_op_0_0=ruleAndOp		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCondANDRightsRule());
	        }
       		set(
       			$current, 
       			"op",
        		lv_op_0_0, 
        		"AndOp");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getCondANDRightsAccess().getRightAtomicBoolExprParserRuleCall_1_0()); 
	    }
		lv_right_1_0=ruleAtomicBoolExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCondANDRightsRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_1_0, 
        		"AtomicBoolExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleAtomicBoolExpr
entryRuleAtomicBoolExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAtomicBoolExprRule()); }
	 iv_ruleAtomicBoolExpr=ruleAtomicBoolExpr 
	 { $current=$iv_ruleAtomicBoolExpr.current; } 
	 EOF 
;

// Rule AtomicBoolExpr
ruleAtomicBoolExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:

	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAtomicBoolExprAccess().getRelationalExprParserRuleCall()); 
    }
    this_RelationalExpr_0=ruleRelationalExpr
    {
        $current = $this_RelationalExpr_0.current;
        afterParserOrEnumRuleCall();
    }

;





// Entry rule entryRuleRelationalExpr
entryRuleRelationalExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getRelationalExprRule()); }
	 iv_ruleRelationalExpr=ruleRelationalExpr 
	 { $current=$iv_ruleRelationalExpr.current; } 
	 EOF 
;

// Rule RelationalExpr
ruleRelationalExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExprAccess().getLeftAdditiveExprParserRuleCall_0_0()); 
	    }
		lv_left_0_0=ruleAdditiveExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExprRule());
	        }
       		set(
       			$current, 
       			"left",
        		lv_left_0_0, 
        		"AdditiveExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)((
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExprAccess().getOpRelationalOpEnumRuleCall_1_0_0()); 
	    }
		lv_op_1_0=ruleRelationalOp		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExprRule());
	        }
       		set(
       			$current, 
       			"op",
        		lv_op_1_0, 
        		"RelationalOp");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getRelationalExprAccess().getRightAdditiveExprParserRuleCall_1_1_0()); 
	    }
		lv_right_2_0=ruleAdditiveExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getRelationalExprRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_2_0, 
        		"AdditiveExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))?)
;





// Entry rule entryRuleAdditiveExpr
entryRuleAdditiveExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAdditiveExprRule()); }
	 iv_ruleAdditiveExpr=ruleAdditiveExpr 
	 { $current=$iv_ruleAdditiveExpr.current; } 
	 EOF 
;

// Rule AdditiveExpr
ruleAdditiveExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getAdditiveExprAccess().getLeftMultiplicativeExprParserRuleCall_0_0()); 
	    }
		lv_left_0_0=ruleMultiplicativeExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAdditiveExprRule());
	        }
       		set(
       			$current, 
       			"left",
        		lv_left_0_0, 
        		"MultiplicativeExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getAdditiveExprAccess().getRightsAdditiveRightsParserRuleCall_1_0()); 
	    }
		lv_rights_1_0=ruleAdditiveRights		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAdditiveExprRule());
	        }
       		add(
       			$current, 
       			"rights",
        		lv_rights_1_0, 
        		"AdditiveRights");
	        afterParserOrEnumRuleCall();
	    }

)
)*)
;





// Entry rule entryRuleAdditiveRights
entryRuleAdditiveRights returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAdditiveRightsRule()); }
	 iv_ruleAdditiveRights=ruleAdditiveRights 
	 { $current=$iv_ruleAdditiveRights.current; } 
	 EOF 
;

// Rule AdditiveRights
ruleAdditiveRights returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getAdditiveRightsAccess().getOpAdditiveOpEnumRuleCall_0_0()); 
	    }
		lv_op_0_0=ruleAdditiveOp		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAdditiveRightsRule());
	        }
       		set(
       			$current, 
       			"op",
        		lv_op_0_0, 
        		"AdditiveOp");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getAdditiveRightsAccess().getRightMultiplicativeExprParserRuleCall_1_0()); 
	    }
		lv_right_1_0=ruleMultiplicativeExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getAdditiveRightsRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_1_0, 
        		"MultiplicativeExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleMultiplicativeExpr
entryRuleMultiplicativeExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getMultiplicativeExprRule()); }
	 iv_ruleMultiplicativeExpr=ruleMultiplicativeExpr 
	 { $current=$iv_ruleMultiplicativeExpr.current; } 
	 EOF 
;

// Rule MultiplicativeExpr
ruleMultiplicativeExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getMultiplicativeExprAccess().getLeftAtomicExprParserRuleCall_0_0()); 
	    }
		lv_left_0_0=ruleAtomicExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getMultiplicativeExprRule());
	        }
       		set(
       			$current, 
       			"left",
        		lv_left_0_0, 
        		"AtomicExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getMultiplicativeExprAccess().getRightsMultiplicativeRightsParserRuleCall_1_0()); 
	    }
		lv_rights_1_0=ruleMultiplicativeRights		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getMultiplicativeExprRule());
	        }
       		add(
       			$current, 
       			"rights",
        		lv_rights_1_0, 
        		"MultiplicativeRights");
	        afterParserOrEnumRuleCall();
	    }

)
)*)
;





// Entry rule entryRuleMultiplicativeRights
entryRuleMultiplicativeRights returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getMultiplicativeRightsRule()); }
	 iv_ruleMultiplicativeRights=ruleMultiplicativeRights 
	 { $current=$iv_ruleMultiplicativeRights.current; } 
	 EOF 
;

// Rule MultiplicativeRights
ruleMultiplicativeRights returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
	        newCompositeNode(grammarAccess.getMultiplicativeRightsAccess().getOpMultiplicativeOpEnumRuleCall_0_0()); 
	    }
		lv_op_0_0=ruleMultiplicativeOp		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getMultiplicativeRightsRule());
	        }
       		set(
       			$current, 
       			"op",
        		lv_op_0_0, 
        		"MultiplicativeOp");
	        afterParserOrEnumRuleCall();
	    }

)
)(
(
		{ 
	        newCompositeNode(grammarAccess.getMultiplicativeRightsAccess().getRightAtomicExprParserRuleCall_1_0()); 
	    }
		lv_right_1_0=ruleAtomicExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getMultiplicativeRightsRule());
	        }
       		set(
       			$current, 
       			"right",
        		lv_right_1_0, 
        		"AtomicExpr");
	        afterParserOrEnumRuleCall();
	    }

)
))
;





// Entry rule entryRuleAtomicExpr
entryRuleAtomicExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getAtomicExprRule()); }
	 iv_ruleAtomicExpr=ruleAtomicExpr 
	 { $current=$iv_ruleAtomicExpr.current; } 
	 EOF 
;

// Rule AtomicExpr
ruleAtomicExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAtomicExprAccess().getVariableParserRuleCall_0()); 
    }
    this_Variable_0=ruleVariable
    {
        $current = $this_Variable_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAtomicExprAccess().getLiteralParserRuleCall_1()); 
    }
    this_Literal_1=ruleLiteral
    {
        $current = $this_Literal_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAtomicExprAccess().getParenExprParserRuleCall_2()); 
    }
    this_ParenExpr_2=ruleParenExpr
    {
        $current = $this_ParenExpr_2.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getAtomicExprAccess().getCallParserRuleCall_3()); 
    }
    this_Call_3=ruleCall
    {
        $current = $this_Call_3.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleVariable
entryRuleVariable returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getVariableRule()); }
	 iv_ruleVariable=ruleVariable 
	 { $current=$iv_ruleVariable.current; } 
	 EOF 
;

// Rule Variable
ruleVariable returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:

	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getVariableAccess().getXmadslVariableParserRuleCall()); 
    }
    this_XmadslVariable_0=ruleXmadslVariable
    {
        $current = $this_XmadslVariable_0.current;
        afterParserOrEnumRuleCall();
    }

;





// Entry rule entryRuleXmadslVariable
entryRuleXmadslVariable returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getXmadslVariableRule()); }
	 iv_ruleXmadslVariable=ruleXmadslVariable 
	 { $current=$iv_ruleXmadslVariable.current; } 
	 EOF 
;

// Rule XmadslVariable
ruleXmadslVariable returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getXmadslVariableRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getXmadslVariableAccess().getReferenceReferenceableByXmadslVariableCrossReference_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)(
	otherlv_1=KEYWORD_8
    {
    	newLeafNode(otherlv_1, grammarAccess.getXmadslVariableAccess().getFullStopKeyword_1_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getXmadslVariableAccess().getAccessVariableAccessEnumRuleCall_1_1_0()); 
	    }
		lv_access_2_0=ruleVariableAccess		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getXmadslVariableRule());
	        }
       		set(
       			$current, 
       			"access",
        		lv_access_2_0, 
        		"VariableAccess");
	        afterParserOrEnumRuleCall();
	    }

)
))?)
;





// Entry rule entryRuleStatusFlag
entryRuleStatusFlag returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getStatusFlagRule()); }
	 iv_ruleStatusFlag=ruleStatusFlag 
	 { $current=$iv_ruleStatusFlag.current; } 
	 EOF 
;

// Rule StatusFlag
ruleStatusFlag returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		lv_name_0_0=RULE_ID
		{
			newLeafNode(lv_name_0_0, grammarAccess.getStatusFlagAccess().getNameIDTerminalRuleCall_0_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getStatusFlagRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"name",
        		lv_name_0_0, 
        		"ID");
	    }

)
)
	otherlv_1=KEYWORD_12
    {
    	newLeafNode(otherlv_1, grammarAccess.getStatusFlagAccess().getEqualsSignKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getStatusFlagAccess().getExpressionEqualityExprParserRuleCall_2_0()); 
	    }
		lv_expression_2_0=ruleEqualityExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getStatusFlagRule());
	        }
       		set(
       			$current, 
       			"expression",
        		lv_expression_2_0, 
        		"EqualityExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)?(
	otherlv_3=KEYWORD_6
    {
    	newLeafNode(otherlv_3, grammarAccess.getStatusFlagAccess().getCommaKeyword_3_0());
    }

	otherlv_4=KEYWORD_59
    {
    	newLeafNode(otherlv_4, grammarAccess.getStatusFlagAccess().getDocKeyword_3_1());
    }
(
(
		lv_doc_5_0=RULE_STRING
		{
			newLeafNode(lv_doc_5_0, grammarAccess.getStatusFlagAccess().getDocSTRINGTerminalRuleCall_3_2_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getStatusFlagRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"doc",
        		lv_doc_5_0, 
        		"STRING");
	    }

)
)?)?)
;





// Entry rule entryRuleCall
entryRuleCall returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getCallRule()); }
	 iv_ruleCall=ruleCall 
	 { $current=$iv_ruleCall.current; } 
	 EOF 
;

// Rule Call
ruleCall returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
((
(
		{ 
		  /* */ 
		}
		{
			if ($current==null) {
	            $current = createModelElement(grammarAccess.getCallRule());
	        }
        }
		{ 
	        newCompositeNode(grammarAccess.getCallAccess().getFunctionFunctionCrossReference_0_0()); 
	    }
		ruleQualifiedName		{ 
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_1=KEYWORD_2
    {
    	newLeafNode(otherlv_1, grammarAccess.getCallAccess().getLeftParenthesisKeyword_1());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getCallAccess().getExprLiteralParserRuleCall_2_0()); 
	    }
		lv_expr_2_0=ruleLiteral		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getCallRule());
	        }
       		set(
       			$current, 
       			"expr",
        		lv_expr_2_0, 
        		"Literal");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_3=KEYWORD_3
    {
    	newLeafNode(otherlv_3, grammarAccess.getCallAccess().getRightParenthesisKeyword_3());
    }
)
;







// Entry rule entryRuleParenExpr
entryRuleParenExpr returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getParenExprRule()); }
	 iv_ruleParenExpr=ruleParenExpr 
	 { $current=$iv_ruleParenExpr.current; } 
	 EOF 
;

// Rule ParenExpr
ruleParenExpr returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_2
    {
    	newLeafNode(otherlv_0, grammarAccess.getParenExprAccess().getLeftParenthesisKeyword_0());
    }
(
(
		{ 
	        newCompositeNode(grammarAccess.getParenExprAccess().getExprEqualityExprParserRuleCall_1_0()); 
	    }
		lv_expr_1_0=ruleEqualityExpr		{
	        if ($current==null) {
	            $current = createModelElementForParent(grammarAccess.getParenExprRule());
	        }
       		set(
       			$current, 
       			"expr",
        		lv_expr_1_0, 
        		"EqualityExpr");
	        afterParserOrEnumRuleCall();
	    }

)
)
	otherlv_2=KEYWORD_3
    {
    	newLeafNode(otherlv_2, grammarAccess.getParenExprAccess().getRightParenthesisKeyword_2());
    }
)
;





// Entry rule entryRuleLiteral
entryRuleLiteral returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getLiteralRule()); }
	 iv_ruleLiteral=ruleLiteral 
	 { $current=$iv_ruleLiteral.current; } 
	 EOF 
;

// Rule Literal
ruleLiteral returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralAccess().getIntLiteralParserRuleCall_0()); 
    }
    this_IntLiteral_0=ruleIntLiteral
    {
        $current = $this_IntLiteral_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralAccess().getBoolLiteralParserRuleCall_1()); 
    }
    this_BoolLiteral_1=ruleBoolLiteral
    {
        $current = $this_BoolLiteral_1.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getLiteralAccess().getStringLiteralParserRuleCall_2()); 
    }
    this_StringLiteral_2=ruleStringLiteral
    {
        $current = $this_StringLiteral_2.current;
        afterParserOrEnumRuleCall();
    }
)
;





// 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(); }:
(
(
		lv_number_0_0=RULE_INT
		{
			newLeafNode(lv_number_0_0, grammarAccess.getIntLiteralAccess().getNumberINTTerminalRuleCall_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getIntLiteralRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"number",
        		lv_number_0_0, 
        		"INT");
	    }

)
)
;





// 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(); }:
(
(
		lv_string_0_0=RULE_STRING
		{
			newLeafNode(lv_string_0_0, grammarAccess.getStringLiteralAccess().getStringSTRINGTerminalRuleCall_0()); 
		}
		{
	        if ($current==null) {
	            $current = createModelElement(grammarAccess.getStringLiteralRule());
	        }
       		setWithLastConsumed(
       			$current, 
       			"string",
        		lv_string_0_0, 
        		"STRING");
	    }

)
)
;





// 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(); }:
(
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getBoolLiteralAccess().getTrueLiteralParserRuleCall_0()); 
    }
    this_TrueLiteral_0=ruleTrueLiteral
    {
        $current = $this_TrueLiteral_0.current;
        afterParserOrEnumRuleCall();
    }

    |
	{ 
	  /* */ 
	}
    { 
        newCompositeNode(grammarAccess.getBoolLiteralAccess().getFalseLiteralParserRuleCall_1()); 
    }
    this_FalseLiteral_1=ruleFalseLiteral
    {
        $current = $this_FalseLiteral_1.current;
        afterParserOrEnumRuleCall();
    }
)
;





// Entry rule entryRuleTrueLiteral
entryRuleTrueLiteral returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getTrueLiteralRule()); }
	 iv_ruleTrueLiteral=ruleTrueLiteral 
	 { $current=$iv_ruleTrueLiteral.current; } 
	 EOF 
;

// Rule TrueLiteral
ruleTrueLiteral returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_74
    {
    	newLeafNode(otherlv_0, grammarAccess.getTrueLiteralAccess().getTrueKeyword_0());
    }
(
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getTrueLiteralAccess().getTrueLiteralAction_1(),
            $current);
    }
))
;





// Entry rule entryRuleFalseLiteral
entryRuleFalseLiteral returns [EObject current=null]
	:
	{ newCompositeNode(grammarAccess.getFalseLiteralRule()); }
	 iv_ruleFalseLiteral=ruleFalseLiteral 
	 { $current=$iv_ruleFalseLiteral.current; } 
	 EOF 
;

// Rule FalseLiteral
ruleFalseLiteral returns [EObject current=null] 
    @init { enterRule(); 
    }
    @after { leaveRule(); }:
(
	otherlv_0=KEYWORD_83
    {
    	newLeafNode(otherlv_0, grammarAccess.getFalseLiteralAccess().getFalseKeyword_0());
    }
(
	{ 
	  /* */ 
	}
    {
        $current = forceCreateModelElement(
            grammarAccess.getFalseLiteralAccess().getFalseLiteralAction_1(),
            $current);
    }
))
;





// Entry rule entryRuleQualifiedNameWithWildCard
entryRuleQualifiedNameWithWildCard returns [String current=null] 
	@init { 
		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
	}
:
	{ newCompositeNode(grammarAccess.getQualifiedNameWithWildCardRule()); } 
	 iv_ruleQualifiedNameWithWildCard=ruleQualifiedNameWithWildCard 
	 { $current=$iv_ruleQualifiedNameWithWildCard.current.getText(); }  
	 EOF 
;
finally {
	myHiddenTokenState.restore();
}

// Rule QualifiedNameWithWildCard
ruleQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
    }
    @after { leaveRule();
    }:
(
    { 
        newCompositeNode(grammarAccess.getQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
    }
    this_QualifiedName_0=ruleQualifiedName    {
		$current.merge(this_QualifiedName_0);
    }

    { 
        afterParserOrEnumRuleCall();
    }
(
	kw=KEYWORD_20 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildCardAccess().getFullStopAsteriskKeyword_1()); 
    }
)?)
    ;
finally {
	myHiddenTokenState.restore();
}





// Entry rule entryRuleQualifiedName
entryRuleQualifiedName returns [String current=null] 
	@init { 
		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
	}
:
	{ newCompositeNode(grammarAccess.getQualifiedNameRule()); } 
	 iv_ruleQualifiedName=ruleQualifiedName 
	 { $current=$iv_ruleQualifiedName.current.getText(); }  
	 EOF 
;
finally {
	myHiddenTokenState.restore();
}

// Rule QualifiedName
ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
    }
    @after { leaveRule();
    }:
(    this_ID_0=RULE_ID    {
		$current.merge(this_ID_0);
    }

    { 
    newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
    }
(
	kw=KEYWORD_8 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
    }
    this_ID_2=RULE_ID    {
		$current.merge(this_ID_2);
    }

    { 
    newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
    }
)*)
    ;
finally {
	myHiddenTokenState.restore();
}





// Entry rule entryRuleSINT
entryRuleSINT returns [String current=null] 
:
	{ newCompositeNode(grammarAccess.getSINTRule()); } 
	 iv_ruleSINT=ruleSINT 
	 { $current=$iv_ruleSINT.current.getText(); }  
	 EOF 
;

// Rule SINT
ruleSINT returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
    @init { enterRule(); 
    }
    @after { leaveRule();
    }:
((
	kw=KEYWORD_7 
    {
        $current.merge(kw);
        newLeafNode(kw, grammarAccess.getSINTAccess().getHyphenMinusKeyword_0()); 
    }
)?    this_INT_1=RULE_INT    {
		$current.merge(this_INT_1);
    }

    { 
    newLeafNode(this_INT_1, grammarAccess.getSINTAccess().getINTTerminalRuleCall_1()); 
    }
)
    ;





// Rule CrudOperationType
ruleCrudOperationType returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_97
    {
        $current = grammarAccess.getCrudOperationTypeAccess().getCREATEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getCrudOperationTypeAccess().getCREATEEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_70
    {
        $current = grammarAccess.getCrudOperationTypeAccess().getREADEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getCrudOperationTypeAccess().getREADEnumLiteralDeclaration_1()); 
    }
)
    |(    enumLiteral_2=KEYWORD_119
    {
        $current = grammarAccess.getCrudOperationTypeAccess().getUPDATEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_2, grammarAccess.getCrudOperationTypeAccess().getUPDATEEnumLiteralDeclaration_2()); 
    }
)
    |(    enumLiteral_3=KEYWORD_98
    {
        $current = grammarAccess.getCrudOperationTypeAccess().getDELETEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_3, grammarAccess.getCrudOperationTypeAccess().getDELETEEnumLiteralDeclaration_3()); 
    }
)
    |(    enumLiteral_4=KEYWORD_56
    {
        $current = grammarAccess.getCrudOperationTypeAccess().getALLEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_4, grammarAccess.getCrudOperationTypeAccess().getALLEnumLiteralDeclaration_4()); 
    }
));



// Rule DataBaseConstraintType
ruleDataBaseConstraintType returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_86
    {
        $current = grammarAccess.getDataBaseConstraintTypeAccess().getINDEXEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getDataBaseConstraintTypeAccess().getINDEXEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_118
    {
        $current = grammarAccess.getDataBaseConstraintTypeAccess().getUNIQUEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getDataBaseConstraintTypeAccess().getUNIQUEEnumLiteralDeclaration_1()); 
    }
)
    |(    enumLiteral_2=KEYWORD_129
    {
        $current = grammarAccess.getDataBaseConstraintTypeAccess().getNATURALEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_2, grammarAccess.getDataBaseConstraintTypeAccess().getNATURALEnumLiteralDeclaration_2()); 
    }
)
    |(    enumLiteral_3=KEYWORD_131
    {
        $current = grammarAccess.getDataBaseConstraintTypeAccess().getPRIMARYEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_3, grammarAccess.getDataBaseConstraintTypeAccess().getPRIMARYEnumLiteralDeclaration_3()); 
    }
));



// Rule ParameterDefinitionType
ruleParameterDefinitionType returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_127
    {
        $current = grammarAccess.getParameterDefinitionTypeAccess().getIntegerEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getParameterDefinitionTypeAccess().getIntegerEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_117
    {
        $current = grammarAccess.getParameterDefinitionTypeAccess().getStringEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getParameterDefinitionTypeAccess().getStringEnumLiteralDeclaration_1()); 
    }
)
    |(    enumLiteral_2=KEYWORD_121
    {
        $current = grammarAccess.getParameterDefinitionTypeAccess().getBooleanEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_2, grammarAccess.getParameterDefinitionTypeAccess().getBooleanEnumLiteralDeclaration_2()); 
    }
));



// Rule MultiplicativeOp
ruleMultiplicativeOp returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_4
    {
        $current = grammarAccess.getMultiplicativeOpAccess().getTIMESEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getMultiplicativeOpAccess().getTIMESEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_9
    {
        $current = grammarAccess.getMultiplicativeOpAccess().getDIVIDEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getMultiplicativeOpAccess().getDIVIDEEnumLiteralDeclaration_1()); 
    }
));



// Rule AdditiveOp
ruleAdditiveOp returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_5
    {
        $current = grammarAccess.getAdditiveOpAccess().getPLUSEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getAdditiveOpAccess().getPLUSEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_7
    {
        $current = grammarAccess.getAdditiveOpAccess().getMINUSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getAdditiveOpAccess().getMINUSEnumLiteralDeclaration_1()); 
    }
));



// Rule RelationalOp
ruleRelationalOp returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_11
    {
        $current = grammarAccess.getRelationalOpAccess().getLTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getRelationalOpAccess().getLTEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_22
    {
        $current = grammarAccess.getRelationalOpAccess().getLEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getRelationalOpAccess().getLEEnumLiteralDeclaration_1()); 
    }
)
    |(    enumLiteral_2=KEYWORD_13
    {
        $current = grammarAccess.getRelationalOpAccess().getGTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_2, grammarAccess.getRelationalOpAccess().getGTEnumLiteralDeclaration_2()); 
    }
)
    |(    enumLiteral_3=KEYWORD_25
    {
        $current = grammarAccess.getRelationalOpAccess().getGEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_3, grammarAccess.getRelationalOpAccess().getGEEnumLiteralDeclaration_3()); 
    }
));



// Rule EqualityOp
ruleEqualityOp returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_24
    {
        $current = grammarAccess.getEqualityOpAccess().getEQEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getEqualityOpAccess().getEQEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_18
    {
        $current = grammarAccess.getEqualityOpAccess().getNEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getEqualityOpAccess().getNEEnumLiteralDeclaration_1()); 
    }
));



// Rule OrOp
ruleOrOp returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
(    enumLiteral_0=KEYWORD_33
    {
        $current = grammarAccess.getOrOpAccess().getOREnumLiteralDeclaration().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getOrOpAccess().getOREnumLiteralDeclaration()); 
    }
);



// Rule AndOp
ruleAndOp returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
(    enumLiteral_0=KEYWORD_38
    {
        $current = grammarAccess.getAndOpAccess().getANDEnumLiteralDeclaration().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getAndOpAccess().getANDEnumLiteralDeclaration()); 
    }
);



// Rule VariableAccess
ruleVariableAccess returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_156
    {
        $current = grammarAccess.getVariableAccessAccess().getVALUEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getVariableAccessAccess().getVALUEEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_157
    {
        $current = grammarAccess.getVariableAccessAccess().getHAS_VALUEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getVariableAccessAccess().getHAS_VALUEEnumLiteralDeclaration_1()); 
    }
)
    |(    enumLiteral_2=KEYWORD_176
    {
        $current = grammarAccess.getVariableAccessAccess().getGET_SELECTEDEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_2, grammarAccess.getVariableAccessAccess().getGET_SELECTEDEnumLiteralDeclaration_2()); 
    }
)
    |(    enumLiteral_3=KEYWORD_172
    {
        $current = grammarAccess.getVariableAccessAccess().getIS_SELECTEDEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_3, grammarAccess.getVariableAccessAccess().getIS_SELECTEDEnumLiteralDeclaration_3()); 
    }
)
    |(    enumLiteral_4=KEYWORD_177
    {
        $current = grammarAccess.getVariableAccessAccess().getGET_SELECTION_COUNTEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_4, grammarAccess.getVariableAccessAccess().getGET_SELECTION_COUNTEnumLiteralDeclaration_4()); 
    }
)
    |(    enumLiteral_5=KEYWORD_116
    {
        $current = grammarAccess.getVariableAccessAccess().getSIZEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_5, grammarAccess.getVariableAccessAccess().getSIZEEnumLiteralDeclaration_5()); 
    }
)
    |(    enumLiteral_6=KEYWORD_145
    {
        $current = grammarAccess.getVariableAccessAccess().getIS_VALIDEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_6, grammarAccess.getVariableAccessAccess().getIS_VALIDEnumLiteralDeclaration_6()); 
    }
));



// Rule BooleanValue
ruleBooleanValue returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_74
    {
        $current = grammarAccess.getBooleanValueAccess().getTrueEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getBooleanValueAccess().getTrueEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_83
    {
        $current = grammarAccess.getBooleanValueAccess().getFalseEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getBooleanValueAccess().getFalseEnumLiteralDeclaration_1()); 
    }
));



// Rule ValueModelType
ruleValueModelType returns [Enumerator current=null] 
    @init { enterRule(); }
    @after { leaveRule(); }:
((    enumLiteral_0=KEYWORD_117
    {
        $current = grammarAccess.getValueModelTypeAccess().getStringEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_0, grammarAccess.getValueModelTypeAccess().getStringEnumLiteralDeclaration_0()); 
    }
)
    |(    enumLiteral_1=KEYWORD_112
    {
        $current = grammarAccess.getValueModelTypeAccess().getNumberEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_1, grammarAccess.getValueModelTypeAccess().getNumberEnumLiteralDeclaration_1()); 
    }
)
    |(    enumLiteral_2=KEYWORD_121
    {
        $current = grammarAccess.getValueModelTypeAccess().getBooleanEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_2, grammarAccess.getValueModelTypeAccess().getBooleanEnumLiteralDeclaration_2()); 
    }
)
    |(    enumLiteral_3=KEYWORD_57
    {
        $current = grammarAccess.getValueModelTypeAccess().getDateEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_3, grammarAccess.getValueModelTypeAccess().getDateEnumLiteralDeclaration_3()); 
    }
)
    |(    enumLiteral_4=KEYWORD_151
    {
        $current = grammarAccess.getValueModelTypeAccess().getTimestampEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_4, grammarAccess.getValueModelTypeAccess().getTimestampEnumLiteralDeclaration_4()); 
    }
)
    |(    enumLiteral_5=KEYWORD_166
    {
        $current = grammarAccess.getValueModelTypeAccess().getEnumerationEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
        newLeafNode(enumLiteral_5, grammarAccess.getValueModelTypeAccess().getEnumerationEnumLiteralDeclaration_5()); 
    }
));







© 2015 - 2024 Weber Informatics LLC | Privacy Policy