나는 렉스를 배우려고 노력하고있다. 나는 파일을 읽고 토큰을 인식하고자하는 간단한 프로그램을 가지고있다.렉스 - 토큰을 인식
지금은 오류가 발생합니다. 토큰을 인식하기 위해 파일에 한 줄 이상이 있기 때문에 문제가 있다고 생각하십니까? 여기
Keyword: fd
Illegal: 3x00
Keyword: bk
Keyword: setc
Number: 100
Keyword: int
내 프로그램입니다 : 여기
내가 달성하기 위해 노력하고 출력 파일 여기
fd 3x00
bk
setc 100
int xy3 fd 10 rt 90
입니다
여기%{
/* Comment */
#include <stdio.h>
#include <stdlib.h>
%}
%%
fd {printf("Keyword: fd\n");}
[0-9][a-z][0-9] {printf("Illegal: 3x00\n");}
bk {printf("Keyword: bk\n");}
setc[0-9] {printf("Keyword: setc\n Number: %s\n", yytext);}
int {printf("Keyword: int\n");}
xy3 {printf("ID: xy3\n");}
fd[0-9] {printf("Keyword: fd\n Number %s\n", yytext);}
rt[0-9] {printf("Keyword: rt \n Number %s\n", yytext);}
%%
main(argc, argv)
int argc;
char** argv;
{
if(argc > 1)
{
FILE *file;
file = fopen(argv[1], "r");
if(!file)
{
fprintf(stderr, "Could not open %s \n", argv[1]);
exit(1);
}
yyin = file;
}
yylex();
}
나는 오류입니다 내가 컴파일하려고 할 때 :
In function 'yylex':
miniStarLogo.l:11: error: expected expression before '[' token
miniStarLogo.l:11: error: 'a' undeclared (first use in this function)
miniStarLogo.l:11: error: (Each undeclared identifier is reported only once
miniStarLogo.l:11: error: for each function it appears in.)
miniStarLogo.l:11: error: expected ';' before '{' token
miniStarLogo.l:13: error: expected expression before '[' token
miniStarLogo.l:13: error: expected ';' before '{' token
은 내 printf 문의 오류입니까? 는
내가flex
(2.5.35)와
gcc
(4.6.1)와 맥 OS X (10.7.2)에 코드의 복사본을 컴파일
컴파일러 오류 인 것 같습니다. 컴파일이나 실행에 문제가 있습니까? 그것은 컴파일 및 실행 나를 위해, 비록 당신이 원하는 출력되지 않습니다. – Kevin
내가 컴파일하려고하면 오류가 발생합니다. 나는 cc lex.yy.c -o myprog -ll을 시도했다. –
어떻게 컴파일하고 실행할 수 있었습니까? 어떤 명령을 사용 했습니까? –