gt:                     						if (current==null) {
context: package org.xtext.example.plsql.parser.antlr.internal;
  
  import org.eclipse.xtext.*;
  import org.eclipse.xtext.parser.*;
  import org.eclipse.xtext.parser.impl.*;
  import org.eclipse.emf.ecore.util.EcoreUtil;
  import org.eclipse.emf.ecore.EObject;
  import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
  import org.eclipse.xtext.parser.antlr.XtextTokenStream;
  import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
  import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
  import org.xtext.example.plsql.services.DDLGrammarAccess;
  
  
  
  import org.antlr.runtime.*;
  import java.util.Stack;
  import java.util.List;
  import java.util.ArrayList;
  
  @SuppressWarnings("all")
  public class InternalDDLParser extends AbstractInternalAntlrParser {
      public static final String[] tokenNames = new String[] {
          "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'CREATE'", "'TABLE'", "'('", "','", "')'", "';'", "'ALTER'", "'ADD'", "'ENABLE'", "'CONSTRAINT'", "'COMMENT'", "'ON'", "'COLUMN'", "'.'", "'IS'", "'SEQUENCE'", "'INCREMENT'", "'BY'", "'START'", "'WITH'", "'MAXVALUE'", "'NOMAXVALUE'", "'MINVALUE'", "'NOMINVALUE'", "'CYCLE'", "'NOCYCLE'", "'CACHE'", "'NOCACHE'", "'ORDER'", "'NOORDER'", "'PRIMARY'", "'KEY'", "'UNIQUE'", "'FOREIGN'", "'REFERENCES'", "'NULL'", "'NOT'", "'NUMBER'", "'VARCHAR2'", "'DATE'"
      };
      public static final int T__50=50;
      public static final int T__19=19;
      public static final int T__15=15;
      public static final int T__16=16;
      public static final int T__17=17;
      public static final int T__18=18;
      public static final int T__11=11;
      public static final int T__12=12;
      public static final int T__13=13;
      public static final int T__14=14;
      public static final int RULE_ID=4;
      public static final int T__26=26;
      public static final int T__27=27;
      public static final int T__28=28;
      public static final int RULE_INT=5;
      public static final int T__29=29;
      public static final int T__22=22;
      public static final int RULE_ML_COMMENT=7;
      public static final int T__23=23;
      public static final int T__24=24;
      public static final int T__25=25;
      public static final int T__20=20;
      public static final int T__21=21;
      public static final int RULE_STRING=6;
      public static final int RULE_SL_COMMENT=8;
      public static final int T__37=37;
      public static final int T__38=38;
      public static final int T__39=39;
      public static final int T__33=33;
      public static final int T__34=34;
      public static final int T__35=35;
      public static final int T__36=36;
      public static final int EOF=-1;
      public static final int T__30=30;
      public static final int T__31=31;
      public static final int T__32=32;
      public static final int RULE_WS=9;
      public static final int RULE_ANY_OTHER=10;
      public static final int T__48=48;
      public static final int T__49=49;
      public static final int T__44=44;
      public static final int T__45=45;
      public static final int T__46=46;
      public static final int T__47=47;
      public static final int T__40=40;
      public static final int T__41=41;
      public static final int T__42=42;
      public static final int T__43=43;
  
      // delegates
      // delegators
  
  
          public InternalDDLParser(TokenStream input) {
              this(input, new RecognizerSharedState());
          }
          public InternalDDLParser(TokenStream input, RecognizerSharedState state) {
              super(input, state);
               
          }
          
  
      public String[] getTokenNames() { return InternalDDLParser.tokenNames; }
      public String getGrammarFileName() { return "InternalDDL.g"; }
  
  
  
       	private DDLGrammarAccess grammarAccess;
  
          public InternalDDLParser(TokenStream input, DDLGrammarAccess grammarAccess) {
              this(input);
              this.grammarAccess = grammarAccess;
              registerRules(grammarAccess.getGrammar());
          }
  
          @Override
          protected String getFirstRuleName() {
          	return "Data_definition";
         	}
  
         	@Override
         	protected DDLGrammarAccess getGrammarAccess() {
         		return grammarAccess;
         	}
  
  
  
  
      // $ANTLR start "entryRuleData_definition"
      // InternalDDL.g:64:1: entryRuleData_definition returns [EObject current=null] : iv_ruleData_definition= ruleData_definition EOF ;
      public final EObject entryRuleData_definition() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleData_definition = null;
  
  
          try {
              // InternalDDL.g:64:56: (iv_ruleData_definition= ruleData_definition EOF )
              // InternalDDL.g:65:2: iv_ruleData_definition= ruleData_definition EOF
              {
               newCompositeNode(grammarAccess.getData_definitionRule()); 
              pushFollow(FOLLOW_1);
              iv_ruleData_definition=ruleData_definition();
  
              state._fsp--;
  
               current =iv_ruleData_definition; 
              match(input,EOF,FOLLOW_2); 
  
              }
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleData_definition"
  
  
      // $ANTLR start "ruleData_definition"
      // InternalDDL.g:71:1: ruleData_definition returns [EObject current=null] : ( (lv_definitions_0_0= ruleDefinition ) )+ ;
      public final EObject ruleData_definition() throws RecognitionException {
          EObject current = null;
  
          EObject lv_definitions_0_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalDDL.g:77:2: ( ( (lv_definitions_0_0= ruleDefinition ) )+ )
              // InternalDDL.g:78:2: ( (lv_definitions_0_0= ruleDefinition ) )+
              {
              // InternalDDL.g:78:2: ( (lv_definitions_0_0= ruleDefinition ) )+
              int cnt1=0;
              loop1:
              do {
                  int alt1=2;
                  int LA1_0 = input.LA(1);
  
                  if ( (LA1_0==11||LA1_0==17||LA1_0==21) ) {
                      alt1=1;
                  }
  
  
                  switch (alt1) {
              	case 1 :
              	    // InternalDDL.g:79:3: (lv_definitions_0_0= ruleDefinition )
              	    {
              	    // InternalDDL.g:79:3: (lv_definitions_0_0= ruleDefinition )
              	    // InternalDDL.g:80:4: lv_definitions_0_0= ruleDefinition
              	    {
  
              	    				newCompositeNode(grammarAccess.getData_definitionAccess().getDefinitionsDefinitionParserRuleCall_0());
              	    			
              	    pushFollow(FOLLOW_3);
              	    lv_definitions_0_0=ruleDefinition();
  
              	    state._fsp--;
  
  
              	    				if (current==null) {
              	    					current = createModelElementForParent(grammarAccess.getData_definitionRule());
              	    				}
              	    				add(
              	    					current,
              	    					"definitions",
              	    					lv_definitions_0_0,
              	    					"org.xtext.example.plsql.DDL.Definition");
              	    				afterParserOrEnumRuleCall();
              	    			
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt1 >= 1 ) break loop1;
                          EarlyExitException eee =
                              new EarlyExitException(1, input);
                          throw eee;
                  }
                  cnt1++;
              } while (true);
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleData_definition"
  
  
      // $ANTLR start "entryRuleDefinition"
      // InternalDDL.g:100:1: entryRuleDefinition returns [EObject current=null] : iv_ruleDefinition= ruleDefinition EOF ;
      public final EObject entryRuleDefinition() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleDefinition = null;
  
  
          try {
              // InternalDDL.g:100:51: (iv_ruleDefinition= ruleDefinition EOF )
              // InternalDDL.g:101:2: iv_ruleDefinition= ruleDefinition EOF
              {
               newCompositeNode(grammarAccess.getDefinitionRule()); 
              pushFollow(FOLLOW_1);
              iv_ruleDefinition=ruleDefinition();
  
              state._fsp--;
  
               current =iv_ruleDefinition; 
              match(input,EOF,FOLLOW_2); 
  
              }
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleDefinition"
  
  
      // $ANTLR start "ruleDefinition"
      // InternalDDL.g:107:1: ruleDefinition returns [EObject current=null] : (this_Create_table_0= ruleCreate_table | this_Alter_table_1= ruleAlter_table | this_Create_sequence_2= ruleCreate_sequence | this_Comment_3= ruleComment ) ;
      public final EObject ruleDefinition() throws RecognitionException {
          EObject current = null;
  
          EObject this_Create_table_0 = null;
  
          EObject this_Alter_table_1 = null;
  
          EObject this_Create_sequence_2 = null;
  
          EObject this_Comment_3 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalDDL.g:113:2: ( (this_Create_table_0= ruleCreate_table | this_Alter_table_1= ruleAlter_table | this_Create_sequence_2= ruleCreate_sequence | this_Comment_3= ruleComment ) )
              // InternalDDL.g:114:2: (this_Create_table_0= ruleCreate_table | this_Alter_table_1= ruleAlter_table | this_Create_sequence_2= ruleCreate_sequence | this_Comment_3= ruleComment )
              {
              // InternalDDL.g:114:2: (this_Create_table_0= ruleCreate_table | this_Alter_table_1= ruleAlter_table | this_Create_sequence_2= ruleCreate_sequence | this_Comment_3= ruleComment )
              int alt2=4;
              switch ( input.LA(1) ) {
              case 11:
                  {
                  int LA2_1 = input.LA(2);
  
                  if ( (LA2_1==26) ) {
                      alt2=3;
                  }
                  else if ( (LA2_1==12) ) {
                      alt2=1;
                  }
                  else {
                      NoViableAltException nvae =
                          new NoViableAltException("", 2, 1, input);
  
                      throw nvae;
                  }
                  }
                  break;
              case 17:
                  {
                  alt2=2;
                  }
                  break;
              case 21:
                  {
                  alt2=4;
                  }
                  break;
              default:
                  NoViableAltException nvae =
                      new NoViableAltException("", 2, 0, input);
  
                  throw nvae;
              }
  
              switch (alt2) {
                  case 1 :
                      // InternalDDL.g:115:3: this_Create_table_0= ruleCreate_table
                      {
  
                      			newCompositeNode(grammarAccess.getDefinitionAccess().getCreate_tableParserRuleCall_0());
                      		
                      pushFollow(FOLLOW_2);
                      this_Create_table_0=ruleCreate_table();
  
                      state._fsp--;
  
  
                      			current = this_Create_table_0;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
                  case 2 :
                      // InternalDDL.g:124:3: this_Alter_table_1= ruleAlter_table
                      {
  
                      			newCompositeNode(grammarAccess.getDefinitionAccess().getAlter_tableParserRuleCall_1());
                      		
                      pushFollow(FOLLOW_2);
                      this_Alter_table_1=ruleAlter_table();
  
                      state._fsp--;
  
  
                      			current = this_Alter_table_1;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
                  case 3 :
                      // InternalDDL.g:133:3: this_Create_sequence_2= ruleCreate_sequence
                      {
  
                      			newCompositeNode(grammarAccess.getDefinitionAccess().getCreate_sequenceParserRuleCall_2());
                      		
                      pushFollow(FOLLOW_2);
                      this_Create_sequence_2=ruleCreate_sequence();
  
                      state._fsp--;
  
  
                      			current = this_Create_sequence_2;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
                  case 4 :
                      // InternalDDL.g:142:3: this_Comment_3= ruleComment
                      {
  
                      			newCompositeNode(grammarAccess.getDefinitionAccess().getCommentParserRuleCall_3());
                      		
                      pushFollow(FOLLOW_2);
                      this_Comment_3=ruleComment();
  
                      state._fsp--;
  
  
                      			current = this_Comment_3;
                      			afterParserOrEnumRuleCall();
                      		
  
                      }
                      break;
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleDefinition"
  
  
      // $ANTLR start "entryRuleCreate_table"
      // InternalDDL.g:154:1: entryRuleCreate_table returns [EObject current=null] : iv_ruleCreate_table= ruleCreate_table EOF ;
      public final EObject entryRuleCreate_table() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleCreate_table = null;
  
  
          try {
              // InternalDDL.g:154:53: (iv_ruleCreate_table= ruleCreate_table EOF )
              // InternalDDL.g:155:2: iv_ruleCreate_table= ruleCreate_table EOF
              {
               newCompositeNode(grammarAccess.getCreate_tableRule()); 
              pushFollow(FOLLOW_1);
              iv_ruleCreate_table=ruleCreate_table();
  
              state._fsp--;
  
               current =iv_ruleCreate_table; 
              match(input,EOF,FOLLOW_2); 
  
              }
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleCreate_table"
  
  
      // $ANTLR start "ruleCreate_table"
      // InternalDDL.g:161:1: ruleCreate_table returns [EObject current=null] : (otherlv_0= 'CREATE' otherlv_1= 'TABLE' ( (lv_id_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_columns_4_0= ruleColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleColumn ) ) )* (otherlv_7= ',' ( (lv_constraints_8_0= ruleConstraint ) ) )* otherlv_9= ')' otherlv_10= ';' ) ;
      public final EObject ruleCreate_table() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token lv_id_2_0=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_7=null;
          Token otherlv_9=null;
          Token otherlv_10=null;
          EObject lv_columns_4_0 = null;
  
          EObject lv_columns_6_0 = null;
  
          EObject lv_constraints_8_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalDDL.g:167:2: ( (otherlv_0= 'CREATE' otherlv_1= 'TABLE' ( (lv_id_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_columns_4_0= ruleColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleColumn ) ) )* (otherlv_7= ',' ( (lv_constraints_8_0= ruleConstraint ) ) )* otherlv_9= ')' otherlv_10= ';' ) )
              // InternalDDL.g:168:2: (otherlv_0= 'CREATE' otherlv_1= 'TABLE' ( (lv_id_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_columns_4_0= ruleColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleColumn ) ) )* (otherlv_7= ',' ( (lv_constraints_8_0= ruleConstraint ) ) )* otherlv_9= ')' otherlv_10= ';' )
              {
              // InternalDDL.g:168:2: (otherlv_0= 'CREATE' otherlv_1= 'TABLE' ( (lv_id_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_columns_4_0= ruleColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleColumn ) ) )* (otherlv_7= ',' ( (lv_constraints_8_0= ruleConstraint ) ) )* otherlv_9= ')' otherlv_10= ';' )
              // InternalDDL.g:169:3: otherlv_0= 'CREATE' otherlv_1= 'TABLE' ( (lv_id_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_columns_4_0= ruleColumn ) ) (otherlv_5= ',' ( (lv_columns_6_0= ruleColumn ) ) )* (otherlv_7= ',' ( (lv_constraints_8_0= ruleConstraint ) ) )* otherlv_9= ')' otherlv_10= ';'
              {
              otherlv_0=(Token)match(input,11,FOLLOW_4); 
  
              			newLeafNode(otherlv_0, grammarAccess.getCreate_tableAccess().getCREATEKeyword_0());
              		
              otherlv_1=(Token)match(input,12,FOLLOW_5); 
  
              			newLeafNode(otherlv_1, grammarAccess.getCreate_tableAccess().getTABLEKeyword_1());
              		
              // InternalDDL.g:177:3: ( (lv_id_2_0= RULE_ID ) )
              // InternalDDL.g:178:4: (lv_id_2_0= RULE_ID )
              {
              // InternalDDL.g:178:4: (lv_id_2_0= RULE_ID )
              // InternalDDL.g:179:5: lv_id_2_0= RULE_ID
              {
              lv_id_2_0=(Token)match(input,RULE_ID,FOLLOW_6); 
  
              					newLeafNode(lv_id_2_0, grammarAccess.getCreate_tableAccess().getIdIDTerminalRuleCall_2_0());
              				
  
              					if (current==null) {
              						current = createModelElement(grammarAccess.getCreate_tableRule());
              					}
              					setWithLastConsumed(
              						current,
              						"id",
              						lv_id_2_0,
              						"org.eclipse.xtext.common.Terminals.ID");
              				
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,13,FOLLOW_5); 
  
              			newLeafNode(otherlv_3, grammarAccess.getCreate_tableAccess().getLeftParenthesisKeyword_3());
              		
              // InternalDDL.g:199:3: ( (lv_columns_4_0= ruleColumn ) )
              // InternalDDL.g:200:4: (lv_columns_4_0= ruleColumn )
              {
              // InternalDDL.g:200:4: (lv_columns_4_0= ruleColumn )
              // InternalDDL.g:201:5: lv_columns_4_0= ruleColumn
              {
  
              					newCompositeNode(grammarAccess.getCreate_tableAccess().getColumnsColumnParserRuleCall_4_0());
              				
              pushFollow(FOLLOW_7);
              lv_columns_4_0=ruleColumn();
  
              state._fsp--;
  
  
              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getCreate_tableRule());
              					}
              					add(
              						current,
              						"columns",
              						lv_columns_4_0,
              						"org.xtext.example.plsql.DDL.Column");
              					afterParserOrEnumRuleCall();
              				
  
              }
  
  
              }
  
              // InternalDDL.g:218:3: (otherlv_5= ',' ( (lv_columns_6_0= ruleColumn ) ) )*
              loop3:
              do {
                  int alt3=2;
                  int LA3_0 = input.LA(1);
  
                  if ( (LA3_0==14) ) {
                      int LA3_1 = input.LA(2);
  
                      if ( (LA3_1==RULE_ID) ) {
                          alt3=1;
                      }
  
  
                  }
  
  
                  switch (alt3) {
              	case 1 :
              	    // InternalDDL.g:219:4: otherlv_5= ',' ( (lv_columns_6_0= ruleColumn ) )
              	    {
              	    otherlv_5=(Token)match(input,14,FOLLOW_5); 
  
              	    				newLeafNode(otherlv_5, grammarAccess.getCreate_tableAccess().getCommaKeyword_5_0());
              	    			
              	    // InternalDDL.g:223:4: ( (lv_columns_6_0= ruleColumn ) )
              	    // InternalDDL.g:224:5: (lv_columns_6_0= ruleColumn )
              	    {
              	    // InternalDDL.g:224:5: (lv_columns_6_0= ruleColumn )
              	    // InternalDDL.g:225:6: lv_columns_6_0= ruleColumn
              	    {
  
              	    						newCompositeNode(grammarAccess.getCreate_tableAccess().getColumnsColumnParserRuleCall_5_1_0());
              	    					
              	    pushFollow(FOLLOW_7);
              	    lv_columns_6_0=ruleColumn();
  
              	    state._fsp--;
  
  
              	    						if (current==null) {
              	    							current = createModelElementForParent(grammarAccess.getCreate_tableRule());
              	    						}
              	    						add(
              	    							current,
              	    							"columns",
              	    							lv_columns_6_0,
              	    							"org.xtext.example.plsql.DDL.Column");
              	    						afterParserOrEnumRuleCall();
              	    					
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop3;
                  }
              } while (true);
  
              // InternalDDL.g:243:3: (otherlv_7= ',' ( (lv_constraints_8_0= ruleConstraint ) ) )*
              loop4:
              do {
                  int alt4=2;
                  int LA4_0 = input.LA(1);
  
                  if ( (LA4_0==14) ) {
                      alt4=1;
                  }
  
  
                  switch (alt4) {
              	case 1 :
              	    // InternalDDL.g:244:4: otherlv_7= ',' ( (lv_constraints_8_0= ruleConstraint ) )
              	    {
              	    otherlv_7=(Token)match(input,14,FOLLOW_8); 
  
              	    				newLeafNode(otherlv_7, grammarAccess.getCreate_tableAccess().getCommaKeyword_6_0());
              	    			
              	    // InternalDDL.g:248:4: ( (lv_constraints_8_0= ruleConstraint ) )
              	    // InternalDDL.g:249:5: (lv_constraints_8_0= ruleConstraint )
              	    {
              	    // InternalDDL.g:249:5: (lv_constraints_8_0= ruleConstraint )
              	    // InternalDDL.g:250:6: lv_constraints_8_0= ruleConstraint
              	    {
  
              	    						newCompositeNode(grammarAccess.getCreate_tableAccess().getConstraintsConstraintParserRuleCall_6_1_0());
              	    					
              	    pushFollow(FOLLOW_7);
              	    lv_constraints_8_0=ruleConstraint();
  
              	    state._fsp--;
  
  
              	    						if (current==null) {
              	    							current = createModelElementForParent(grammarAccess.getCreate_tableRule());
              	    						}
              	    						add(
              	    							current,
              	    							"constraints",
              	    							lv_constraints_8_0,
              	    							"org.xtext.example.plsql.DDL.Constraint");
              	    						afterParserOrEnumRuleCall();
              	    					
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop4;
                  }
              } while (true);
  
              otherlv_9=(Token)match(input,15,FOLLOW_9); 
  
              			newLeafNode(otherlv_9, grammarAccess.getCreate_tableAccess().getRightParenthesisKeyword_7());
              		
              otherlv_10=(Token)match(input,16,FOLLOW_2); 
  
              			newLeafNode(otherlv_10, grammarAccess.getCreate_tableAccess().getSemicolonKeyword_8());
              		
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleCreate_table"
  
  
      // $ANTLR start "entryRuleColumn"
      // InternalDDL.g:280:1: entryRuleColumn returns [EObject current=null] : iv_ruleColumn= ruleColumn EOF ;
      public final EObject entryRuleColumn() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleColumn = null;
  
  
          try {
              // InternalDDL.g:280:47: (iv_ruleColumn= ruleColumn EOF )
              // InternalDDL.g:281:2: iv_ruleColumn= ruleColumn EOF
              {
               newCompositeNode(grammarAccess.getColumnRule()); 
              pushFollow(FOLLOW_1);
              iv_ruleColumn=ruleColumn();
  
              state._fsp--;
  
               current =iv_ruleColumn; 
              match(input,EOF,FOLLOW_2); 
  
              }
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleColumn"
  
  
      // $ANTLR start "ruleColumn"
      // InternalDDL.g:287:1: ruleColumn returns [EObject current=null] : ( ( (lv_id_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleTYPE ) ) (otherlv_2= '(' ( (lv_number_3_0= RULE_INT ) ) otherlv_4= ')' )? ( (lv_isNull_5_0= ruleISNULL ) )? ) ;
      public final EObject ruleColumn() throws RecognitionException {
          EObject current = null;
  
          Token lv_id_0_0=null;
          Token otherlv_2=null;
          Token lv_number_3_0=null;
          Token otherlv_4=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_isNull_5_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalDDL.g:293:2: ( ( ( (lv_id_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleTYPE ) ) (otherlv_2= '(' ( (lv_number_3_0= RULE_INT ) ) otherlv_4= ')' )? ( (lv_isNull_5_0= ruleISNULL ) )? ) )
              // InternalDDL.g:294:2: ( ( (lv_id_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleTYPE ) ) (otherlv_2= '(' ( (lv_number_3_0= RULE_INT ) ) otherlv_4= ')' )? ( (lv_isNull_5_0= ruleISNULL ) )? )
              {
              // InternalDDL.g:294:2: ( ( (lv_id_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleTYPE ) ) (otherlv_2= '(' ( (lv_number_3_0= RULE_INT ) ) otherlv_4= ')' )? ( (lv_isNull_5_0= ruleISNULL ) )? )
              // InternalDDL.g:295:3: ( (lv_id_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleTYPE ) ) (otherlv_2= '(' ( (lv_number_3_0= RULE_INT ) ) otherlv_4= ')' )? ( (lv_isNull_5_0= ruleISNULL ) )?
              {
              // InternalDDL.g:295:3: ( (lv_id_0_0= RULE_ID ) )
              // InternalDDL.g:296:4: (lv_id_0_0= RULE_ID )
              {
              // InternalDDL.g:296:4: (lv_id_0_0= RULE_ID )
              // InternalDDL.g:297:5: lv_id_0_0= RULE_ID
              {
              lv_id_0_0=(Token)match(input,RULE_ID,FOLLOW_10); 
  
              					newLeafNode(lv_id_0_0, grammarAccess.getColumnAccess().getIdIDTerminalRuleCall_0_0());
              				
  
              					if (current==null) {
              						current = createModelElement(grammarAccess.getColumnRule());
              					}
              					setWithLastConsumed(
              						current,
              						"id",
              						lv_id_0_0,
              						"org.eclipse.xtext.common.Terminals.ID");
              				
  
              }
  
  
              }
  
              // InternalDDL.g:313:3: ( (lv_type_1_0= ruleTYPE ) )
              // InternalDDL.g:314:4: (lv_type_1_0= ruleTYPE )
              {
              // InternalDDL.g:314:4: (lv_type_1_0= ruleTYPE )
              // InternalDDL.g:315:5: lv_type_1_0= ruleTYPE
              {
  
              					newCompositeNode(grammarAccess.getColumnAccess().getTypeTYPEParserRuleCall_1_0());
              				
              pushFollow(FOLLOW_11);
              lv_type_1_0=ruleTYPE();
  
              state._fsp--;
  
  
              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getColumnRule());
              					}
              					set(
              						current,
              						"type",
              						lv_type_1_0,
              						"org.xtext.example.plsql.DDL.TYPE");
              					afterParserOrEnumRuleCall();
              				
  
              }
  
  
              }
  
              // InternalDDL.g:332:3: (otherlv_2= '(' ( (lv_number_3_0= RULE_INT ) ) otherlv_4= ')' )?
              int alt5=2;
              int LA5_0 = input.LA(1);
  
              if ( (LA5_0==13) ) {
                  alt5=1;
              }
              switch (alt5) {
                  case 1 :
                      // InternalDDL.g:333:4: otherlv_2= '(' ( (lv_number_3_0= RULE_INT ) ) otherlv_4= ')'
                      {
                      otherlv_2=(Token)match(input,13,FOLLOW_12); 
  
                      				newLeafNode(otherlv_2, grammarAccess.getColumnAccess().getLeftParenthesisKeyword_2_0());
                      			
                      // InternalDDL.g:337:4: ( (lv_number_3_0= RULE_INT ) )
                      // InternalDDL.g:338:5: (lv_number_3_0= RULE_INT )
                      {
                      // InternalDDL.g:338:5: (lv_number_3_0= RULE_INT )
                      // InternalDDL.g:339:6: lv_number_3_0= RULE_INT
                      {
                      lv_number_3_0=(Token)match(input,RULE_INT,FOLLOW_13); 
  
                      						newLeafNode(lv_number_3_0, grammarAccess.getColumnAccess().getNumberINTTerminalRuleCall_2_1_0());
                      					
  
                      						if (current==null) {
                      							current = createModelElement(grammarAccess.getColumnRule());
                      						}
                      						setWithLastConsumed(
                      							current,
                      							"number",
                      							lv_number_3_0,
                      							"org.eclipse.xtext.common.Terminals.INT");
                      					
  
                      }
  
  
                      }
  
                      otherlv_4=(Token)match(input,15,FOLLOW_14); 
  
                      				newLeafNode(otherlv_4, grammarAccess.getColumnAccess().getRightParenthesisKeyword_2_2());
                      			
  
                      }
                      break;
  
              }
  
              // InternalDDL.g:360:3: ( (lv_isNull_5_0= ruleISNULL ) )?
              int alt6=2;
              int LA6_0 = input.LA(1);
  
              if ( ((LA6_0>=46 && LA6_0<=47)) ) {
                  alt6=1;
              }
              switch (alt6) {
                  case 1 :
                      // InternalDDL.g:361:4: (lv_isNull_5_0= ruleISNULL )
                      {
                      // InternalDDL.g:361:4: (lv_isNull_5_0= ruleISNULL )
                      // InternalDDL.g:362:5: lv_isNull_5_0= ruleISNULL
                      {
  
                      					newCompositeNode(grammarAccess.getColumnAccess().getIsNullISNULLParserRuleCall_3_0());
                      				
                      pushFollow(FOLLOW_2);
                      lv_isNull_5_0=ruleISNULL();
  
                      state._fsp--;
  
  
                      					if (current==null) {
                      						current = createModelElementForParent(grammarAccess.getColumnRule());
                      					}
                      					set(
                      						current,
                      						"isNull",
                      						lv_isNull_5_0,
                      						"org.xtext.example.plsql.DDL.ISNULL");
                      					afterParserOrEnumRuleCall();
                      				
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleColumn"
  
  
      // $ANTLR start "entryRuleAlter_table"
      // InternalDDL.g:383:1: entryRuleAlter_table returns [EObject current=null] : iv_ruleAlter_table= ruleAlter_table EOF ;
      public final EObject entryRuleAlter_table() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleAlter_table = null;
  
  
          try {
              // InternalDDL.g:383:52: (iv_ruleAlter_table= ruleAlter_table EOF )
              // InternalDDL.g:384:2: iv_ruleAlter_table= ruleAlter_table EOF
              {
               newCompositeNode(grammarAccess.getAlter_tableRule()); 
              pushFollow(FOLLOW_1);
              iv_ruleAlter_table=ruleAlter_table();
  
              state._fsp--;
  
               current =iv_ruleAlter_table; 
              match(input,EOF,FOLLOW_2); 
  
              }
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAlter_table"
  
  
      // $ANTLR start "ruleAlter_table"
      // InternalDDL.g:390:1: ruleAlter_table returns [EObject current=null] : (otherlv_0= 'ALTER' otherlv_1= 'TABLE' ( (lv_tabname_2_0= ruleTabname ) ) ( ( ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) ) ) | ( ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) ) ) ) otherlv_8= ';' ) ;
      public final EObject ruleAlter_table() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token lv_add_3_0=null;
          Token lv_enable_5_0=null;
          Token otherlv_6=null;
          Token lv_id_7_0=null;
          Token otherlv_8=null;
          EObject lv_tabname_2_0 = null;
  
          EObject lv_constraint_4_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalDDL.g:396:2: ( (otherlv_0= 'ALTER' otherlv_1= 'TABLE' ( (lv_tabname_2_0= ruleTabname ) ) ( ( ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) ) ) | ( ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) ) ) ) otherlv_8= ';' ) )
              // InternalDDL.g:397:2: (otherlv_0= 'ALTER' otherlv_1= 'TABLE' ( (lv_tabname_2_0= ruleTabname ) ) ( ( ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) ) ) | ( ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) ) ) ) otherlv_8= ';' )
              {
              // InternalDDL.g:397:2: (otherlv_0= 'ALTER' otherlv_1= 'TABLE' ( (lv_tabname_2_0= ruleTabname ) ) ( ( ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) ) ) | ( ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) ) ) ) otherlv_8= ';' )
              // InternalDDL.g:398:3: otherlv_0= 'ALTER' otherlv_1= 'TABLE' ( (lv_tabname_2_0= ruleTabname ) ) ( ( ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) ) ) | ( ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) ) ) ) otherlv_8= ';'
              {
              otherlv_0=(Token)match(input,17,FOLLOW_4); 
  
              			newLeafNode(otherlv_0, grammarAccess.getAlter_tableAccess().getALTERKeyword_0());
              		
              otherlv_1=(Token)match(input,12,FOLLOW_5); 
  
              			newLeafNode(otherlv_1, grammarAccess.getAlter_tableAccess().getTABLEKeyword_1());
              		
              // InternalDDL.g:406:3: ( (lv_tabname_2_0= ruleTabname ) )
              // InternalDDL.g:407:4: (lv_tabname_2_0= ruleTabname )
              {
              // InternalDDL.g:407:4: (lv_tabname_2_0= ruleTabname )
              // InternalDDL.g:408:5: lv_tabname_2_0= ruleTabname
              {
  
              					newCompositeNode(grammarAccess.getAlter_tableAccess().getTabnameTabnameParserRuleCall_2_0());
              				
              pushFollow(FOLLOW_15);
              lv_tabname_2_0=ruleTabname();
  
              state._fsp--;
  
  
              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getAlter_tableRule());
              					}
              					set(
              						current,
              						"tabname",
              						lv_tabname_2_0,
              						"org.xtext.example.plsql.DDL.Tabname");
              					afterParserOrEnumRuleCall();
              				
  
              }
  
  
              }
  
              // InternalDDL.g:425:3: ( ( ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) ) ) | ( ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) ) ) )
              int alt7=2;
              int LA7_0 = input.LA(1);
  
              if ( (LA7_0==18) ) {
                  alt7=1;
              }
              else if ( (LA7_0==19) ) {
                  alt7=2;
              }
              else {
                  NoViableAltException nvae =
                      new NoViableAltException("", 7, 0, input);
  
                  throw nvae;
              }
              switch (alt7) {
                  case 1 :
                      // InternalDDL.g:426:4: ( ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) ) )
                      {
                      // InternalDDL.g:426:4: ( ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) ) )
                      // InternalDDL.g:427:5: ( (lv_add_3_0= 'ADD' ) ) ( (lv_constraint_4_0= ruleConstraint ) )
                      {
                      // InternalDDL.g:427:5: ( (lv_add_3_0= 'ADD' ) )
                      // InternalDDL.g:428:6: (lv_add_3_0= 'ADD' )
                      {
                      // InternalDDL.g:428:6: (lv_add_3_0= 'ADD' )
                      // InternalDDL.g:429:7: lv_add_3_0= 'ADD'
                      {
                      lv_add_3_0=(Token)match(input,18,FOLLOW_8); 
  
                      							newLeafNode(lv_add_3_0, grammarAccess.getAlter_tableAccess().getAddADDKeyword_3_0_0_0());
                      						
  
                      							if (current==null) {
                      								current = createModelElement(grammarAccess.getAlter_tableRule());
                      							}
                      							setWithLastConsumed(current, "add", lv_add_3_0, "ADD");
                      						
  
                      }
  
  
                      }
  
                      // InternalDDL.g:441:5: ( (lv_constraint_4_0= ruleConstraint ) )
                      // InternalDDL.g:442:6: (lv_constraint_4_0= ruleConstraint )
                      {
                      // InternalDDL.g:442:6: (lv_constraint_4_0= ruleConstraint )
                      // InternalDDL.g:443:7: lv_constraint_4_0= ruleConstraint
                      {
  
                      							newCompositeNode(grammarAccess.getAlter_tableAccess().getConstraintConstraintParserRuleCall_3_0_1_0());
                      						
                      pushFollow(FOLLOW_9);
                      lv_constraint_4_0=ruleConstraint();
  
                      state._fsp--;
  
  
                      							if (current==null) {
                      								current = createModelElementForParent(grammarAccess.getAlter_tableRule());
                      							}
                      							set(
                      								current,
                      								"constraint",
                      								lv_constraint_4_0,
                      								"org.xtext.example.plsql.DDL.Constraint");
                      							afterParserOrEnumRuleCall();
                      						
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalDDL.g:462:4: ( ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) ) )
                      {
                      // InternalDDL.g:462:4: ( ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) ) )
                      // InternalDDL.g:463:5: ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' ) ( (lv_id_7_0= RULE_ID ) )
                      {
                      // InternalDDL.g:463:5: ( ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT' )
                      // InternalDDL.g:464:6: ( (lv_enable_5_0= 'ENABLE' ) ) otherlv_6= 'CONSTRAINT'
                      {
                      // InternalDDL.g:464:6: ( (lv_enable_5_0= 'ENABLE' ) )
                      // InternalDDL.g:465:7: (lv_enable_5_0= 'ENABLE' )
                      {
                      // InternalDDL.g:465:7: (lv_enable_5_0= 'ENABLE' )
                      // InternalDDL.g:466:8: lv_enable_5_0= 'ENABLE'
                      {
                      lv_enable_5_0=(Token)match(input,19,FOLLOW_8); 
  
                      								newLeafNode(lv_enable_5_0, grammarAccess.getAlter_tableAccess().getEnableENABLEKeyword_3_1_0_0_0());
                      							
  
                      								if (current==null) {
                      									current = createModelElement(grammarAccess.getAlter_tableRule());
                      								}
                      								setWithLastConsumed(current, "enable", lv_enable_5_0, "ENABLE");
                      							
  
                      }
  
  
                      }
  
                      otherlv_6=(Token)match(input,20,FOLLOW_5); 
  
                      						newLeafNode(otherlv_6, grammarAccess.getAlter_tableAccess().getCONSTRAINTKeyword_3_1_0_1());
                      					
  
                      }
  
                      // InternalDDL.g:483:5: ( (lv_id_7_0= RULE_ID ) )
                      // InternalDDL.g:484:6: (lv_id_7_0= RULE_ID )
                      {
                      // InternalDDL.g:484:6: (lv_id_7_0= RULE_ID )
                      // InternalDDL.g:485:7: lv_id_7_0= RULE_ID
                      {
                      lv_id_7_0=(Token)match(input,RULE_ID,FOLLOW_9); 
  
                      							newLeafNode(lv_id_7_0, grammarAccess.getAlter_tableAccess().getIdIDTerminalRuleCall_3_1_1_0());
                      						
  
                      							if (current==null) {
                      								current = createModelElement(grammarAccess.getAlter_tableRule());
                      							}
                      							setWithLastConsumed(
                      								current,
                      								"id",
                      								lv_id_7_0,
                      								"org.eclipse.xtext.common.Terminals.ID");
                      						
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_8=(Token)match(input,16,FOLLOW_2); 
  
              			newLeafNode(otherlv_8, grammarAccess.getAlter_tableAccess().getSemicolonKeyword_4());
              		
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAlter_table"
  
  
      // $ANTLR start "entryRuleComment"
      // InternalDDL.g:511:1: entryRuleComment returns [EObject current=null] : iv_ruleComment= ruleComment EOF ;
      public final EObject entryRuleComment() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleComment = null;
  
  
          try {
              // InternalDDL.g:511:48: (iv_ruleComment= ruleComment EOF )
              // InternalDDL.g:512:2: iv_ruleComment= ruleComment EOF
              {
               newCompositeNode(grammarAccess.getCommentRule()); 
              pushFollow(FOLLOW_1);
              iv_ruleComment=ruleComment();
  
              state._fsp--;
  
               current =iv_ruleComment; 
              match(input,EOF,FOLLOW_2); 
  
              }
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleComment"
  
  
      // $ANTLR start "ruleComment"
      // InternalDDL.g:518:1: ruleComment returns [EObject current=null] : (otherlv_0= 'COMMENT' otherlv_1= 'ON' ( (otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) ) ) | (otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) ) ) ) otherlv_8= 'IS' ( (lv_string_9_0= RULE_STRING ) ) otherlv_10= ';' ) ;
      public final EObject ruleComment() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          Token lv_columnId_5_0=null;
          Token otherlv_6=null;
          Token otherlv_8=null;
          Token lv_string_9_0=null;
          Token otherlv_10=null;
          EObject lv_tabname_3_0 = null;
  
          EObject lv_colname_7_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalDDL.g:524:2: ( (otherlv_0= 'COMMENT' otherlv_1= 'ON' ( (otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) ) ) | (otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) ) ) ) otherlv_8= 'IS' ( (lv_string_9_0= RULE_STRING ) ) otherlv_10= ';' ) )
              // InternalDDL.g:525:2: (otherlv_0= 'COMMENT' otherlv_1= 'ON' ( (otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) ) ) | (otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) ) ) ) otherlv_8= 'IS' ( (lv_string_9_0= RULE_STRING ) ) otherlv_10= ';' )
              {
              // InternalDDL.g:525:2: (otherlv_0= 'COMMENT' otherlv_1= 'ON' ( (otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) ) ) | (otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) ) ) ) otherlv_8= 'IS' ( (lv_string_9_0= RULE_STRING ) ) otherlv_10= ';' )
              // InternalDDL.g:526:3: otherlv_0= 'COMMENT' otherlv_1= 'ON' ( (otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) ) ) | (otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) ) ) ) otherlv_8= 'IS' ( (lv_string_9_0= RULE_STRING ) ) otherlv_10= ';'
              {
              otherlv_0=(Token)match(input,21,FOLLOW_16); 
  
              			newLeafNode(otherlv_0, grammarAccess.getCommentAccess().getCOMMENTKeyword_0());
              		
              otherlv_1=(Token)match(input,22,FOLLOW_17); 
  
              			newLeafNode(otherlv_1, grammarAccess.getCommentAccess().getONKeyword_1());
              		
              // InternalDDL.g:534:3: ( (otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) ) ) | (otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) ) ) )
              int alt8=2;
              int LA8_0 = input.LA(1);
  
              if ( (LA8_0==12) ) {
                  alt8=1;
              }
              else if ( (LA8_0==23) ) {
                  alt8=2;
              }
              else {
                  NoViableAltException nvae =
                      new NoViableAltException("", 8, 0, input);
  
                  throw nvae;
              }
              switch (alt8) {
                  case 1 :
                      // InternalDDL.g:535:4: (otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) ) )
                      {
                      // InternalDDL.g:535:4: (otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) ) )
                      // InternalDDL.g:536:5: otherlv_2= 'TABLE' ( (lv_tabname_3_0= ruleTabname ) )
                      {
                      otherlv_2=(Token)match(input,12,FOLLOW_5); 
  
                      					newLeafNode(otherlv_2, grammarAccess.getCommentAccess().getTABLEKeyword_2_0_0());
                      				
                      // InternalDDL.g:540:5: ( (lv_tabname_3_0= ruleTabname ) )
                      // InternalDDL.g:541:6: (lv_tabname_3_0= ruleTabname )
                      {
                      // InternalDDL.g:541:6: (lv_tabname_3_0= ruleTabname )
                      // InternalDDL.g:542:7: lv_tabname_3_0= ruleTabname
                      {
  
                      							newCompositeNode(grammarAccess.getCommentAccess().getTabnameTabnameParserRuleCall_2_0_1_0());
                      						
                      pushFollow(FOLLOW_18);
                      lv_tabname_3_0=ruleTabname();
  
                      state._fsp--;
  
  
                      							if (current==null) {
                      								current = createModelElementForParent(grammarAccess.getCommentRule());
                      							}
                      							set(
                      								current,
                      								"tabname",
                      								lv_tabname_3_0,
                      								"org.xtext.example.plsql.DDL.Tabname");
                      							afterParserOrEnumRuleCall();
                      						
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalDDL.g:561:4: (otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) ) )
                      {
                      // InternalDDL.g:561:4: (otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) ) )
                      // InternalDDL.g:562:5: otherlv_4= 'COLUMN' ( (lv_columnId_5_0= RULE_ID ) ) otherlv_6= '.' ( (lv_colname_7_0= ruleColname ) )
                      {
                      otherlv_4=(Token)match(input,23,FOLLOW_5); 
  
                      					newLeafNode(otherlv_4, grammarAccess.getCommentAccess().getCOLUMNKeyword_2_1_0());
                      				
                      // InternalDDL.g:566:5: ( (lv_columnId_5_0= RULE_ID ) )
                      // InternalDDL.g:567:6: (lv_columnId_5_0= RULE_ID )
                      {
                      // InternalDDL.g:567:6: (lv_columnId_5_0= RULE_ID )
                      // InternalDDL.g:568:7: lv_columnId_5_0= RULE_ID
                      {
                      lv_columnId_5_0=(Token)match(input,RULE_ID,FOLLOW_19); 
  
                      							newLeafNode(lv_columnId_5_0, grammarAccess.getCommentAccess().getColumnIdIDTerminalRuleCall_2_1_1_0());
                      						
  
                      							if (current==null) {
                      								current = createModelElement(grammarAccess.getCommentRule());
                      							}
                      							setWithLastConsumed(
                      								current,
                      								"columnId",
                      								lv_columnId_5_0,
                      								"org.eclipse.xtext.common.Terminals.ID");
                      						
  
                      }
  
  
                      }
  
                      otherlv_6=(Token)match(input,24,FOLLOW_5); 
  
                      					newLeafNode(otherlv_6, grammarAccess.getCommentAccess().getFullStopKeyword_2_1_2());
                      				
                      // InternalDDL.g:588:5: ( (lv_colname_7_0= ruleColname ) )
                      // InternalDDL.g:589:6: (lv_colname_7_0= ruleColname )
                      {
                      // InternalDDL.g:589:6: (lv_colname_7_0= ruleColname )
                      // InternalDDL.g:590:7: lv_colname_7_0= ruleColname
                      {
  
                      							newCompositeNode(grammarAccess.getCommentAccess().getColnameColnameParserRuleCall_2_1_3_0());
                      						
                      pushFollow(FOLLOW_18);
                      lv_colname_7_0=ruleColname();
  
                      state._fsp--;
  
  
                      							if (current==null) {
                      								current = createModelElementForParent(grammarAccess.getCommentRule());
                      							}
                      							set(
                      								current,
                      								"colname",
                      								lv_colname_7_0,
                      								"org.xtext.example.plsql.DDL.Colname");
                      							afterParserOrEnumRuleCall();
                      						
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_8=(Token)match(input,25,FOLLOW_20); 
  
              			newLeafNode(otherlv_8, grammarAccess.getCommentAccess().getISKeyword_3());
              		
              // InternalDDL.g:613:3: ( (lv_string_9_0= RULE_STRING ) )
              // InternalDDL.g:614:4: (lv_string_9_0= RULE_STRING )
              {
              // InternalDDL.g:614:4: (lv_string_9_0= RULE_STRING )
              // InternalDDL.g:615:5: lv_string_9_0= RULE_STRING
              {
              lv_string_9_0=(Token)match(input,RULE_STRING,FOLLOW_9); 
  
              					newLeafNode(lv_string_9_0, grammarAccess.getCommentAccess().getStringSTRINGTerminalRuleCall_4_0());
              				
  
              					if (current==null) {
              						current = createModelElement(grammarAccess.getCommentRule());
              					}
              					setWithLastConsumed(
              						current,
              						"string",
              						lv_string_9_0,
              						"org.eclipse.xtext.common.Terminals.STRING");
              				
  
              }
  
  
              }
  
              otherlv_10=(Token)match(input,16,FOLLOW_2); 
  
              			newLeafNode(otherlv_10, grammarAccess.getCommentAccess().getSemicolonKeyword_5());
              		
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleComment"
  
  
      // $ANTLR start "entryRuleCreate_sequence"
      // InternalDDL.g:639:1: entryRuleCreate_sequence returns [EObject current=null] : iv_ruleCreate_sequence= ruleCreate_sequence EOF ;
      public final EObject entryRuleCreate_sequence() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleCreate_sequence = null;
  
  
          try {
              // InternalDDL.g:639:56: (iv_ruleCreate_sequence= ruleCreate_sequence EOF )
              // InternalDDL.g:640:2: iv_ruleCreate_sequence= ruleCreate_sequence EOF
              {
               newCompositeNode(grammarAccess.getCreate_sequenceRule()); 
              pushFollow(FOLLOW_1);
              iv_ruleCreate_sequence=ruleCreate_sequence();
  
              state._fsp--;
  
               current =iv_ruleCreate_sequence; 
              match(input,EOF,FOLLOW_2); 
  
              }
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleCreate_sequence"
  
  
      // $ANTLR start "ruleCreate_sequence"
      // InternalDDL.g:646:1: ruleCreate_sequence returns [EObject current=null] : (otherlv_0= 'CREATE' otherlv_1= 'SEQUENCE' ( (lv_id_2_0= RULE_ID ) ) ( (lv_sequence_options_3_0= ruleSequence_options ) )* otherlv_4= ';' ) ;
      public final EObject ruleCreate_sequence() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token lv_id_2_0=null;
          Token otherlv_4=null;
          EObject lv_sequence_options_3_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalDDL.g:652:2: ( (otherlv_0= 'CREATE' otherlv_1= 'SEQUENCE' ( (lv_id_2_0= RULE_ID ) ) ( (lv_sequence_options_3_0= ruleSequence_options ) )* otherlv_4= ';' ) )
              // InternalDDL.g:653:2: (otherlv_0= 'CREATE' otherlv_1= 'SEQUENCE' ( (lv_id_2_0= RULE_ID ) ) ( (lv_sequence_options_3_0= ruleSequence_options ) )* otherlv_4= ';' )
              {
              // InternalDDL.g:653:2: (otherlv_0= 'CREATE' otherlv_1= 'SEQUENCE' ( (lv_id_2_0= RULE_ID ) ) ( (lv_sequence_options_3_0= ruleSequence_options ) )* otherlv_4= ';' )
              // InternalDDL.g:654:3: otherlv_0= 'CREATE' otherlv_1= 'SEQUENCE' ( (lv_id_2_0= RULE_ID ) ) ( (lv_sequence_options_3_0= ruleSequence_options ) )* otherlv_4= ';'
              {
              otherlv_0=(Token)match(input,11,FOLLOW_21); 
  
              			newLeafNode(otherlv_0, grammarAccess.getCreate_sequenceAccess().getCREATEKeyword_0());
              		
              otherlv_1=(Token)match(input,26,FOLLOW_5); 
  
              			newLeafNode(otherlv_1, grammarAccess.getCreate_sequenceAccess().getSEQUENCEKeyword_1());
              		
              // InternalDDL.g:662:3: ( (lv_id_2_0= RULE_ID ) )
              // InternalDDL.g:663:4: (lv_id_2_0= RULE_ID )
              {
              // InternalDDL.g:663:4: (lv_id_2_0= RULE_ID )
              // InternalDDL.g:664:5: lv_id_2_0= RULE_ID
              {
              lv_id_2_0=(Token)match(input,RULE_ID,FOLLOW_22); 
  
              					newLeafNode(lv_id_2_0, grammarAccess.getCreate_sequenceAccess().getIdIDTerminalRuleCall_2_0());
              				
  
              					if (current==null) {
              						current = createModelElement(grammarAccess.getCreate_sequenceRule());
              					}
              					setWithLastConsumed(
              						current,
              						"id",
              						lv_id_2_0,
              						"org.eclipse.xtext.common.Terminals.ID");
              				
  
              }
  
  
              }
  
              // InternalDDL.g:680:3: ( (lv_sequence_options_3_0= ruleSequence_options ) )*
              loop9:
              do {
                  int alt9=2;
                  int LA9_0 = input.LA(1);
  
                  if ( (LA9_0==27||LA9_0==29||(LA9_0>=31 && LA9_0<=40)) ) {
                      alt9=1;
                  }
  
  
                  switch (alt9) {
              	case 1 :
              	    // InternalDDL.g:681:4: (lv_sequence_options_3_0= ruleSequence_options )
              	    {
              	    // InternalDDL.g:681:4: (lv_sequence_options_3_0= ruleSequence_options )
              	    // InternalDDL.g:682:5: lv_sequence_options_3_0= ruleSequence_options
              	    {
  
              	    					newCompositeNode(grammarAccess.getCreate_sequenceAccess().getSequence_optionsSequence_optionsParserRuleCall_3_0());
              	    				
              	    pushFollow(FOLLOW_22);
              	    lv_sequence_options_3_0=ruleSequence_options();
  
              	    state._fsp--;
  
  
              	    					if (current==null) {
              	    						current = createModelElementForParent(grammarAccess.getCreate_sequenceRule());
              	    					}
              	    					add(
              	    						current,
              	    						"sequence_options",
              	    						lv_sequence_options_3_0,
              	    						"org.xtext.example.plsql.DDL.Sequence_options");
              	    					afterParserOrEnumRuleCall();
              	    				
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop9;
                  }
              } while (true);
  
              otherlv_4=(Token)match(input,16,FOLLOW_2); 
  
              			newLeafNode(otherlv_4, grammarAccess.getCreate_sequenceAccess().getSemicolonKeyword_4());
              		
  
              }
  
  
              }
  
  
              	leaveRule();
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleCreate_sequence"
  
  
      // $ANTLR start "entryRuleSequence_options"
      // InternalDDL.g:707:1: entryRuleSequence_options returns [EObject current=null] : iv_ruleSequence_options= ruleSequence_options EOF ;
      public final EObject entryRuleSequence_options() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleSequence_options = null;
  
  
          try {
              // InternalDDL.g:707:57: (iv_ruleSequence_options= ruleSequence_options EOF )
              // InternalDDL.g:708:2: iv_ruleSequence_options= ruleSequence_options EOF
              {
               newCompositeNode(grammarAccess.getSequence_optionsRule()); 
              pushFollow(FOLLOW_1);
              iv_ruleSequence_options=ruleSequence_options();
  
              state._fsp--;
  
               current =iv_ruleSequence_options; 
              match(input,EOF,FOLLOW_2); 
  
              }
  
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleSequence_options"
  
  
      // $ANTLR start "ruleSequence_options"
      // InternalDDL.g:714:1: ruleSequence_options returns [EObject current=null] : ( ( ( (lv_increment_0_0= 'INCREMENT' ) ) otherlv_1= 'BY' this_INT_2= RULE_INT ) | ( ( (lv_start_3_0= 'START' ) ) otherlv_4= 'WITH' this_INT_5= RULE_INT ) | ( ( (lv_maxvalue_6_0= 'MAXVALUE' ) ) this_INT_7= RULE_INT ) | ( (lv_nomaxvalue_8_0= 'NOMAXVALUE' ) ) | ( ( (lv_minvalue_9_0= 'MINVALUE' ) ) this_INT_10= RULE_INT ) | ( (lv_nominvalue_11_0= 'NOMINVALUE' ) ) | ( (lv_cycle_12_0= 'CYCLE' ) ) | ( (lv_nocycle_13_0= 'NOCYCLE' ) ) | ( ( (lv_cache_14_0= 'CACHE' ) ) this_INT_15= RULE_INT ) | ( (lv_nocache_16_0= 'NOCACHE' ) ) | ( (lv_order_17_0= 'ORDER' ) ) | ( (lv_noorder_18_0= 'NOORDER' ) ) ) ;
      public final EObject ruleSequence_options() throws RecognitionException {
          EObject current = null;
  
          Token lv_increment_0_0=null;
          Token otherlv_1=null;
          Token this_INT_2=null;
          Token lv_start_3_0=null;
          Token otherlv_4=null;
          Token this_INT_5=null;
          Token lv_maxvalue_6_0=null;
          Token this_INT_7=null;
          Token lv_nomaxvalue_8_0=null;
          Token lv_minvalue_9_0=null;
          Token this_INT_10=null;
          Token lv_nominvalue_11_0=null;
          Token lv_cycle_12_0=null;
          Token lv_nocycle_13_0=null;
          Token lv_cache_14_0=null;
          Token this_INT_15=null;
          Token lv_nocache_16_0=null;
          Token lv_order_17_0=null;
          Token lv_noorder_18_0=null;
  
  
          	enterRule();
  
          try {
              // InternalDDL.g:720:2: ( ( ( ( (lv_increment_0_0= 'INCREMENT' ) ) otherlv_1= 'BY' this_INT_2= RULE_INT ) | ( ( (lv_start_3_0= 'START' ) ) otherlv_4= 'WITH' this_INT_5= RULE_INT ) | ( ( (lv_maxvalue_6_0= 'MAXVALUE' ) ) this_INT_7= RULE_INT ) | ( (lv_nomaxvalue_8_0= 'NOMAXVALUE' ) ) | ( ( (lv_minvalue_9_0= 'MINVALUE' ) ) this_INT_10= RULE_INT ) | ( (lv_nominvalue_11_0= 'NOMINVALUE' ) ) | ( (lv_cycle_12_0= 'CYCLE' ) ) | ( (lv_nocycle_13_0= 'NOCYCLE' ) ) | ( ( (lv_cache_14_0= 'CACHE' ) ) this_INT_15= RULE_INT ) | ( (lv_nocache_16_0= 'NOCACHE' ) ) | ( (lv_order_17_0= 'ORDER' ) ) | ( (lv_noorder_18_0= 'NOORDER' ) ) ) )
              // InternalDDL.g:721:2: ( ( ( (lv_increment_0_0= 'INCREMENT' ) ) otherlv_1= 'BY' this_INT_2= RULE_INT ) | ( ( (lv_start_3_0= 'START' ) ) otherlv_4= 'WITH' this_INT_5= RULE_INT ) | ( ( (lv_maxvalue_6_0= 'MAXVALUE' ) ) this_INT_7= RULE_INT ) | ( (lv_nomaxvalue_8_0= 'NOMAXVALUE' ) ) | ( ( (lv_minvalue_9_0= 'MINVALUE' ) ) this_INT_10= RULE_INT ) | ( (lv_nominvalue_11_0= 'NOMINVALUE' ) ) | ( (lv_cycle_12_0= 'CYCLE' ) ) | ( (lv_nocycle_13_0= 'NOCYCLE' ) ) | ( ( (lv_cache_14_0= 'CACHE' ) ) this_INT_15= RULE_INT ) | ( (lv_nocache_16_0= 'NOCACHE' ) ) | ( (lv_order_17_0= 'ORDER' ) ) | ( (lv_noorder_18_0= 'NOORDER' ) ) )
              {
              // InternalDDL.g:721:2: ( ( ( (lv_increment_0_0= 'INCREMENT' ) ) otherlv_1= 'BY' this_INT_2= RULE_INT ) | ( ( (lv_start_3_0= 'START' ) ) otherlv_4= 'WITH' this_INT_5= RULE_INT ) | ( ( (lv_maxvalue_6_0= 'MAXVALUE' ) ) this_INT_7= RULE_INT ) | ( (lv_nomaxvalue_8_0= 'NOMAXVALUE' ) ) | ( ( (lv_minvalue_9_0= 'MINVALUE' ) ) this_INT_10= RULE_INT ) | ( (lv_nominvalue_11_0= 'NOMINVALUE' ) ) | ( (lv_cycle_12_0= 'CYCLE' ) ) | ( (lv_nocycle_13_0= 'NOCYCLE' ) ) | ( ( (lv_cache_14_0= 'CACHE' ) ) this_INT_15= RULE_INT ) | ( (lv_nocache_16_0= 'NOCACHE' ) ) | ( (lv_order_17_0= 'ORDER' ) ) | ( (lv_noorder_18_0= 'NOORDER' ) ) )
              int alt10=12;
              switch ( input.LA(1) ) {
              case 27:
                  {
                  alt10=1;
                  }
                  break;
              case 29:
                  {
                  alt10=2;
                  }
                  break;
              case 31:
                  {
                  alt10=3;
                  }
                  break;
              case 32:
                  {
                  alt10=4;
                  }
                  break;
              case 33:
                  {
                  alt10=5;
                  }
                  break;
              case 34:
                  {
                  alt10=6;
                  }
                  break;
              case 35:
                  {
                  alt10=7;
                  }
                  break;
              case 36:
                  {
                  alt10=8;
                  }
                  break;
              case 37:
                  {
                  alt10=9;
                  }
                  break;
              case 38:
                  {
                  alt10=10;
                  }
                  break;
              case 39:
                  {
                  alt10=11;
                  }
                  break;
              case 40:
                  {
                  alt10=12;
                  }
                  break;
              default:
                  NoViableAltException nvae =
                      new NoViableAltException("", 10, 0, input);
  
                  throw nvae;
              }
  
              switch (alt10) {
                  case 1 :
                      // InternalDDL.g:722:3: ( ( (lv_increment_0_0= 'INCREMENT' ) ) otherlv_1= 'BY' this_INT_2= RULE_INT )
                      {
                      // InternalDDL.g:722:3: ( ( (lv_increment_0_0= 'INCREMENT' ) ) otherlv_1= 'BY' this_INT_2= RULE_INT )
                      // InternalDDL.g:723:4: ( (lv_increment_0_0= 'INCREMENT' ) ) otherlv_1= 'BY' this_INT_2= RULE_INT
                      {
                      // InternalDDL.g:723:4: ( (lv_increment_0_0= 'INCREMENT' ) )
                      // InternalDDL.g:724:5: (lv_increment_0_0= 'INCREMENT' )
                      {
                      // InternalDDL.g:724:5: (lv_increment_0_0= 'INCREMENT' )
                      // InternalDDL.g:725:6: lv_increment_0_0= 'INCREMENT'
                      {
                      lv_increment_0_0=(Token)match(input,27,FOLLOW_23); 
  
                      						newLeafNode(lv_increment_0_0, grammarAccess.getSequence_optionsAccess().getIncrementINCREMENTKeyword_0_0_0());
                      					
  
                      						if (current==null) {
                      							current = createModelElement(grammarAccess.getSequence_optionsRule());
                      						}
                      						setWithLastConsumed(current, "increment", lv_increment_0_0, "INCREMENT");
                      					
  
                      }
  
  
                      }
  
                      otherlv_1=(Token)match(input,28,FOLLOW_12); 
  
                      				newLeafNode(otherlv_1, grammarAccess.getSequence_optionsAccess().getBYKeyword_0_1());
                      			
                      this_INT_2=(Token)match(input,RULE_INT,FOLLOW_2); 
  
                      				newLeafNode(this_INT_2, grammarAccess.getSequence_optionsAccess().getINTTerminalRuleCall_0_2());
                      			
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalDDL.g:747:3: ( ( (lv_start_3_0= 'START' ) ) otherlv_4= 'WITH' this_INT_5= RULE_INT )
                      {
                      // InternalDDL.g:747:3: ( ( (lv_start_3_0= 'START' ) ) otherlv_4= 'WITH' this_INT_5= RULE_INT )
                      // InternalDDL.g:748:4: ( (lv_start_3_0= 'START' ) ) otherlv_4= 'WITH' this_INT_5= RULE_INT
                      {
                      // InternalDDL.g:748:4: ( (lv_start_3_0= 'START' ) )
                      // InternalDDL.g:749:5: (lv_start_3_0= 'START' )
                      {
                      // InternalDDL.g:749:5: (lv_start_3_0= 'START' )
                      // InternalDDL.g:750:6: lv_start_3_0= 'START'
                      {
                      lv_start_3_0=(Token)match(input,29,FOLLOW_24); 
  
                      						newLeafNode(lv_start_3_0, grammarAccess.getSequence_optionsAccess().getStartSTARTKeyword_1_0_0());
                      					
  
  