【发布时间】:2018-07-06 09:01:49
【问题描述】:
我正在尝试创建一个类似于 DiffMerge 的应用程序,它可以更友好地向我展示 Rhapsody 图表之间的差异。
我做了一些研究,发现有人做了一个.sbs到.xml的文件转换器[1],然后可以很容易地解析。
现在,当我尝试使用 make all 编译文件时,我收到此错误:
flex lexer.l
gawk "/#define YY_BUF_SIZE/{gsub(/16384/, "(1024*1024)")};{print}" lex.yy.c > lex.yy.c.new
/bin/sh: 1: Syntax error: "(" unexpected
make: *** [flex] Error 2
你能帮我解决这个问题吗?
我使用的文件在下面的 Git 链接上。
注意:我在 Makefile 中用 SHELL=... 注释了该行,因为我在 Linux 中工作。
【问题讨论】:
-
欢迎来到stackoverflow!您能否通过手动执行命令来重现此错误,即在终端中运行
gawk "/#define YY_BUF_SIZE/{gsub(/16384/, "(1024*1024)")};{print}" lex.yy.c > lex.yy.c.new? -
另外,最好格式化你的代码sn-ps,还有错误。这大大提高了问题的可读性。
-
在 Makefile 中,修改包含
gawk命令的配方(第 38 行):用简单的引号 (gawk '/#define...{print}' ...) 替换外部的"。并请报告错误(打开一个问题)让作者知道。 -
感谢您的欢迎和快速回复。 @lubgr,我只用 gawk 运行了命令,输出是同样的错误。
-
@RenaudPacalet,我确实用 ' ' 替换了“”,关于括号的错误消失了,有很多关于生成的 stdio.h 和 string.h 库中的一些函数的警告带有下划线'_'来自flex。现在它生成一个可执行文件。非常感谢你们两位。一旦我能够使用 .exe 文件,我就会将其发布在作者的 Git 页面上。
标签: awk makefile flex-lexer