AST tmp2495_AST_in = (AST)_t;
{ if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case OUTER: { AST tmp2495_AST_in = (AST)_t; match(_t,OUTER); _t = _t.getNextSibling(); break; } case JOIN: { break; } default: { throw new NoViableAltException(_t); } } } AST tmp2496_AST_in = (AST)_t;
	public final void select_from_spec(AST _t) throws RecognitionException {				AST select_from_spec_AST_in = (_t == ASTNULL) ? null : (AST)_t;				select_sqltableref(_t);		_t = _retTree;		{		_loop2390:		do {			if (_t==null) _t=ASTNULL;			switch ( _t.getType()) {			case LEFT:			{				AST __t2383 = _t;				AST tmp2486_AST_in = (AST)_t;				match(_t,LEFT);				_t = _t.getFirstChild();				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case OUTER:				{					AST tmp2487_AST_in = (AST)_t;					match(_t,OUTER);					_t = _t.getNextSibling();					break;				}				case JOIN:				{					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				AST tmp2488_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp2489_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2383;				_t = _t.getNextSibling();				break;			}			case RIGHT:			{				AST __t2385 = _t;				AST tmp2490_AST_in = (AST)_t;				match(_t,RIGHT);				_t = _t.getFirstChild();				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case OUTER:				{					AST tmp2491_AST_in = (AST)_t;					match(_t,OUTER);					_t = _t.getNextSibling();					break;				}				case JOIN:				{					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				AST tmp2492_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp2493_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2385;				_t = _t.getNextSibling();				break;			}			case INNER:			{				AST __t2387 = _t;				AST tmp2494_AST_in = (AST)_t;				match(_t,INNER);				_t = _t.getFirstChild();				AST tmp2495_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp2496_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2387;				_t = _t.getNextSibling();				break;			}			case OUTER:			{				AST __t2388 = _t;				AST tmp2497_AST_in = (AST)_t;				match(_t,OUTER);				_t = _t.getFirstChild();				AST tmp2498_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp2499_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2388;				_t = _t.getNextSibling();				break;			}			case JOIN:			{				AST __t2389 = _t;				AST tmp2500_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getFirstChild();				select_sqltableref(_t);				_t = _retTree;				AST tmp2501_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2389;				_t = _t.getNextSibling();				break;			}			default:			{				break _loop2390;			}			}		} while (true);		}		{		if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case WHERE:		{			AST __t2392 = _t;			AST tmp2502_AST_in = (AST)_t;			match(_t,WHERE);			_t = _t.getFirstChild();			sqlexpression(_t);			_t = _retTree;			_t = __t2392;			_t = _t.getNextSibling();			break;		}		case 3:		case COMMA:		{			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		}		_retTree = _t;	}