我将 flex 中的标记定义为
%%
@[^\\\" \n\(\),=\{\}#~]+ {yylval.sval = strdup(yytext + 1); return ENTRYTYPE;}
[A-Za-z][A-Za-z0-9:"]* { yylval.sval = strdup(yytext); return KEY; }
\"([^"]|\\.)*\"|\{([^"]|\\.)*\} { yylval.sval = strdup(yytext); return VALUE; }
[ \t\n] ; /* ignore whitespace */
[{}=,] { return *yytext; }
. { fprintf(stderr, "Unrecognized character %c in input\n", *yytext); }
%%
(虽然,不是一个好方法)问题是 VALUE 变量对于带引号的字符串做得很好,形式为“some quote”;但不适用于尝试用大括号(形式为{某些句子})括起来的形式。有什么乱七八糟的?