2010-04-14 52 views
0

如何解析yacc中的命令行參數?如何解析yacc中的命令行參數?

當然

i的兩個法& YACC未定義輸入,然後寫

int input(void) 
{ 
printf("in input\n:"); 
char c; 
if(target > limit) 
return 0; 
if((c = target[0][offset++]) != '\0') 
return (c); 
target++; 
offset =0; 
return (' '); 
} 

其中靶包含在命令行arguements。但是隻有標準輸入纔會使得dis輸入函數得到執行。

回答

1

你是否想要你的生成解析器接受命令行參數?然後你需要將這些參數添加到主函數中。詞法分析器輸入被稱爲FILE* yyin,並且在詞法分析器中被初始化爲stdin。如果要執行,而不是由Flex提供的一個自己的功能,您可以通過

#include <stdio.h> 
extern FILE* yyin; 
int main(int argv, char** argv) 
{ 
    if(argc==2) 
    { 
     yyin = fopen(argv[1], "r"); 
     if(!yyin) 
     { 
      fprintf(stderr, "can't read file %s\n", argv[1]); 
      return 1; 
     } 
    } 
    yyparse(); 
} 

更改默認行爲,您需要定義YY_INPUT宏。