Otrzymałem ten komunikat o błędzie podczas korzystania z StringTemplate:
line 94:26: unexpected char: ")"
I po około 15 minutach losowego dodawania iusuwając puste linie w moim szablonie i obserwując, jak zmieniła się liczba w tym komunikacie, w końcu odizolowałem linię, która spowodowała problemy. Była to linia # 152, pozycja # 35.
Czy wartość po "linii" jest zwykle całkowicie błędna, czy też istnieje sposób wyprowadzenia rzeczywistego numeru wiersza z tego wyjścia?
Odpowiedzi:
1 dla odpowiedzi № 1W StringTemplate (ST) 4, wydaje się, żepierwszy numer to numer wiersza w obrębie określonego szablonu, którego dotyczy, a nie numer wiersza w pliku .stg, jeśli jest to, czego używasz (co większość z nas robi).
Kiedy używam vima, oznacza to, że muszę mentalnie zrównoważyć to z numerem wiersza pierwszego wiersza szablonu (dodać je razem), aby uzyskać aktualny numer wiersza w pliku .stg.
Druga liczba w błędzie ST jest pozycją znaku w tej linii szablonu. Ale poczekaj, jest jeszcze więcej - wiesz, że to kochasz ...
Gdy błąd występuje w pierwszym wierszu aszablon wielowierszowy: ponieważ ST przesuwa początkową linię w szablonach wieloliniowych, ST skutecznie łączy pierwszą / linię deklaracji (kończącą się w "<<") z drugą (rzeczywistą linią początkową szablonu) w szablonach wieloliniowych ;
więc przynajmniej z ST-4.0.8 muszę odjąć długość linii deklaracji szablonu od pozycji znaku, aby uzyskać faktyczną pozycję znaku.
Pierwsze wyłanianie "n" (tylko dla szablonów wieloliniowych) oznacza również, że numer linii może być przesunięty o 1, a być może także pozycja znaku, dla błędu w "pierwszej linii".
Błąd powinien zawierać nazwę pliku i nazwę szablonu, więc jest to wystarczająca informacja dla automatycznego skryptu lub narzędzia, ale nieco uciążliwe dla nas zwykłych ludzi.
Powodzenia.