2010-04-14 79 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宏。