Index: libcfa/src/stdhdr/bfdlink.h
===================================================================
--- libcfa/src/stdhdr/bfdlink.h	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ libcfa/src/stdhdr/bfdlink.h	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -10,11 +10,11 @@
 // Created On       : Tue Jul 18 07:26:04 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul 22 13:49:30 2018
-// Update Count     : 4
+// Last Modified On : Sat Feb  1 07:15:29 2020
+// Update Count     : 5
 // 
 
 // include file uses the CFA keyword "with".
 #if ! defined( with )									// nesting ?
-#define with `with`										// make keyword an identifier
+#define with ``with``									// make keyword an identifier
 #define __CFA_BFDLINK_H__
 #endif
Index: libcfa/src/stdhdr/hwloc.h
===================================================================
--- libcfa/src/stdhdr/hwloc.h	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ libcfa/src/stdhdr/hwloc.h	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -10,11 +10,11 @@
 // Created On       : Tue Jul 18 07:45:00 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul 22 13:49:58 2018
-// Update Count     : 4
+// Last Modified On : Sat Feb  1 07:15:39 2020
+// Update Count     : 5
 // 
 
 // include file uses the CFA keyword "thread".
 #if ! defined( thread )									// nesting ?
-#define thread `thread`									// make keyword an identifier
+#define thread ``thread``								// make keyword an identifier
 #define __CFA_HWLOC_H__
 #endif
Index: libcfa/src/stdhdr/krb5.h
===================================================================
--- libcfa/src/stdhdr/krb5.h	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ libcfa/src/stdhdr/krb5.h	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -10,11 +10,11 @@
 // Created On       : Tue Jul 18 07:55:44 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul 22 13:50:24 2018
-// Update Count     : 4
+// Last Modified On : Sat Feb  1 07:15:47 2020
+// Update Count     : 5
 // 
 
 // include file uses the CFA keyword "enable".
 #if ! defined( enable )									// nesting ?
-#define enable `enable`									// make keyword an identifier
+#define enable ``enable``								// make keyword an identifier
 #define __CFA_KRB5_H__
 #endif
Index: libcfa/src/stdhdr/math.h
===================================================================
--- libcfa/src/stdhdr/math.h	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ libcfa/src/stdhdr/math.h	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -10,11 +10,11 @@
 // Created On       : Mon Jul  4 23:25:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 22 18:16:07 2018
-// Update Count     : 13
+// Last Modified On : Sat Feb  1 07:15:58 2020
+// Update Count     : 14
 // 
 
 extern "C" {
 #if ! defined( exception )								// nesting ?
-#define exception `exception`							// make keyword an identifier
+#define exception ``exception``							// make keyword an identifier
 #define __CFA_MATH_H__
 #endif
Index: libcfa/src/stdhdr/sys/ucontext.h
===================================================================
--- libcfa/src/stdhdr/sys/ucontext.h	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ libcfa/src/stdhdr/sys/ucontext.h	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -10,10 +10,10 @@
 // Created On       : Thu Feb  8 23:48:16 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  8 23:50:44 2018
-// Update Count     : 4
+// Last Modified On : Sat Feb  1 07:16:05 2020
+// Update Count     : 5
 // 
 
 #if ! defined( ftype )									// nesting ?
-#define ftype `ftype`									// make keyword an identifier
+#define ftype ``ftype``									// make keyword an identifier
 #define __CFA_UCONTEXT_H__
 #endif
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ src/Parser/lex.ll	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Sun Aug  4 20:53:47 2019
- * Update Count     : 719
+ * Last Modified On : Sat Feb  1 07:16:44 2020
+ * Update Count     : 724
  */
 
@@ -330,6 +330,6 @@
 				/* identifier */
 {identifier}	{ IDENTIFIER_RETURN(); }
-"`"{identifier}"`" {									// CFA
-	yytext[yyleng - 1] = '\0'; yytext += 1;				// SKULLDUGGERY: remove backquotes (ok to shorten?)
+"``"{identifier}"``" {									// CFA
+	yytext[yyleng - 2] = '\0'; yytext += 2;				// SKULLDUGGERY: remove backquotes (ok to shorten?)
 	IDENTIFIER_RETURN();
 }
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ src/Parser/parser.yy	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jan 17 14:54:55 2020
-// Update Count     : 4426
+// Last Modified On : Sat Feb  1 10:04:40 2020
+// Update Count     : 4440
 //
 
@@ -579,14 +579,4 @@
 	| '(' compound_statement ')'						// GCC, lambda expression
 		{ $$ = new ExpressionNode( new StmtExpr( dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >($2) ) ) ); }
-	| constant '`' IDENTIFIER							// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
-	| string_literal '`' IDENTIFIER						// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( $1 ) ) ); }
-	| IDENTIFIER '`' IDENTIFIER							// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( build_varref( $1 ) ) ) ); }
-	| tuple '`' IDENTIFIER								// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
-	| '(' comma_expression ')' '`' IDENTIFIER			// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $5 ) ), $2 ) ); }
 	| type_name '.' identifier							// CFA, nested type
 		{ SemanticError( yylloc, "Qualified name is currently unimplemented." ); $$ = nullptr; }
@@ -642,4 +632,10 @@
 	| postfix_expression '(' argument_expression_list ')'
 		{ $$ = new ExpressionNode( build_func( $1, $3 ) ); }
+	| postfix_expression '`' identifier					// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
+	| constant '`' identifier							// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
+	| string_literal '`' identifier						// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( $1 ) ) ); }
 	| postfix_expression '.' identifier
 		{ $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); }
