0

デフォルトの標準入力ではなく、文字列バッファーでフレックスを使用したいので、yy_scan_string. 「end-with」パターンを除いて、ほとんど問題なく動作します。

例えば

%%
ab$  {//do something}
%%

ab$stdin を入力として使用して、終了文字列と正確に一致する場合は「ab」に一致することを意味しますが、 では機能しyy_scan_stringません。

テスト:

%option noyywrap

%{
#include <stdio.h>
%}

%%
ab$    { printf("match ab$\n"); }
%%

int main(int argc, char ** argv)
{
    if (argc > 1)
        yy_scan_string(argv[1]);

    yylex();

    if (argc > 1)
        yylex_destroy();
}

次に、flex test.l; gcc lex.yy.c;を使用するecho ab | ./a.outと が出力さmatch ab$れ、正常に動作しますが、 を使用する./a.out abと、入力のみが出力され、そのルールabに一致しません。ab$

4

1 に答える 1