2012-03-03 6 views
0

字句解析ツール "flex"を使って字句を出力しようとしています。問題は字句があり、字句ではなくトークンを印刷できます。これはあなたが私は字句解析を行う際に、このにyylex()関数は、「ヌル」を返し、それは私があれば喜んでいるでしょうフレックスを使用してCコードの字句とトークンを印刷する

example5.l:8:1: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat]. 

言う

%{ 
#include<stdio.h> 
char RW[] = "RESERVE_WORD"; 
%} 

int [i][n][t] 
%% 
int printf("%s --> %s\n", yylex(), RW); 
.|\n { /* Ignore all other */} 
%% 

int main(int argc, char *argv[]) { 
yyin = fopen(argv[1], "r"); 
yylex(); 
fclose(yyin); 
return 0; 
} 

の下に見ることができるように、私が使用して簡単なコードですあなたは私を助けることができます。とにかくありがとう

+0

実際、いいえ、警告はスキャナのコンパイルから来ます。良いマニュアルを見て解決できるyylex()の使い方については、間違っているようです。あなたの入力と予想される出力は正確に何ですか? –

+0

あなたは本当です。私はそれを処理した。私はyylex()が整数を返すので、最後のトークンを文字列として含むyytext変数があることを認識しました。応答に感謝 – quartaela

+0

他の人があなたの解決方法を見ることができるように、作業コードで回答を投稿してください。 –

答えて

0

私は問題を処理しました。したがって、字句解析器の最後のトークンを文字列として含む変数yytextを使用する必要があります。さらに、yylex()関数は、次のトークンの値またはEOFを示す数字< = 0を返します。

+1

正しくはない:yylex()は、次のトークンの値か、EOFを示す数値<= 0を返す。 –

+0

ok私は私の答えを編集し、警告のためにありがとう。 – quartaela

関連する問題