Есть ли способ локализовать сообщения об ошибках от Bison / Flex? - PullRequest
0 голосов
/ 28 июня 2010

Позволяет ли bison и flex пользователю локально локализовать сообщения об ошибках? Например, я хотел бы перевести следующее сообщение: синтаксическая ошибка, неожиданный NUMBER, ожидающий $ end на другой язык и заменить NUMBER / $ end на что-то более удобочитаемое.

1 Ответ

1 голос
/ 26 июля 2010

Используйте yyerror и YY_USER_ACTION для дополнительных данных.

void yyerror(const char *s) {
    sprintf(dummmy, "%s line %d col %d word '%s'\n", s, myline, mycolumn, yytext);
    print_error(dummmy);

в файле lex

#define YY_USER_ACTION \
    addme(yy_start, yytext); \
    mycolumn += yyleng;\
    if(*yytext == '\n') { myline++; mycolumn = 0; } else 0; \
...