public final ConstantContext constant() throws RecognitionException {
		ConstantContext _localctx = new ConstantContext(_ctx, getState());
		enterRule(_localctx, 150, RULE_constant);
		try {
			setState(1564);
			switch (_input.LA(1)) {
			case T__29:
				_localctx = new TrueConstantContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1552); match(T__29);
				}
				break;
			case T__44:
				_localctx = new FalseConstantContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1553); match(T__44);
				}
				break;
			case T__47:
				_localctx = new NullConstantContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1554); match(T__47);
				}
				break;
			case ID:
				_localctx = new IdConstantContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1555); match(ID);
				}
				break;
			case CHAR:
				_localctx = new CharConstantContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1556); match(CHAR);
				}
				break;
			case HEX:
				_localctx = new HexConstantContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(1557); match(HEX);
				}
				break;
			case OCT:
				_localctx = new OctConstantContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(1558); match(OCT);
				}
				break;
			case DEC:
				_localctx = new DecConstantContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(1559); match(DEC);
				}
				break;
			case BIN:
				_localctx = new BinConstantContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(1560); match(BIN);
				}
				break;
			case FLOAT:
				_localctx = new FloatConstantContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(1561); match(FLOAT);
				}
				break;
			case STRING:
				_localctx = new StringConstantContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(1562); match(STRING);
				}
				break;
			case MSTRING:
				_localctx = new MultilineStringConstantContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(1563); match(MSTRING);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}