public final TransformClauseContext transformClause() throws RecognitionException {
		TransformClauseContext _localctx = new TransformClauseContext(_ctx, getState());
		enterRule(_localctx, 60, RULE_transformClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(636);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
				{
				setState(617);
				match(SELECT);
				setState(618);
				((TransformClauseContext)_localctx).kind = match(TRANSFORM);
				setState(619);
				match(LEFT_PAREN);
				setState(621);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) {
				case 1:
					{
					setState(620);
					setQuantifier();
					}
					break;
				}
				setState(623);
				expressionSeq();
				setState(624);
				match(RIGHT_PAREN);
				}
				break;
			case MAP:
				{
				setState(626);
				((TransformClauseContext)_localctx).kind = match(MAP);
				setState(628);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
				case 1:
					{
					setState(627);
					setQuantifier();
					}
					break;
				}
				setState(630);
				expressionSeq();
				}
				break;
			case REDUCE:
				{
				setState(631);
				((TransformClauseContext)_localctx).kind = match(REDUCE);
				setState(633);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) {
				case 1:
					{
					setState(632);
					setQuantifier();
					}
					break;
				}
				setState(635);
				expressionSeq();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(639);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ROW) {
				{
				setState(638);
				((TransformClauseContext)_localctx).inRowFormat = rowFormat();
				}
			}

			setState(643);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RECORDWRITER) {
				{
				setState(641);
				match(RECORDWRITER);
				setState(642);
				((TransformClauseContext)_localctx).recordWriter = match(STRING);
				}
			}

			setState(645);
			match(USING);
			setState(646);
			((TransformClauseContext)_localctx).script = match(STRING);
			setState(659);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) {
			case 1:
				{
				setState(647);
				match(AS);
				setState(657);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) {
				case 1:
					{
					setState(648);
					identifierSeq();
					}
					break;
				case 2:
					{
					setState(649);
					colTypeList();
					}
					break;
				case 3:
					{
					{
					setState(650);
					match(LEFT_PAREN);
					setState(653);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,77,_ctx) ) {
					case 1:
						{
						setState(651);
						identifierSeq();
						}
						break;
					case 2:
						{
						setState(652);
						colTypeList();
						}
						break;
					}
					setState(655);
					match(RIGHT_PAREN);
					}
					}
					break;
				}
				}
				break;
			}
			setState(662);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
			case 1:
				{
				setState(661);
				((TransformClauseContext)_localctx).outRowFormat = rowFormat();
				}
				break;
			}
			setState(666);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,81,_ctx) ) {
			case 1:
				{
				setState(664);
				match(RECORDREADER);
				setState(665);
				((TransformClauseContext)_localctx).recordReader = match(STRING);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}
When true, the behavior of keywords follows ANSI SQL standard.
amoro-format-mixed/amoro-mixed-spark/v3.5/amoro-mixed-spark-3.5/src/main/gen-antlr/org/apache/amoro/spark/sql/parser/MixedFormatSqlExtendParser.java