/*
 * generated by Xtext 2.9.2
 */
parser grammar InternalEinDslParser;

options {
	tokenVocab=InternalEinDslLexer;
	superClass=AbstractInternalContentAssistParser;
}

@header {
package org.xtext.example.mydsl.ide.contentassist.antlr.internal;
import java.util.Map;
import java.util.HashMap;

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
import org.xtext.example.mydsl.services.EinDslGrammarAccess;

}
@members {
	private EinDslGrammarAccess grammarAccess;
	private final Map<String, String> tokenNameToValue = new HashMap<String, String>();
	
	{
		tokenNameToValue.put("ExclamationMark", "'!'");
		tokenNameToValue.put("NumberSign", "'#'");
		tokenNameToValue.put("DollarSign", "'\\u0024'");
		tokenNameToValue.put("PercentSign", "'\%'");
		tokenNameToValue.put("Ampersand", "'&'");
		tokenNameToValue.put("LeftParenthesis", "'('");
		tokenNameToValue.put("RightParenthesis", "')'");
		tokenNameToValue.put("Asterisk", "'*'");
		tokenNameToValue.put("PlusSign", "'+'");
		tokenNameToValue.put("Comma", "','");
		tokenNameToValue.put("HyphenMinus", "'-'");
		tokenNameToValue.put("FullStop", "'.'");
		tokenNameToValue.put("Solidus", "'/'");
		tokenNameToValue.put("Colon", "':'");
		tokenNameToValue.put("Semicolon", "';'");
		tokenNameToValue.put("QuestionMark", "'?'");
		tokenNameToValue.put("CommercialAt", "'@'");
		tokenNameToValue.put("LeftSquareBracket", "'['");
		tokenNameToValue.put("RightSquareBracket", "']'");
		tokenNameToValue.put("CircumflexAccent", "'^'");
		tokenNameToValue.put("LeftCurlyBracket", "'{'");
		tokenNameToValue.put("VerticalLine", "'|'");
		tokenNameToValue.put("RightCurlyBracket", "'}'");
		tokenNameToValue.put("Tilde", "'~'");
		tokenNameToValue.put("SectionSign", "'\u00A7'");
		tokenNameToValue.put("As", "'as'");
		tokenNameToValue.put("By", "'by'");
		tokenNameToValue.put("To", "'to'");
		tokenNameToValue.put("And", "'and'");
		tokenNameToValue.put("Bar", "'bar'");
		tokenNameToValue.put("Day", "'day'");
		tokenNameToValue.put("For", "'for'");
		tokenNameToValue.put("Mtd", "'mtd'");
		tokenNameToValue.put("Pie", "'pie'");
		tokenNameToValue.put("Ytd", "'ytd'");
		tokenNameToValue.put("Days", "'days'");
		tokenNameToValue.put("From", "'from'");
		tokenNameToValue.put("Last", "'last'");
		tokenNameToValue.put("Line", "'line'");
		tokenNameToValue.put("Plot", "'plot'");
		tokenNameToValue.put("This", "'this'");
		tokenNameToValue.put("Week", "'week'");
		tokenNameToValue.put("Year", "'year'");
		tokenNameToValue.put("Chart", "'chart'");
		tokenNameToValue.put("Month", "'month'");
		tokenNameToValue.put("Today", "'today'");
		tokenNameToValue.put("Total", "'total'");
		tokenNameToValue.put("Weeks", "'weeks'");
		tokenNameToValue.put("Column", "'column'");
		tokenNameToValue.put("Months", "'months'");
		tokenNameToValue.put("Average", "'average'");
		tokenNameToValue.put("Quarter", "'quarter'");
		tokenNameToValue.put("NumberOf", "'number of'");
		tokenNameToValue.put("Yesterday", "'yesterday'");
	}

	public void setGrammarAccess(EinDslGrammarAccess grammarAccess) {
		this.grammarAccess = grammarAccess;
	}

	@Override
	protected Grammar getGrammar() {
		return grammarAccess.getGrammar();
	}

	@Override
	protected String getValueForTokenName(String tokenName) {
		String result = tokenNameToValue.get(tokenName);
		if (result == null)
			result = tokenName;
		return result;
	}
}

// Entry rule entryRuleModel
entryRuleModel
:
{ before(grammarAccess.getModelRule()); }
	 ruleModel
{ after(grammarAccess.getModelRule()); } 
	 EOF 
;

