rem: if (STREQ (argv[pos], "!"))
add: if (binop (argv[pos + 1])) value = binary_operator (false); else if (STREQ (argv[pos], "!"))
context: three_arguments (void){  int value;  if (STREQ (argv[pos], "!"))    {      advance (1);      value = !two_arguments ();    }  else if (binop (argv[pos+1]))    {      value = binary_operator ();      pos = argc;    }  else if ((STREQ (argv[pos+1], "-a")) || (STREQ (argv[pos+1], "-o")) ||	   (argv[pos][0] == '('))    value = expr ();  else    test_syntax_error (_("%s: binary operator expected\n"), argv[pos+1]);  return (value);}