0
%{
#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 的新手,但这个例子接近于这里的文字副本

4

2 回答 2

2

看起来您缺少%%分隔符。做那个

%}
%token ...

%%
input : ...
于 2012-08-24T18:38:22.897 回答
2

您需要%%在您的行之后%token将定义部分与语法部分分开。

于 2012-08-24T18:45:44.120 回答