을 토큰으로 연산자를 인식 나는 토큰 +, <는 =렉스 - 나는 렉스와 거북이의 언어를 배우고 일하고
내가 그들을 파일 에 저장 한 내가 가지고 렉스는 연산자를 인식 얻는 데 문제가 이런 식
\+ or "+" or '+' or [+]
나는 작은 따옴표를 사용하여 오류를 얻을하지 않습니다하지만이 중 하나를 일치 나던 또는 내가 파일에 그렇게해야 일을하려고?
여기 내 파일
fd 3x00
bk
setc 100
int xy3 fd 10 rt 90
rt
lt
setxy
setx
sety
home
seth
pd
pu
ht
st
color
xcor
ycor
heading
random
:=
+
<
이며, 여기
%{
#include <stdio.h>
#include <stdlib.h>
int number;
%}
%%
fd {printf("Keyword %s\n", yytext);}
[^\t\n\r] {}
[0-9]+[a-z]+[0-9]+ {printf("Illegal: 3x00\n");}
[\r\t\n]+ {}
bk {printf("Keyword: %s\n", yytext);}
setc {printf("Keyword: %s\n", yytext);}
[0-9]+ {printf("Number: %s\n", yytext);}
int {printf(" Keyword: %s\n", yytext);}
xy3 {printf("ID: %s\n", yytext);}
fd[0-9]+ {printf("Keyword: %s\n", yytext);
printf("Number %s\n", yytext);}
rt {printf("Keyword: %s\n", yytext);}
lt {printf("Keyword: %s\n",yytext);}
setxy {printf("Keyword: %s\n", yytext);}
setx {printf("Keyword: %s\n", yytext);}
sety {printf("Keyword: %s\n", yytext);}
home {printf("Keyword: %s\n", yytext);}
seth {printf("Keyword: %s\n", yytext);}
pd {printf("Keyword: %s\n", yytext);}
pu {printf("Keyword: %s\n", yytext);}
ht {printf("Keyword: %s\n", yytext);}
st {printf("Keyword: %s\n", yytext);}
color {printf("Keyword: %s\n", yytext);}
xcor {printf("Keyword: %s\n", yytext);}
ycor {printf("Keyword: %s\n", yytext);}
heading {printf("Keyword: %s\n", yytext);}
random {printf("Keyword: %s\n", yytext);}
:= {printf("Keyword: =\n" );}
\+ {printf("Keyword: + \n");}
\< {printf("Keyword: < \n");}
%%
main(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();
}
은 내가 경고한다 얻을 오류가 규칙을 일치시킬 수없는 프로그램을이다.
내가 뭘 잘못하고 있니?
당신에게
무슨 규칙이 일치 할 수 없습니까? – Kevin
내가 사용하고있는 라인은 \ + 또한 DOT를 사용하여 다른 모든 것을 찾았고 같은 오류가 발생했습니다 –