public final void mCharSetLiteral() throws RecognitionException {
		try {
			int _type = CharSetLiteral;
			int _channel = DEFAULT_TOKEN_CHANNEL;
			// HiveLexer.g:387:5: ( StringLiteral | '0' 'X' ( HexDigit | Digit )+ )
			int alt88=2;
			int LA88_0 = input.LA(1);
			if ( (LA88_0=='\"'||LA88_0=='\'') ) {
				alt88=1;
			}
			else if ( (LA88_0=='0') ) {
				alt88=2;
			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 88, 0, input);
				throw nvae;
			}

			switch (alt88) {
				case 1 :
					// HiveLexer.g:388:5: StringLiteral
					{
					mStringLiteral(); 

					}
					break;
				case 2 :
					// HiveLexer.g:389:7: '0' 'X' ( HexDigit | Digit )+
					{
					match('0'); 
					match('X'); 
					// HiveLexer.g:389:15: ( HexDigit | Digit )+
					int cnt87=0;
					loop87:
					while (true) {
						int alt87=2;
						int LA87_0 = input.LA(1);
						if ( ((LA87_0 >= '0' && LA87_0 <= '9')||(LA87_0 >= 'A' && LA87_0 <= 'F')||(LA87_0 >= 'a' && LA87_0 <= 'f')) ) {
							alt87=1;
						}

						switch (alt87) {
						case 1 :
							// HiveLexer.g:
							{
							if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'F')||(input.LA(1) >= 'a' && input.LA(1) <= 'f') ) {
								input.consume();
							}
							else {
								MismatchedSetException mse = new MismatchedSetException(null,input);
								recover(mse);
								throw mse;
							}
							}
							break;

						default :
							if ( cnt87 >= 1 ) break loop87;
							EarlyExitException eee = new EarlyExitException(87, input);
							throw eee;
						}
						cnt87++;
					}

					}
					break;

			}
			state.type = _type;
			state.channel = _channel;
		}
		finally {
			// do for sure before leaving
		}
	}