2011-12-10 7 views
0

Flexで小さな字句解析アプリケーションをコンパイルしようとしています。 lex.yy.cファイルが実際に生成されますが、Visual Studioのプロジェクトに追加すると というエラーが発生し、 で定義されている構造体と関数を認識できないと主張します。Flexコンパイル済みファイル(lex.yy.c)がヘッダ/依存関係を見つけられず、不思議にコンパイルされます

このヘッダーは、Flexに送信するファイルに#includeされています。

また、これらのエラーを解決しようとすると、最初にlex.yy.cを生成するために使用した Flex Scripts txtファイルにエラーの原因の一部が含まれているようです。 flexskel.ccのような私のプロジェクトとは関係がない

なぜ関連しないファイルをコンパイルしようとしていますか?私はここでのWindows 7およびVisual Studio 10

で働いている は、私は、Flexに送信ファイルの短いバージョンです:以下

%{ 
#include <stdio.h> 
#include "TokenInterface.h" 
int lineCounter = 0; 
%} 
DIGIT [0-9] 
LETTER [a-zA-Z] 
%% 
"START_PROG" 
{ 
storeTokenInList(yytext, lineCounter, START_PROG); 
fprintf(yyout,"\nSTART_PROG: %s\n",mostRecentToken->lexema); 
return; 
}                
"END_PROG"   
{ 
storeTokenInList(yytext, lineCounter, END_PROG); 
fprintf(yyout,"\nEND_PROG: %s\n",mostRecentToken->lexema); 
return; 
}               %%  

void main(int argc, char* argv[]) 
{ 
token* mostRecentToken; 
createEmptyTokenList(); 
yyin = fopen("c:\\Flex\\input.txt","r"); 
yyout = fopen("c:\\Flex\\output.txt","w"); 
yylex(); 
mostRecentToken = backToken(); 

while (mostRecentToken->tokenType != EOF) 
{ 
    yylex(); 
    mostRecentToken = backToken(); 
} 
printf("Flex Out.\n"); 
} 
+0

オーケーあなたのフレックスプログラムは完全にオフになっています。私はそれが正しくコンパイルされるようにあなたのためのlexコードを修正するつもりです。 私はコーディングを手伝ってもらえますが、ファイルに書かれているように正確に投稿してください。ここでフォーマットするのが難しい場合はpastebin.comを使用して貼り付けてください。 –

+0

また、TokenInterface.hコードも貼り付けられますか? –

+0

エラーを投稿してください – INS

答えて

0

私のエラーです:

変数mostRecentTokenが宣言されています主な機能では これはFlexスクリプトでも使用されていますが、Flexではメイン関数で宣言されている変数も認識されません。

私はスクリプト内のmostRecentTokenをyytextとvoilaに置き換えました。それが実際にあなたがそれを掲載しているように書かれている場合

おかげで再びみんな:)

関連する問題