2012-03-12 2 views
2

я получил сообщение об ошибке при использовании StringTemplate:Как интерпретировать сообщения об ошибках в StringTemplate?

line 94:26: unexpected char: ')' 

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

Является ли значение после «строки» просто нормальным образом полностью неправильным или существует способ вывода реального номера строки из этого вывода?

ответ

1

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

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

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

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

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

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

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

Удачи.

+0

Я больше не использую ST, поэтому я просто должен предположить, что вы поняли это правильно. –