以下lex / yacc示例

时间:2015-04-26 10:54:10

标签: ubuntu compiler-construction ubuntu-14.04 yacc lex

我很难理解下面的代码。如果可能的话,建议我一个网站,我可以通过文档阅读或解释代码,并详细说明。

%{
int yylineno;
%}
%%
^(.*)\n    printf("%4d\t%s", ++yylineno, yytext);
%%
int main(int argc, char *argv[]) {
yyin = fopen(argv[1], "r");
yylex();
fclose(yyin);
}

1 个答案:

答案 0 :(得分:0)

您发布的代码是lex(或flex)代码。它是lex(或类似的flex)程序将生成的词法分析器的规范。这些天,flex比lex使用得更广泛,尽管我相信它们彼此之间非常兼容。

官方flex documentation非常好。这是手册中的a link to a page,其中解释了一些简单的示例,例如您给出的示例。

希望这有帮助。