public final SS_play_expr file_silence(SS_statement stat) throws RecognitionException {
		SS_play_expr expr = null;


		try {
			// SayScript.g:316:5: ( COLON | COMMA | PERIOD | SEMICOLON )
			int alt20=4;
			switch ( input.LA(1) ) {
			case COLON:
				{
				alt20=1;
				}
				break;
			case COMMA:
				{
				alt20=2;
				}
				break;
			case PERIOD:
				{
				alt20=3;
				}
				break;
			case SEMICOLON:
				{
				alt20=4;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 20, 0, input);
				throw nvae;
			}
			switch (alt20) {
				case 1 :
					// SayScript.g:316:7: COLON
					{
					match(input,COLON,FOLLOW_COLON_in_file_silence2269); 
					expr = new SS_play_expr(); expr.type=expr.SS_EXPR_SILENCE_COLON; 
					}
					break;
				case 2 :
					// SayScript.g:317:7: COMMA
					{
					match(input,COMMA,FOLLOW_COMMA_in_file_silence2279); 
					expr = new SS_play_expr();expr.type=expr.SS_EXPR_SILENCE_COMMA; 
					}
					break;
				case 3 :
					// SayScript.g:318:7: PERIOD
					{
					match(input,PERIOD,FOLLOW_PERIOD_in_file_silence2289); 
					expr = new SS_play_expr();expr.type=expr.SS_EXPR_SILENCE_PERIOD; 
					}
					break;
				case 4 :
					// SayScript.g:319:7: SEMICOLON
					{
					match(input,SEMICOLON,FOLLOW_SEMICOLON_in_file_silence2299); 
					expr = new SS_play_expr();expr.type=expr.SS_EXPR_SILENCE_SEMICOLON; 
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return expr;
	}