Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bison 从单独的程序调用lex/yacc_Bison_Yacc_Lex_Flex Lexer - Fatal编程技术网

Bison 从单独的程序调用lex/yacc

Bison 从单独的程序调用lex/yacc,bison,yacc,lex,flex-lexer,Bison,Yacc,Lex,Flex Lexer,我一直在读lex/yacc。这些书和例子并不难理解。事实上,整个概念非常清楚。只有一个例外。Lex/yacc似乎可以生成独立的程序。如果我想把它们作为解析器函数调用呢?Yacc似乎生成了一个main函数,那么我如何从自己的函数调用而不发生冲突呢 我也不清楚他们是如何操作文件输入的。我可以从文件中抓取一行并将其发送给解析器,但是如果您的解析器正在寻找一个多行结构,比如用大括号括起来的块,该怎么办 我意识到我在这两件事上都很愚蠢,但任何帮助都是非常感谢的。谢谢。这两个程序都会生成yylex()和yy

我一直在读lex/yacc。这些书和例子并不难理解。事实上,整个概念非常清楚。只有一个例外。Lex/yacc似乎可以生成独立的程序。如果我想把它们作为解析器函数调用呢?Yacc似乎生成了一个main函数,那么我如何从自己的函数调用而不发生冲突呢

我也不清楚他们是如何操作文件输入的。我可以从文件中抓取一行并将其发送给解析器,但是如果您的解析器正在寻找一个多行结构,比如用大括号括起来的块,该怎么办


我意识到我在这两件事上都很愚蠢,但任何帮助都是非常感谢的。谢谢。

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

lexx/yacc组合的输入是通过一个名为yyin的文件*进行的

这默认为stdin-trawl围绕lex.yy.c查找它

如果您将一个文件*分配给yyin,lexer将从该文件中读取,您可以执行以下操作

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

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