Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision b5bb4442cf6a35d1075c59910d610592e5d09ca8)
+++ benchmark/Makefile.am	(revision fd2b607860f0e973a49748ed5df2a95399f12edc)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 09:08:15 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Sat Jan 25 09:20:44 2020
-## Update Count     : 255
+## Last Modified On : Tue Mar 10 11:41:18 2020
+## Update Count     : 258
 ###############################################################################
 
@@ -108,4 +108,5 @@
 creation_cfa_coroutine_DURATION = 100000000
 creation_cfa_coroutine_eager_DURATION = 10000000
+creation_cfa_generator_DURATION = 1000000000
 creation_upp_coroutine_DURATION = ${creation_cfa_coroutine_eager_DURATION}
 creation_cfa_thread_DURATION = 10000000
Index: benchmark/Makefile.in
===================================================================
--- benchmark/Makefile.in	(revision b5bb4442cf6a35d1075c59910d610592e5d09ca8)
+++ benchmark/Makefile.in	(revision fd2b607860f0e973a49748ed5df2a95399f12edc)
@@ -447,4 +447,5 @@
 creation_cfa_coroutine_DURATION = 100000000
 creation_cfa_coroutine_eager_DURATION = 10000000
+creation_cfa_generator_DURATION = 1000000000
 creation_upp_coroutine_DURATION = ${creation_cfa_coroutine_eager_DURATION}
 creation_cfa_thread_DURATION = 10000000
Index: benchmark/creation/cfa_gen.cfa
===================================================================
--- benchmark/creation/cfa_gen.cfa	(revision b5bb4442cf6a35d1075c59910d610592e5d09ca8)
+++ benchmark/creation/cfa_gen.cfa	(revision fd2b607860f0e973a49748ed5df2a95399f12edc)
@@ -1,9 +1,9 @@
-#include "bench.h"
+#include "../bench.h"
 
-struct C {
+generator G {
 	volatile int restart; // ensure compiler does not optimize away all the code
 };
-void ?{}( C & c ) { c.restart = 0; }
-void main( C & ) {}
+void ?{}( G & g ) { g.restart = 0; }
+void main( G & ) {}
 
 int main( int argc, char * argv[] ) {
@@ -11,5 +11,5 @@
 	BENCH(
 		for ( times ) {
-			 C c;
+			 G g;
 		},
 		result
Index: benchmark/ctxswitch/cfa_cor.cfa
===================================================================
--- benchmark/ctxswitch/cfa_cor.cfa	(revision b5bb4442cf6a35d1075c59910d610592e5d09ca8)
+++ benchmark/ctxswitch/cfa_cor.cfa	(revision fd2b607860f0e973a49748ed5df2a95399f12edc)
@@ -2,13 +2,14 @@
 #include <thread.hfa>
 
-#include "bench.h"
+#include "../bench.h"
 
-coroutine C {} c;
+coroutine C {};
 void main( __attribute__((unused)) C & ) {
-	while () {
+	for () {
 		suspend;
 	}
 }
 int main( int argc, char * argv[] ) {
+	C c;
 	BENCH_START()
 	BENCH(
Index: benchmark/ctxswitch/cfa_gen.cfa
===================================================================
--- benchmark/ctxswitch/cfa_gen.cfa	(revision b5bb4442cf6a35d1075c59910d610592e5d09ca8)
+++ benchmark/ctxswitch/cfa_gen.cfa	(revision fd2b607860f0e973a49748ed5df2a95399f12edc)
@@ -1,23 +1,17 @@
 #include "../bench.h"
 
-typedef struct {
-	void * next;
-} C;
-
-void comain( C * c ) {
-	if ( __builtin_expect(c->next != 0, 1) ) goto *(c->next);
-	c->next = &&s1;
+generator G {};
+void main( G & ) {
 	for () {
-		return;
-	  s1: ;
+		suspend;
 	}
 }
 
 int main( int argc, char * argv[] ) {
+	G g;
 	BENCH_START()
-	C c = { 0 };
 	BENCH(
 		for ( times ) {
-			comain( &c );
+			resume( g );
 		},
 		result
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision b5bb4442cf6a35d1075c59910d610592e5d09ca8)
+++ src/Parser/parser.yy	(revision fd2b607860f0e973a49748ed5df2a95399f12edc)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 26 14:27:39 2020
-// Update Count     : 4472
+// Last Modified On : Fri Mar  6 17:26:45 2020
+// Update Count     : 4474
 //
 
@@ -919,5 +919,11 @@
 	conditional_expression
 	| unary_expression assignment_operator assignment_expression
-		{ $$ = new ExpressionNode( build_binary_val( $2, $1, $3 ) ); }
+		{
+			if ( $2 == OperKinds::AtAssn ) {
+				SemanticError( yylloc, "C @= assignment is currently unimplemented." ); $$ = nullptr;
+			} else {
+				$$ = new ExpressionNode( build_binary_val( $2, $1, $3 ) );
+			} // if
+		}
 	| unary_expression '=' '{' initializer_list_opt comma_opt '}'
 		{ SemanticError( yylloc, "Initializer assignment is currently unimplemented." ); $$ = nullptr; }
