2010-08-24 32 views
3

我一直在阅读lex/yacc。书籍和例子不难遵循。事实上,整个概念清晰可见。有一个例外。 Lex/yacc似乎会生成独立程序。如果我想将它们称为解析器函数呢? Yacc似乎产生了一个主要的功能,所以我怎么会从我自己的电话没有冲突。从单独的程序调用lex/yacc

我现在还不清楚他们如何操作文件输入。我可以从文件中抓取一行并将其发送给解析器,但是如果解析器正在寻找一个多线结构(如用大括号括起来的块)呢?

我意识到我对这些都很愚蠢,但任何帮助表示赞赏。谢谢。

回答

3

输入到lexx/yacc组合是通过名为yyin的FILE *。

此默认为标准输入 - 周围的lex.yy.c拖网找到它

如果你分配一个FILE *到yyin中,词法分析器会从该文件中读取,你这样做

yyin中= fopen(“parseme”,“rt”);

在调用yyparse()之前,通常在你的main()中。

+0

+1:简明扼要,正确。 – 2010-10-23 21:28:33

2

这两个程序都会生成yylex()yyparse()函数,但它们都不会生成主函数。您必须在某处添加您自己的main()功能。许多教程将它们放在.l或.y文件中,但您可以随意将它们放在任何你想要的地方。

相关问题