Я обнаружил, что gperf 2.7 не волнует, есть ли разделитель «%%» между первым разделом и ключевыми словами. 3.0.1 строго соблюдает это. Итак, в моем случае я должен был изменить:
%{
#include <string.h>
%}
scan
будет
%{
#include <string.h>
%}
%%
scan
Ваш случай отличается, я полагаю, в том, что в руководстве говорится, что первое поле структуры должно называться name:
"This first field must be called `name', although it is possible to modify its name with the `-K' option (or, equivalently, the `%define slot-name' declaration) described below."
-charlie