2

我在使用 StringTemplate 时收到此错误消息:

line 94:26: unexpected char: ')'

在我的模板中随机添加和删除空白行大约 15 分钟,并观察该消息中的数字如何变化后,我终于隔离了引起问题的行。这是第 152 行,第 35 位。

“line”之后的值通常是完全错误的,还是有办法从该输出中推断出实际的行号?

4

1 回答 1

1

在 StringTemplate (ST) 4 中,第一个数字似乎是特定模板中的行号,而不是 .stg 文件中的行号,如果这是您正在使用的(我们大多数人都这样做)。

当我使用 vim 时,这意味着我需要在心理上从模板第一行的行号中偏移它(将它们加在一起)以获得 .stg 文件中的实际行号。

ST 错误中的第二个数字是模板该行中的字符位置。但是等等,还有更多 - 你知道你喜欢它......

当多行模板的第一行出现错误时:由于 ST 省略了多行模板中的起始换行符,ST 有效地将第一行/声明行(以“<<”结尾)与第二行(实际开始模板)行,在多行模板中;

所以至少对于 ST-4.0.8,我需要从字符位置中减去模板声明行的长度,以获得实际的字符位置。

第一个“\n”省略(仅适用于多行模板)也意味着行号可能会出现偏移 1,并且可能是字符位置,因为“第一行”上的错误。

错误应该包括文件名和模板名,因此对于自动化脚本或工具来说,这已经足够了,但对于我们人类来说有点麻烦。

祝你好运。

于 2015-04-30T10:01:36.697 回答