Как использовать yyerror, чтобы рассказать больше об ошибках разбора

Итак, я написал всю грамматику, которую хочу, и все работает гладко. Я не делаю абсолютно никаких действий, когда встречается грамматика.

Это определение моей функции yyerror

int yyerror (const char *s)
{                                                     
    printf("parser error %s \n ",s);
    return 0;
}

Ну, я где-то читал, что мне нужно добавить% error-verbose, если я хочу получить больше информации об ошибках, с которыми столкнулся мой парсер; когда я пытался добавить его, я получил это сообщение об ошибке

ошибка: не распознана: %error_verbose

Учтите, что я использую Flex, Bison и связал их с VS2010
РЕДАКТИРОВАТЬ: Несмотря на то, что ошибка упоминает error_verbose, я убедился, что я передаю подробный error, с чертой вместо подчеркивания.

2 ответа

Решение

Как ни странно, когда я попробовал подробный%error на последней версии бизона в Linux, он работал просто отлично, но не работал с версией Windows.
Не уверен, что это ошибка в версии, которую я использую в Windows, или она просто не поддерживается.

Это %error-verbose, с тире, но вместо сообщения об ошибке отображается подчеркивание.

Другие вопросы по тегам