0

bison と flex を使用すると、ユーザーはエラー メッセージをネイティブにローカライズできますか? たとえば、次のメッセージを翻訳したいと思います:構文エラー、予期しない NUMBER、期待する $endを他の言語に変換し、NUMBER/$end をより人間が判読できるものに置き換えます。

4

1 に答える 1

1

追加データには 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);

レックスファイルで

#define YY_USER_ACTION \
    addme(yy_start, yytext); \
    mycolumn += yyleng;\
    if(*yytext == '\n') { myline++; mycolumn = 0; } else 0; \
于 2010-07-26T02:44:57.733 に答える