@@ -666,5 +662,5 @@
 	| '(' type_no_function ')' '@' '{' initializer_list_opt comma_opt '}' // CFA, explicit C compound-literal
 		{ $$ = new ExpressionNode( build_compoundLiteral( $2, (new InitializerNode( $6, true ))->set_maybeConstructed( false ) ) ); }
-	| '^' primary_expression '{' argument_expression_list '}' // CFA
+	| '^' primary_expression '{' argument_expression_list '}' // CFA, destructor call
 		{
 			Token fn;
Index: tests/expression.cfa
===================================================================
--- tests/expression.cfa	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ tests/expression.cfa	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -1,5 +1,15 @@
+struct S { int i; };
+void ?{}( S & s, int i ) {}
+int ?`mary( int );
+int ?`mary( S );
+[int] ?`mary( [int, int] );
+int jack( int );
+
 int main() {
-    struct s { int i; } x, *p = &x;
-    int i = 3;
+    int a[3] = { 0, 0, 0 };
+    S s = { 3 }, * ps = &s;
+    [int] t;
+    * [int] pt = &t;
+    int i = 3, j = 4;
 
     // operators
@@ -9,43 +19,65 @@
     +i;
     -i;
-    *p;
-    ++p;
-    --p;
-    p++;
-    p--;
+    *ps;
+    ++ps;
+    --ps;
+    ps++;
+    ps--;
 
-    i+i;
-    i-i;
-    i*i;
+    i+j;
+    i-j;
+    i*j;
 
-    i/i;
-    i%i;
-    i^i;
-    i&i;
-    i|i;
-    i<i;
-    i>i;
-    i=i;
+    i/j;
+    i%j;
+    i^j;
+    i&j;
+    i|j;
+    i<j;
+    i>j;
+    i=j;
 
-    i==i;
-    i!=i;
-    i<<i;
-    i>>i;
-    i<=i;
-    i>=i;
-    i&&i;
-    i||i;
-    p->i;
-    i*=i;
-    i/=i;
-    i%=i;
-    i+=i;
-    i-=i;
-    i&=i;
-    i|=i;
-    i^=i;
-    i<<=i;
-    i>>=i;
+    i==j;
+    i!=j;
+    i<<j;
+    i>>j;
+    i<=j;
+    i>=j;
+    i&&j;
+    i||j;
+    ps->i;
 
-    i?i:i;
+    i*=j;
+    i/=j;
+    i%=j;
+    i+=j;
+    i-=j;
+    i&=j;
+    i|=j;
+    i^=j;
+    i<<=j;
+    i>>=j;
+
+    i?i:j;
+
+    // postfix function call
+
+    (3 + 4)`mary;
+    ({3 + 4;})`mary;
+    [3, 4]`mary;
+    3`mary;
+    a[0]`mary;
+    a[0]`mary`mary;
+    s{0}`mary;
+    jack(3)`mary;
+    s.i`mary;
+    t.0`mary;
+    s.[i]`mary;
+    ps->i`mary;
+    pt->0`mary;
+    ps->[i]`mary;
+    i++`mary;
+    i--`mary;
+    (S){2}`mary;
+    (S)@{2}`mary;
 } // main
