StringTemplate の使用中に次のエラー メッセージが表示されました。
line 94:26: unexpected char: ')'
そして、約 15 分間、テンプレートに空行を無作為に追加および削除し、そのメッセージの数字がどのように変化するかを観察した後、問題の原因となった行を最終的に分離しました。それは 152 行目、35 番目の位置でした。
「行」の後の値は通常完全に間違っていますか、それともその出力から実際の行番号を推測する方法はありますか?
StringTemplate の使用中に次のエラー メッセージが表示されました。
line 94:26: unexpected char: ')'
そして、約 15 分間、テンプレートに空行を無作為に追加および削除し、そのメッセージの数字がどのように変化するかを観察した後、問題の原因となった行を最終的に分離しました。それは 152 行目、35 番目の位置でした。
「行」の後の値は通常完全に間違っていますか、それともその出力から実際の行番号を推測する方法はありますか?
StringTemplate (ST) 4 では、最初の番号は問題の特定のテンプレート内の行番号であり、使用している場合は .stg ファイル内の行番号ではないようです (私たちのほとんどがそうしています)。
vim を使用している場合、これは、.stg ファイル内の実際の行番号を取得するために、テンプレートの最初の行の行番号から精神的にオフセットする (それらを一緒に追加する) 必要があることを意味します。
ST エラーの 2 番目の数字は、テンプレートのその行内の文字位置です。しかし、待ってください、もっとあります-あなたはそれを愛していることを知っています...
エラーが複数行テンプレートの最初の行にある場合: ST は複数行テンプレートの開始改行を省略するため、ST は最初の宣言行 ("<<" で終わる) と 2 番目の宣言行 (実際の開始行) を効果的に結合します。テンプレート) 行、複数行のテンプレート。
そのため、少なくとも ST-4.0.8 では、実際の文字位置を取得するために、文字位置からテンプレート宣言行の長さを差し引く必要があります。
最初の "\n" の省略 (複数行のテンプレートのみ) は、"最初の行" のエラーの場合、行番号が 1 ずれているように見えることも意味します。
エラーにはファイル名とテンプレート名が含まれているはずなので、自動化されたスクリプトやツールにとっては十分な情報ですが、私たち人間にとっては少し面倒です。
幸運を。