Как интерпретировать сообщения об ошибках в StringTemplate? - PullRequest
2 голосов
/ 13 марта 2012

Я получил это сообщение об ошибке при использовании StringTemplate:

line 94:26: unexpected char: ')'

И примерно через 15 минут случайного добавления и удаления пустых строк в моем шаблоне и наблюдения за изменением числа в этом сообщении я, наконец, выделил строку, вызвавшую проблему. Это была строка № 152, позиция № 35.

Является ли значение после "line" просто неправильным или есть способ вывести реальный номер строки из этого вывода?

1 Ответ

1 голос
/ 30 апреля 2015

В StringTemplate (ST) 4 кажется, что первое число - это номер строки в конкретном шаблоне, а не номер строки в файле .stg, если это то, что вы используете (что большинство из нас делает ).

Когда я использую vim, это означает, что мне нужно мысленно сместить его от номера строки первой строки шаблона (сложить их вместе), чтобы получить фактический номер строки в файле .stg.

Второе число в ошибке ST - это позиция символа в этой строке шаблона. Но подождите, это еще не все - вы знаете, что вам это нравится ...

Когда ошибка находится в первой строке многострочного шаблона: поскольку ST исключает начальный символ новой строки в многострочных шаблонах, ST эффективно объединяет первую строку / строку объявления (заканчивающуюся в «<<») со второй ( фактическое начало шаблона) строка, в многострочных шаблонах; </p>

так что по крайней мере с ST-4.0.8 мне нужно вычесть длину строки объявления шаблона из позиции символа, чтобы получить фактическую позицию символа.

Первое исключение "\ n" (только для многострочных шаблонов) также означает, что номер строки может быть смещен на 1 и, возможно, на позицию символа, для ошибки в "первой строке".

Ошибка должна включать имя файла и имя шаблона, поэтому для автоматического скрипта или инструмента достаточно информации, но для нас, простых людей, это немного обременительно.

Удачи.

...