Flex 多个 .l 文件参数不起作用? (例如"flex a.l b.l")
Flex multiple .l file arguments don't work? (eg "flex a.l b.l")
我终于有了一个足够舒适的工作流程来编写我的 flex
程序,我很快就会 bison
投入其中(我之前涉足过它,但我完全重新启动了我的项目)。
flex yy.l; flex flip.l
将正确生成 lex.yy.c
和 lex.flip.c
,因为我使用了前缀选项。但我很好奇为什么 flex yy.l flip.l
或 flex *.l
没有。
gcc lex*
在正确生成所有 .c 文件时似乎工作得很好,就像第一个命令一样,但是尝试使用 flex 的相同快捷方式会生成一个 lex.yy.c
文件,这似乎是有效的直到未处理的 flip.l 文件粘贴到最后,阻止 gcc 编译。
这只是 flex 告诉我我的工作流程很愚蠢,我应该在大文件中使用更多的启动条件吗?我宁愿不要,至少在我有一个更完整的程序来调整速度之前。
我的工作流程是:
fg 1; fg 2; fg 3; fg 4; flex a.l; flex flip.l; flex rot.l; gcc -g lex*; ./a.out < in
将 nano
编辑作为作业 1、2、3、4 到 fg
退出后台。
我按以下顺序对文件进行词法分析:flip
、rot
、a
、rot
、flip
。它有效,我什至可以使用预处理器定义 gcc -DALONE
单独正确编译我的 .c 文件,以进行测试。
我认为 flex 告诉您的,如果有的话,是学习如何使用 make
而不是试图将大量构建命令放在一起。
的确,flex 每次调用只会处理一个文件。另一方面,gcc 和 clang 都是调用实际编译器和链接器的简单驱动程序,因此您不必编写更复杂的构建方法。您可以轻松地编写一个小的驱动程序多次调用 flex,每个参数调用一次,但使用 make
会更简单,另外一个优点是 flex 只会在必要时调用。
事实上,大多数大型 C 项目并没有使用 gcc 在一次调用中编译多个文件的能力。相反,他们让 make
找出需要重建的目标文件(因为相应的源文件已更改),从而大大加快了 debug/edit/build 周期。
我终于有了一个足够舒适的工作流程来编写我的 flex
程序,我很快就会 bison
投入其中(我之前涉足过它,但我完全重新启动了我的项目)。
flex yy.l; flex flip.l
将正确生成 lex.yy.c
和 lex.flip.c
,因为我使用了前缀选项。但我很好奇为什么 flex yy.l flip.l
或 flex *.l
没有。
gcc lex*
在正确生成所有 .c 文件时似乎工作得很好,就像第一个命令一样,但是尝试使用 flex 的相同快捷方式会生成一个 lex.yy.c
文件,这似乎是有效的直到未处理的 flip.l 文件粘贴到最后,阻止 gcc 编译。
这只是 flex 告诉我我的工作流程很愚蠢,我应该在大文件中使用更多的启动条件吗?我宁愿不要,至少在我有一个更完整的程序来调整速度之前。
我的工作流程是:
fg 1; fg 2; fg 3; fg 4; flex a.l; flex flip.l; flex rot.l; gcc -g lex*; ./a.out < in
将 nano
编辑作为作业 1、2、3、4 到 fg
退出后台。
我按以下顺序对文件进行词法分析:flip
、rot
、a
、rot
、flip
。它有效,我什至可以使用预处理器定义 gcc -DALONE
单独正确编译我的 .c 文件,以进行测试。
我认为 flex 告诉您的,如果有的话,是学习如何使用 make
而不是试图将大量构建命令放在一起。
的确,flex 每次调用只会处理一个文件。另一方面,gcc 和 clang 都是调用实际编译器和链接器的简单驱动程序,因此您不必编写更复杂的构建方法。您可以轻松地编写一个小的驱动程序多次调用 flex,每个参数调用一次,但使用 make
会更简单,另外一个优点是 flex 只会在必要时调用。
事实上,大多数大型 C 项目并没有使用 gcc 在一次调用中编译多个文件的能力。相反,他们让 make
找出需要重建的目标文件(因为相应的源文件已更改),从而大大加快了 debug/edit/build 周期。