2015-09-01 137 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); 
}