_t = __t2440;
_t = __t2446;
	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;		{		_loop2442:		do {			if (_t==null) _t=ASTNULL;			switch ( _t.getType()) {			case LEFT:			{				AST __t2435 = _t;				AST tmp1749_AST_in = (AST)_t;				match(_t,LEFT);				_t = _t.getFirstChild();				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case OUTER:				{					AST tmp1750_AST_in = (AST)_t;					match(_t,OUTER);					_t = _t.getNextSibling();					break;				}				case JOIN:				{					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				AST tmp1751_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp1752_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2435;				_t = _t.getNextSibling();				break;			}			case RIGHT:			{				AST __t2437 = _t;				AST tmp1753_AST_in = (AST)_t;				match(_t,RIGHT);				_t = _t.getFirstChild();				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case OUTER:				{					AST tmp1754_AST_in = (AST)_t;					match(_t,OUTER);					_t = _t.getNextSibling();					break;				}				case JOIN:				{					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				AST tmp1755_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp1756_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2437;				_t = _t.getNextSibling();				break;			}			case INNER:			{				AST __t2439 = _t;				AST tmp1757_AST_in = (AST)_t;				match(_t,INNER);				_t = _t.getFirstChild();				AST tmp1758_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp1759_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2439;				_t = _t.getNextSibling();				break;			}			case OUTER:			{				AST __t2440 = _t;				AST tmp1760_AST_in = (AST)_t;				match(_t,OUTER);				_t = _t.getFirstChild();				AST tmp1761_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp1762_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2440;				_t = _t.getNextSibling();				break;			}			case JOIN:			{				AST __t2441 = _t;				AST tmp1763_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getFirstChild();				select_sqltableref(_t);				_t = _retTree;				AST tmp1764_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2441;				_t = _t.getNextSibling();				break;			}			default:			{				break _loop2442;			}			}		} while (true);		}		{		if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case WHERE:		{			AST __t2444 = _t;			AST tmp1765_AST_in = (AST)_t;			match(_t,WHERE);			_t = _t.getFirstChild();			sqlexpression(_t);			_t = _retTree;			_t = __t2444;			_t = _t.getNextSibling();			break;		}		case 3:		case COMMA:		{			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		}		_retTree = _t;	}