헤더 파일을 읽은 다음 어휘 오류를 찾아서 텍스트 출력에 쓰는 lex 스캐너를 만들려고하지만 토큰이 포함 된 줄에서 정의되지 않은 오류가 계속 발생합니다 { 라인} 및 {punc}. 나는 렉스에게 완전히 새로운 것이다. 그래서 나는 무엇이 빠졌는지 확실히 구분할 수 없었다. 당신은 ws
와 함께했던 것처럼, 초기 섹션에 line
및 punc
을 정의해야정의되지 않음 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();
}
'line'과'punc'는 내가 볼 수있는 곳에서는 정의되지 않았습니다. 그게 무슨 뜻인지 생각해? 왜? – rici