AST tmp1777_AST_in = (AST)_t;
AST tmp1775_AST_in = (AST)_t; match(_t,OUTER); _t = _t.getFirstChild(); AST tmp1776_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;		{		_loop2448:		do {			if (_t==null) _t=ASTNULL;			switch ( _t.getType()) {			case LEFT:			{				AST __t2441 = _t;				AST tmp1763_AST_in = (AST)_t;				match(_t,LEFT);				_t = _t.getFirstChild();				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case OUTER:				{					AST tmp1764_AST_in = (AST)_t;					match(_t,OUTER);					_t = _t.getNextSibling();					break;				}				case JOIN:				{					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				AST tmp1765_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp1766_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2441;				_t = _t.getNextSibling();				break;			}			case RIGHT:			{				AST __t2443 = _t;				AST tmp1767_AST_in = (AST)_t;				match(_t,RIGHT);				_t = _t.getFirstChild();				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case OUTER:				{					AST tmp1768_AST_in = (AST)_t;					match(_t,OUTER);					_t = _t.getNextSibling();					break;				}				case JOIN:				{					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				AST tmp1769_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp1770_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2443;				_t = _t.getNextSibling();				break;			}			case INNER:			{				AST __t2445 = _t;				AST tmp1771_AST_in = (AST)_t;				match(_t,INNER);				_t = _t.getFirstChild();				AST tmp1772_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp1773_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2445;				_t = _t.getNextSibling();				break;			}			case OUTER:			{				AST __t2446 = _t;				AST tmp1774_AST_in = (AST)_t;				match(_t,OUTER);				_t = _t.getFirstChild();				AST tmp1775_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getNextSibling();				select_sqltableref(_t);				_t = _retTree;				AST tmp1776_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2446;				_t = _t.getNextSibling();				break;			}			case JOIN:			{				AST __t2447 = _t;				AST tmp1777_AST_in = (AST)_t;				match(_t,JOIN);				_t = _t.getFirstChild();				select_sqltableref(_t);				_t = _retTree;				AST tmp1778_AST_in = (AST)_t;				match(_t,ON);				_t = _t.getNextSibling();				sqlexpression(_t);				_t = _retTree;				_t = __t2447;				_t = _t.getNextSibling();				break;			}			default:			{				break _loop2448;			}			}		} while (true);		}		{		if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case WHERE:		{			AST __t2450 = _t;			AST tmp1779_AST_in = (AST)_t;			match(_t,WHERE);			_t = _t.getFirstChild();			sqlexpression(_t);			_t = _retTree;			_t = __t2450;			_t = _t.getNextSibling();			break;		}		case 3:		case COMMA:		{			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		}		_retTree = _t;	}