//program for displaying words and lines
%{
int w=0,ch=0;
%}
%%
[^ \t\n.:;,]+ {w++;ch+=yyleng;}
[ \t\n.:;,]+ {ch++;}
%%
main()
{
printf("Enter the data \n");
yylex();
printf("No of words: %d \nNo of characters: %d\n",w,ch);
}
質問する
72 次
1 に答える
0
(f)lexによって生成されたyylex関数は、returnステートメントを含むルールに遭遇するか、yyterminate()が呼び出されるまで戻りません。(デフォルトのEOFルールはyyterminateを呼び出します。)
プログラムは期待どおりの動作をします。ファイルの終わりまで入力を消費し、その後yylex()が返され、最終的な要約が出力されます。
ちなみに、単語の区切り文字は正しくカウントされていません。+
2番目のパターンから繰り返し演算子を削除するか、そのアクションを次のように変更します。ch += yyleng;
行の終わりに実際にレポートを発行する場合は、2番目のパターンから削除し、アクションが次のようなルールを\n
追加します。\n
{ return; }
于 2012-10-16T22:53:01.163 に答える