1

私はフレックスで簡単なスキャナーを書いています。キーワード「int」が表示されたときに、スキャナーに「integertypeseen」を出力させたい。次の2つの方法に違いはありますか?

1番目の方法:

%%
int printf("integer type seen");
%%

2番目の方法:

%%
"int" printf("integer type seen");
%%

それで、書くこととの違いはありますif"if"?また、たとえば、==演算子を見ると、何かを印刷します。==書き込みと"=="フレックスファイルの違いはありますか?

4

1 に答える 1

3

これらの特定の場合に違いはありません。quotes(")は、引用符で囲まれた文字列内の特殊文字(正規表現など)を解釈しないようにlexに指示するだけですが、特殊文字が含まれていない場合は関係ありません。

[a-z]     printf("matched a single letter\n");
"[a-z]"   printf("matched the 5-character string '[a-z]'\n");
0*        printf("matched zero or more zero characters\n");
"0*"      printf("matched a zero followed by an asterisk\n");

特別で引用符以外の意味を持つ文字には、が含まれます. * + ? | ^ $ < > [ ] ( ) { } /。それらのいくつかは、特定の場所に表示される場合にのみ特別な意味を持ちますが、リテラル文字と一致させたい場合は、表示される場所に関係なく、一般的に引用する方が明確です。

于 2013-03-13T22:06:54.653 に答える