C 在osx上编译Lex程序

C 在osx上编译Lex程序,c,lex,C,Lex,有没有人能更好地告诉我在终端的OSX上成功编译了一个Lex源文件。我在HelloWorld.l中写了以下内容: %% "hello world" printf("GOODBYE\n"); . ; %% 在控制台中,我执行了lex HelloWorld.l,然后执行了gcc lex.yy.c-ll和/a.out在我的窗口中接收到一个空白状态,没有结果 我的知识基于源代码和类似堆栈问题中的这个主题。默认情况下,flex将从标准输入读取。你需要实际地为它提供一

有没有人能更好地告诉我在终端的OSX上成功编译了一个Lex源文件。我在
HelloWorld.l
中写了以下内容:

%%

"hello world"    printf("GOODBYE\n");
.                ;

%%
在控制台中,我执行了
lex HelloWorld.l
,然后执行了
gcc lex.yy.c-ll
/a.out
在我的窗口中接收到一个空白状态,没有结果


我的知识基于源代码和类似堆栈问题中的这个主题。

默认情况下,flex将从标准输入读取。你需要实际地为它提供一些输入。您可以执行
回显“hello world”|/a.out
,您应该会看到结果。

您的
规则会忽略不匹配的输入。对于调试,最好打印忽略的输入(可能是标准错误,可能是识别文本)。然而,即使是这样,在你提供一些可以忽略的输入之前,也不会有任何帮助-该程序将等待你键入一些东西,任何东西。感谢你的澄清,你能否推荐一个基本程序来满足我的一般目的或加深我的理解。只需更改
printf之后(“忽略(%c)\n),yytext[0])。这将为每个被忽略的字符打印一行输出(例如键入
hello world
后的换行符)。感谢您的回复,现在我可以问一下您如何从中编译wordcount.l程序吗?具体来说,您能否解释如何提供输入,例如此代码中引用的文件。@aitia请针对以下内容提出新问题:that@aitía:如果您有一个文件
xyz.data
要发送到您的程序,请使用
/a.out
(或者,如果您有多个文件,请考虑<代码> CATFIL1.DATA文件2.DATA·./A.OUT/<代码>)。