렉스

2014-04-17 5 views
1

가 여기 내 렉스 코드의 일치 규칙의 순서를 따르지 않습니다. 제 생각에는렉스

#include<stdio.h> 
int main(){ 
for(int i = 0 ; i < 10 ; i ++){ 
for(int j = 0 ; j < i ; j ++){ 
    printf("*"); 
} 
printf("\n"); 
} 
} 

의 + 규칙은 중지됩니다 일단 '\ n'을 만난다.
입력란 5에서 [\ t] 규칙을 실행할 수 없습니다.

답변

0

생성 된 어휘 분석기는 항상 가장 긴 토큰을 선택합니다. 전자가 선택 될 것입니다 귀하의

printf("*"); 

규칙 .+를 들어, [ \t]*보다 더 토큰을 제공 할 것입니다.

%{ 
%} 

%% 
[ \t]* {printf("| |");} 
\n  {printf("newline\n");} 
[^ \n]+ {printf("%s", yytext);} 

%% 
int main() { 
     yylex(); 
     return 0; 
} 
:

그런데

, 당신은이 예제를 시도 할 수