如何从yacc中的命令行参数解析?
当然我在lex& 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 (' ');
}
其中target包含命令行参数。但是只有标准输入才会被激活,如何让dis输入功能得到执行。
答案 0 :(得分:1)
您是否想要生成解析器接受命令行参数?然后你需要将这些参数添加到main函数中。词法分析器输入称为FILE* yyin
,并在词法分析器中初始化为stdin
。您可以通过
#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();
}
如果您希望执行自己的函数而不是flex提供的函数,则需要定义YY_INPUT
宏。