2015-01-24 3 views
-1

헤더 파일을 읽은 다음 어휘 오류를 찾아서 텍스트 출력에 쓰는 lex 스캐너를 만들려고하지만 토큰이 포함 된 줄에서 정의되지 않은 오류가 계속 발생합니다 { 라인} 및 {punc}. 나는 렉스에게 완전히 새로운 것이다. 그래서 나는 무엇이 빠졌는지 확실히 구분할 수 없었다. 당신은 ws와 함께했던 것처럼, 초기 섹션에 linepunc을 정의해야정의되지 않음 LEX 프로그램의 정의

%{ 
#include <stdio.h>  
#include <ctype.h>  
#include "tokens.h" 

%} 

%{ option noyywrap 
%} 

ws  [ \t\r]+ 

%% 

[ \t\n]   ; 
.    printf("Unexpected Character\n"); 
:    return COLON; 
{ws}  { ECHO; }      
{line} { ECHO; Listing::nextLine();} 
"<"  { ECHO; return(RELOP); }   

begin { ECHO; return(BEGIN_); } 

{punc} { ECHO; return yytext[0]; } 

.  { ECHO; Listing::appendError(LEXICAL, yytext); } 

%% 


int main() 
{ 
    yylex(); 
} 
+0

'line'과'punc'는 내가 볼 수있는 곳에서는 정의되지 않았습니다. 그게 무슨 뜻인지 생각해? 왜? – rici

답변

1

: 여기에 지금까지 오류가 그 내 코드의 일부이다. 이 두 식별자에 대한 정의가 없기 때문에 {line}{punc}을 확장 할 수 없다는 오류가 표시됩니다.

+0

정말 고마워! 나는이 파일과 관련하여 모든 파일을 꼼짝 않고 바라 보았고 눈부신 실수를 저를 쳐다 보지 않았습니다! 나는 그것을 수면 부족으로 돌릴 것입니다! 다시 한 번 감사드립니다! –

관련 문제