2

StringTemplate の使用中に次のエラー メッセージが表示されました。

line 94:26: unexpected char: ')'

そして、約 15 分間、テンプレートに空行を無作為に追加および削除し、そのメッセージの数字がどのように変化するかを観察した後、問題の原因となった行を最終的に分離しました。それは 152 行目、35 番目の位置でした。

「行」の後の値は通常完全に間違っていますか、それともその出力から実際の行番号を推測する方法はありますか?

4

1 に答える 1

1

StringTemplate (ST) 4 では、最初の番号は問題の特定のテンプレート内の行番号であり、使用している場合は .stg ファイル内の行番号ではないようです (私たちのほとんどがそうしています)。

vim を使用している場合、これは、.stg ファイル内の実際の行番号を取得するために、テンプレートの最初の行の行番号から精神的にオフセットする (それらを一緒に追加する) 必要があることを意味します。

ST エラーの 2 番目の数字は、テンプレートのその行内の文字位置です。しかし、待ってください、もっとあります-あなたはそれを愛していることを知っています...

エラーが複数行テンプレートの最初の行にある場合: ST は複数行テンプレートの開始改行を省略するため、ST は最初の宣言行 ("<<" で終わる) と 2 番目の宣言行 (実際の開始行) を効果的に結合します。テンプレート) 行、複数行のテンプレート。

そのため、少なくとも ST-4.0.8 では、実際の文字位置を取得するために、文字位置からテンプレート宣言行の長さを差し引く必要があります。

最初の "\n" の省略 (複数行のテンプレートのみ) は、"最初の行" のエラーの場合、行番号が 1 ずれているように見えることも意味します。

エラーにはファイル名とテンプレート名が含まれているはずなので、自動化されたスクリプトやツールにとっては十分な情報ですが、私たち人間にとっては少し面倒です。

幸運を。

于 2015-04-30T10:01:36.697 に答える