// Rule Model
ruleModel 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getModelAccess().getGreetingsAssignment()); }
		(rule__Model__GreetingsAssignment)
		{ after(grammarAccess.getModelAccess().getGreetingsAssignment()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleQuery
entryRuleQuery
:
{ before(grammarAccess.getQueryRule()); }
	 ruleQuery
{ after(grammarAccess.getQueryRule()); } 
	 EOF 
;

// Rule Query
ruleQuery 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getQueryAccess().getGroup()); }
		(rule__Query__Group__0)
		{ after(grammarAccess.getQueryAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleQTypekeyWord
entryRuleQTypekeyWord
:
{ before(grammarAccess.getQTypekeyWordRule()); }
	 ruleQTypekeyWord
{ after(grammarAccess.getQTypekeyWordRule()); } 
	 EOF 
;

// Rule QTypekeyWord
ruleQTypekeyWord 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getQTypekeyWordAccess().getQKeywordAssignment()); }
		(rule__QTypekeyWord__QKeywordAssignment)
		{ after(grammarAccess.getQTypekeyWordAccess().getQKeywordAssignment()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleAggregation
entryRuleAggregation
:
{ before(grammarAccess.getAggregationRule()); }
	 ruleAggregation
{ after(grammarAccess.getAggregationRule()); } 
	 EOF 
;

// Rule Aggregation
ruleAggregation 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getAggregationAccess().getAggAssignment()); }
		(rule__Aggregation__AggAssignment)
		{ after(grammarAccess.getAggregationAccess().getAggAssignment()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleCondtition
entryRuleCondtition
:
{ before(grammarAccess.getCondtitionRule()); }
	 ruleCondtition
{ after(grammarAccess.getCondtitionRule()); } 
	 EOF 
;

// Rule Condtition
ruleCondtition 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getCondtitionAccess().getAlternatives()); }
		(rule__Condtition__Alternatives)
		{ after(grammarAccess.getCondtitionAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleMeasureList
entryRuleMeasureList
:
{ before(grammarAccess.getMeasureListRule()); }
	 ruleMeasureList
{ after(grammarAccess.getMeasureListRule()); } 
	 EOF 
;

// Rule MeasureList
ruleMeasureList 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getMeasureListAccess().getGroup()); }
		(rule__MeasureList__Group__0)
		{ after(grammarAccess.getMeasureListAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleEinString
entryRuleEinString
:
{ before(grammarAccess.getEinStringRule()); }
	 ruleEinString
{ after(grammarAccess.getEinStringRule()); } 
	 EOF 
;

// Rule EinString
ruleEinString 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getEinStringAccess().getAlternatives()); }
		(rule__EinString__Alternatives)
		{ after(grammarAccess.getEinStringAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleSPECIAL
entryRuleSPECIAL
:
{ before(grammarAccess.getSPECIALRule()); }
	 ruleSPECIAL
{ after(grammarAccess.getSPECIALRule()); } 
	 EOF 
;

// Rule SPECIAL
ruleSPECIAL 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getSPECIALAccess().getAlternatives()); }
		(rule__SPECIAL__Alternatives)
		{ after(grammarAccess.getSPECIALAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleMeasure
entryRuleMeasure
:
{ before(grammarAccess.getMeasureRule()); }
	 ruleMeasure
{ after(grammarAccess.getMeasureRule()); } 
	 EOF 
;

// Rule Measure
ruleMeasure 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		(
			{ before(grammarAccess.getMeasureAccess().getEinStringParserRuleCall()); }
			(ruleEinString)
			{ after(grammarAccess.getMeasureAccess().getEinStringParserRuleCall()); }
		)
		(
			{ before(grammarAccess.getMeasureAccess().getEinStringParserRuleCall()); }
			(ruleEinString)*
			{ after(grammarAccess.getMeasureAccess().getEinStringParserRuleCall()); }
		)
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleDimension
entryRuleDimension
:
{ before(grammarAccess.getDimensionRule()); }
	 ruleDimension
{ after(grammarAccess.getDimensionRule()); } 
	 EOF 
;

// Rule Dimension
ruleDimension 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		(
			{ before(grammarAccess.getDimensionAccess().getEinStringParserRuleCall()); }
			(ruleEinString)
			{ after(grammarAccess.getDimensionAccess().getEinStringParserRuleCall()); }
		)
		(
			{ before(grammarAccess.getDimensionAccess().getEinStringParserRuleCall()); }
			(ruleEinString)*
			{ after(grammarAccess.getDimensionAccess().getEinStringParserRuleCall()); }
		)
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleDimensionValue
entryRuleDimensionValue
:
{ before(grammarAccess.getDimensionValueRule()); }
	 ruleDimensionValue
{ after(grammarAccess.getDimensionValueRule()); } 
	 EOF 
;

// Rule DimensionValue
ruleDimensionValue 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		(
			{ before(grammarAccess.getDimensionValueAccess().getValueAssignment()); }
			(rule__DimensionValue__ValueAssignment)
			{ after(grammarAccess.getDimensionValueAccess().getValueAssignment()); }
		)
		(
			{ before(grammarAccess.getDimensionValueAccess().getValueAssignment()); }
			(rule__DimensionValue__ValueAssignment)*
			{ after(grammarAccess.getDimensionValueAccess().getValueAssignment()); }
		)
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleGroup
entryRuleGroup
:
{ before(grammarAccess.getGroupRule()); }
	 ruleGroup
{ after(grammarAccess.getGroupRule()); } 
	 EOF 
;

// Rule Group
ruleGroup 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getGroupAccess().getGroup()); }
		(rule__Group__Group__0)
		{ after(grammarAccess.getGroupAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleTransition
entryRuleTransition
:
{ before(grammarAccess.getTransitionRule()); }
	 ruleTransition
{ after(grammarAccess.getTransitionRule()); } 
	 EOF 
;

// Rule Transition
ruleTransition 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getTransitionAccess().getGroup()); }
		(rule__Transition__Group__0)
		{ after(grammarAccess.getTransitionAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleTimeGroup
entryRuleTimeGroup
:
{ before(grammarAccess.getTimeGroupRule()); }
	 ruleTimeGroup
{ after(grammarAccess.getTimeGroupRule()); } 
	 EOF 
;

// Rule TimeGroup
ruleTimeGroup 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getTimeGroupAccess().getTimeGroupAssignment()); }
		(rule__TimeGroup__TimeGroupAssignment)
		{ after(grammarAccess.getTimeGroupAccess().getTimeGroupAssignment()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleThisTimeGroup
entryRuleThisTimeGroup
:
{ before(grammarAccess.getThisTimeGroupRule()); }
	 ruleThisTimeGroup
{ after(grammarAccess.getThisTimeGroupRule()); } 
	 EOF 
;

// Rule ThisTimeGroup
ruleThisTimeGroup 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getThisTimeGroupAccess().getAlternatives()); }
		(rule__ThisTimeGroup__Alternatives)
		{ after(grammarAccess.getThisTimeGroupAccess().getAlternatives()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleLastTimeGroup
entryRuleLastTimeGroup
:
{ before(grammarAccess.getLastTimeGroupRule()); }
	 ruleLastTimeGroup
{ after(grammarAccess.getLastTimeGroupRule()); } 
	 EOF 
;

// Rule LastTimeGroup
ruleLastTimeGroup 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getLastTimeGroupAccess().getGroup()); }
		(rule__LastTimeGroup__Group__0)
		{ after(grammarAccess.getLastTimeGroupAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleLastNTimeGroup
entryRuleLastNTimeGroup
:
{ before(grammarAccess.getLastNTimeGroupRule()); }
	 ruleLastNTimeGroup
{ after(grammarAccess.getLastNTimeGroupRule()); } 
	 EOF 
;

// Rule LastNTimeGroup
ruleLastNTimeGroup 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getLastNTimeGroupAccess().getGroup()); }
		(rule__LastNTimeGroup__Group__0)
		{ after(grammarAccess.getLastNTimeGroupAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleDayTimeGroup
entryRuleDayTimeGroup
:
{ before(grammarAccess.getDayTimeGroupRule()); }
	 ruleDayTimeGroup
{ after(grammarAccess.getDayTimeGroupRule()); } 
	 EOF 
;

// Rule DayTimeGroup
ruleDayTimeGroup 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getDayTimeGroupAccess().getDayTimeGroupAssignment()); }
		(rule__DayTimeGroup__DayTimeGroupAssignment)
		{ after(grammarAccess.getDayTimeGroupAccess().getDayTimeGroupAssignment()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleChartType
entryRuleChartType
:
{ before(grammarAccess.getChartTypeRule()); }
	 ruleChartType
{ after(grammarAccess.getChartTypeRule()); } 
	 EOF 
;

// Rule ChartType
ruleChartType 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getChartTypeAccess().getGroup()); }
		(rule__ChartType__Group__0)
		{ after(grammarAccess.getChartTypeAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleDate
entryRuleDate
:
{ before(grammarAccess.getDateRule()); }
	 ruleDate
{ after(grammarAccess.getDateRule()); } 
	 EOF 
;

// Rule Date
ruleDate 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getDateAccess().getGroup()); }
		(rule__Date__Group__0)
		{ after(grammarAccess.getDateAccess().getGroup()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleDay
entryRuleDay
:
{ before(grammarAccess.getDayRule()); }
	 ruleDay
{ after(grammarAccess.getDayRule()); } 
	 EOF 
;

// Rule Day
ruleDay 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getDayAccess().getIDTerminalRuleCall()); }
		RULE_ID
		{ after(grammarAccess.getDayAccess().getIDTerminalRuleCall()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleMonth
entryRuleMonth
:
{ before(grammarAccess.getMonthRule()); }
	 ruleMonth
{ after(grammarAccess.getMonthRule()); } 
	 EOF 
;

// Rule Month
ruleMonth 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getMonthAccess().getIDTerminalRuleCall()); }
		RULE_ID
		{ after(grammarAccess.getMonthAccess().getIDTerminalRuleCall()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

// Entry rule entryRuleYear
entryRuleYear
:
{ before(grammarAccess.getYearRule()); }
	 ruleYear
{ after(grammarAccess.getYearRule()); } 
	 EOF 
;

// Rule Year
ruleYear 
	@init {
		int stackSize = keepStackSize();
	}
	:
	(
		{ before(grammarAccess.getYearAccess().getINTTerminalRuleCall()); }
		RULE_INT
		{ after(grammarAccess.getYearAccess().getINTTerminalRuleCall()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Aggregation__AggAlternatives_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getAggregationAccess().getAggAverageKeyword_0_0()); }
		Average
		{ after(grammarAccess.getAggregationAccess().getAggAverageKeyword_0_0()); }
	)
	|
	(
		{ before(grammarAccess.getAggregationAccess().getAggNumberOfKeyword_0_1()); }
		NumberOf
		{ after(grammarAccess.getAggregationAccess().getAggNumberOfKeyword_0_1()); }
	)
	|
	(
		{ before(grammarAccess.getAggregationAccess().getAggTotalKeyword_0_2()); }
		Total
		{ after(grammarAccess.getAggregationAccess().getAggTotalKeyword_0_2()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getGroup_0()); }
		(rule__Condtition__Group_0__0)
		{ after(grammarAccess.getCondtitionAccess().getGroup_0()); }
	)
	|
	(
		{ before(grammarAccess.getCondtitionAccess().getGroup_1()); }
		(rule__Condtition__Group_1__0)
		{ after(grammarAccess.getCondtitionAccess().getGroup_1()); }
	)
	|
	(
		{ before(grammarAccess.getCondtitionAccess().getGroup_2()); }
		(rule__Condtition__Group_2__0)
		{ after(grammarAccess.getCondtitionAccess().getGroup_2()); }
	)
	|
	(
		{ before(grammarAccess.getCondtitionAccess().getGroup_3()); }
		(rule__Condtition__Group_3__0)
		{ after(grammarAccess.getCondtitionAccess().getGroup_3()); }
	)
	|
	(
		{ before(grammarAccess.getCondtitionAccess().getGroup_4()); }
		(rule__Condtition__Group_4__0)
		{ after(grammarAccess.getCondtitionAccess().getGroup_4()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__EinString__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getEinStringAccess().getIDTerminalRuleCall_0()); }
		RULE_ID
		{ after(grammarAccess.getEinStringAccess().getIDTerminalRuleCall_0()); }
	)
	|
	(
		{ before(grammarAccess.getEinStringAccess().getSPECIALParserRuleCall_1()); }
		ruleSPECIAL
		{ after(grammarAccess.getEinStringAccess().getSPECIALParserRuleCall_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__SPECIAL__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getSPECIALAccess().getSolidusKeyword_0()); }
		Solidus
		{ after(grammarAccess.getSPECIALAccess().getSolidusKeyword_0()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getSemicolonKeyword_1()); }
		Semicolon
		{ after(grammarAccess.getSPECIALAccess().getSemicolonKeyword_1()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getCommaKeyword_2()); }
		Comma
		{ after(grammarAccess.getSPECIALAccess().getCommaKeyword_2()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getExclamationMarkKeyword_3()); }
		ExclamationMark
		{ after(grammarAccess.getSPECIALAccess().getExclamationMarkKeyword_3()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getSectionSignKeyword_4()); }
		SectionSign
		{ after(grammarAccess.getSPECIALAccess().getSectionSignKeyword_4()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getPercentSignKeyword_5()); }
		PercentSign
		{ after(grammarAccess.getSPECIALAccess().getPercentSignKeyword_5()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getAmpersandKeyword_6()); }
		Ampersand
		{ after(grammarAccess.getSPECIALAccess().getAmpersandKeyword_6()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getLeftParenthesisKeyword_7()); }
		LeftParenthesis
		{ after(grammarAccess.getSPECIALAccess().getLeftParenthesisKeyword_7()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getRightParenthesisKeyword_8()); }
		RightParenthesis
		{ after(grammarAccess.getSPECIALAccess().getRightParenthesisKeyword_8()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getQuestionMarkKeyword_9()); }
		QuestionMark
		{ after(grammarAccess.getSPECIALAccess().getQuestionMarkKeyword_9()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getAsteriskKeyword_10()); }
		Asterisk
		{ after(grammarAccess.getSPECIALAccess().getAsteriskKeyword_10()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getPlusSignKeyword_11()); }
		PlusSign
		{ after(grammarAccess.getSPECIALAccess().getPlusSignKeyword_11()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getFullStopKeyword_12()); }
		FullStop
		{ after(grammarAccess.getSPECIALAccess().getFullStopKeyword_12()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getHyphenMinusKeyword_13()); }
		HyphenMinus
		{ after(grammarAccess.getSPECIALAccess().getHyphenMinusKeyword_13()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getVerticalLineKeyword_14()); }
		VerticalLine
		{ after(grammarAccess.getSPECIALAccess().getVerticalLineKeyword_14()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getLeftSquareBracketKeyword_15()); }
		LeftSquareBracket
		{ after(grammarAccess.getSPECIALAccess().getLeftSquareBracketKeyword_15()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getRightSquareBracketKeyword_16()); }
		RightSquareBracket
		{ after(grammarAccess.getSPECIALAccess().getRightSquareBracketKeyword_16()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getNumberSignKeyword_17()); }
		NumberSign
		{ after(grammarAccess.getSPECIALAccess().getNumberSignKeyword_17()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getCommercialAtKeyword_18()); }
		CommercialAt
		{ after(grammarAccess.getSPECIALAccess().getCommercialAtKeyword_18()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getLeftCurlyBracketKeyword_19()); }
		LeftCurlyBracket
		{ after(grammarAccess.getSPECIALAccess().getLeftCurlyBracketKeyword_19()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getRightCurlyBracketKeyword_20()); }
		RightCurlyBracket
		{ after(grammarAccess.getSPECIALAccess().getRightCurlyBracketKeyword_20()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getDollarSignKeyword_21()); }
		DollarSign
		{ after(grammarAccess.getSPECIALAccess().getDollarSignKeyword_21()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getCircumflexAccentKeyword_22()); }
		CircumflexAccent
		{ after(grammarAccess.getSPECIALAccess().getCircumflexAccentKeyword_22()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getTildeKeyword_23()); }
		Tilde
		{ after(grammarAccess.getSPECIALAccess().getTildeKeyword_23()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getINTTerminalRuleCall_24()); }
		RULE_INT
		{ after(grammarAccess.getSPECIALAccess().getINTTerminalRuleCall_24()); }
	)
	|
	(
		{ before(grammarAccess.getSPECIALAccess().getColonKeyword_25()); }
		Colon
		{ after(grammarAccess.getSPECIALAccess().getColonKeyword_25()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Alternatives_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getGroupAccess().getGroup_1_0()); }
		(rule__Group__Group_1_0__0)
		{ after(grammarAccess.getGroupAccess().getGroup_1_0()); }
	)
	|
	(
		{ before(grammarAccess.getGroupAccess().getTimeGroupAssignment_1_1()); }
		(rule__Group__TimeGroupAssignment_1_1)
		{ after(grammarAccess.getGroupAccess().getTimeGroupAssignment_1_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__TimeGroup__TimeGroupAlternatives_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getTimeGroupAccess().getTimeGroupDayKeyword_0_0()); }
		Day
		{ after(grammarAccess.getTimeGroupAccess().getTimeGroupDayKeyword_0_0()); }
	)
	|
	(
		{ before(grammarAccess.getTimeGroupAccess().getTimeGroupWeekKeyword_0_1()); }
		Week
		{ after(grammarAccess.getTimeGroupAccess().getTimeGroupWeekKeyword_0_1()); }
	)
	|
	(
		{ before(grammarAccess.getTimeGroupAccess().getTimeGroupMonthKeyword_0_2()); }
		Month
		{ after(grammarAccess.getTimeGroupAccess().getTimeGroupMonthKeyword_0_2()); }
	)
	|
	(
		{ before(grammarAccess.getTimeGroupAccess().getTimeGroupQuarterKeyword_0_3()); }
		Quarter
		{ after(grammarAccess.getTimeGroupAccess().getTimeGroupQuarterKeyword_0_3()); }
	)
	|
	(
		{ before(grammarAccess.getTimeGroupAccess().getTimeGroupYearKeyword_0_4()); }
		Year
		{ after(grammarAccess.getTimeGroupAccess().getTimeGroupYearKeyword_0_4()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ThisTimeGroup__Alternatives
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getThisTimeGroupAccess().getGroup_0()); }
		(rule__ThisTimeGroup__Group_0__0)
		{ after(grammarAccess.getThisTimeGroupAccess().getGroup_0()); }
	)
	|
	(
		{ before(grammarAccess.getThisTimeGroupAccess().getYtdKeyword_1()); }
		Ytd
		{ after(grammarAccess.getThisTimeGroupAccess().getYtdKeyword_1()); }
	)
	|
	(
		{ before(grammarAccess.getThisTimeGroupAccess().getMtdKeyword_2()); }
		Mtd
		{ after(grammarAccess.getThisTimeGroupAccess().getMtdKeyword_2()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ThisTimeGroup__Alternatives_0_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getThisTimeGroupAccess().getYearKeyword_0_1_0()); }
		Year
		{ after(grammarAccess.getThisTimeGroupAccess().getYearKeyword_0_1_0()); }
	)
	|
	(
		{ before(grammarAccess.getThisTimeGroupAccess().getMonthKeyword_0_1_1()); }
		Month
		{ after(grammarAccess.getThisTimeGroupAccess().getMonthKeyword_0_1_1()); }
	)
	|
	(
		{ before(grammarAccess.getThisTimeGroupAccess().getWeekKeyword_0_1_2()); }
		Week
		{ after(grammarAccess.getThisTimeGroupAccess().getWeekKeyword_0_1_2()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__LastTimeGroup__Alternatives_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getLastTimeGroupAccess().getYearKeyword_1_0()); }
		Year
		{ after(grammarAccess.getLastTimeGroupAccess().getYearKeyword_1_0()); }
	)
	|
	(
		{ before(grammarAccess.getLastTimeGroupAccess().getQuarterKeyword_1_1()); }
		Quarter
		{ after(grammarAccess.getLastTimeGroupAccess().getQuarterKeyword_1_1()); }
	)
	|
	(
		{ before(grammarAccess.getLastTimeGroupAccess().getMonthKeyword_1_2()); }
		Month
		{ after(grammarAccess.getLastTimeGroupAccess().getMonthKeyword_1_2()); }
	)
	|
	(
		{ before(grammarAccess.getLastTimeGroupAccess().getWeekKeyword_1_3()); }
		Week
		{ after(grammarAccess.getLastTimeGroupAccess().getWeekKeyword_1_3()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__LastNTimeGroup__Alternatives_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getLastNTimeGroupAccess().getDaysKeyword_2_0()); }
		Days
		{ after(grammarAccess.getLastNTimeGroupAccess().getDaysKeyword_2_0()); }
	)
	|
	(
		{ before(grammarAccess.getLastNTimeGroupAccess().getWeeksKeyword_2_1()); }
		Weeks
		{ after(grammarAccess.getLastNTimeGroupAccess().getWeeksKeyword_2_1()); }
	)
	|
	(
		{ before(grammarAccess.getLastNTimeGroupAccess().getMonthsKeyword_2_2()); }
		Months
		{ after(grammarAccess.getLastNTimeGroupAccess().getMonthsKeyword_2_2()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__DayTimeGroup__DayTimeGroupAlternatives_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getDayTimeGroupAccess().getDayTimeGroupTodayKeyword_0_0()); }
		Today
		{ after(grammarAccess.getDayTimeGroupAccess().getDayTimeGroupTodayKeyword_0_0()); }
	)
	|
	(
		{ before(grammarAccess.getDayTimeGroupAccess().getDayTimeGroupYesterdayKeyword_0_1()); }
		Yesterday
		{ after(grammarAccess.getDayTimeGroupAccess().getDayTimeGroupYesterdayKeyword_0_1()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ChartType__Alternatives_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getChartTypeAccess().getPieKeyword_1_0()); }
		Pie
		{ after(grammarAccess.getChartTypeAccess().getPieKeyword_1_0()); }
	)
	|
	(
		{ before(grammarAccess.getChartTypeAccess().getColumnKeyword_1_1()); }
		Column
		{ after(grammarAccess.getChartTypeAccess().getColumnKeyword_1_1()); }
	)
	|
	(
		{ before(grammarAccess.getChartTypeAccess().getBarKeyword_1_2()); }
		Bar
		{ after(grammarAccess.getChartTypeAccess().getBarKeyword_1_2()); }
	)
	|
	(
		{ before(grammarAccess.getChartTypeAccess().getLineKeyword_1_3()); }
		Line
		{ after(grammarAccess.getChartTypeAccess().getLineKeyword_1_3()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Query__Group__0__Impl
	rule__Query__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getQueryAccess().getKeyAssignment_0()); }
	(rule__Query__KeyAssignment_0)?
	{ after(grammarAccess.getQueryAccess().getKeyAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Query__Group__1__Impl
	rule__Query__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getQueryAccess().getAggregationAssignment_1()); }
	(rule__Query__AggregationAssignment_1)?
	{ after(grammarAccess.getQueryAccess().getAggregationAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Query__Group__2__Impl
	rule__Query__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getQueryAccess().getMeasureAssignment_2()); }
	(rule__Query__MeasureAssignment_2)
	{ after(grammarAccess.getQueryAccess().getMeasureAssignment_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Query__Group__3__Impl
	rule__Query__Group__4
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getQueryAccess().getUnorderedGroup_3()); }
	(rule__Query__UnorderedGroup_3)
	{ after(grammarAccess.getQueryAccess().getUnorderedGroup_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__4
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Query__Group__4__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__Group__4__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getQueryAccess().getChartTypeAssignment_4()); }
	(rule__Query__ChartTypeAssignment_4)?
	{ after(grammarAccess.getQueryAccess().getChartTypeAssignment_4()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Condtition__Group_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_0__0__Impl
	rule__Condtition__Group_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getConAssignment_0_0()); }
	(rule__Condtition__ConAssignment_0_0)
	{ after(grammarAccess.getCondtitionAccess().getConAssignment_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_0__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getGroup_0_1()); }
	(rule__Condtition__Group_0_1__0)
	{ after(grammarAccess.getCondtitionAccess().getGroup_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Condtition__Group_0_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_0_1__0__Impl
	rule__Condtition__Group_0_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_0_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getDimValueAssignment_0_1_0()); }
	(rule__Condtition__DimValueAssignment_0_1_0)
	{ after(grammarAccess.getCondtitionAccess().getDimValueAssignment_0_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_0_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_0_1__1__Impl
	rule__Condtition__Group_0_1__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_0_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getAsKeyword_0_1_1()); }
	As
	{ after(grammarAccess.getCondtitionAccess().getAsKeyword_0_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_0_1__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_0_1__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_0_1__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getDimenAssignment_0_1_2()); }
	(rule__Condtition__DimenAssignment_0_1_2)
	{ after(grammarAccess.getCondtitionAccess().getDimenAssignment_0_1_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Condtition__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_1__0__Impl
	rule__Condtition__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getConTimeCurrentAssignment_1_0()); }
	(rule__Condtition__ConTimeCurrentAssignment_1_0)
	{ after(grammarAccess.getCondtitionAccess().getConTimeCurrentAssignment_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getThisTimeGroupAssignment_1_1()); }
	(rule__Condtition__ThisTimeGroupAssignment_1_1)
	{ after(grammarAccess.getCondtitionAccess().getThisTimeGroupAssignment_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Condtition__Group_2__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_2__0__Impl
	rule__Condtition__Group_2__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_2__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getConlastTimePastAssignment_2_0()); }
	(rule__Condtition__ConlastTimePastAssignment_2_0)
	{ after(grammarAccess.getCondtitionAccess().getConlastTimePastAssignment_2_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_2__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_2__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_2__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getLastTimeGroupAssignment_2_1()); }
	(rule__Condtition__LastTimeGroupAssignment_2_1)
	{ after(grammarAccess.getCondtitionAccess().getLastTimeGroupAssignment_2_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Condtition__Group_3__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_3__0__Impl
	rule__Condtition__Group_3__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_3__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getConlastNTimePastAssignment_3_0()); }
	(rule__Condtition__ConlastNTimePastAssignment_3_0)
	{ after(grammarAccess.getCondtitionAccess().getConlastNTimePastAssignment_3_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_3__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_3__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_3__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getLastNTimeGroupAssignment_3_1()); }
	(rule__Condtition__LastNTimeGroupAssignment_3_1)
	{ after(grammarAccess.getCondtitionAccess().getLastNTimeGroupAssignment_3_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Condtition__Group_4__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_4__0__Impl
	rule__Condtition__Group_4__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_4__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getConDayTimeGroupAssignment_4_0()); }
	(rule__Condtition__ConDayTimeGroupAssignment_4_0)
	{ after(grammarAccess.getCondtitionAccess().getConDayTimeGroupAssignment_4_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_4__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Condtition__Group_4__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__Group_4__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getCondtitionAccess().getDayTimeGroupAssignment_4_1()); }
	(rule__Condtition__DayTimeGroupAssignment_4_1)
	{ after(grammarAccess.getCondtitionAccess().getDayTimeGroupAssignment_4_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__MeasureList__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__MeasureList__Group__0__Impl
	rule__MeasureList__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__MeasureList__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getMeasureListAccess().getNamesAssignment_0()); }
	(rule__MeasureList__NamesAssignment_0)
	{ after(grammarAccess.getMeasureListAccess().getNamesAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__MeasureList__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__MeasureList__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__MeasureList__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getMeasureListAccess().getGroup_1()); }
	(rule__MeasureList__Group_1__0)*
	{ after(grammarAccess.getMeasureListAccess().getGroup_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__MeasureList__Group_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__MeasureList__Group_1__0__Impl
	rule__MeasureList__Group_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__MeasureList__Group_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getMeasureListAccess().getAndKeyword_1_0()); }
	And
	{ after(grammarAccess.getMeasureListAccess().getAndKeyword_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__MeasureList__Group_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__MeasureList__Group_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__MeasureList__Group_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getMeasureListAccess().getNamesAssignment_1_1()); }
	(rule__MeasureList__NamesAssignment_1_1)
	{ after(grammarAccess.getMeasureListAccess().getNamesAssignment_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Group__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Group__Group__0__Impl
	rule__Group__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGroupAccess().getByKeyword_0()); }
	By
	{ after(grammarAccess.getGroupAccess().getByKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Group__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGroupAccess().getAlternatives_1()); }
	(rule__Group__Alternatives_1)
	{ after(grammarAccess.getGroupAccess().getAlternatives_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Group__Group_1_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Group__Group_1_0__0__Impl
	rule__Group__Group_1_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group_1_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGroupAccess().getDimGroupAssignment_1_0_0()); }
	(rule__Group__DimGroupAssignment_1_0_0)
	{ after(grammarAccess.getGroupAccess().getDimGroupAssignment_1_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group_1_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Group__Group_1_0__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group_1_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGroupAccess().getGroup_1_0_1()); }
	(rule__Group__Group_1_0_1__0)?
	{ after(grammarAccess.getGroupAccess().getGroup_1_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Group__Group_1_0_1__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Group__Group_1_0_1__0__Impl
	rule__Group__Group_1_0_1__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group_1_0_1__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGroupAccess().getByKeyword_1_0_1_0()); }
	By
	{ after(grammarAccess.getGroupAccess().getByKeyword_1_0_1_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group_1_0_1__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Group__Group_1_0_1__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__Group_1_0_1__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getGroupAccess().getTimeGroupAssignment_1_0_1_1()); }
	(rule__Group__TimeGroupAssignment_1_0_1_1)
	{ after(grammarAccess.getGroupAccess().getTimeGroupAssignment_1_0_1_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Transition__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Transition__Group__0__Impl
	rule__Transition__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getTransitionAccess().getFromKeyword_0()); }
	From
	{ after(grammarAccess.getTransitionAccess().getFromKeyword_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Transition__Group__1__Impl
	rule__Transition__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getTransitionAccess().getDateStartAssignment_1()); }
	(rule__Transition__DateStartAssignment_1)
	{ after(grammarAccess.getTransitionAccess().getDateStartAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Transition__Group__2__Impl
	rule__Transition__Group__3
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getTransitionAccess().getToKeyword_2()); }
	To
	{ after(grammarAccess.getTransitionAccess().getToKeyword_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__Group__3
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Transition__Group__3__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__Group__3__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getTransitionAccess().getDateEndAssignment_3()); }
	(rule__Transition__DateEndAssignment_3)
	{ after(grammarAccess.getTransitionAccess().getDateEndAssignment_3()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ThisTimeGroup__Group_0__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ThisTimeGroup__Group_0__0__Impl
	rule__ThisTimeGroup__Group_0__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ThisTimeGroup__Group_0__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getThisTimeGroupAccess().getThisTimeGroupAssignment_0_0()); }
	(rule__ThisTimeGroup__ThisTimeGroupAssignment_0_0)
	{ after(grammarAccess.getThisTimeGroupAccess().getThisTimeGroupAssignment_0_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ThisTimeGroup__Group_0__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ThisTimeGroup__Group_0__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ThisTimeGroup__Group_0__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getThisTimeGroupAccess().getAlternatives_0_1()); }
	(rule__ThisTimeGroup__Alternatives_0_1)
	{ after(grammarAccess.getThisTimeGroupAccess().getAlternatives_0_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__LastTimeGroup__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__LastTimeGroup__Group__0__Impl
	rule__LastTimeGroup__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LastTimeGroup__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getLastTimeGroupAccess().getLastTimeGroupAssignment_0()); }
	(rule__LastTimeGroup__LastTimeGroupAssignment_0)
	{ after(grammarAccess.getLastTimeGroupAccess().getLastTimeGroupAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__LastTimeGroup__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__LastTimeGroup__Group__1__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LastTimeGroup__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getLastTimeGroupAccess().getAlternatives_1()); }
	(rule__LastTimeGroup__Alternatives_1)
	{ after(grammarAccess.getLastTimeGroupAccess().getAlternatives_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__LastNTimeGroup__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__LastNTimeGroup__Group__0__Impl
	rule__LastNTimeGroup__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__LastNTimeGroup__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getLastNTimeGroupAccess().getLastTimeGroupAssignment_0()); }
	(rule__LastNTimeGroup__LastTimeGroupAssignment_0)
	{ after(grammarAccess.getLastNTimeGroupAccess().getLastTimeGroupAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__LastNTimeGroup__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__LastNTimeGroup__Group__1__Impl
	rule__LastNTimeGroup__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__LastNTimeGroup__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getLastNTimeGroupAccess().getINTTerminalRuleCall_1()); }
	RULE_INT
	{ after(grammarAccess.getLastNTimeGroupAccess().getINTTerminalRuleCall_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__LastNTimeGroup__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__LastNTimeGroup__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__LastNTimeGroup__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getLastNTimeGroupAccess().getAlternatives_2()); }
	(rule__LastNTimeGroup__Alternatives_2)
	{ after(grammarAccess.getLastNTimeGroupAccess().getAlternatives_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__ChartType__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ChartType__Group__0__Impl
	rule__ChartType__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__ChartType__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getChartTypeAccess().getChartTypeAssignment_0()); }
	(rule__ChartType__ChartTypeAssignment_0)
	{ after(grammarAccess.getChartTypeAccess().getChartTypeAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ChartType__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ChartType__Group__1__Impl
	rule__ChartType__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__ChartType__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getChartTypeAccess().getAlternatives_1()); }
	(rule__ChartType__Alternatives_1)
	{ after(grammarAccess.getChartTypeAccess().getAlternatives_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__ChartType__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__ChartType__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__ChartType__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getChartTypeAccess().getChartKeyword_2()); }
	Chart
	{ after(grammarAccess.getChartTypeAccess().getChartKeyword_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Date__Group__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Date__Group__0__Impl
	rule__Date__Group__1
;
finally {
	restoreStackSize(stackSize);
}

rule__Date__Group__0__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getDateAccess().getDAssignment_0()); }
	(rule__Date__DAssignment_0)
	{ after(grammarAccess.getDateAccess().getDAssignment_0()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Date__Group__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Date__Group__1__Impl
	rule__Date__Group__2
;
finally {
	restoreStackSize(stackSize);
}

rule__Date__Group__1__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getDateAccess().getMAssignment_1()); }
	(rule__Date__MAssignment_1)
	{ after(grammarAccess.getDateAccess().getMAssignment_1()); }
)
;
finally {
	restoreStackSize(stackSize);
}

rule__Date__Group__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Date__Group__2__Impl
;
finally {
	restoreStackSize(stackSize);
}

rule__Date__Group__2__Impl
	@init {
		int stackSize = keepStackSize();
	}
:
(
	{ before(grammarAccess.getDateAccess().getYAssignment_2()); }
	(rule__Date__YAssignment_2)
	{ after(grammarAccess.getDateAccess().getYAssignment_2()); }
)
;
finally {
	restoreStackSize(stackSize);
}


rule__Query__UnorderedGroup_3
	@init {
		int stackSize = keepStackSize();
		getUnorderedGroupHelper().enter(grammarAccess.getQueryAccess().getUnorderedGroup_3());
	}
:
	rule__Query__UnorderedGroup_3__0
	?
;
finally {
	getUnorderedGroupHelper().leave(grammarAccess.getQueryAccess().getUnorderedGroup_3());
	restoreStackSize(stackSize);
}

rule__Query__UnorderedGroup_3__Impl
	@init {
		int stackSize = keepStackSize();
		boolean selected = false;
	}
:
		(
		( 
			{getUnorderedGroupHelper().canSelect(grammarAccess.getQueryAccess().getUnorderedGroup_3(), 0)}?=>(
				{
					getUnorderedGroupHelper().select(grammarAccess.getQueryAccess().getUnorderedGroup_3(), 0);
				}
				{
					selected = true;
				}
				(
					{ before(grammarAccess.getQueryAccess().getGroupByAssignment_3_0()); }
					(rule__Query__GroupByAssignment_3_0)
					{ after(grammarAccess.getQueryAccess().getGroupByAssignment_3_0()); }
				)
			)
		)|
		( 
			{getUnorderedGroupHelper().canSelect(grammarAccess.getQueryAccess().getUnorderedGroup_3(), 1)}?=>(
				{
					getUnorderedGroupHelper().select(grammarAccess.getQueryAccess().getUnorderedGroup_3(), 1);
				}
				{
					selected = true;
				}
				(
					(
						{ before(grammarAccess.getQueryAccess().getConditionAssignment_3_1()); }
						(rule__Query__ConditionAssignment_3_1)
						{ after(grammarAccess.getQueryAccess().getConditionAssignment_3_1()); }
					)
					(
						{ before(grammarAccess.getQueryAccess().getConditionAssignment_3_1()); }
						((rule__Query__ConditionAssignment_3_1)=>rule__Query__ConditionAssignment_3_1)*
						{ after(grammarAccess.getQueryAccess().getConditionAssignment_3_1()); }
					)
				)
			)
		)|
		( 
			{getUnorderedGroupHelper().canSelect(grammarAccess.getQueryAccess().getUnorderedGroup_3(), 2)}?=>(
				{
					getUnorderedGroupHelper().select(grammarAccess.getQueryAccess().getUnorderedGroup_3(), 2);
				}
				{
					selected = true;
				}
				(
					{ before(grammarAccess.getQueryAccess().getRangeAssignment_3_2()); }
					(rule__Query__RangeAssignment_3_2)
					{ after(grammarAccess.getQueryAccess().getRangeAssignment_3_2()); }
				)
			)
		)
		)
;
finally {
	if (selected)
		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getQueryAccess().getUnorderedGroup_3());
	restoreStackSize(stackSize);
}

rule__Query__UnorderedGroup_3__0
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Query__UnorderedGroup_3__Impl
	rule__Query__UnorderedGroup_3__1?
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__UnorderedGroup_3__1
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Query__UnorderedGroup_3__Impl
	rule__Query__UnorderedGroup_3__2?
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__UnorderedGroup_3__2
	@init {
		int stackSize = keepStackSize();
	}
:
	rule__Query__UnorderedGroup_3__Impl
;
finally {
	restoreStackSize(stackSize);
}


rule__Model__GreetingsAssignment
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getModelAccess().getGreetingsQueryParserRuleCall_0()); }
		ruleQuery
		{ after(grammarAccess.getModelAccess().getGreetingsQueryParserRuleCall_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__KeyAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getQueryAccess().getKeyQTypekeyWordParserRuleCall_0_0()); }
		ruleQTypekeyWord
		{ after(grammarAccess.getQueryAccess().getKeyQTypekeyWordParserRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__AggregationAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getQueryAccess().getAggregationAggregationParserRuleCall_1_0()); }
		ruleAggregation
		{ after(grammarAccess.getQueryAccess().getAggregationAggregationParserRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__MeasureAssignment_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getQueryAccess().getMeasureMeasureListParserRuleCall_2_0()); }
		ruleMeasureList
		{ after(grammarAccess.getQueryAccess().getMeasureMeasureListParserRuleCall_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__GroupByAssignment_3_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getQueryAccess().getGroupByGroupParserRuleCall_3_0_0()); }
		ruleGroup
		{ after(grammarAccess.getQueryAccess().getGroupByGroupParserRuleCall_3_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__ConditionAssignment_3_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getQueryAccess().getConditionCondtitionParserRuleCall_3_1_0()); }
		ruleCondtition
		{ after(grammarAccess.getQueryAccess().getConditionCondtitionParserRuleCall_3_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__RangeAssignment_3_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getQueryAccess().getRangeTransitionParserRuleCall_3_2_0()); }
		ruleTransition
		{ after(grammarAccess.getQueryAccess().getRangeTransitionParserRuleCall_3_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Query__ChartTypeAssignment_4
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getQueryAccess().getChartTypeChartTypeParserRuleCall_4_0()); }
		ruleChartType
		{ after(grammarAccess.getQueryAccess().getChartTypeChartTypeParserRuleCall_4_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__QTypekeyWord__QKeywordAssignment
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getQTypekeyWordAccess().getQKeywordPlotKeyword_0()); }
		(
			{ before(grammarAccess.getQTypekeyWordAccess().getQKeywordPlotKeyword_0()); }
			Plot
			{ after(grammarAccess.getQTypekeyWordAccess().getQKeywordPlotKeyword_0()); }
		)
		{ after(grammarAccess.getQTypekeyWordAccess().getQKeywordPlotKeyword_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Aggregation__AggAssignment
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getAggregationAccess().getAggAlternatives_0()); }
		(rule__Aggregation__AggAlternatives_0)
		{ after(grammarAccess.getAggregationAccess().getAggAlternatives_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__ConAssignment_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getConForKeyword_0_0_0()); }
		(
			{ before(grammarAccess.getCondtitionAccess().getConForKeyword_0_0_0()); }
			For
			{ after(grammarAccess.getCondtitionAccess().getConForKeyword_0_0_0()); }
		)
		{ after(grammarAccess.getCondtitionAccess().getConForKeyword_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__DimValueAssignment_0_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getDimValueDimensionValueParserRuleCall_0_1_0_0()); }
		ruleDimensionValue
		{ after(grammarAccess.getCondtitionAccess().getDimValueDimensionValueParserRuleCall_0_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__DimenAssignment_0_1_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getDimenDimensionParserRuleCall_0_1_2_0()); }
		ruleDimension
		{ after(grammarAccess.getCondtitionAccess().getDimenDimensionParserRuleCall_0_1_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__ConTimeCurrentAssignment_1_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getConTimeCurrentForKeyword_1_0_0()); }
		(
			{ before(grammarAccess.getCondtitionAccess().getConTimeCurrentForKeyword_1_0_0()); }
			For
			{ after(grammarAccess.getCondtitionAccess().getConTimeCurrentForKeyword_1_0_0()); }
		)
		{ after(grammarAccess.getCondtitionAccess().getConTimeCurrentForKeyword_1_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__ThisTimeGroupAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getThisTimeGroupThisTimeGroupParserRuleCall_1_1_0()); }
		ruleThisTimeGroup
		{ after(grammarAccess.getCondtitionAccess().getThisTimeGroupThisTimeGroupParserRuleCall_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__ConlastTimePastAssignment_2_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getConlastTimePastForKeyword_2_0_0()); }
		(
			{ before(grammarAccess.getCondtitionAccess().getConlastTimePastForKeyword_2_0_0()); }
			For
			{ after(grammarAccess.getCondtitionAccess().getConlastTimePastForKeyword_2_0_0()); }
		)
		{ after(grammarAccess.getCondtitionAccess().getConlastTimePastForKeyword_2_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__LastTimeGroupAssignment_2_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getLastTimeGroupLastTimeGroupParserRuleCall_2_1_0()); }
		ruleLastTimeGroup
		{ after(grammarAccess.getCondtitionAccess().getLastTimeGroupLastTimeGroupParserRuleCall_2_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__ConlastNTimePastAssignment_3_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getConlastNTimePastForKeyword_3_0_0()); }
		(
			{ before(grammarAccess.getCondtitionAccess().getConlastNTimePastForKeyword_3_0_0()); }
			For
			{ after(grammarAccess.getCondtitionAccess().getConlastNTimePastForKeyword_3_0_0()); }
		)
		{ after(grammarAccess.getCondtitionAccess().getConlastNTimePastForKeyword_3_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__LastNTimeGroupAssignment_3_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getLastNTimeGroupLastNTimeGroupParserRuleCall_3_1_0()); }
		ruleLastNTimeGroup
		{ after(grammarAccess.getCondtitionAccess().getLastNTimeGroupLastNTimeGroupParserRuleCall_3_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__ConDayTimeGroupAssignment_4_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getConDayTimeGroupForKeyword_4_0_0()); }
		(
			{ before(grammarAccess.getCondtitionAccess().getConDayTimeGroupForKeyword_4_0_0()); }
			For
			{ after(grammarAccess.getCondtitionAccess().getConDayTimeGroupForKeyword_4_0_0()); }
		)
		{ after(grammarAccess.getCondtitionAccess().getConDayTimeGroupForKeyword_4_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Condtition__DayTimeGroupAssignment_4_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getCondtitionAccess().getDayTimeGroupDayTimeGroupParserRuleCall_4_1_0()); }
		ruleDayTimeGroup
		{ after(grammarAccess.getCondtitionAccess().getDayTimeGroupDayTimeGroupParserRuleCall_4_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__MeasureList__NamesAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getMeasureListAccess().getNamesMeasureParserRuleCall_0_0()); }
		ruleMeasure
		{ after(grammarAccess.getMeasureListAccess().getNamesMeasureParserRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__MeasureList__NamesAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getMeasureListAccess().getNamesMeasureParserRuleCall_1_1_0()); }
		ruleMeasure
		{ after(grammarAccess.getMeasureListAccess().getNamesMeasureParserRuleCall_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__DimensionValue__ValueAssignment
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getDimensionValueAccess().getValueEinStringParserRuleCall_0()); }
		ruleEinString
		{ after(grammarAccess.getDimensionValueAccess().getValueEinStringParserRuleCall_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__DimGroupAssignment_1_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getGroupAccess().getDimGroupDimensionParserRuleCall_1_0_0_0()); }
		ruleDimension
		{ after(grammarAccess.getGroupAccess().getDimGroupDimensionParserRuleCall_1_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__TimeGroupAssignment_1_0_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getGroupAccess().getTimeGroupTimeGroupParserRuleCall_1_0_1_1_0()); }
		ruleTimeGroup
		{ after(grammarAccess.getGroupAccess().getTimeGroupTimeGroupParserRuleCall_1_0_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Group__TimeGroupAssignment_1_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getGroupAccess().getTimeGroupTimeGroupParserRuleCall_1_1_0()); }
		ruleTimeGroup
		{ after(grammarAccess.getGroupAccess().getTimeGroupTimeGroupParserRuleCall_1_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__DateStartAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getTransitionAccess().getDateStartDateParserRuleCall_1_0()); }
		ruleDate
		{ after(grammarAccess.getTransitionAccess().getDateStartDateParserRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Transition__DateEndAssignment_3
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getTransitionAccess().getDateEndDateParserRuleCall_3_0()); }
		ruleDate
		{ after(grammarAccess.getTransitionAccess().getDateEndDateParserRuleCall_3_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__TimeGroup__TimeGroupAssignment
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getTimeGroupAccess().getTimeGroupAlternatives_0()); }
		(rule__TimeGroup__TimeGroupAlternatives_0)
		{ after(grammarAccess.getTimeGroupAccess().getTimeGroupAlternatives_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ThisTimeGroup__ThisTimeGroupAssignment_0_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getThisTimeGroupAccess().getThisTimeGroupThisKeyword_0_0_0()); }
		(
			{ before(grammarAccess.getThisTimeGroupAccess().getThisTimeGroupThisKeyword_0_0_0()); }
			This
			{ after(grammarAccess.getThisTimeGroupAccess().getThisTimeGroupThisKeyword_0_0_0()); }
		)
		{ after(grammarAccess.getThisTimeGroupAccess().getThisTimeGroupThisKeyword_0_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__LastTimeGroup__LastTimeGroupAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getLastTimeGroupAccess().getLastTimeGroupLastKeyword_0_0()); }
		(
			{ before(grammarAccess.getLastTimeGroupAccess().getLastTimeGroupLastKeyword_0_0()); }
			Last
			{ after(grammarAccess.getLastTimeGroupAccess().getLastTimeGroupLastKeyword_0_0()); }
		)
		{ after(grammarAccess.getLastTimeGroupAccess().getLastTimeGroupLastKeyword_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__LastNTimeGroup__LastTimeGroupAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getLastNTimeGroupAccess().getLastTimeGroupLastKeyword_0_0()); }
		(
			{ before(grammarAccess.getLastNTimeGroupAccess().getLastTimeGroupLastKeyword_0_0()); }
			Last
			{ after(grammarAccess.getLastNTimeGroupAccess().getLastTimeGroupLastKeyword_0_0()); }
		)
		{ after(grammarAccess.getLastNTimeGroupAccess().getLastTimeGroupLastKeyword_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__DayTimeGroup__DayTimeGroupAssignment
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getDayTimeGroupAccess().getDayTimeGroupAlternatives_0()); }
		(rule__DayTimeGroup__DayTimeGroupAlternatives_0)
		{ after(grammarAccess.getDayTimeGroupAccess().getDayTimeGroupAlternatives_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__ChartType__ChartTypeAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getChartTypeAccess().getChartTypeAsKeyword_0_0()); }
		(
			{ before(grammarAccess.getChartTypeAccess().getChartTypeAsKeyword_0_0()); }
			As
			{ after(grammarAccess.getChartTypeAccess().getChartTypeAsKeyword_0_0()); }
		)
		{ after(grammarAccess.getChartTypeAccess().getChartTypeAsKeyword_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Date__DAssignment_0
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getDateAccess().getDDayParserRuleCall_0_0()); }
		ruleDay
		{ after(grammarAccess.getDateAccess().getDDayParserRuleCall_0_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Date__MAssignment_1
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getDateAccess().getMMonthParserRuleCall_1_0()); }
		ruleMonth
		{ after(grammarAccess.getDateAccess().getMMonthParserRuleCall_1_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}

rule__Date__YAssignment_2
	@init {
		int stackSize = keepStackSize();
	}
:
	(
		{ before(grammarAccess.getDateAccess().getYYearParserRuleCall_2_0()); }
		ruleYear
		{ after(grammarAccess.getDateAccess().getYYearParserRuleCall_2_0()); }
	)
;
finally {
	restoreStackSize(stackSize);
}
