2015-09-01 133 views
0

如果给定的字符是字母或数字,我有一个Lex程序可以读取它。如何直接从文件中获取我的输入。这是我的简单程序。还什么将是一个很好的教程的Flex /莱克斯从输入文件中读取Flex/Lex

%{ 
#include<stdio.h> 
%} 

%% 

[a-zA-Z]+ printf("Token Type: STRINGLITERAL \n Value: [%s] ",yytext); 
[0-9]+ printf("Token Type: INTLITERAL \n VALUE:[%s]", yytext); 

. printf("[%s] is not a word",yytext); 


%% 

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

如何阅读记号此代码的工作,例如说,“程序” /“结束” /“如果”等等,我如何防止它像我们一样被视为STRING LITERAL二? 再次感谢 –

回答

0

@KompjoeFriek,谢谢链接:)

@ error_404,我

%{ 
    #include<stdio.h> 
%} 

%% 
[a-zA-Z]+ printf("Token Type: STRINGLITERAL \n Value: [%s] ",yytext); 
[0-9]+ printf("Token Type: INTLITERAL \n VALUE:[%s]", yytext); 

. printf("[%s] is not a word",yytext); 
%% 

int main(int ac, char **av) 
{ 
    FILE *fd; 

    if (ac == 2) 
    { 
     if (!(fd = fopen(av[1], "r"))) 
     { 
      perror("Error: "); 
      return (-1); 
     } 
     yyset_in(fd); 
     yylex(); 
     fclose(fd); 
    } 
    else 
     printf("Usage: a.out filename\n"); 
    return (0); 
}