0

2 つの排他的な状態 (WORD と DEFN) を維持するスキャナーがあります。

%option noyywrap
%s WORD
%s DEFN
%%

%{
    BEGIN(WORD);
%}

<WORD>{
"|"          { BEGIN(DEFN); return WS_PIPE; }
}

<DEFN>{
[^;]+        { printf("ds: %s\n", yytext); return WD_STRING; }
";"          { return WD_SEMICOLON; }
}

\n|.         { printf("U: %s\n", yytext); }

%%

しかし、単純な入力 "| some text;" では、パイプが解析されるときに状態が変更されていないため、"some text;" の解析が行われます。失敗します。

4

1 に答える 1