Index: src/Parser/ParserTypes.h
===================================================================
--- src/Parser/ParserTypes.h	(revision 3e274ab398b76521d38b9bbfb1ffa9fba7f35a79)
+++ src/Parser/ParserTypes.h	(revision b7d6a36126af369a09bd3958b2fe17c537999f77)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep 22 08:58:10 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:33:28 2017
-// Update Count     : 350
+// Last Modified On : Sat Feb 15 11:04:40 2020
+// Update Count     : 351
 //
 
@@ -27,13 +27,13 @@
 // current location in the input
 extern int yylineno;
-extern char *yyfilename;
+extern char * yyfilename;
 
 struct Location {
-    char *file;
+    char * file;
     int line;
 }; // Location
 
 struct Token {
-    std::string *str;									// must be pointer as used in union
+    std::string * str;									// must be pointer as used in union
     Location loc;
 
Index: src/Parser/TypedefTable.cc
===================================================================
--- src/Parser/TypedefTable.cc	(revision 3e274ab398b76521d38b9bbfb1ffa9fba7f35a79)
+++ src/Parser/TypedefTable.cc	(revision b7d6a36126af369a09bd3958b2fe17c537999f77)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:20:13 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul 25 15:32:35 2018
-// Update Count     : 258
+// Last Modified On : Sat Feb 15 08:06:36 2020
+// Update Count     : 259
 //
 
@@ -47,9 +47,9 @@
 } // TypedefTable::~TypedefTable
 
-bool TypedefTable::exists( const string & identifier ) {
+bool TypedefTable::exists( const string & identifier ) const {
 	return kindTable.find( identifier ) != kindTable.end();
 } // TypedefTable::exists
 
-bool TypedefTable::existsCurr( const string & identifier ) {
+bool TypedefTable::existsCurr( const string & identifier ) const {
 	return kindTable.findAt( kindTable.currentScope() - 1, identifier ) != kindTable.end();
 } // TypedefTable::exists
Index: src/Parser/TypedefTable.h
===================================================================
--- src/Parser/TypedefTable.h	(revision 3e274ab398b76521d38b9bbfb1ffa9fba7f35a79)
+++ src/Parser/TypedefTable.h	(revision b7d6a36126af369a09bd3958b2fe17c537999f77)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:24:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul 25 15:33:55 2018
-// Update Count     : 114
+// Last Modified On : Sat Feb 15 08:06:37 2020
+// Update Count     : 117
 //
 
@@ -30,6 +30,6 @@
 	~TypedefTable();
 
-	bool exists( const std::string & identifier );
-	bool existsCurr( const std::string & identifier );
+	bool exists( const std::string & identifier ) const;
+	bool existsCurr( const std::string & identifier ) const;
 	int isKind( const std::string & identifier ) const;
 	void makeTypedef( const std::string & name, int kind = TYPEDEFname );
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 3e274ab398b76521d38b9bbfb1ffa9fba7f35a79)
+++ src/Parser/lex.ll	(revision b7d6a36126af369a09bd3958b2fe17c537999f77)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Fri Feb  7 19:02:43 2020
- * Update Count     : 725
+ * Last Modified On : Sat Feb 15 11:05:50 2020
+ * Update Count     : 737
  */
 
@@ -42,4 +42,6 @@
 #include "ParseNode.h"
 #include "TypedefTable.h"
+
+string * build_postfix_name( string * name );
 
 char *yyfilename;
@@ -432,5 +434,9 @@
 "?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); }
 "^?{}"			{ IDENTIFIER_RETURN(); }
-"?`"{identifier} { IDENTIFIER_RETURN(); }				// postfix operator
+"?`"{identifier} {										// postfix operator
+	yylval.tok.str = new string( &yytext[2] );			// remove ?`
+	yylval.tok.str = build_postfix_name( yylval.tok.str ); // add prefix
+	RETURN_LOCN( typedefTable.isKind( *yylval.tok.str ) );
+}
 "?"{op_binary_over}"?"	{ IDENTIFIER_RETURN(); }		// binary
 	/*
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 3e274ab398b76521d38b9bbfb1ffa9fba7f35a79)
+++ src/Parser/parser.yy	(revision b7d6a36126af369a09bd3958b2fe17c537999f77)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Feb  1 10:04:40 2020
-// Update Count     : 4440
+// Last Modified On : Sun Feb 16 08:22:14 2020
+// Update Count     : 4461
 //
 
@@ -166,8 +166,7 @@
 } // rebindForall
 
-NameExpr * build_postfix_name( const string * name ) {
-	NameExpr * new_name = build_varref( new string( "?`" + *name ) );
-	delete name;
-	return new_name;
+string * build_postfix_name( string * name ) {
+	*name = string("__postfix_func_") + *name;
+	return name;
 } // build_postfix_name
 
@@ -633,9 +632,9 @@
 		{ $$ = new ExpressionNode( build_func( $1, $3 ) ); }
 	| postfix_expression '`' identifier					// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( build_postfix_name( $3 ) ) ), $1 ) ); }
 	| constant '`' identifier							// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( build_postfix_name( $3 ) ) ), $1 ) ); }
 	| string_literal '`' identifier						// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( $1 ) ) ); }
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( build_postfix_name( $3 ) ) ), new ExpressionNode( $1 ) ) ); }
 	| postfix_expression '.' identifier
 		{ $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); }
