public final void mStringLiteral() throws RecognitionException {
		try {
			int _type = StringLiteral;
			int _channel = DEFAULT_TOKEN_CHANNEL;
			// HiveLexer.g:380:5: ( ( '\\'' (~ ( '\\'' | '\\\\' ) | ( '\\\\' . ) )* '\\'' | '\\\"' (~ ( '\\\"' | '\\\\' ) | ( '\\\\' . ) )* '\\\"' )+ )
			// HiveLexer.g:381:5: ( '\\'' (~ ( '\\'' | '\\\\' ) | ( '\\\\' . ) )* '\\'' | '\\\"' (~ ( '\\\"' | '\\\\' ) | ( '\\\\' . ) )* '\\\"' )+
			{
			// HiveLexer.g:381:5: ( '\\'' (~ ( '\\'' | '\\\\' ) | ( '\\\\' . ) )* '\\'' | '\\\"' (~ ( '\\\"' | '\\\\' ) | ( '\\\\' . ) )* '\\\"' )+
			int cnt86=0;
			loop86:
			while (true) {
				int alt86=3;
				int LA86_0 = input.LA(1);
				if ( (LA86_0=='\'') ) {
					alt86=1;
				}
				else if ( (LA86_0=='\"') ) {
					alt86=2;
				}

				switch (alt86) {
				case 1 :
					// HiveLexer.g:381:7: '\\'' (~ ( '\\'' | '\\\\' ) | ( '\\\\' . ) )* '\\''
					{
					match('\''); 
					// HiveLexer.g:381:12: (~ ( '\\'' | '\\\\' ) | ( '\\\\' . ) )*
					loop84:
					while (true) {
						int alt84=3;
						int LA84_0 = input.LA(1);
						if ( ((LA84_0 >= '\u0000' && LA84_0 <= '&')||(LA84_0 >= '(' && LA84_0 <= '[')||(LA84_0 >= ']' && LA84_0 <= '\uFFFF')) ) {
							alt84=1;
						}
						else if ( (LA84_0=='\\') ) {
							alt84=2;
						}

						switch (alt84) {
						case 1 :
							// HiveLexer.g:381:14: ~ ( '\\'' | '\\\\' )
							{
							if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '&')||(input.LA(1) >= '(' && input.LA(1) <= '[')||(input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) {
								input.consume();
							}
							else {
								MismatchedSetException mse = new MismatchedSetException(null,input);
								recover(mse);
								throw mse;
							}
							}
							break;
						case 2 :
							// HiveLexer.g:381:29: ( '\\\\' . )
							{
							// HiveLexer.g:381:29: ( '\\\\' . )
							// HiveLexer.g:381:30: '\\\\' .
							{
							match('\\'); 
							matchAny(); 
							}

							}
							break;

						default :
							break loop84;
						}
					}

					match('\''); 
					}
					break;
				case 2 :
					// HiveLexer.g:382:7: '\\\"' (~ ( '\\\"' | '\\\\' ) | ( '\\\\' . ) )* '\\\"'
					{
					match('\"'); 
					// HiveLexer.g:382:12: (~ ( '\\\"' | '\\\\' ) | ( '\\\\' . ) )*
					loop85:
					while (true) {
						int alt85=3;
						int LA85_0 = input.LA(1);
						if ( ((LA85_0 >= '\u0000' && LA85_0 <= '!')||(LA85_0 >= '#' && LA85_0 <= '[')||(LA85_0 >= ']' && LA85_0 <= '\uFFFF')) ) {
							alt85=1;
						}
						else if ( (LA85_0=='\\') ) {
							alt85=2;
						}

						switch (alt85) {
						case 1 :
							// HiveLexer.g:382:14: ~ ( '\\\"' | '\\\\' )
							{
							if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '!')||(input.LA(1) >= '#' && input.LA(1) <= '[')||(input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) {
								input.consume();
							}
							else {
								MismatchedSetException mse = new MismatchedSetException(null,input);
								recover(mse);
								throw mse;
							}
							}
							break;
						case 2 :
							// HiveLexer.g:382:29: ( '\\\\' . )
							{
							// HiveLexer.g:382:29: ( '\\\\' . )
							// HiveLexer.g:382:30: '\\\\' .
							{
							match('\\'); 
							matchAny(); 
							}

							}
							break;

						default :
							break loop85;
						}
					}

					match('\"'); 
					}
					break;

				default :
					if ( cnt86 >= 1 ) break loop86;
					EarlyExitException eee = new EarlyExitException(86, input);
					throw eee;
				}
				cnt86++;
			}

			}

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