Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 203c667bf3054bae663699ffcac9d515e1a48a6f)
+++ src/Parser/parser.yy	(revision 2ebcb28d39c5081a5b63a5e1289832b9401dd1e9)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jun 24 10:41:10 2018
-// Update Count     : 3587
+// Last Modified On : Fri Jun 29 10:31:42 2018
+// Update Count     : 3596
 //
 
@@ -1136,15 +1136,8 @@
 
 waitfor:
-	WAITFOR '(' identifier ')'
- 		{
-			$$ = new ExpressionNode( new NameExpr( *$3 ) );
-			delete $3;
-		}
-	| WAITFOR '(' identifier ',' argument_expression_list ')'
- 		{
-			$$ = new ExpressionNode( new NameExpr( *$3 ) );
-		  	$$->set_last( $5 );
-			delete $3;
-		}
+	WAITFOR '(' cast_expression ')'
+		{ $$ = $3; }
+	| WAITFOR '(' cast_expression ',' argument_expression_list ')'
+		{ $$ = (ExpressionNode *)$3->set_last( $5 ); }
 	;
 
@@ -1163,4 +1156,6 @@
  		{ $$ = build_waitfor_timeout( nullptr, $3, $1 ); }
 		// "else" must be conditional after timeout or timeout is never triggered (i.e., it is meaningless)
+	| when_clause_opt timeout statement WOR ELSE statement
+		{ SemanticError( yylloc, "else clause must be conditional after timeout or timeout never triggered." ); $$ = nullptr; }
 	| when_clause_opt timeout statement WOR when_clause ELSE statement
  		{ $$ = build_waitfor_timeout( $2, $3, $1, $7, $5 ); }
