【问题标题】:Error on unexpected bracket in gawkgawk 中的意外括号错误
【发布时间】: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 中工作。

[1]https://github.com/PrzemekWirkus/sbs2xml-conv

【问题讨论】:

  • 欢迎来到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


【解决方案1】:

只需将脚本周围的 "s 更改为 's(它们总是应该是无论如何):

gawk '/#define YY_BUF_SIZE/{gsub(/16384/, "(1024*1024)")};{print}' lex.yy.c > lex.yy.c.new

【讨论】:

  • 谢谢,我这样做了,然后解决了一些小错误,它从 flex 生成 .c 文件的文件中起作用
猜你喜欢
  • 2015-12-08
  • 2016-11-20
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 2015-09-03
  • 2023-03-13
  • 2014-06-29
  • 2013-04-20
相关资源
最近更新 更多