1

这个问题不仅限于 lex 和 yacc,而是如何将自定义脚本编译器添加为项目的一部分?例如,我在项目中有以下文件:

grammar.y
grammar.l
test.script

将使用由 lex、yacc 和 g++ 编译的grammar.y 和grammar.l 生成二进制“script_compiler”。然后我想使用生成的 script_compiler 来编译 test.script 以生成 CompiledScript.java。该文件应与项目中的其余 java 文件一起编译。XCode 或 make 可以进行此设置,但单独使用 Eclipse 也可以吗?如果没有,如何与 Maven 插件一起使用?

(我可能会将脚本编译器设置为一个单独的项目,但如果它们可以放在同一个项目中,这样可以立即应用对语法文件的更改,那就太好了)

在此先感谢您的帮助!

4

2 回答 2

0

如果你只想在 Maven 中运行一个外部程序,这就是你想要的:http: //mojo.codehaus.org/exec-maven-plugin/——然后你可以从你的 IDE 或命令行运行 Maven 目标,它应该无论哪种方式都做正确的事。

要与正常编译集成,请将插件绑定到“generate-sources”阶段,并将生成 Java 文件的位置添加到 exec 插件的“sourceRoot”选项中。这样编译器就会选择它们。

理想情况下,您将代码生成到文件夹“target/generated-sources/MY_SCRIPT_NAME”中。这是 Maven 世界中生成源的标准位置,例如 IntelliJ IDEA 将在该位置内获取源文件。请注意,如果文件直接位于“目标/生成源”中,则这不起作用。

另一种选择是编写自己的 Maven 插件,这实际上也很容易。参见例如https://github.com/peterbecker/maven-code-generator

于 2013-01-16T00:20:01.027 回答
0

您可以从项目属性对话框中添加自定义“构建器”。这可以是 ant 脚本(带有可选目标)或任何其他脚本或可执行文件。

还有用于ant和其他脚本语言的 maven 插件

于 2012-08-12T13:57:33.263 回答