Index: tests/quotedKeyword.cfa
===================================================================
--- tests/quotedKeyword.cfa	(revision c334ecd91e8daf7753eef5c19fbe23d534e7606e)
+++ tests/quotedKeyword.cfa	(revision 948fdef8a9f1bc71e1c44ed123ceb3ada3cd8755)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Dec  4 21:45:53 2018
-// Update Count     : 23
+// Last Modified On : Sat Feb  1 00:02:22 2020
+// Update Count     : 24
 //
 
@@ -17,29 +17,29 @@
 
 struct {
-	int `otype`;
-	int `struct`;
+	int ``otype``;
+	int ``struct``;
 } st = { 10, 10 };
 
-typedef int `forall`;
-`forall` xxx = 10;
+typedef int ``forall``;
+``forall`` xxx = 10;
 
-int `_Alignas`, `_Alignof`, `__alignof`, `__alignof__`, `asm`, `__asm`, `__asm__`, `_At`, `_Atomic`, `__attribute`,
-	`__attribute__`, `auto`, `_Bool`, `break`, `case`, `catch`, `catchResume`, `char`, `choose`, `_Complex`, `__complex`,
-	`__complex__`, `const`, `__const`, `__const__`, `continue`, `default`, `disable`, `do`, `double`, `dtype`, `else`,
-	`enable`, `enum`, `__extension__`, `extern`, `fallthru`, `finally`, `float`, `__float128`, `for`, `forall`, `fortran`,
-	`ftype`, `_Generic`, `goto`, `if`, `_Imaginary`, `__imag`, `__imag__`, `inline`, `__inline`, `__inline__`, `int`,
-	`__int128`, `__label__`, `long`, `lvalue`, `_Noreturn`, `__builtin_offsetof`, `otype`, `register`, `restrict`,
-	`__restrict`, `__restrict__`, `return`, `short`, `signed`, `__signed`, `__signed__`, `sizeof`, `static`,
-	`_Static_assert`, `struct`, `switch`, `_Thread_local`, `throw`, `throwResume`, `trait`, `try`, `typedef`,
-	`typeof`, `__typeof`, `__typeof__`, `union`, `unsigned`, `__builtin_va_list`, `void`, `volatile`, `__volatile`,
-	`__volatile__`, `while`;
+int ``_Alignas``, ``_Alignof``, ``__alignof``, ``__alignof__``, ``asm``, ``__asm``, ``__asm__``, ``_At``, ``_Atomic``, ``__attribute``,
+	``__attribute__``, ``auto``, ``_Bool``, ``break``, ``case``, ``catch``, ``catchResume``, ``char``, ``choose``, ``_Complex``, ``__complex``,
+	``__complex__``, ``const``, ``__const``, ``__const__``, ``continue``, ``default``, ``disable``, ``do``, ``double``, ``dtype``, ``else``,
+	``enable``, ``enum``, ``__extension__``, ``extern``, ``fallthru``, ``finally``, ``float``, ``__float128``, ``for``, ``forall``, ``fortran``,
+	``ftype``, ``_Generic``, ``goto``, ``if``, ``_Imaginary``, ``__imag``, ``__imag__``, ``inline``, ``__inline``, ``__inline__``, ``int``,
+	``__int128``, ``__label__``, ``long``, ``lvalue``, ``_Noreturn``, ``__builtin_offsetof``, ``otype``, ``register``, ``restrict``,
+	``__restrict``, ``__restrict__``, ``return``, ``short``, ``signed``, ``__signed``, ``__signed__``, ``sizeof``, ``static``,
+	``_Static_assert``, ``struct``, ``switch``, ``_Thread_local``, ``throw``, ``throwResume``, ``trait``, ``try``, ``typedef``,
+	``typeof``, ``__typeof``, ``__typeof__``, ``union``, ``unsigned``, ``__builtin_va_list``, ``void``, ``volatile``, ``__volatile``,
+	``__volatile__``, ``while``;
 
 int main() {
-	int `if` = 0;
-	`catch` = 1;
-	st.`otype` = 2;
-	st.`struct` = 3;
-	`throw` = 4;
-	sout | `catch` + st.`otype` + st.`struct` + `throw`;
+	int ``if`` = 0;
+	``catch`` = 1;
+	st.``otype`` = 2;
+	st.``struct`` = 3;
+	``throw`` = 4;
+	sout | ``catch`` + st.``otype`` + st.``struct`` + ``throw``;
 }
 
