%{
#include <stdio.h>
#include <string.h>
void yyerror(const char *str)
{
fprintf(stderr,"error: %s\n",str);
}
int yywrap()
{
return 1;
}
int main()
{
yyparse();
}
%}
%token TOKMACHINE TOKLOGIN TOKPASSWORD VALUE SPACE NEWLINE
input: auth input | input;
delim: SPACE | NEWLINE;
auth: TOKMACHINE delim VALUE delim TOKLOGIN delim VALUE delim TOKPASSWORD delim VALUE delim
{
printf("Found auth {%s,%s,%s}", $1,$3,$5);
};
这是简单的野牛语法,我想用它来解析.netrc
文件。
但我在input
行上收到错误:
netrc.y:23.1-5: syntax error, unexpected identifier:
我是Flex / Bison的新手,但这个示例靠近 here
的文字副本答案 0 :(得分:2)
看起来你错过了%%
分隔符。做那个
%}
%token ...
%%
input : ...
答案 1 :(得分:2)
您的%%
行后需要%token
行才能将定义部分与语法部分分开。