• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

source-highlight


Commit MetaInfo

Revision8205167ce2561424b6c962b1438ac42c8c5eee04 (tree)
Time2011-04-05 20:23:23
Authorakngw <akngw@user...>
Commiterakngw

Log Message

いろいろ修正。

Change Summary

Incremental Difference

--- a/source-highlight.texinfo
+++ b/source-highlight.texinfo
@@ -63,14 +63,14 @@ Software Foundation raise funds for GNU development.''
6363 @contents
6464
6565 @ifnottex
66-@node Top, 導入, (dir), (dir)
66+@node Top, Introduction, (dir), (dir)
6767 @top GNU Source-highlight
6868
69-GNU Source-highlightは、入力したソースファイルからシンタックスを強調したドキュメントを生成する。
69+GNU Source-highlightは、入力したソースファイルから、シンタックスを強調したドキュメントを生成します。
7070
71-このドキュメントは、Source-highlightマニュアルの@value{EDITION}エディションである。
71+このドキュメントは、Source-highlightマニュアルの@value{EDITION}エディションです。
7272
73-このファイルは、GNU Source-highlightバージョン@value{VERSION}について記述している。
73+このファイルは、GNU Source-highlightバージョン@value{VERSION}について記述しています。
7474
7575 @insertcopying
7676 @end ifnottex
@@ -82,275 +82,295 @@ GNU Source-highlightは、入力したソースファイルからシンタック
8282 @c All the menus can be updated with the EMACS command
8383 @c texinfo-all-menus-update, which is normally bound to C-c C-u C-a.
8484 @menu
85-* 導入:: 目的
86-* インストール:: ダウンロードとインストール
87-* Copying:: ライセンスについて
88-* 簡単な使い方:: 非常に基本的な使い方
89-* 設定ファイル:: 実行に必要なファイル
90-* source-highlightの起動:: @command{source-highlight}の実行方法
91-* 言語の定義:: 入力言語の定義方法
92-* 出力言語の定義:: 出力フォーマットの定義方法
93-* リファレンスの生成:: アンカーとクロスリファレンス
94-* 例:: 出力例
95-* バグ報告:: バグ報告
96-* メーリングリスト::
85+* Introduction:: What's it for?
86+* Installation:: Download and installation
87+* Copying:: Licence issues
88+* Simple Usage:: Very basic usage
89+* Configuration files:: Files needed for execution
90+* Invoking source-highlight:: How to run @command{source-highlight}.
91+* Language Definitions:: How to define an input language
92+* Output Language Definitions:: How to define an output format
93+* Generating References:: Anchors and cross references
94+* Examples:: Some output examples
95+* Problems:: Reporting bugs.
96+* Mailing Lists::
9797 * Concept Index:: Index of concepts.
9898 @end menu
9999
100-@node 導入, インストール, Top, Top
101-@chapter 導入
102100
101+@node Introduction, Installation, Top, Top
102+@chapter 導入
103103 @cindex introduction
104104 @cindex features
105105
106-GNU Source-highlightは、入力したソースファイルからシンタックスが強調されたドキュメントを生成する。
107-色やスタイルについては、設定ファイルを使ったり、コマンドラインで指定する何らかのオプションを使うことで指定することができる(ボールド、イタリック、下線)。
106+GNU Source-highlightは、入力したソースファイルから、シンタックスが強調されたドキュメントを生成します。
107+設定ファイルを使ったり、コマンドラインで何らかのオプションを指定することで、色やスタイルを指定することができます(ボールド・イタリック・下線)。
108108
109-このプログラムはすでに多数の言語(たとえば、C++、Java、Perlなど)と多数のファイルフォーマット(たとえば、ログファイル、ChangeLogなど)、そして、複数の出力フォーマット(たとえば、HTML、ANSIカラーエスケープシーケンス、@LaTeX{}など)を認識している。
110-バージョン2.0からは、後でこのマニュアルで説明する簡単なシンタックスを使って自分自身で入力ソースとなる言語を記述することができる(@ref{言語の定義})。
111-バージョン2.1からは、後でこのマニュアルで説明する簡単なシンタックスを使って自分自身で出力フォーマットの言語を記述することができる(@ref{出力言語の定義})。
112-バージョン2.2からは、@emph{ctags}プログラム(@url{http://ctags.sourceforge.net})に頼る形ではあるが、クロスリファレンス(たとえば、変数名やフィールド名になどに対するもの)を生成することができるようになった(@ref{リファレンスの生成})。
109+このプログラムは、多数の言語(例えば、C++、Java、Perlなど)、多数のファイルフォーマット(例えば、ログファイル、ChangeLogなど)、複数の出力フォーマット(例えば、HTML、ANSIカラーエスケープシーケンス、@LaTeX{}など)を既に認識できます。
110+バージョン2.0からは、このマニュアルで後で説明する簡単なシンタックスを使って、入力ソースとなる言語を独自に記述することができます(@pxref{Language Definitions})。
111+バージョン2.1からは、このマニュアルで後で説明する簡単なシンタックスを使って、出力フォーマットの言語を独自に記述することができます(@pxref{Output Language Definitions})。
112+バージョン2.2からは、@emph{ctags}プログラム(@url{http://ctags.sourceforge.net})に頼る形ではありますが、クロスリファレンス(例えば、変数名やフィールド名などに対するもの)を生成することができるようになりました(@pxref{Generating References})。
113113
114114 @cindex library
115-バージョン3.0からは、GNU Source-highlightがC++ライブラリも提供するようになった。
116-これは、C++プログラマが自分のプログラムにハイライトの機能を追加できるようにするためのものだ。
117-@inforef{導入,,source-highlight-info}
115+バージョン3.0からは、GNU Source-highlightがC++ライブラリも提供するようになりました。
116+これは、C++プログラマが、自分のプログラムにハイライトの機能を追加できるようにするためのものです。
117+@inforef{Introduction,,source-highlight-info}.
118118
119119 @menu
120-* サポートしている言語::
121-* source-highlight-settingsプログラム::
122-* いくつかの言語についての注意::
123-* 簡単なフォーマッタとしてのsource-highlightの使用::
124-* 関連するソフトウェアとリンク::
120+* Supported languages::
121+* The program source-highlight-settings::
122+* Notes on some languages::
123+* Using source-highlight as a simple formatter::
124+* Related Software and Links::
125125 @end menu
126126
127-@node サポートしている言語, source-highlight-settingsプログラム, 導入, 導入
127+
128+@node Supported languages, The program source-highlight-settings, Introduction, Introduction
128129 @section サポートしている言語
129130
130-Source-highlight(@value{VERSION})で本来サポートされている言語(要するにファイルの拡張子)の完全なリストは、@code{--lang-list}で報告されるものと同じであるが、以下のものである。
131+Source-highlight(@value{VERSION})で本来サポートしている言語(要するにファイルの拡張子)の完全なリストは、@code{--lang-list}で報告されるものと同じです。
132+以下に示します。
131133
132134 @example
133135 @include lang-list.texinfo
134136 @end example
135137
136-Source-highlight(@value{VERSION})で本来サポートされている出力フォーマットの完全なリストは、@code{--outlang-list}で報告されるものと同じであるが、以下のものである。
138+Source-highlight(@value{VERSION})で本来サポートしている出力フォーマットの完全なリストは、@code{--outlang-list}で報告されるものと同じです。
139+以下に示します。
137140
138141 @example
139142 @include outlang-list.texinfo
140143 @end example
141144
142145 @noindent
143-@code{-css}と後ろに付いているものについては、@ref{出力言語マップ}で説明する@footnote{バージョン2.9までは、@code{-doc}や@code{-css-doc}という接尾辞もあったのだが、この仕組みがかなり混乱を招く複雑なものだった。うまくいけば、この新しいもののほうが良いはずだ}。
146+@code{-css}という接尾辞については別の節で説明します(@pxref{Output Language map})@footnote{バージョン2.9までは、@code{-doc}や@code{-css-doc}という接尾辞もありました。
147+この仕組みがかなり混乱を招く複雑なものでした。
148+上手く行くならば、こちらの新しいもののほうが良いはずです。}。
149+
150+私は、個人的には、こういった言語の定義を全てテストしているわけではありませんので、留意してください。
151+実際、定義ファイルが文法的に正しいことは、コマンドラインオプションの@code{--check-lang}と@code{--check-outlang}を使ってチェックしています(@pxref{Invoking source-highlight})。
152+しかし、定義が、その言語のシンタックスを本当に遵守しているかどうかは確かめてはいません(例えば、インターネットで情報を探して、言語の定義を作り上げたものがありますが、その言語でプログラムを書いた経験はなかったりします)。
153+ですから、的確ではない言語の定義があったならば教えてください。
154+そして、また、@file{test}ディレクトリに入っていない言語のプログラム例を持っている場合は、テストスイートに入れられるように、それを私に送ってください。
144155
145-留意しおいてほしいのだが、私は、個人的には、こういった言語の定義を全てテストしているわけではない。
146-実のところ、定義ファイルが文法的に正しいことは(コマンドラインオプションの@code{--check-lang}と@code{--check-outlang}を使って @ref{source-highlightの起動})チェックしているが、それらの定義がその言語のシンタックスを本当に遵守しているかは確かめてはいない(たとえば、インターネットで情報を探して言語の定義を作り上げたものがあるが、私がその言語でプログラムを書いた経験はなかったりする)。
147-なので、的確ではない言語の定義があったならば教えてほしい。
148-そしてまた、@file{test}ディレクトリに入っていない言語のプログラム例を持っている場合は、それを私に送ってほしい。
149-そうすれば、そのテストスイートに入れることができる。
150156
151-@node source-highlight-settingsプログラム, いくつかの言語についての注意, サポートしている言語, 導入
157+@node The program source-highlight-settings, Notes on some languages, Supported languages, Introduction
152158 @section @code{source-highlight-settings}プログラム
153159
154160 @cindex source-highlight-settings
155-バージョン3.0から、GNU Source-highlightには、@code{source-highlight-settings}というプログラムも入っている。
156-これは、source-highlightがその言語の定義ファイルやその他の設定ファイルが見つけられるかどうかをチェックして、念の為、ユーザのホームディレクトリの中の設定ファイルに正しい設定を格納するのに使われる。
161+バージョン3.0からは、GNU Source-highlightには、@code{source-highlight-settings}というプログラムも入っています。
162+このプログラムは、言語の定義ファイルやその他の設定ファイルをsource-highlightが見つけられるかどうかをチェックし、念の為、ユーザのホームディレクトリの設定ファイルに正しい設定を格納するのに使われます。
157163
158164 @cindex source-highlight.conf
159-特に、この格納された設定ファイルは@file{source-highlight.conf}というもので、@file{$HOME/.source-highlight/}の中に収められる。
165+具体的には、この格納設定ファイルは@file{source-highlight.conf}という名前で、@file{$HOME/.source-highlight/}の中に収められます。
160166
161167 @cindex @code{--data-dir}
162-差し当たり、このファイルには@code{--data-dir}のためのデフォルト値が格納される。
168+差し当たり、このファイルには、@code{--data-dir}のデフォルト値が格納されます。
163169
164-ユーザは、
165170 @cindex @code{SOURCE_HIGHLIGHT_DATADIR}
166-@code{SOURCE_HIGHLIGHT_DATADIR}環境変数を使って、いつでもこの設定ファイルの内容と、ハードコードされているデフォルト値をオーバーライドしてよい。
171+@code{SOURCE_HIGHLIGHT_DATADIR}環境変数を使って、この設定ファイルの内容とハードコードされているデフォルト値をいつでもオーバーライドして構いません。
167172
168-@node いくつかの言語についての注意, 簡単なフォーマッタとしてのsource-highlightの使用, source-highlight-settingsプログラム, 導入
173+
174+@node Notes on some languages, Using source-highlight as a simple formatter, The program source-highlight-settings, Introduction
169175 @section いくつかの言語についての注意
170176
171-このセクションでは、特定の言語のハイライティングについて細部に触れるつもりだ。
172-これらのノートは、ハイライティングされる言語が、コマンドラインでのさらなる指定が必要な「方言」を持つような場合に役に立つかもしれない(たとえば、特定の方言を選択するためなど)。
177+このセクションでは、特定の言語のハイライティングについて詳細に触れます。
178+ハイライティングされる言語が、コマンドラインでさらに指定が必要な「方言」を持つような場合、ここでの記述が役に立つかもしれません(例えば、特定の方言を選択するためなど)。
173179
174180 @menu
175181 * Fortran::
176182 * Perl::
177183 @end menu
178184
179-@node Fortran, Perl, いくつかの言語についての注意, いくつかの言語についての注意
185+
186+@node Fortran, Perl, Notes on some languages, Notes on some languages
180187 @subsection Fortran
181188
182189 @cindex Fortran
183-Toby Whiteが私に説明したように、Fortranは別々の「フレイバー」に分かれた状態になっている。
184-ソースファイル内でのカラムの位置によって意味が変わってしまう文字がある固定フォーマットと、そういうことの無いフリーフォーマットである。
185-たとえば、前者は、@code{*}と@code{c}によってコマンドライン(訳注:コメント行の間違い?)が開始されるが、それはその文字が最初のカラムで指定されたときだけだ(一方、フリーフォーマットではこういうことは無い)。
190+Toby Whiteが私に説明してくれましたが、Fortran言語は、異なる「フレイバー」に分かれた状態になっています。
191+固定フォーマットとフリーフォーマットです。
192+固定フォーマットは、ソースファイル内のカラム位置によって意味が変わってしまう文字があります。
193+フリーフォーマットではそういうことがありません。
194+例えば、前者は、@code{*}と@code{c}によってコマンドライン@footnote{訳注:コメント行の間違いか。}が開始されますが、これは、その文字が最初のカラムで指定された時だけです。
195+一方、フリーフォーマットではこういうことはありません。
196+
197+デフォルトでは、Fortranファイルについてフリーフォーマットを想定しています。
198+固定フォーマットが使いたい場合には、@code{--src-lang}というコマンドラインオプションで@code{fortran-fixed}を指定する必要があります。
186199
187-デフォルトでは、Fortranファイルはフリーフォマットを想定している。
188-固定フォーマットが使いたい場合には、@code{--src-lang}というコマンドラインオプションで@code{fortran-fixed}を指定する必要がある。
189200
190-@node Perl, , Fortran, いくつかの言語についての注意
201+@node Perl, , Fortran, Notes on some languages
191202 @subsection Perl
192203
193204 @cindex Perl
194-Perlの文法形式、特にその正規表現の仕様は、かなり悪夢だ;-)
195-@file{perl.lang}の中で可能な限り記述してみたが、特定の正規表現で正しくハイライトされないものがあるかもしれない。
196-実は私はPerlでプログラムを書いたことがないので、あなたのPerlプログラムで正しくハイライトされていない部分があるのならば、Perlのハイライトを改善できるように私に連絡するのを躊躇わないでほしい。
205+Perlの文法形式、特に、正規表現の仕様はかなりの悪夢です(;-))。
206+@file{perl.lang}の中で可能な限り記述しましたが、特定の正規表現において正しくハイライトされないことがあるかもしれません。
207+実は、私は、Perlでプログラムを書いたことがありません。
208+Perlプログラムで正しくハイライトされていない部分があれば、Perlのハイライトを改善できるように、遠慮無く私に連絡してください。
197209
198210 @cindex @code{--infer-lang}
199-そしてまた、Perlファイルの標準的な拡張子は@code{.pl}だけれども、Prologの言語定義がsource-highlightに実装されたのがPerlよりも早かったために、デフォルトでは、この拡張子はPrologファイルに割り当てられている。
200-しかし、@code{--infer-lang}というコマンドラインオプションを使えば、source-highlightに、入力ファイルの最初の行を調べて言語を検出させるようにすることができる(@ref{入力言語の検出方法})。
201-Perlのハイライティングであることを明示的に指定するのに、@code{--src-lang=perl}というコマンドライン指定を使ってもよい。
211+また、Perlファイルの拡張子は@code{.pl}が標準的です。
212+けれども、Prologの言語定義がsource-highlightに実装されたのがPerlよりも早かったため、デフォルトでは、Prologファイルにこの拡張子が割り当てられています。
213+@code{--infer-lang}というコマンドラインオプションを使えば、入力ファイルの最初の行をsource-highlightに調べさせて、言語を検出させるようにすることができます(@pxref{How the input language is discovered})。
214+Perlのハイライティングであることを明示するのに、@code{--src-lang=perl}というコマンドライン指定を使うこともできます。
202215
203-@node 簡単なフォーマッタとしてのsource-highlightの使用, 関連するソフトウェアとリンク, いくつかの言語についての注意, 導入
216+
217+@node Using source-highlight as a simple formatter, Related Software and Links, Notes on some languages, Introduction
204218 @section 簡単なフォーマッタとしてのsource-highlightの使用
205219
206-source-highlightを入力ファイルの簡単なフォーマッタとして使うこともできる。
207-すなわち、ハイライティングをさせずに使うこともできる@footnote{これは以前のバージョンで可能だったかもしれないが、バージョン2.5から公式にサポートされている機能だ}。
220+入力ファイルの簡単なフォーマッタとしてsource-highlightを使うこともできます。
221+つまり、ハイライティングをさせずにsource-highlightを使うこともできます@footnote{以前のバージョンでも可能だったかもしれませんが、バージョン2.5から公式にサポートされている機能です。}。
208222
209223 @cindex nohilite.lang
210-これを実現するには、コマンドラインオプションの@code{--lang-def}を使って、入力ソースに対する言語定義ファイルとして、@file{nohilite.lang}を指定する(@ref{source-highlightの起動})。
211-その言語定義は空なので、ハイライティングは実行されない。
212-だが、source-highlightは入力ファイルを指定された出力フォーマットに変換する。
213-@ref{サポートしている言語}にある入力言語の関連付けにおいて、@file{nohilite.lang}がtxtファイルと関連付けられていることに注意してほしい。
224+これを行うには、コマンドラインオプションの@code{--lang-def}を使って、入力ソースに対する言語定義ファイルとして@file{nohilite.lang}を指定します(@pxref{Invoking source-highlight})。
225+この言語定義は空なので、ハイライティングは実行されません。
226+しかし、入力ファイルは、指定された出力フォーマットに変換されます。
227+別の節で示す入力言語の関連付けにおいて、@file{nohilite.lang}がtxtファイルと関連付けられていることに注意してください(@pxref{Supported languages})。
214228
215-たとえば、これによって、テキストファイルをHTMLや@LaTeX{}に変換したいような場合にsource-highlightが使えるようになる。
216-出力の際、事実、source-highlightは、出力フォーマットにおいて特別な意味を持つ文字があっても正しくそれらの文字を生成するだろう。
229+例えば、これを使えば、テキストファイルをHTMLや@LaTeX{}に変換したいような場合にsource-highlightが使えるようになります。
230+事実、出力の際、出力フォーマットにおいて特別な意味を持つ文字があったとしても、それらの文字は正しく生成されます。
217231
218232 @include txt2texinfo.txt
219233
220-これが上のセンテンスのTexinfoソースだ:
234+上のセンテンスのTexinfoソースが以下です。
221235
222236 @include txt2texinfo.txt.texinfo
223237
224238 @noindent
225-これは、source-highlightによってハイライト無しの単純なテキストファイルとして処理されたものだ。
226-しかし、Texinfoでフォーマットされていたので、必要なエスケープ処理が自動的に実行された。
227-このように、コードとその結果を同じドキュメントの中に簡単に挿入できる(ここでの例のように)。
239+これは、ハイライト無しの単純なテキストファイルとしてsource-highlightによって処理されたものです。
240+Texinfoでフォーマットされていましたので、必要なエスケープ処理が自動的に実行されました。
241+このようにすれば、同じドキュメントの中に、コードとその結果を挿入するのが簡単になります。
228242
229-これは実際にsource-highlightが実行したフォーマットだ。
230-コメントを除いて、これが、手作業でやる場合に基本的に自分で書かなければならないことである:
243+source-highlightがフォーマットを実際に実行したのが以下です。
244+コメントを除いて、これが、手作業でやる場合に、基本的に自分で書かなければならないことです。
231245
232246 @include txt2texinfo.txt.texinfo.texinfo
233247
234248 @cindex failsafe
235-特定の入力言語をsource-highlightが処理しない場合に、さらに@code{--failsafe}オプションを使うことができ(@ref{source-highlightの起動})、そしてその場合はハイライトは実行されないが、source-highlightは入力ファイルを出力フォーマットに変換する。
249+特定の入力言語をsource-highlightが処理しない場合、さらに、@code{--failsafe}オプションを使うことができます(@pxref{Invoking source-highlight})。
250+その場合、ハイライトは実行されませんが、入力ファイルは出力フォーマットに変換されます。
236251
237252 @cindex default.lang
238-だが、入力言語が確認できなかった場合には、@file{default.lang}が使われる。
239-これは空の言語定義ファイルだが、これをカスタマイズしたいと考えることもあるかもしれない。
253+しかしながら、入力言語が確認できなかった場合には、@file{default.lang}が使われますので注意してください。
254+これは、空の言語定義ファイルです。
255+このファイルをカスタマイズしたい場合もあるでしょう。
256+
240257
241-@node 関連するソフトウェアとリンク, , 簡単なフォーマッタとしてのsource-highlightの使用, 導入
258+@node Related Software and Links, , Using source-highlight as a simple formatter, Introduction
242259 @section 関連するソフトウェアとリンク
243260
244-ここに、バックエンドとして使ったり(つまりsource-highlightへのインターフェイスを用意している)、その特徴の一部を使ったり(たとえば、定義ファイル)という意味において、source-highlightと関連しているソフトウェアを挙げていく:
261+ここで、バックエンドとして使ったり(source-highlightへのインターフェイスを用意していたり)、あるいは、その特徴(例えば、定義ファイル)の一部を使ったりという意味においてsource-highlightと関連しているソフトウェアを挙げていきます。
245262
246263 @itemize
247-
248264 @item
249265 @cindex Source-Highlight-Qt
250266 @cindex Qt
251-Source-highlight-qtは、GNU Source-Highlightライブラリに依存して、Qtドキュメントの中でシンタックスのハイライティングを実行するためのライブラリである。
252-このライブラリは、qtの抽象クラスのQSyntaxHighlighterの実装を提供していて、Qt3とQt4の両方に対応している。
267+Source-highlight-qtは、Qtドキュメントの中でシンタックスのハイライティングを実行するためのライブラリです。
268+GNU Source-Highlightライブラリに依存しています。
269+qtの抽象クラスであるQSyntaxHighlighterの実装を提供していて、Qt3とQt4の両方に対応しています。
253270
254271 @uref{http://srchiliteqt.sourceforge.net}.
255272
256273 @item
257274 @cindex QSource-Highlight
258275 @cindex Qt
259-QSource-Highlightは、GNU Source-HighlightのQt4フロントエンドだ(Source-Highlight-Qtライブラリに依存している)。
260-コードをオンザフライでハイライトすることができ、source-highlightがサポートしている全てのフォーマットでハイライトされた出力を得ることができる(たとえば、HTML、LaTeX、Texinfoなど)。
261-それから、フォーマットされた出力をコピーし、それをペーストできる(たとえば、ブログなどに)。
262-またファイルに保存することもできる。
263-いくつかの出力フォーマット(たとえば、HTML、XHTMLなど)については、ハイライトされた出力のプレビューを見ることができる。
276+QSource-Highlightは、GNU Source-HighlightのQt4フロントエンドです(Source-Highlight-Qtライブラリに依存しています)。
277+オンザフライ@footnote{訳注:中間ファイルを作成しないことか。}でコードをハイライトすることができます。
278+また、source-highlightがサポートしている全フォーマット(例えば、HTML、LaTeX、Texinfoなど)について、ハイライトされた出力を得ることができます。
279+それから、フォーマットされた出力をコピーし、例えば、ブログなどにペーストすることができます。
280+あるいは、ファイルに保存することもできます。
281+出力フォーマット(例えば、HTML、XHTMLなど)によっては、ハイライトされた出力のプレビューを見ることができます。
264282
265283 @uref{http://qsrchilite.sourceforge.net}.
266284
267285 @item
268286 @cindex SourceHighlightIDE
269287 @cindex KDE
270-SourceHighlightIDEは、新たなsource-highlight用の言語定義を開発したりデバッグしたりするために私が書いた小さなIDE(KDE用)だ。
288+SourceHighlightIDEは、新たなsource-highlight用の言語定義を開発したり、デバッグしたりするために私が書いた小さなIDE(KDE用)です。
271289
272290 @uref{http://srchighliteide.sourceforge.net}.
273291
274292 @item
275293 @cindex Ksrc2highlight
276294 @cindex KDE
277-Martin Gebertがsource-highlightプログラムのKDEインターフェイスを実装した(彼は素晴しい仕事をしてくれた)。
278-@emph{Ksrc2highlight}というものだ。
279-試してみたい場合は以下:
295+Martin Gebertは、source-highlightプログラムのKDEインターフェイスを実装しました(彼は、素晴しい仕事をしました)。
296+@emph{Ksrc2highlight}と呼ばれます。
297+試してみたい場合は以下を見てください。
280298
281299 @uref{http://www.mgebert.de/Ksrc2highlight}.
282300
283301 @item
284302 @cindex java2html
285-java2htmlのJavaバージョンもある。
286-以下のところにある。
303+Java版のjava2htmlというのもあります。
304+以下のところにあります。
287305
288306 @uref{http://www.generationjava.com/projects/Java2Html.shtml}.
289307
290308 @item
291-このウェブサイトはオンラインでハイライティングをするためのsource-highlightのインターフェイスを提供している。
309+次のウェブサイトは、オンラインでハイライティングをするためのsource-highlightのインターフェイスを提供しています。
292310
293-@uref{http://www.alaide.com/outils_colorsyntaxe.php}
311+@uref{http://www.alaide.com/outils_colorsyntaxe.php}.
294312
295313 @item
296314 @cindex SHJS
297-SHJSは、HTMLドキュメントの中でソースコード片をハイライトするJavaScriptプログラムだ。
298-SHJSを使ったドキュメントはウェブブラウザによってクライアントサイドでハイライトされる。
299-SHJSはSource-highlightの言語定義を使用している。
315+SHJSは、HTMLドキュメントの中でソースコード片をハイライトするJavaScriptプログラムです。
316+SHJSを使ったドキュメントは、ウェブブラウザによってクライアントサイドでハイライトされます。
317+SHJSはSource-highlightの言語定義を使用しています。
300318
301-@uref{http://shjs.sourceforge.net}
319+@uref{http://shjs.sourceforge.net}.
302320
303321 @item
304322 @cindex code2blog
305-Code2blogは、source-highlightのpyGTKフロントエンドで、ソースコードをHTMLへ簡単に変換するためのものだ。
323+Code2blogは、source-highlightのpyGTKフロントエンドです。
324+ソースコードをHTMLへ簡単に変換するためのものです。
306325
307-@uref{http://code.google.com/p/code2blog}
326+@uref{http://code.google.com/p/code2blog}.
308327
309328 @item
310329 @cindex Apache
311-Andy Buckleyは、source-highlightのラッパを書いた。
312-これは、ウェブページの中でソースコードをオンザフライにハイライティングするApacheフィルタとして使うことができる。
330+Andy Buckleyは、source-highlightのラッパを書きました。
331+ウェブページで、ソースコードをオンザフライにハイライティングするApacheフィルタとして使うことができます。
313332
314-@uref{http://www.insectnation.org/projects/filter-src-highlight}
333+@uref{http://www.insectnation.org/projects/filter-src-highlight}.
315334
316335 @item
317336 @cindex RapidWeaver
318-Roger Nilssonは、RapidWeaverというOSX用のポピュラーなウェブデザインアプリケーションで使えるsource-highlightのフロントエンドを書いた。
319-このフロントエンドはHigh-Lightと言うもので、RapidWeaverの内部で、ユーザが簡単にシンタックスが色付けされたコードを追加することができるようにするものだ。
337+Roger Nilssonは、RapidWeaverというOSX用のポピュラーなウェブデザインアプリケーションで使えるsource-highlightのフロントエンドを書きました。
338+このフロントエンドはHigh-Lightと言うものです。
339+RapidWeaverの内部で、シンタックスが色付けされたコードをユーザが簡単に追加することができるようにするものです。
320340
321-@uref{http://nilrogsplace.se/webdesign/rapidweaver/plugins/high-light/index_en.html}
341+@uref{http://nilrogsplace.se/webdesign/rapidweaver/plugins/high-light/index_en.html}.
322342
323343 @item
324344 @cindex Firefox
325-Mauricio Zepedaは、自動的にファイルをハイライトしてFirefoxでそれを表示するスクリプトについて、彼のブログに記事を書いた。
345+Mauricio Zepedaは、自動的にファイルをハイライトし、Firefoxでそれを表示するスクリプトについてブログに記事を書きました。
326346
327-@uref{http://chillorb.com/?p=122}
347+@uref{http://chillorb.com/?p=122}.
328348
329349 @item
330350 @cindex Wiki
331351 @cindex Ikiwiki
332-Jason Blevinsは、ソースコード片やファイル全体のシンタックスハイライティングを有効にするIkiwiki用のプラグインを作成した。
352+Jason Blevinsは、Ikiwiki用のプラグインを作成しました。
353+このプラグインは、source-highlightを使って、ソースコード片やファイル全体のシンタックスハイライティングを有効にするものです。
333354
334-@uref{http://jblevins.org/projects/ikiwiki/code}
355+@uref{http://jblevins.org/projects/ikiwiki/code}.
335356
336357 @item
337358 @cindex Wiki
338359 @cindex Php
339-Pascal Bleserは、プロセスを生成したり、source-highlightのCGIを使うのではなく、PHPから直接GNU source-highlightライブラリを使うPHP拡張を作成した。
340-
341-@uref{http://code.google.com/p/php-source-highlight/}
342-
360+Pascal Bleserは、PHPから直接GNU source-highlightライブラリを使うPHP拡張を作成しました。
361+プロセスを生成したり、source-highlightのCGIを使うものではありません。
343362
363+@uref{http://code.google.com/p/php-source-highlight/}.
344364 @end itemize
345365
346366
347-@node インストール, Copying, 導入, Top
367+@node Installation, Copying, Introduction, Top
348368 @chapter インストール
349369 @cindex インストール
350370
351-ビルドやインストールの詳細については@file{INSTALL}を見てほしい。
352-そもそも、ソースで入手したLinuxソフトウェアをコンパイルするのに慣れているのであれば、いつもの手順を単に辿ればよい。
353-すなわち、ディレクトリにダウンロードしたファイルをuntarして、それから以下のようにする:
371+構築やインストールの詳細については@file{INSTALL}を見てください。
372+そもそも、ソースで入手したLinuxソフトウェアをコンパイルするのに慣れているのであれば、いつもの手順を単に辿れば良いです。
373+つまり、ディレクトリにダウンロードしたファイルをuntarして、それから、次のようにします。
354374
355375 @example
356376 cd <source code main directory>
@@ -359,253 +379,273 @@ make
359379 make install
360380 @end example
361381
362-しかし、これを実行する前には、source-highlightをビルドするのに必要なものが全てそろっているかチェックしてほしい。
363-@ref{source-highlightのビルドに必要なもの}
382+これを実行する前には、source-highlightを構築するのに必要なものが全て揃っているかチェックするようにしてください。
383+@xref{What you need to build source-highlight}.
364384
365-注意:./configureの@code{--prefix}オプションで違うインストールディレクトリを指定した(たとえば、@code{./configure --prefix=<your home>})のでない限り、@code{make install}の実行にはrootになっている必要がある。
385+注意:./configureの@code{--prefix}オプションで別のインストールディレクトリを指定した(例えば、@code{./configure --prefix=<your home>})のでなければ、@code{make install}の実行にはrootになっている必要があります。
366386
367-configureスクリプトに渡すことのできるオプションが全て見るのには、@code{./configure --help}を実行してほしい。
387+configureスクリプトに渡せるオプションを全て見る場合には、@code{./configure --help}を実行してください。
368388
369389 @cindex directories
370-
371-各ファイルは以下のディレクトリへインストールされる:
390+各ファイルは、以下のディレクトリへインストールされます。
372391
373392 @table @code
374393 @item 実行ファイル
375394 @code{prefix/bin}
395+
376396 @item ドキュメントと出力例
377397 @code{prefix/share/doc/source-highlight}
398+
378399 @item ライブラリの例
379400 @code{prefix/share/doc/source-highlight/examples}
380-@item ライブラリAPIのドキュメンテーション
401+
402+@item ライブラリAPIのドキュメント
381403 @code{prefix/share/doc/source-highlight/api}
404+
382405 @item 設定ファイル
383406 @code{prefix/share/source-highlight}
384407 @end table
385408
386-prefixのデフォルト値は@code{/usr/local}だが、configureの@code{--prefix}オプションで変更してもよい。
387-@code{configure}のオプションについてさらに詳しくは、@code{configure --help}を実行してほしい。
409+prefixのデフォルト値は@code{/usr/local}です。
410+configureの@code{--prefix}オプションで変更できます。
411+@code{configure}のオプションについて詳しくは、@code{configure --help}を実行してください。
388412
389413 @cindex bash completion
390-Tiziano Mullerは、source-highlight用のbashの補完用の設定ファイルを書いた。
391-これは@code{sysconfdir/bash_completion.d}というディレクトリにデフォルトでインストールされる。
392-@code{sysconfdir}はデフォルトで@code{prefix/etc}になっている。
393-しかし通常、bashの補完スクリプトが設定ファイルを探すディレクトリは、@code{/etc/bash_completion.d}だ。
394-なので、configureスクリプトのコマンドラインオプションの@code{--with-bash-completion}を使うことで、このディレクトリを明示的に指定することをお勧めする。
414+Tiziano Mullerは、source-highlight用のbash補完設定ファイルを書きました。
415+@code{sysconfdir/bash_completion.d}というディレクトリにデフォルトでインストールされます。
416+@code{sysconfdir}はデフォルトでは@code{prefix/etc}です。
417+しかし、通常、bashの補完スクリプトが設定ファイルを探すディレクトリは@code{/etc/bash_completion.d}です。
418+ですから、configureスクリプトのコマンドラインオプション@code{--with-bash-completion}を使って、このディレクトリを明示することを推奨します。
395419
396420 @cindex library
397421 @cindex @code{--with-doxygen}
398422 @cindex doxygen
399-Source-highlightライブラリのAPIドキュメンテーションをビルドしてインストールしたい場合には、@code{--with-doxygen}というオプションを付けて@code{configure}を実行する必要があるが、このドキュメンテーションをビルドするのに@emph{Doxygen} @url{http://www.doxygen.org}というプログラムが必要となる。
400-ドキュメンテーションは次のディレクトリにインストールされる。
423+Source-highlightライブラリのAPIドキュメントを構築し、インストールしたい場合には、@code{--with-doxygen}オプションを付けて@code{configure}を実行する必要があります。
424+このドキュメントを構築するには、@emph{Doxygen} @url{http://www.doxygen.org}というプログラムが必要です。
425+ドキュメントは、次のディレクトリにインストールされます。
401426
402427 @table @code
403-@item ライブラリAPIドキュメンテーション
428+@item ライブラリAPIドキュメント
404429 @code{prefix/share/doc/source-highlight/api}
405430 @end table
406431
407432
408433 @cindex java2html
409434 @cindex cpp2html
410-注意:もともとは、Source-highlightではなく、@emph{GNU java2html}と@emph{GNU cpp2html}という名前の、二つの別個のプログラムであった。
411-移行を容易にするために、Source-highlightと一緒に同名のシェルスクリプトが二つインストールされる(しかし、それを使うのはお勧めしない。deprecatedだ)。
435+注意:もともとは、Source-highlightではなく、@emph{GNU java2html}と@emph{GNU cpp2html}という名前の二つの別個のプログラムでした。
436+移行を容易にするために、同名の二つのシェルスクリプトがSource-highlightと一緒にインストールされます。
437+ただし、使用するのは推奨しません。
438+deprecatedです。
412439
413440 @menu
414-* qmakeでのビルド::
415-* ダウンロード::
416-* Gitの匿名チェックアウト::
417-* source-highlightのビルドに必要なもの::
418-* Boost Regexライブラリのインストールに関するTips::
419-* 前のバージョンからのパッチ::
420-* lessでのsource-highlightの使用::
421-* source-highlightのCGIとして使用::
422-* .rpmのビルド::
441+* Building with qmake::
442+* Download::
443+* Anonymous Git Checkout::
444+* What you need to build source-highlight::
445+* Tips on installing Boost Regex library::
446+* Patching from a previous version::
447+* Using source-highlight with less::
448+* Using source-highlight as a CGI::
449+* Building .rpm::
423450 @end menu
424451
425-@node qmakeでのビルド, ダウンロード, インストール, インストール
426-@section qmakeでのビルド
452+
453+@node Building with qmake, Download, Installation, Installation
454+@section qmakeでの構築
427455 @cindex qmake
428456
429-バージョン3.1.2からは、Qtライブラリ(@uref{http://qt.nokia.com})のビルドツールである@code{qmake}を使っても@value{srchilite}をビルドすることができるようになった。
430-これにより、Unixシェルを持たないWindowsベースのシステム上でも@value{srchilite}をビルドできるようになり、特に、
457+バージョン3.1.2からは、Qtライブラリ(@uref{http://qt.nokia.com})の構築ツールである@code{qmake}を使っても@value{srchilite}を構築することができるようになりました。
458+これにより、Unixシェルを持たないWindowsベースのシステム上でも@value{srchilite}を構築できるようになりました。
431459 @cindex MSVC
432-Microsoft MSVCコンパイラでも@value{srchilite}がビルドできるようになった。
433-このやり方はUnixシェルが無かったり、あるいは、MSVCコンパイラを本当に使う必要がある場合にだけ使うべきだ(たとえば、MSVCベースのプログラムで使うのに@value{srchilitelib}をビルドしたい場合)。(訳注:原文に閉じカッコが見当たらないのでここに入れてみた)
460+特に、Microsoft MSVCコンパイラでも@value{srchilite}が構築できるようになりました。
461+この方法は、Unixシェルが無かったり、あるいは、MSVCコンパイラを本当に使う必要がある場合(例えば、MSVCベースのプログラムで使うのに@value{srchilitelib}を構築したい場合)@footnote{訳注:原文に閉じカッコが見当たらないのでここに入れてみました。}にだけ使用すべきです。
434462 @cindex boost
435-さらにboost regexライブラリも必要で、MSVCを使う場合は、このライブラリのインストールパッケージが@url{http://www.boostpro.com}で手に入る。
463+さらに、boost regexライブラリも必要です。
464+MSVCを使う場合は、このライブラリのインストールパッケージが@url{http://www.boostpro.com}で入手できます。
436465
437-このビルドメカニズムはまだ実験的なもので、MSVCを使うときには、@value{srchilitelib}の静的バージョンだけをビルドできる(.dllではない)。
466+この構築メカニズムはまだ実験的なものです。
467+MSVCを使う時には、@value{srchilitelib}の静的バージョンだけが構築できます(.dllではありません)。
438468 @cindex MinGW
439-また、MinGWコンパイラ(@uref{http://www.mingw.org})があって(たとえば、QtのWindowsディストリビューションと一緒に来るものがある)、
440469 @cindex msys
441-Msys(@uref{http://www.mingw.org/wiki/MSYS})が無いような場合には、この方法を使うこともできる。
442-そうなければ、やはり@code{configure}ベースのメカニズムを使うべきだ。
470+また、MinGWコンパイラ(@uref{http://www.mingw.org})があって(例えば、QtのWindowsディストリビューションと一緒に来るものがあります)、Msys(@uref{http://www.mingw.org/wiki/MSYS})が無いような場合には、この方法を使うこともできます。
471+それ以外の場合は、やはり、@code{configure}ベースのメカニズムを使うべきでしょう。
443472
444-@code{qmake}を使うとき、ビルドの際に指定できるオプション(おまけにqmakeを使うときには普通使うもの)が少しあって、これらのオプションは環境変数を使ってだけ指定することができる:
473+@code{qmake}を使う時、構築の際に指定できるオプション(その上、qmakeを使う時には普通使うもの)が以下のように少しだけあります。
474+これらのオプションは、環境変数を使ってだけ指定することができます。
445475
446476 @table @code
447477 @item BOOST_REGEX
448-デフォルトでは、@code{boost_regex}がboostライブラリをリンクするのに使われる(つまり@code{-lboost_regex}))。
449-boost regexライブラリが違う名前になっている場合は、この環境変数を使って名前を指定しなければならない。
450-たとえば、@code{libboost_regex-mt.lib}や@code{boost_regex-mt.dll}という名前のライブラリファイルの場合は、この変数を@code{boost_regex-mt}にセットしなければならない。
478+デフォルトでは、boostライブラリをリンクするのに@code{boost_regex}が使われます(つまり、@code{-lboost_regex})。
479+boost regexライブラリが違う名前になっている場合は、この環境変数を使って名前を指定しなければなりません。
480+例えば、@code{libboost_regex-mt.lib}や@code{boost_regex-mt.dll}という名前のライブラリファイルの場合は、この変数を@code{boost_regex-mt}にセットしなければなりません。
481+
451482 @item INCPATH
452-boostヘッダファイルのパスを指定する。
483+boostヘッダファイルのパスを指定します。
484+
453485 @item LIBS
454-boost libファイルのパスを指定する。
486+boost libファイルのパスを指定します。
455487 @end table
456488
457-boostライブラリのインクルードパスとライブラリパスの指定は、システムパスディクレトリにそれらが無いのであれば、完全にあなたが@code{INCPATH}と@code{LIBS}を使って決めることだいうことを考慮に入れておいてほしい。
489+boostライブラリのインクルードパスとライブラリパスの指定は、システムパスのディクレトリにライブラリバスが無いのであれば、@code{INCPATH}と@code{LIBS}を使ってユーザが完全に決めるということを考慮に入れておいてください。
490+
491+また、qmakeを実行する時には、@code{-recursive}というオプションを必ず使うということを覚えていてください。
458492
459-また、qmakeを実行するときには、@code{-recursive}というオプションを常に使うということを覚えていてほしい。
493+次に、@code{make install}を実行したい場合には、@code{INSTALL_ROOT}変数を使って、インストールするパスのプリフィックスを指定することができます。
494+そうしない場合、そのパスはルートディレクトリです。
460495
461-次に、@code{make install}を実行したい場合には、@code{INSTALL_ROOT}変数を使って、インストールするパスのプリフィックスを指定することができる。
462-そうしない場合はパスはルートディレクトリである。
463496
464-@node ダウンロード, Gitの匿名チェックアウト, qmakeでのビルド, インストール
497+@node Download, Anonymous Git Checkout, Building with qmake, Installation
465498 @section ダウンロード
466499 @cindex download
467500
468-GNUのftpサイト:@uref{ftp://ftp.gnu.org/gnu/src-highlite}や、そのミラーサイト(@uref{http://www.gnu.org/prep/ftp.html}を見よ)のいずれかからダウンロードすることができる。
501+GNUのftpサイト@uref{ftp://ftp.gnu.org/gnu/src-highlite}やミラーサイト(@uref{http://www.gnu.org/prep/ftp.html}を見よ)のいずれかからダウンロードができます。
469502
470-私はWindowsバイナリをもう配布しない。
471-@uref{http://www.cygwin.com}から入手できるCygnus C/C++コンパイラでビルドが可能だからだ。
472-しかし、そういったコンパイラをダウンロードしたくなかったり、Boost Regexライブラリについて問題を感じているような場合には(@ref{Boost Regexライブラリのインストールに関するTips}を参照のこと。留意してほしいのだが、これらのライブラリがインストールされていなくて、使用しているC/C++コンパイラのディストリビューションにビルド済みのパッケージが用意されていなければ、ソースからBoostライブラリをビルドするのにいくらか時間がかかるかもしれない。数時間かかることも考えられる)、メールで直接そういったバイナリを私にリクエストしてもよい(メールアドレスは私のホームページを見てほしい)。
473-喜んでお送りするつもりだ。
474-Source-highlightのMS-Windowsポートの一つが@uref{http://gnuwin32.sourceforge.net}から入手できる。
475-しかし、私はそれらのバイナリを個人的にメンテナンスしていないし、古くなっているかもしれない。
503+Windowsバイナリはもう配布しません。
504+@uref{http://www.cygwin.com}から入手できるCygnus C/C++コンパイラで構築が可能だからです。
505+しかし、そういったコンパイラをダウンロードしたくなかったり、Boost Regexライブラリ(see also @ref{Tips on installing Boost Regex library}.
506+留意しておいてほしいですが、これらのライブラリがインストールされていなくて、使用しているC/C++コンパイラのディストリビューションに構築済みのパッケージが用意されていなければ、ソースからBoostライブラリを構築するのにいくらか時間がかかるかもしれません。数時間かかることも考えられます)について問題を感じているような場合には、そういったバイナリをメールで直接私にリクエストしても構いません(メールアドレスについては私のホームページで探してください)。
507+喜んでバイナリを送ります。
508+Source-highlightのMS-Windowsポートの一つは、@uref{http://gnuwin32.sourceforge.net}から入手できます。
509+しかし、私は、このバイナリを個人的にメンテナンスしていませんし、古くなっていることもあるかもしれません。
476510
477-アーカイブはGNU gpg(@uref{http://www.gnupg.org})を使って私がデジタル署名している。
478-私のGPGのパブリックキーは私のホームページ(@value{myhomepage})で見つけられる。
511+アーカイブには、GNU gpg(@uref{http://www.gnupg.org})を使って私がデジタル署名しています。
512+GPGのパブリックキーは私のホームページ(@value{myhomepage})で見つけられます。
479513
480-個別のリリースのもが利用可能であれば、パッチも入手できる(以前のバージョンからのパッチについては後述)。
514+個別のリリースに対するパッチが利用できる場合、パッチも入手できます(以前のバージョンからのパッチについては後述します)。
481515
482-@node Gitの匿名チェックアウト, source-highlightのビルドに必要なもの, ダウンロード, インストール
483-@section Anonymous Git Checkout
516+
517+@node Anonymous Git Checkout, What you need to build source-highlight, Download, Installation
518+@section Gitの匿名チェックアウト
484519
485520 @cindex Git
486-このプロジェクトのgitリポジトリは、以下のクローン化の手順を通してチェックアウトすることができる@footnote{Source-highlightのバージョン3.1.2から、Git(@uref{http://git-scm.com/})を採用することでCVSリポジトリは使わなくなった}:
521+このプロジェクトのgitリポジトリは、以下のクローン化の手順を行ってチェックアウトすることができます@footnote{Source-highlightのバージョン3.1.2から、Git(@uref{http://git-scm.com/})を採用しましたので、CVSリポジトリは使わなくなりました}。
487522
488523 @example
489524 git clone git://git.savannah.gnu.org/src-highlite.git
490525 @end example
491526
492-詳しい手順については次のアドレスで見つけられる:
527+詳しい手順については次のアドレスで見つけられます。
493528
494529 @uref{http://savannah.gnu.org/projects/src-highlite}.
495530
496-そして、gitリポジトリは次のアドレスでオンラインで見ることもできる:
531+また、gitリポジトリは、次のアドレスからオンラインで見ることができます。
497532
498533 @uref{http://git.savannah.gnu.org/cgit/src-highlite.git}.
499534
500-このように、Source-highlightの最新の開発ソースを手に入れられるが、それは不安定なものかもしれないことに注意してほしい。
501-このプログラムを修正したり拡張したりする場合には、この方法がベストである。
502-パッチを私に送るのに、そのパッチは、Gitリポジトリの最新のソースに対するものであるべきだ。
535+以上のようにすれば、Source-highlightの最新の開発ソースを手に入れられます。
536+ただし、不安定なものかもしれないので注意してください。
537+このプログラムを修正したり拡張したりする場合には、この方法がベストです。
538+パッチを私に送る場合、パッチは、Gitリポジトリの最新のソースに対するものにしてください。
503539
504-反対に、指定したリリースのソースをgitを通して入手したい場合、たとえばバージョンX.Y.Zならば、rel_X_Y_Zというタグを指定しなければならない。
540+反対に、指定したリリースのソースをgit経由で入手したい場合、例えば、バージョンX.Y.Zならば、rel_X_Y_Zというタグを指定しなければなりません。
505541
506-Gitリポジトリから手に入れたソースをコンパイルするとき、@code{configure}や@code{make}コマンドを初めて実行する前に次のコマンドを実行しなければならない:
542+Gitリポジトリから入手したソースをコンパイルする場合、@code{configure}や@code{make}コマンドを最初に実行する前に次のコマンドを実行しなければなりません。
507543
508544 @example
509545 autoreconf -i
510546 @end example
511547
512548 @noindent
513-これによってautotoolsのコマンドが正しい順番に実行され、ひょっとしたら欠けているかもしれないファイルもコピーしてくれるだろう。
514-これを成功させるためには、
549+これによって、autotoolsのコマンドが正しい順番に実行されます。
550+ひょっとしたら欠けているかもしれないファイルもコピーしてくれるでしょう。
515551 @cindex automake
516552 @cindex autoconf
517553 @cindex libtool
518-@code{automake}と@code{autoconf}、@code{libtool}の最近のバージョンがインストールされていたほうがよい。
554+これを成功させるには、@code{automake}、@code{autoconf}、@code{libtool}の最近のバージョンがインストールされていたほうがよいでしょう。
555+
519556
520-@node source-highlightのビルドに必要なもの, Boost Regexライブラリのインストールに関するTips, Gitの匿名チェックアウト, インストール
521-@section source-highlightのビルドに必要なもの
557+@node What you need to build source-highlight, Tips on installing Boost Regex library, Anonymous Git Checkout, Installation
558+@section source-highlightの構築に必要なもの
522559
523560 @cindex compilation requirements
524561 @cindex building requirements
525562
526563 @cindex boost
527-バージョン2.0から、Source-highlightは、boost (@uref{http://www.boost.org})が提供している正規表現に依存しているので、最低でもboostのregexライブラリをインストールする必要がある。
564+バージョン2.0からは、Source-highlightは、boost(@uref{http://www.boost.org})が提供する正規表現に依存しています。
565+そのため、boostのregexライブラリを最低でもインストールする必要があります。
528566
529-ほとんどのGNU/Linuxディストリビューションでは、コンパイルされた状態ですでにこのライブラリが用意されている。
530-使用しているディストリビューションのパッケージを使うならば、boostライブラリの開発パッケージも必ずインストールしてほしい。
567+ほとんどのGNU/Linuxディストリビューションでは、コンパイルされた状態でこのライブラリが既に用意されています。
568+使用ディストリビューションのパッケージを使う場合、boostライブラリの開発パッケージも必ずインストールしてください。
531569
532-Boost Regexライブラリのインストールに問題がある場合や、このライブラリのためにsource-highlightのコンパイルに問題がある場合には、@ref{Boost Regexライブラリのインストールに関するTips}を見てほしい。
570+Boost Regexライブラリのインストールに問題がある場合、あるいは、このライブラリのためにsource-highlightのコンパイルに問題がある場合には、次節を見てください(@pxref{Tips on installing Boost Regex library})。
533571
534-(たくさん違うバージョンを使っているため)特定のバージョンのBoost regexライブラリを使いたい場合には、configureの@code{--with-boost-regex}オプションを使って特定のサフィックスを指定することができる。
535-たとえば次のようになる。
572+多数のバージョンを使っているなどの理由で、特定のバージョンのBoost regexライブラリを使いたい場合には、configureの@code{--with-boost-regex}オプションを使って、特定のサフィックスを指定することができます。
573+例えば、次のようになります。
536574
537575 @example
538576 ./configure --with-boost-regex=boost_regex-gcc-1_31
539577 @end example
540578
541-Source-highlightはGNU/Linuxのもとで、gcc (C++)とbison (yacc)、flex (lex)を利用して開発され、@uref{http://www.cygwin.com}から入手できるCygwin C/C++コンパイラでWin32に移植された。
579+Source-highlightはGNU/Linux上で開発されました。
580+gcc(C++)、bison(yacc)、flex(lex)を利用しています。
581+また、@uref{http://www.cygwin.com}から入手できるCygwin C/C++コンパイラを使ってWin32に移植しました。
542582
543-私は
544583 @cindex automake
545584 @cindex autoconf
546585 @cindex libtool
547-GNU Autoconf@footnote{@uref{http://www.gnu.org/software/autoconf}}とGNU Automake@footnote{@uref{http://www.gnu.org/software/automake}}、そしてGNU Libtool@footnote{@uref{http://www.gnu.org/software/libtool}}という素晴しいソフトウェアを使っている。
586+私は、GNU Autoconf@footnote{@uref{http://www.gnu.org/software/autoconf}}、GNU Automake@footnote{@uref{http://www.gnu.org/software/automake}}、GNU Libtool@footnote{@uref{http://www.gnu.org/software/libtool}}という素晴しいソフトウェアを使っています。
548587 @cindex gnulib
549-バージョン2.6から、Gnulib - GNU Portablility Library@footnote{@uref{http://www.gnu.org/software/gnulib}}も使い初めた。
550-これは「GNUのパッケージ間で共有するための、GNUの共通コードの中心の位置」だ(例を挙げると、@code{getopt_long}関数の存在と正しさのチェックをするのにGnulibに頼っている)。
588+バージョン2.6から、Gnulib - GNU Portablility Library@footnote{@uref{http://www.gnu.org/software/gnulib}}も使い始めました。
589+これは、「GNUパッケージの間で共有するGNUの共通コードの中心」です(例を挙げると、@code{getopt_long}関数が存在しているか、そして、正しいかをチェックをするのにGnulibに頼っています)。
590+
591+最後ですが、コマンドラインの解析には@emph{GNU gengetopt}(@uref{http://www.gnu.org/software/gengetopt})を使いました。
551592
552-最後に、私はコマンドラインの解析のため、@emph{GNU gengetopt}(@uref{http://www.gnu.org/software/gengetopt})を使った。
593+また、動的オーバーロードを許す@emph{doublecpp}(@uref{http://doublecpp.sourceforge.net})も使い始めました。
553594
554-動的オーバーロードを許す@emph{doublecpp}(@uref{http://doublecpp.sourceforge.net})も使い始めた。
595+実際、boost regexライブラリは別にすると、source-highlightの開発をしたいと思わないかぎり、source-highlightを構築するのに上に挙げたその他のツールは必要ではありません(実際のところ、前述したツールを使って生成した出力ソースが提供されています)。
555596
556-実際、boost regexライブラリは別にすると、source-highlightの開発をしたいと思わないかぎり、source-highlightをビルドするのに上に挙げたその他のツールは必要ではない(確かに私は前述したツールを使って生成した出力ソースを提供している)。
597+しかし、Gitからソースを取得した場合、必要となる他のツールもあります。
598+@xref{Anonymous Git Checkout}.
557599
558-しかし、Gitからソースを取得したのならば、他のツールがいくつか必要となる。
559-@ref{Gitの匿名チェックアウト}を参照してほしい。
560600
561-@node Boost Regexライブラリのインストールに関するTips, 前のバージョンからのパッチ, source-highlightのビルドに必要なもの, インストール
601+@node Tips on installing Boost Regex library, Patching from a previous version, What you need to build source-highlight, Installation
562602 @section Boost Regexライブラリのインストールに関するTips
563603
564604 @cindex Boost regex
565605
566-source-highlightのコンパイルに何の問題もなければ、幸運にもこのセクションは飛ばしてかまわない@footnote{バージョン2.11からは、boost regexライブラリがコンパイラのデフォルトパスにあれば、@code{configure}スクリプトが正しく見つけてくれるはずだ}。:-)
606+source-highlightのコンパイルに何の問題も無ければ、幸運にも、このセクションは飛ばすことができます@footnote{バージョン2.11からは、boost regexライブラリがコンパイラのデフォルトパスにあれば、@code{configure}スクリプトが正しく見つけてくれるはずです}。:-)
567607
568-このセクションを書いたのは、Boost Regexライブラリをソースからインストールした後の問題を報告してくるユーザが多数いるからだ。
569-このライブラリが既に正しくインストールされている場合ですら、source-highlightのコンパイルで問題が起きるユーザも他にいる(特にcygwinを使っているwindowsユーザ)。
570-Boost Regexライブラリのインストールや使用に対して、このセクションがいくらかの光を照らしてくれることを期待している。
571-このセクションは、Boostライブラリのコンパイルの仕方を説明するものではないことに注意してほしい(@uref{http://www.boost.org}で見つけられるドキュメンテーションはよく出来ている)。
572-このセクションは、Boostライブラリのインストールが成功した後でさえ、source-highlightのコンパイルに問題が発生する場合に、事態をどのように調整するかを説明する。
608+このセクションを書いたのは、Boost Regexライブラリをソースからインストールした後の問題を報告してくるユーザが多数いるからです。
609+このライブラリが既に正しくインストールされている場合ですら、source-highlightのコンパイルで問題が起きるユーザも他にいます(特に、cygwinを使っているwindowsユーザです)。
610+Boost Regexライブラリのインストールや使用について、このセクションがいくらかの光を照らしてくれることを期待しています。
611+このセクションは、Boostライブラリのコンパイルの仕方を説明するものではないことに注意してください(@uref{http://www.boost.org}にあるドキュメントではきちんと説明されています)。
612+このセクションは、Boostライブラリのインストールが成功した後でも、source-highlightのコンパイルに問題が発生する場合に、事態をどのように調整するかを説明します。
573613
574-まず最初、使用しているディストリビューションがBoost regexライブラリのパッケージを用意している場合、boostライブラリの開発パッケージも必ずインストールしてほしい。
575-つまり、それらのパッケージが、ライブラリを使ってプログラムをコンパイルするのに必要なヘッダファイルも提供しているからだ。
576-たとえば、私のDebianシステムの場合、@code{libboost-regex}パッケージのほかに、@code{libboost-regex-dev}パッケージをインストールしなければならなかった。
614+まず最初に、使用しているディストリビューションがBoost regexライブラリのパッケージを用意している場合には、boostライブラリの開発パッケージも必ずインストールしてください。
615+つまり、開発パッケージは、ライブラリを使ってプログラムをコンパイルするのに必要なヘッダファイルも提供しています。
616+例えば、Debianシステムの場合、@code{libboost-regex}パッケージのほかに、@code{libboost-regex-dev}パッケージをインストールしなければなりませんでした。
577617
578-使用しているディストリビューションがこういったパッケージを提供していない場合、そのときは、@uref{http://www.boost.org}からBoostライブラリのソースをダウンロードして、コンパイルとインストールの手順を辿らなければならない。
579-しかし、(C++コンパイラのインクルードパスに@file{/usr/local/include}が既に含まれていなければ)インストールのプリフィックスを、デフォルトのプリフィックス@file{/usr/local}に頼るのではなく、@file{/usr}に指定しておくことをお勧めする。
580-これによって、source-highlightをコンパイルするのが簡単になるからだ。
581-@file{/usr/include}は普通、コンパイル時にC++がヘッダファイルを探索する場所になっているのでこれをお勧めする。
618+使用ディストリビューションがこういったパッケージを提供していない場合には、@uref{http://www.boost.org}からBoostライブラリのソースをダウンロードして、コンパイルとインストールの手順を辿らなければなりません。
619+しかし、(C++コンパイラのインクルードパスに@file{/usr/local/include}が既に含まれているのでなければ、)インストールのプリフィックスを、デフォルトのプリフィックス@file{/usr/local}に頼るのではなく、@file{/usr}に指定しておくことをお勧めします。
620+これによって、source-highlightをコンパイルするのが簡単になるからです。
621+また、普通、@file{/usr/include}は、C++のコンパイル時に、ヘッダファイルを探索する場所になっていますので、これをお勧めします。
582622
583-Boost Regexライブラリをコンパイルしてインストールするのに成功したり、あるいはディストリビューションのパッケージをインストールても、まだsource-highlightのコンパイルに問題が起きる場合には、次に説明する事柄を簡単に調整する必要がある。
623+Boost Regexライブラリをコンパイルしてインストールするのに成功したり、あるいは、ディストリビューションのパッケージをインストールしても、source-highlightのコンパイルに問題がまだ起きる場合には、次に説明する事柄を調整しなければなりません。
584624
585-まず、source-highlightの@code{./configure}コマンドが次のように報告する場合だ:
625+まず、source-highlightの@code{./configure}コマンドが次のようにエラーを報告する場合です。
586626
587627 @example
588628 ERROR! Boost::regex library not installed.
589629 @end example
590630
591631 @noindent
592-このとき、コンパイラがこのライブラリのヘッダファイルを見つけられないでいる。
593-こういう場合は、@file{/usr/include/boost}ディレクトリが実際に存在するかどうかを確認してほしい。
594-もし無ければ、インストールしたライブラリのバージョンに応じて、恐らく似たような名前のディレクトリが見つかるだろう(たとえば@file{/usr/include/boost-1_33/boost)。
595-そのときは、次のようにシンボリックリンクを作成するだけでよい:
632+この時、コンパイラは、ライブラリのヘッダファイルを見つけられないでいます。
633+こういう場合は、@file{/usr/include/boost}ディレクトリが実際に存在するかどうかを確認してください。
634+ディレクトリが無ければ、インストールしたライブラリのバージョンに応じて、恐らく、似たような名前のディレクトリがあるでしょう(例えば、@file{/usr/include/boost-1_33/boostなどです)。
635+その時は、シンボリックリンクを次のように作成するだけで良いです。
596636
597637 @example
598638 ln -s /usr/include/boost-1_33/boost /usr/include/boost
599639 @end example
600640
601641 @noindent
602-代わりに、source-highlightのconfigureを次のように実行してもよい:
642+代わりに、source-highlightのconfigureを次のように実行しても構いません:
603643
604644 @example
605645 ./configure CXXFLAGS=-I/usr/include/boost-1_33/
606646 @end example
607647
608-さらに、source-highlightの@code{./configure}が次のような別のエラーを出す場合だ:
648+次に、source-highlightの@code{./configure}が、次のような別のエラーを出す場合です。
609649
610650 @example
611651 ERROR! Boost::regex library is installed, but you
@@ -614,16 +654,16 @@ for instance, --with-boost-regex=boost_regex-gcc-1_31
614654 @end example
615655
616656 @noindent
617-このとき、修正しなければならないことが他にまだある。
618-インストールしたBoost Regexライブラリの正確なファイル名を調べなければならない。
619-これは次のコマンドを使えばよい:
657+この時、修正しなければならないことが他にもあります。
658+インストールしたBoost Regexライブラリの正確なファイル名を調べなければなりません。
659+これは、次のコマンドを使えば分かります。
620660
621661 @example
622662 $ ls -l /usr/lib/libboost_regex*
623663 @end example
624664
625665 @noindent
626-例えば、私のcygwinをインストールした環境の一つでは次のように報告される:
666+例えば、cygwinをインストールした環境の一つでは次のように報告されます。
627667
628668 @example
629669 -rwxr-x---+ Nov 9 23:29 /usr/lib/libboost_regex-gcc-mt-s-1_33.a
@@ -633,87 +673,93 @@ $ ls -l /usr/lib/libboost_regex*
633673 @end example
634674
635675 @noindent
636-これで、source-highlightの次のようにconfigureコマンドを正しく実行する情報が揃った:
676+これで、source-highlightのconfigureコマンドを正しく実行する情報が揃いました。
677+コマンドは次のようになります。
637678
638679 @example
639680 ./configure --with-boost-regex=boost_regex-gcc-mt-s-1_33
640681 @end example
641682
642683 @noindent
643-あるいは、1番目の問題を2番目の方法@footnote{長過ぎるコマンドラインは、@code{\}によって、インデントされた複数行に分割されている。もちろんどうしてもというなら一行で書いてもよい}で解決した場合には次のようになる:
684+あるいは、1番目の問題を2番目の方法で解決した場合には次のようになります@footnote{コマンドラインが長過ぎる場合、@code{\}によって、インデントされた複数行に分割されます。もちろん、どうしてもというなら、一行で書いても構いません。}。
644685
645686 @example
646687 ./configure CXXFLAGS=-I/usr/include/boost-1_33/ \
647688 --with-boost-regex=boost_regex-gcc-mt-s-1_33
648689 @end example
649690
650-もちろん、ファイルをインストールしたBoost Regexライブラリの名前に応じてこのコマンドを修正しなければならない。
691+もちろん、ファイルをインストールしたBoost Regexライブラリの名前に応じてこのコマンドは修正しなければなりません。
651692
652-問題が起きていた多数のユーザが、この手順でsource-highlightをなんとかコンパイルできるようになった。
653-依然問題を抱えているならば私にメールを送ってほしい。
693+問題が起きていた多数のユーザが、この手順により、source-highlightをなんとかコンパイルできるようになりました。
694+依然問題を抱えているならば、メールを送ってください。
654695
655-@node 前のバージョンからのパッチ, lessでのsource-highlightの使用, Boost Regexライブラリのインストールに関するTips, インストール
696+
697+@node Patching from a previous version, Using source-highlight with less, Tips on installing Boost Regex library, Installation
656698 @section 前のバージョンからのパッチ
657699 @cindex patching
658700
659-パッチを一つ、たとえば@file{source-highlight-1.3-1.3.1-patch.gz}(すなわち、バージョン1.3からバージョン1.3.1へのパッチ)をダウンロードした場合、前のバージョン(source-highlight-1.3)のソースのディレクトリへcdして、次のようにタイプする:
701+パッチをダウンロードした場合を考えます。
702+例えば、@file{source-highlight-1.3-1.3.1-patch.gz}(すなわち、バージョン1.3からバージョン1.3.1へのパッチ)をダウンロードしたとします。
703+前のバージョン(source-highlight-1.3)のソースディレクトリへcdして、次のようにタイプしてください。
660704
661705 @example
662706 gunzip -cd ../source-highlight-1.3-1.3.1.patch.gz | patch -p1
663707 @end example
664708
665-そして、コンパイルの手順をリスタートする(既にconfigureを実行しているならば、ただmakeをすればいいはずだ)。
709+そして、コンパイル手順を再開します(configureを既に実行しているならば、makeをただ実行すればいいはずです)。
710+
666711
667-@node lessでのsource-highlightの使用, source-highlightのCGIとして使用, 前のバージョンからのパッチ, インストール
712+@node Using source-highlight with less, Using source-highlight as a CGI, Patching from a previous version, Installation
668713 @section lessでのsource-highlightの使用
669714
670-これはKonstantine Serebrianyが提案したことだ。
671-@file{src-hilite-lesspipe.sh}というスクリプトがsource-highlightと一緒にインストールされるだろう。
672-次に挙げる環境変数を使うことができる。
715+これは、Konstantine Serebrianyが提案しました。
716+@file{src-hilite-lesspipe.sh}というスクリプトがsource-highlightと一緒にインストールされます。
717+以下の環境変数を利用できます。
673718
674719 @example
675720 export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
676721 export LESS=' -R '
677722 @end example
678723
679-このようにすれば、ファイルをlessを使ってブラウズするとき、それがsource-highlightによって処理されるソースファイルであれば、自動的にハイライトされる。
724+このようにすれば、lessを使ってファイルを閲覧する時、source-highlightによって処理されるソースファイルであれば、自動的にハイライトされるようになります。
725+
680726
681-@node source-highlightのCGIとして使用, .rpmのビルド, lessでのsource-highlightの使用, インストール
727+@node Using source-highlight as a CGI, Building .rpm, Using source-highlight with less, Installation
682728 @section source-highlightのCGIとして使用
683729
684730 @cindex CGI
685-Robert WetzelのおかげでCGIサポートが可能になった。
686-私は個人的にはこれをテストしていない。
687-source-highlightをCGIプログラムのように使いたい場合には、source-highlight-cgiという実行ファイルを使わなければならない。
688-このような実行ファイルは次のコマンドを実行すればビルドできる。
731+Robert Wetzelのおかげで、CGIのサポートが可能になりました。
732+私は、個人的にはこれをテストしていません。
733+source-highlightをCGIプログラムのように使いたい場合には、source-highlight-cgiという実行ファイルを使わなければなりません。
734+このような実行ファイルは、次のコマンドを実行して構築できます。
689735
690736 @example
691737 make source-highlight-cgi
692738 @end example
693739
694740 @noindent
695-これは@file{src}ディレクトリで実行する。
741+このコマンドは、@file{src}ディレクトリで実行します。
696742
697743
698-@node .rpmのビルド, , source-highlightのCGIとして使用, インストール
699-@section .rpmのビルド
744+@node Building .rpm, , Using source-highlight as a CGI, Installation
745+@section .rpmの構築
700746 @cindex rpm
701747
702-Christian W. Zuckschwerdtが.rpmと.rpm.srcをビルドするサポートを追加した。
703-バイナリの入った.rpmをビルドするには次のコマンドを実行すればよい:
748+Christian W. Zuckschwerdtは、.rpmと.rpm.srcを構築するサポートを追加しました。
749+バイナリの入った.rpmを構築するには、次のコマンドを実行します。
704750
705751 @example
706752 rpmbuild -tb source-highlight-@value{VERSION}.tar.gz
707753 @end example
708754
709-そしてソースの入った.rpm.srcをビルドするには次のようにする:
755+そして、ソースの入った.rpm.srcを構築するには、次のようにします。
710756
711757 @example
712758 rpmbuild -ts source-highlight-@value{VERSION}.tar.gz
713759 @end example
714760
715761
716-@node Copying, 簡単な使い方, インストール, Top
762+@node Copying, Simple Usage, Installation, Top
717763 @chapter Copying Conditions
718764 @cindex Copying conditions
719765
@@ -724,15 +770,17 @@ under the terms of the GNU General Public License that accompanies this software
724770 GNU @command{source-highlight} was written and
725771 maintained by Lorenzo Bettini @value{myhomepage}.
726772
727-@node 簡単な使い方, 設定ファイル, Copying, Top
773+
774+@node Simple Usage, Configuration files, Copying, Top
728775 @chapter 簡単な使い方
729776 @cindex sample
730777
731-ここで、@command{source-highlight}実行する実際的な例を示す@footnote{長過ぎるコマンドラインは、@code{\}によって、インデントされた複数行に分割されている。もちろんどうしてもというなら一行で書いてもよい}。
778+ここで、@command{source-highlight}を実行する実際的な例を示します@footnote{コマンドラインが長過ぎる場合、@code{\}によって、インデントされた複数行に分割されます。もちろん、どうしてもというなら、一行で書いても構いません。}。
732779
733-Source-highlightは、ソースコードの字面だけを解析するので、そのプログラムソースが正しく書かれていることが前提となっている。
780+Source-highlightは、ソースコードの字面だけを解析します。
781+そのため、プログラムソースが正しく書かれていることが前提となっています。
734782
735-source-highlightの実行方法を示す(この例ではC/C++の入力ファイルを使うが、それ以外のsource-highlightの入力言語に対しても有効である):
783+source-highlightの実行方法を示します(この例では、C/C++の入力ファイルを使いますが、これは、source-highlightのその他の入力言語に対しても有効です)。
736784
737785 @example
738786 source-highlight --src-lang cpp --out-format html \
@@ -742,13 +790,14 @@ source-highlight --src-lang cpp --out-format html \
742790 @var{options}
743791 @end example
744792
745-入力ファイルについては、@code{-i (--input)}オプションと標準入力のリダイレクトとは別に、単にコマンドラインに複数のファイルを指定することができ、正規表現を使ってもよい(たとえば、@file{*.java})。
746-この場合には、出力ファイルの名前は、ソースファイルの名前に.<ext>を追加して作られる。
747-この<ext>の部分は、指定された出力フォーマットに応じて選択される拡張しだ(この例では.htmlになる)。
748-style file(@ref{出力フォーマットスタイル})には、指定言語の各部のフォーマット方法についての情報を入れる(キーワードを青のボールドで、など)。
793+入力ファイルについては、@code{-i}(@code{--input})オプションと標準入力のリダイレクトとは別に、コマンドラインに複数のファイルを単に指定することができます。
794+正規表現を使うこともできます(例えば、@file{*.java})。
795+この場合には、出力ファイルの名前は、ソースファイルの名前に.<ext>を追加して作られます。
796+この<ext>の部分は、指定された出力フォーマットに応じて選択される拡張子です(この例では.htmlになります)。
797+style file(@pxref{Output format style})には、指定言語の各部のフォーマット方法についての情報を入れます(キーワードを青のボールドで、など)。
749798
750-重要:上述の二つの起動モード、@code{-i (--input)}と@code{-o (--output)}を使う(標準入出力のリダイレクトに置き換えることも可能)か、あるいは@code{-i (--input)}を使わずに一つ以上のファイル名を指定するか、どちらか一つを選ばなければならない。
751-これらを混ぜて使うとエラーとなるだろう:
799+重要:上述の二つの起動モード、@code{-i}(@code{--input})と@code{-o}(@code{--output})を使う(標準入出力のリダイレクトに置き換えることも可能)か、あるいは、@code{-i}(@code{--input})を使わずに、一つ以上のファイル名を指定するか、どちらか一つを選ばなければなりません。
800+これらを混用するとエラーとなります。
752801
753802 @example
754803 source-highlight -o main.html main.cpp
@@ -757,134 +806,146 @@ source-highlight [OPTIONS]... -i input_file -o output_file
757806 source-highlight [OPTIONS]... [FILES]...
758807 @end example
759808
760-@code{STDOUT}という文字列が@code{-o (--output)}オプションとして渡された場合、出力は標準出力に強制される。
809+@code{STDOUT}という文字列が@code{-o}(@code{--output})オプションとして渡された場合、出力は標準出力に強制されます。
761810
762-@code{-s (--src-lang)}が指定されていなければ、ソース言語は、入力ファイルの拡張子もしくはファイル名自体から推定される(小文字のバージョンを使うかもしれない(訳注:えーと?後でも出てくるが、どういう意味だろう。ファイル名を小文字にした名前の言語定義ファイルを使うこともあるとか...そういう意味かな?))。
763-これは、もちろん、標準入力のリダイレクトでは働かない。
764-詳細については、@ref{入力言語の検出方法}を参照してほしい。
811+@code{-s}(@code{--src-lang})オプションが指定されていなければ、ソース言語は、入力ファイルの拡張子、もしくは、ファイル名自体から推定されます(小文字のバージョンを使うかもしれません)。
812+これは、もちろん、標準入力のリダイレクトでは働きません。
813+詳細については、別の節を参照してください(@pxref{How the input language is discovered})。
765814
766-@code{-f (--out-format)}が指定されていない場合、出力はHTMLで生成される。
815+@code{-f}(@code{--out-format})が指定されていない場合、出力はHTMLで生成される。
767816
768-@code{--style-file}が指定されていなければ、配布物に含まれている@file{default.style}が使われる(詳細は@ref{出力フォーマットスタイル}を参照していほしい)。
817+@code{--style-file}が指定されていなければ、配布物に含まれている@file{default.style}が使われます。
818+詳細は、別の節を参照してください(@pxref{Output format style}。
769819
770820 @menu
771-* HTMLの出力とXHTMLの出力::
772-* LaTeXの出力::
773-* Texinfoの出力::
774-* DocBookの出力::
775-* ANSIカラーエスケープシーケンス::
821+* HTML and XHTML output::
822+* LaTeX output::
823+* Texinfo output::
824+* DocBook output::
825+* ANSI color escape sequences::
776826 @end menu
777827
778-@node HTMLの出力とXHTMLの出力, LaTeXの出力, 簡単な使い方, 簡単な使い方
828+
829+@node HTML and XHTML output, LaTeX output, Simple Usage, Simple Usage
779830 @section HTMLの出力とXHTMLの出力
780831 @cindex HTML
781832 @cindex XHTML
782833
783-HTMLとXHTMLのデフォルトの出力フォーマットでは、フォーマットされた出力全部が@code{<tt>}と@code{</tt>}の間に挟まれて、等幅フォントが使われるようになる。
784-なので、たとえば、等幅あるいは非等幅の指定(@ref{出力フォーマットスタイル}を参照)というのは効果が無い。
785-文字は全て等幅になる。
786-このデフォルトの動作が相応わしくなくて、デフォルトで等幅フォントにしたくない場合には(そのままということ。たとえば@LaTeX{}出力)、コマンドラインの引数@code{--outlang-def}で、@file{html_notfixed.outlang}というファイルを使うことができる。
787-XHTMLの出力については、それに対応して、@file{xhtml_notfixed.outlang}というファイルがある。
834+HTMLとXHTMLのデフォルトの出力フォーマットでは、フォーマットされた出力全部が@code{<tt>}と@code{</tt>}の間に挟まれて、等幅フォントが使われるようになります。
835+ですから、例えば、等幅・非等幅の指定というのは効果がありません(@pxref{Output format style})。
836+文字は全て等幅になります。
837+このデフォルトの動作が好ましくなくて、(例えば、@LaTeX{}出力を使う場合など、)デフォルトで等幅フォントにしたくない場合、コマンドライン引数@code{--outlang-def}を使って、@file{html_notfixed.outlang}というファイルを使うことができます。
838+XHTMLの出力の場合、対応するファイルは、@file{xhtml_notfixed.outlang}というファイルです。
788839
789-さらに、@file{htmltable.outlang}というファイルが、HTMLテーブルに括られたHTMLを出力するのに使われる(スタイルファイルで指定すれば背景色も使用する)。
790-@file{xhtmltable.outlang}というファイルがXHTMLの出力に対して同じことをするものだ。
840+さらに、@file{htmltable.outlang}というファイルは、HTMLテーブルに括られたHTMLを出力するのに使われます(スタイルファイルで指定すれば背景色も使用します)。
841+XHTMLの出力に対して同じことを行うファイルは@file{xhtmltable.outlang}です。
791842
792-@node LaTeXの出力, Texinfoの出力, HTMLの出力とXHTMLの出力, 簡単な使い方
843+
844+@node LaTeX output, Texinfo output, HTML and XHTML output, Simple Usage
793845 @section @LaTeX{}の出力
794846 @cindex @LaTeX{}
795847
796-@LaTeX{}の出力フォーマットを使うときには、単色の出力(@code{-f latex}を使う)と色付きの出力(@code{-f latexcolor}を使う)とを選択することができる。
797-色付きの出力の場合には、@{color}パッケージが必要だ(さらに、使用しているシステムになければならない)。
798-もちろん、自分自身の@LaTeX{}出力フォーマットを自由に定義できる。
799-@ref{出力言語の定義}を参照してほしい。
848+@LaTeX{}の出力フォーマットを使う場合、単色の出力(@code{-f latex}を使う)と色付きの出力(@code{-f latexcolor}を使う)とを選択することができます。
849+色付きの出力の場合、@{color}パッケージが必要です(さらに、使用しているシステムにこれが無ければなりません)。
850+もちろん、独自の@LaTeX{}出力フォーマットを自由に定義できます。
851+@xref{Output Language Definitions}.
852+
800853
801-@node Texinfoの出力, DocBookの出力, Texinfoの出力, 簡単な使い方
854+@node Texinfo output, DocBook output, LaTeX output, Simple Usage
802855 @section Texinfoの出力
803856 @cindex Texinfo
804857
805-Texinfoの出力フォーマットを使うときには、@code{--style-file}オプションを使って、source-highlightの配布物に入って献呈されているスタイルファイル、@file{texinfo.style}を使ってもよい。
806-たとえば、@ref{例}にある例はこのスタイルファイルでフォーマットされている。
858+Texinfoの出力フォーマットを使う場合、@code{--style-file}オプションを使って、専用のスタイルファイル@file{texinfo.style}を使用して構いません。
859+このスタイルファイルは、source-highlightの配布物に入っています。
860+例えば、別の節にある例は、このスタイルファイルでフォーマットされています(@pxref{Examples})。
807861
808-@node DocBookの出力, ANSIカラーエスケープシーケンス, Texinfoの出力, 簡単な使い方
862+
863+@node DocBook output, ANSI color escape sequences, Texinfo output, Simple Usage
809864 @section DocBookの出力
810865 @cindex DocBook
811866
812-DocBookの出力は@code{<programlisting>}タグを使って生成される。
813-もし、@code{--doc}というコマンドラインオプションが指定されれば、@code{<article>}ドキュメントが生成される。
867+DocBookの出力は、@code{<programlisting>}タグを使って生成されます。
868+もし、@code{--doc}というコマンドラインオプションが指定されれば、@code{<article>}ドキュメントが生成されます。
869+
814870
815-@node ANSIカラーエスケープシーケンス, , DocBookの出力, 簡単な使い方
871+@node ANSI color escape sequences, , DocBook output, Simple Usage
816872 @section ANSIカラーエスケープシーケンス
817873 @cindex ANSI color
818874
819-この出力フォーマットを、たとえば、@code{less}と一緒に使っているならば(@ref{lessでのsource-highlightの使用})、@code{--style-file}オプションで、source-highlightの配布物に入れられている@file{esc.style}を使ってもよい。
820-これにより、楽しい色付きの出力が得られる。
875+この出力フォーマットを、例えば、@code{less}と一緒に使っているならば、@code{--style-file}オプションを使って、source-highlightの配布物に入れられている@file{esc.style}を使っても構いません(@pxref{Using source-highlight with less})。
876+これにより、楽しい色付きの出力が得られます。
877+
821878
822-@node 設定ファイル, source-highlightの起動, 簡単な使い方, Top
879+@node Configuration files, Invoking source-highlight, Simple Usage, Top
823880 @chapter 設定ファイル
824881 @cindex configuration files
825882
826-実行の際、source-highlightはいくつかのファイルを必要としていて、そのようなファイルで、ソース言語を認識する方法(@code{--src-lang}や@code{--lang-def}で明示的に指定されていない場合)、あるいは、使用する出力フォーマットをどれにするか(@code{--out-format}や@code{--outlang-def}で明示的に指定されていない場合)、ソースの各要素をフォーマットする方法(たとえば、キーワードとかコメントとか)、そして、ソース言語の定義や出力言語の定義といったことの指示を見つけることになる。
827-これらのファイルについては次のセクションで説明する。
883+実行の際、source-highlightはファイルをいくつか必要とします。
884+ソース言語を認識する方法に関するディレクティブ(@code{--src-lang}や@code{--lang-def}で明示されていない場合)、あるいは、使用する出力フォーマットに関するディレクティブ(@code{--out-format}や@code{--outlang-def}で明示されていない場合)、ソースの各要素をフォーマットする方法に関するディレクティブ(例えば、キーワードとかコメントとか)、ソース言語の定義や出力言語の定義を、source-highlightは、そのようなファイルから探します。
885+これらのファイルについては次のセクションで説明します。
828886
829887 @cindex @code{--data-dir}
830-もし、そういったファイルのディレクトリが@code{--data-dir}というコマンドラインオプションで明示されていなければ、次の順でこれらのファイルを探す:
888+そういったファイルのディレクトリが、@code{--data-dir}というコマンドラインオプションで明示されていなければ、これらのファイルを次の順に探します:
831889
832890 @itemize
833891 @item
834892 カレントディレクトリ
893+
835894 @item
836-設定ファイルのインストールディレクトリ。
837-@ref{インストール}を参照(このディレクトリは、コンパイル時にsource-highlightにハードコードされていることを覚えていてほしい)。
895+設定ファイルのインストールディレクトリ(@pxref{Installation})(このディレクトリは、コンパイル時に、source-highlightにハードコードされていることを覚えていてください)
896+
838897 @item
839-source-highlightコマンドが明示的なパス名を付けて指定された場合、インストールディレクトリが依然使用されるが、その明示したパス名に対して相対的である(訳注:イマイチ理解していない)。
898+source-highlightコマンドが明示的なパス名を付けて指定された場合、インストールディレクトリ名が依然使用されますが、その明示したパス名に対して相対的となります。
840899 @end itemize
841900
842-とくに、ユーザは、環境変数
843901 @cindex @code{SOURCE_HIGHLIGHT_DATADIR}
844-@code{SOURCE_HIGHLIGHT_DATADIR}でも値をセットすることができる(@ref{source-highlight-settingsプログラム}も参照)。
902+特に、ユーザは、環境変数@code{SOURCE_HIGHLIGHT_DATADIR}を使って、その値をセットすることもできます(see also @ref{The program source-highlight-settings})。
845903
846-実行の際にどのファイルが使われているかを確認したいときは、@code{--verbose}オプションを使うことができる。
904+実行の際、どのファイルが使われるかを確認したい時は、@code{--verbose}オプションを使ってください。
847905
848906 @menu
849-* 出力フォーマットスタイル::
850-* CSSを使用した出力フォーマットスタイル::
851-* デフォルトのスタイル::
852-* 言語マップ::
853-* 言語の定義ファイル::
854-* 出力言語マップ::
855-* 出力言語の定義ファイル::
856-* 独自定義ファイルの開発::
907+* Output format style::
908+* Output format style using CSS::
909+* Default Styles::
910+* Language map::
911+* Language definition files::
912+* Output Language map::
913+* Output Language definition files::
914+* Developing your own definition files::
857915 @end menu
858916
859-@node 出力フォーマットスタイル, CSSを使用した出力フォーマットスタイル, 設定ファイル, 設定ファイル
917+
918+@node Output format style, Output format style using CSS, Configuration files, Configuration files
860919 @section 出力フォーマットスタイル
861920 @cindex output style
862921 @cindex default.style
863922
864-@file{default.style}というファイルにシンタックスハイライティングのオプションを指定しなければならない@footnote{バージョン2.1より前には、このファイルは@file{tags.j2h}という非常に曖昧な名前で呼ばれていた。今度の名前付けの規則が良いものになっていることを信じている:-)}。
865-言語定義のファイルで定義された各要素について、フォーマッティングのオプションを指定することができる(その要素のリストは、
923+@file{default.style}というファイルには、シンタックスハイライティングのユーザオプションを指定しなければなりません@footnote{バージョン2.1より前には、このファイルは@file{tags.j2h}という非常に曖昧な名前で呼ばれていました。
924+今度の名前付けの規則が良いものになっていることを信じています:-)}。
866925 @cindex @code{--show-lang-elements}
867-@code{--show-lang-elements}を使うと得られる)。
868-@ref{言語エレメントの一覧}を参照してほしい。
926+言語定義のファイルで定義された各要素について、フォーマッティングのオプションを指定することができます(その要素のリストは、@code{--show-lang-elements}を使うと得られます)。
927+@xref{Listing Language Elements}.
869928
870929 @cindex @code{bgcolor}
871930 @cindex background color
872-バージョン2.6から、出力ドキュメントの背景色も指定できる。
873-これには@code{bgcolor}というキーワードを使う(@code{--doc}というコマンドラインオプションが使われたときだけ目にできるかもしれない)。
931+バージョン2.6から、出力ドキュメントの背景色も指定できます。
932+これには、@code{bgcolor}というキーワードを使います(@code{--doc}というコマンドラインオプションが使われた時だけ目にできるかもしれません)。
874933
875-多数のエレメントが、同じフォーマッティングオプションを共有している場合、同じ行に、これらのエレメントをカンマで分割して指定することができる@footnote{バージョン2.6から}。
934+多数のエレメントが、同じフォーマッティングオプションを共有している場合、これらのエレメントをカンマで分割して、同じ行に指定することができます@footnote{バージョン2.6からです。}。
876935
877-ここに、この配布物と一緒に入っている@file{default.style}がある(これは、@ref{言語定義のチュートリアル}で示されている@file{style.lang}を使ってフォーマットされている):
936+以下は、この配布物と一緒に入っている@file{default.style}です。
937+別の節で示されている@file{style.lang}を使ってフォーマットされています(@pxref{Tutorials on Language Definitions})。
878938
879939 @include default.style.texinfo
880940
881-このファイルは、Source-highlightの配布物に一緒に入っている言語定義で定義されているほとんどのエレメントについてスタイル定義を試みている。
941+このファイルは、Source-highlightの配布物に同梱の言語定義で定義されている大半のエレメントについて、スタイル定義を試みています。
882942
883943 @cindex @code{--style-file}
884-コマンドラインオプションの@code{--style-file}で、独自のファイルを指定することもできる(@file{default.style}という名前である必要はない)@footnote{バージョン2.1より前では、このコマンドラインオプションは@code{--tags-file}という非常に曖昧な名前で呼ばれていた。今度の名前付けの規則が良いものになっていると信じている :-)}。
885-@ref{source-highlightの起動}を参照してほしい。
944+コマンドラインオプションの@code{--style-file}を使うと、独自ファイルを指定することもできます(@file{default.style}という名前である必要はありません)@footnote{バージョン2.1以前では、このコマンドラインオプションは、@code{--tags-file}という非常に曖昧な名前で呼ばれていました。
945+今度の名前付けの規則が良いものになっていると信じています :-)}。
946+@xref{Invoking source-highlight}.
886947
887-次の行を追加するとノーマルテキストの色を指定することもできる。
948+次の行を追加すると、ノーマルテキストの色を指定することもできる。
888949
889950 @example
890951 normal darkblue ;
@@ -892,20 +953,20 @@ normal darkblue ;
892953
893954 @cindex color
894955 @cindex background color
895-ご覧のように、このファイルのシンタックスはかなり素直だ。
896-エレメント(あるいはカンマで区切られた複数のエレメント)の後に色を指定できる。
897-@code{bg:}というプリフィックスを使えば背景色@footnote{バージョン2.6から}も指定できる(一例として、前述の@file{default.style}では@code{todo}エレメントに背景色が指定されている)。
956+ご覧のように、このファイルのシンタックスはかなり素直です。
957+エレメント(あるいは、カンマ区切りの複数エレメント)の後に色を指定できます。
958+@code{bg:}というプリフィックスを使えば、背景色も指定できます@footnote{バージョン2.6から}(一例として、前述の@file{default.style}では@code{todo}エレメントに背景色が指定されています)。
898959
899-背景色は出力フォーマットの全てで利用できるわけではないことに注意してほしい。
900-XHTMLや@LaTeX{}では利用できるが、HTML@footnote{もちろん、HTMLと外部のCSSファイルを使えば同じ結果は得られる}ではそうではない。
960+背景色は、出力フォーマットの全てで利用できるわけではないことに注意してください。
961+XHTMLや@LaTeX{}では利用できますが、HTMLでは利用できません@footnote{もちろん、HTMLと外部のCSSファイルを使えば同じ結果は得られます}。
901962
902963 @cindex bold
903964 @cindex italics
904965 @cindex underline
905966 @cindex fixed
906967 @cindex notfixed
907-それから、ボールドやイタリックなどのような、それ以上のフォーマティングオプションを指定することができる。
908-以下が使用できるキーワードだ:
968+それから、ボールドやイタリックなどのように、フォーマティングオプションをさらに指定することができます。
969+以下は、使用できるキーワードです。
909970
910971 @example
911972 b = bold
@@ -917,30 +978,30 @@ noref = no reference information is generated for these elements
917978 @end example
918979
919980 @cindex color
920-バージョン2.2からは、色の指定が不要になった。
921-たとえば、@file{texinfo.style}を次に示す(Texinfoの出力に対して色を使っていない):
981+バージョン2.2からは色の指定が不要になりました。
982+例えば、@file{texinfo.style}を次に示します(Texinfoの出力に色を使っていません):
922983
923984 @include texinfo.style.texinfo
924985
925986 これらのオプションはカンマ区切りで複数指定してもよい。
926-たとえば次のようになる。
987+例えば、次のようになる。
927988
928989 @example
929990 keyword blue u, b ;
930991 @end example
931992
932993 @noindent
933-覚えていてほしいのだが、この場合では、指定されたオプションの順序は、その出力が生成されるときにも保持される。
934-たとえば、指定された出力フォーマットによって、@code{u, b}いう並びと、@code{b, u}という並びとでは、異なった結果をもたらすかもしれないということだ。
935-とくに、1番目に指定されたスタイルは、その後に指定されたスタイルの後に使われる。
936-たとえば、HTMLの場合、@code{u, b}という並びは、@code{<u><b>...</b></u>}というフォーマット結果を生む。
994+覚えていてほしいのですが、この場合、指定されたオプションの順序は、その出力が生成される時にも保持されます。
995+例えば、指定された出力フォーマットによって、@code{u, b}いう並びと、@code{b, u}という並びとでは、異なった結果をもたらすかもしれないということです。
996+特に、1番目に指定されたスタイルは、その後に指定されたスタイルの後に使われます。
997+例えば、HTMLの場合、@code{u, b}という並びだと、@code{<u><b>...</b></u>}というフォーマット結果を生じます。
937998
938999 @cindex noref
939-@code{noref}オプションは、このエレメントについて、リファレンス情報が生成されないというとを指定する(@ref{リファレンスの生成}を参照)。
940-たとえば、これは@code{comment}エレメントに対して使われる。
941-コメント内のエレメントについてクロスリファレンスを探索したいとは思わないからだ。
1000+@code{noref}オプションは、このエレメントについてリファレンス情報が生成されないというとを指定します(@pxref{Generating References})。
1001+例えば、これは、@code{comment}エレメントに対して使われます。
1002+コメント内のエレメントについて、クロスリファレンスを探索したいとは思わないからです。
9421003
943-以下は、source-highlightが処理可能な色の論理名である@footnote{これらのHTMLでの色は、@file{colors.html}というファイルで見ることができる}:
1004+以下は、source-highlightが処理可能な色の論理名です@footnote{HTMLでのこれらの色は、@file{colors.html}というファイルで見ることができます。}。
9441005
9451006 @example
9461007 black
@@ -964,151 +1025,166 @@ white
9641025 @end example
9651026
9661027 @cindex direct color scheme
967-二重引用符を用いれば、指定した出力フォーマットのカラースキームを直接使うこともできる。
968-たとえばHTMLにおける@code{"#00FF00"}@footnote{バージョン2.2からは、二重引用符を使う必要がある}、あるいは、@code{"lightblue"}のように、二重引用符で括られた文字列の色名すら使うことができる@footnote{バージョン2.6から}。
969-もちろん、生成の際、二重引用符は取り除かれる。
1028+二重引用符を用いれば、指定した出力フォーマットのカラースキームを直接使うこともできます。
1029+例えば、HTMLにおける@code{"#00FF00"}@footnote{バージョン2.2からは、二重引用符を使う必要があります。}、あるいは、@code{"lightblue"}のように、二重引用符で括られた文字列の色名も使えます@footnote{バージョン2.6からです}。
1030+もちろん、生成の際、二重引用符は取り除かれます。
9701031
971-たとえば、次のものは@file{tests}ディレクトリで使われている@file{syslog.style}である。
972-これは、カラースキームを直接使用している。
1032+例えば、次のものは@file{tests}ディレクトリで使われる@file{syslog.style}です。
1033+これは、カラースキームを直接使用しています。
9731034
9741035 @include syslog.style.texinfo
9751036
976-カラースキームを直接使用する場合には、source-highlightは変換を何も実行せず、指定されたカラースキームをそのまま出力することに注意してほしい。
977-たとえば、@code{"brown"}という指定は、@code{brown}とは違う。
978-前者はそのまま出力されるだろうが、後者は、出力フォーマットの対応する色へと変換される(HTMLについては見た目の結果は同じになりそうだ)。
1037+カラースキームを直接使用する場合には、source-highlightは変換を何も実行せず、指定されたカラースキームをそのまま出力することに注意してください。
1038+例えば、@code{"brown"}という指定は、@code{brown}とは異なります。
1039+前者は、そのまま出力されます。
1040+後者は、出力フォーマットの対応する色へと変換されます(HTMLについては見た目の結果は同じになりそうです)。
9791041
980-指定された出力フォーマットによって処理されるカラースキームの文字列の指定はあなた次第である。
981-ゆえに、別々の出力フォーマットの間では、直接カラースキームを指定することはポータブルではないかもしれない。
982-たとえば、@code{"#00FF00"}はHTMLでは有効だが、@LaTeX{}ではそうではない。
1042+指定出力フォーマットによって処理されるカラースキームの文字列指定はユーザに任されています。
1043+ゆえに、別々の出力フォーマットの間では、カラースキームを直接指定すると可搬性に関わるかもしれません。
1044+例えば、@code{"#00FF00"}はHTMLでは有効ですが、@LaTeX{}ではそうではありません。
9831045
984-@node CSSを使用した出力フォーマットスタイル, デフォルトのスタイル, 出力フォーマットスタイル, 設定ファイル
1046+
1047+@node Output format style using CSS, Default Styles, Output format style, Configuration files
9851048 @section CSSを使用した出力フォーマットスタイル
9861049
9871050 @cindex CSS
988-バージョン2.6からは、制限されたCSSのシンタックスを使って出力フォーマットスタイルを指定できるようになった。
989-これは、@code{--css}オプションを使ってsource-highlightが生成する出力とは無関係であることに注意してほしい。
1051+バージョン2.6からは、制限付きのCSSシンタックスを使って出力フォーマットスタイルを指定できるようになりました。
1052+これは、@code{--css}オプションを使ってsource-highlightが生成する出力とは無関係であることに注意してください。
9901053
9911054 @cindex @code{--style-css-file}
992-CSSファイルをスタイルファイルとして使うことで(すなわち、@code{--style-css-file}というコマンドラインオプションをへ渡すことで)、CSSと同じシンタックスを使って出力フォーマットスタイルだけを指定する。
993-これはつまり、実際の出力とは関係無く出力フォーマットスタイルに対してCSSのシンタックスを使えるということだ(これが出力フォーマットスタイルの目的)。
994-なので、@LaTeX{}の場合についても出力フォーマットスタイルとしてCSSファイルを使うことができる(ちょうどsource-highlightの出力フォーマットスタイルで行なうように。@ref{出力フォーマットスタイル})。
1055+CSSファイルをスタイルファイルとして使うことで(すなわち、@code{--style-css-file}というコマンドラインオプションをへ渡すことで)、CSSと同じシンタックスを使って出力フォーマットスタイルだけを指定します。
1056+これは、実際の出力とは関係無く、出力フォーマットスタイルに対して、CSSのシンタックスが使えるということです(これが、出力フォーマットスタイルの目的)。
1057+ですから、@LaTeX{}の場合についても、出力フォーマットスタイルとしてCSSファイルを使うことができます。
1058+ちょうど、source-highlightの出力フォーマットスタイルで行うようにです。
1059+@xref{Output format style}.
9951060
996-この機能は基本的にコードの再利用のために用意されている。
997-CSSファイルを使って出力フォーマットスタイルを指定してから、同じCSSファイルを他のHTMLページの実際のスタイルシートとして使うことができる(あるいは、@code{-css}オプションを指定してsource-highlightで生成した出力ファイルでさえも使える)。
1061+この機能は、コードの再利用のために基本的に用意されています。
1062+CSSファイルを使って出力フォーマットスタイルを指定してから、他のHTMLページの実際のスタイルシートとして同じCSSファイルを使うことができます(あるいは、@code{-css}オプションを指定してsource-highlightで生成した出力ファイルも使えます)。
9981063
999-この機能はかなり原始的なものなので、CSSのシンタックスを制限したサブセットしか認識しない。
1000-とくに、セレクタは常にCSSのクラスセレクタとして扱うので、必ずドットから始めなければならない。
1001-@code{/* */}のコメントは処理される。
1002-source-highlightが処理しないプロパティ(と、その値)は単に(そして静かに)取り除かれる。
1064+この機能はかなり原始的なものですので、CSSのシンタックスを制限したサブセットしか認識しません。
1065+特に、セレクタは、CSSのクラスセレクタとして常に扱いますので、ドットから必ず始めなければなりません。
1066+@code{/* */}のコメントは処理されます。
1067+source-highlightが処理しないプロパティ(および、その値)は、単に(そして、黙って)取り除かれます。
10031068
1004-次のものは、スタイルフォーマットの指定としてsource-highlightが正しく処理するCSSの指定の例である:
1069+次のものは、スタイルフォーマットの指定としてsource-highlightが正しく処理するCSS指定の例です。
10051070
10061071 @include css_example.css.texinfo
10071072
1008-最後に、次のものが、@ref{出力フォーマットスタイル}で提示された@file{default.style}に対応する@file{default.css}である:
1073+最後に、以下は、別の節で提示された@file{default.style}に対応する@file{default.css}です(@pxref{Output format style})。
10091074
10101075 @include default.css.texinfo
10111076
1012-このファイルを@code{--style-css-file}というコマンドラインオプションに渡して、出力ファイルを生成すれば、@file{default.style}を使った場合と同じ結果が得られるだろう。
1077+このファイルを、@code{--style-css-file}というコマンドラインオプションに渡して、出力ファイルを生成すれば、@file{default.style}を使った場合と同じ結果が得られるでしょう。
1078+
1079+HTMLドキュメントの標準的なCSSファイルとしても、あるいは、@code{--style-css-file}へ渡すスタイルファイルとしても使える沢山のCSSファイルがsource-highlightには付属しています。
1080+ドキュメントのインストールディレクトリ(@pxref{Installation})の中に@file{style_examples.html}というファイルがあります。
1081+これは、多くの出力例を示すもので、それぞれ別々のCSSスタイルを使ったものです。
10131082
1014-source-highlightには、HTMLドキュメントの標準的なCSSファイルとしても、あるいは、@code{--style-css-file}へ渡すスタイルファイルとしても使える沢山のCSSファイルが付属している。
1015-ドキュメンテーションのインストールディレクトリの中に@file{style_examples.html}というファイルがある。
1016-これは多数の出力例を示すもので、それぞれ別々のCSSスタイルを使ったものだ。
10171083
1018-@node デフォルトのスタイル, 言語マップ, CSSを使用した出力フォーマットスタイル, 設定ファイル
1084+@node Default Styles, Language map, Output format style using CSS, Configuration files
10191085 @section デフォルトのスタイル
10201086
1021-次のファイル@footnote{バージョン2.9から}(デフォルトファイルは@file{style.defaults})は、スタイルファイルの中で、出力スタイルが指定されていない言語エレメントのデフォルトスタイルのリストだ。
1022-特に次の行を見てほしい(コメント行は@code{#}で始まる):
1087+次に挙げるファイル@footnote{バージョン2.9から。}(デフォルトファイルは@file{style.defaults})は、スタイルファイルの中で、出力スタイルが指定されていない言語エレメントのデフォルトスタイルのリストです。
1088+特に、次のような行があります(コメント行は@code{#}で始まります)。
10231089
10241090 @example
10251091 elem1 = elem2
10261092 @end example
10271093
10281094 @noindent
1029-この行は、エレメント、ここではelem1に対するスタイルが、スタイルファイルで指定されていない場合、elem1がelem2と同じスタイルを持つということを示している。
1095+こういう行は、elem1というエレメントに対するスタイルがスタイルファイルで指定されていない場合、elem1はelem2と同じスタイルを持つということを示しています。
10301096
10311097 @cindex style.defaults
1032-たとえば、次のものはsource-highlightに付いている@file{style.defaults}だ:
1098+例えば、以下は、source-highlightに付いている@file{style.defaults}です。
10331099
10341100 @include style.defaults.texinfo
10351101
10361102 @noindent
1037-この場合、@code{preproc}エレメントのスタイルが@code{keyword}エレメントのスタイルをデフォルトとする。
1103+この場合においては、@code{preproc}エレメントのスタイルが@code{keyword}エレメントのスタイルをデフォルトとしています。
1104+
1105+独自のスタイルファイルを作成し、そのスタイルの中で、同じ出力スタイルを持つエレメントのスタイルを全て指定したくないような場合にこのファイルは便利です(例えば、デフォルトのスタイルでは、@code{preproc}エレメントはkeywordとは違うフォーマットがされます。
1106+独自スタイルを使えば、スタイルを指定しない場合、@code{preproc}エレメントは、@code{keyword}と同じようにフォーマットされます)。
10381107
1039-このファイルは、独自のスタイルファイルを作成して、そのスタイルの中で、同じ出力スタイルを持つエレメントのスタイルを全て指定したくないような場合に便利だ(たとえば、デフォルトのスタイルでは、@code{preproc}エレメントはkeywordとは違うフォーマットがされるが、独自にスタイルを指定するのに、そのスタイルを指定していなければ、@code{preproc}エレメントは@code{keyword}と同じようにフォーマットされる)。
10401108
1041-@node 言語マップ, 言語の定義ファイル, デフォルトのスタイル, 設定ファイル
1109+@node Language map, Language definition files, Default Styles, Configuration files
10421110 @section 言語マップ
10431111 @cindex language map
10441112
1045-この設定ファイルは、特定の言語定義ファイルに拡張子を関連付けている。
1046-そのようなファイルの拡張子を使って、@code{--src-lang}オプションを指定することもできる(@ref{簡単な使い方}を参照)。
1047-source-highlightは、@file{lang.map}と呼ばれる、そういったファイルが付属している。
1113+言語マップの設定ファイルは、特定の言語定義ファイルに拡張子を関連付けるものです。
1114+ファイルの拡張子を使って、@code{--src-lang}オプションを指定することもできます(@pxref{Simple Usage})。
1115+source-highlightにはそういったファイルが付属しています。
1116+@file{lang.map}と言うファイルです。
10481117
1049-もちろん、このファイルの設定は、独自の言語マップファイルを書いて、コマンドラインオプションの@code{--lang-map}でそのファイルを指定すれば、オーバーライドすることもできる。
1050-さらに、上で説明したように、カレントディレクトリに@file{lang.map}が存在すれば、そのバージョンが使用される。
1051-そのファイルのフォーマットは極めてシンプルだ(コメント行は@code{#}で始まる):
1118+もちろん、このファイルの設定をオーバーライドすることもできます。
1119+独自の言語マップファイルを書いて、コマンドラインオプションの@code{--lang-map}でそのファイルを指定してください。
1120+さらに、上で説明したように、カレントディレクトリに@file{lang.map}が存在すれば、そのファイルが使用されます。
1121+ファイルのフォーマットは極めてシンプルです(コメント行は@code{#}で始まります)。
10521122
10531123 @example
10541124 extension = language definition file
10551125 @end example
10561126
1057-デフォルトの言語定義ファイルは@ref{導入}の中で示されている。
1127+デフォルトの言語定義ファイルは別の節の中で示されています(@pxref{Introduction})。
10581128
1059-@node 言語の定義ファイル, 出力言語マップ, 言語マップ, 設定ファイル
1129+
1130+@node Language definition files, Output Language map, Language map, Configuration files
10601131 @section 言語の定義ファイル
10611132
1062-これらのファイルは、ソースのハイライトされるべきエレメントを指定するものなので、source-highlightにとって極めて重要なものだ。
1063-これらのファイルはまた、source-highlightが扱わない言語を処理するために独自の言語定義ファイルを指定できるようにもする@footnote{これがバージョン2.0で取り入れられた、前のバージョンとの主な違いである}。
1064-これらのファイルのシンタックスは@ref{言語の定義}で説明されている。
1133+言語の定義ファイルは、ハイライトされるべきソースエレメントを指定するもので、source-highlightにとって極めて重要なものです。
1134+また、source-highlightが扱っていない言語を処理するために独自の言語定義ファイルを指定できるようにもなります@footnote{これが、バージョン2.0で取り入れられた、前のバージョンとの主な違いです。}。
1135+これらのファイルのシンタックスは別の節で説明しています(@pxref{Language Definitions})。
1136+
10651137
1066-@node 出力言語マップ, 出力言語の定義ファイル, 言語の定義ファイル, 設定ファイル
1138+@node Output Language map, Output Language definition files, Language definition files, Configuration files
10671139 @section 出力言語マップ
10681140 @cindex output language map
10691141
1070-この設定ファイルは出力フォーマットを特定の出力言語の定義ファイルと関連付けるものだ。
1071-出力フォーマットの名前を使って、@code{--out-format}オプションを指定することができる(@ref{簡単な使い方}を参照)。
1072-Source-highlightには、そのような@file{outlang.map}と呼ばれるファイルが付属している。
1142+出力言語マップの設定ファイルは、出力フォーマットを、特定の出力言語の定義ファイルと関連付けるものです。
1143+@code{--out-format}オプションを使って、出力フォーマットの名前を指定することができます(@pxref{Simple Usage})。
1144+Source-highlightには、そのような@file{outlang.map}と呼ばれるファイルが付属しています。
10731145
1074-もちろん、このファイルの設定は、独自の言語マップを書いて、そういったファイルをコマンドラインオプションの@code{--outlang-map}で指定すれば、オーバーライドすることができる。
1075-さらに、上で述べたように、@file{outlang.map}というファイルがカレントディレクトリに存在すれば、そのバージョンが使われる。
1076-そういったファイルのフォーマットは極めてシンプルだ:
1146+もちろん、このファイルの設定はオーバーライドすることができます。
1147+独自の言語マップを書いて、そのファイルを、コマンドラインオプションの@code{--outlang-map}で指定してください。
1148+さらに、上で述べたように、@file{outlang.map}というファイルがカレントディレクトリに存在すれば、そのファイルが使われます。
1149+ファイルのフォーマットは極めてシンプルです。
10771150
10781151 @example
10791152 output format name = language definition file
10801153 @end example
10811154
1082-デフォルトの言語定義ファイルは@ref{導入}で示されている。
1155+デフォルトの言語定義ファイルは別の節で示しています(@pxref{Introduction})。
10831156
1084-とくに、出力言語マップの出力フォーマットの名前には、付け方がある。
1085-@code{-css}サフィックスが付いているものは、@code{--css}というコマンドラインオプションが指定されたときに使われるものだ。
1157+特に、出力言語マップの出力フォーマットの名前には付け方があります。
1158+@code{-css}サフィックスが付いているものは、@code{--css}というコマンドラインオプションが指定される時に使われるものです。
10861159
1087-@node 出力言語の定義ファイル, 独自定義ファイルの開発, 出力言語マップ, 設定ファイル
1160+
1161+@node Output Language definition files, Developing your own definition files, Output Language map, Configuration files
10881162 @section 出力言語の定義ファイル
10891163
1090-これらのファイルは、ソースのエレメントがどのようにハイライトされるかを指定するものなので、source-highlightにとって極めて重要だ。
1091-これらのファイルはまた、source-highlightが扱わない出力フォーマットを処理するための独自の出力フォーマットの定義を指定することもできるようにする@footnote{これがバージョン2.1で取り入れられた、前のバージョンとの主な違いである}。
1092-こういったファイルのシンタックスは@ref{出力言語の定義}で説明されている。
1164+出力言語の定義ファイルは、ソースエレメントがどのようにハイライトされるかを指定するもので、source-highlightにとって極めて重要なものです。
1165+また、source-highlightが扱っていない出力フォーマットを処理するための独自の出力フォーマットの定義を指定できるようにもなります@footnote{これが、バージョン2.1で取り入れられた、前のバージョンとの主な違いです。}。
1166+ファイルのシンタックスは別の節で説明しています(@pxref{Output Language Definitions})。
10931167
1094-これらのファイルはsource-highlightの配布物の一部であるが、次の場所から自由にダウンロードすることもできる:
1168+これらのファイルはsource-highlightの配布物の一部ですが、次の場所から自由にダウンロードすることができます。
10951169
10961170 @value{outlangfilesurl}
10971171
1098-@node 独自定義ファイルの開発, , 出力言語の定義ファイル, 設定ファイル
1172+
1173+@node Developing your own definition files, , Output Language definition files, Configuration files
10991174 @section 独自定義ファイルの開発
11001175
1101-新しい言語定義を書いたり、既存の言語定義を訂正修正して、それを私に送ってくれるようにお勧めしたい。
1102-そうすれば、source-highlightの配布物にそれらを追加することができる。
1176+新しい言語定義を書いたり、既存の言語定義を訂正・修正した場合、私に送ってくださるようにお願いします。
1177+そうすれば、source-highlightの配布物にそれらを追加することができます。
11031178
1104-これらのファイルにはさらなる説明が必要なので(しかし、source-highlightの通常の使用には必要ではない)、複数のパート@ref{言語の定義}と@ref{出力言語の定義}で丁寧に説明する。
1179+これらのファイルにはさらなる説明が必要です(しかし、source-highlightの通常の使用には必要でははありません)。
1180+複数のパート(@pxref{Language Definitions}, and @ref{Output Language Definitions})で丁寧に説明することにします。
11051181
1106-これらのファイルはsource-highlightの配布物の一部であるが、次の場所から自由にダウンロードすることもできる:
1182+これらのファイルはsource-highlightの配布物の一部ですが、次の場所から自由にダウンロードすることができます。
11071183
11081184 @value{langfilesurl}
11091185
11101186
1111-@node source-highlightの起動, 言語の定義, 設定ファイル, Top
1187+@node Invoking source-highlight, Language Definitions, Configuration files, Top
11121188 @chapter @command{source-highlight}の起動
11131189 @cindex invoking
11141190 @cindex version
@@ -1117,19 +1193,20 @@ output format name = language definition file
11171193 @cindex help
11181194 @cindex getting help
11191195
1120-@command{source-highlight}プログラムを実行する形式は次のようになる:
1196+@command{source-highlight}プログラムの実行書式は次のようになります。
11211197
11221198 @example
11231199 source-highlight @var{option} @dots{}
11241200 @end example
11251201
1126-@code{source-highlight}は、@code{source-highlight --detailed-help}の出力で表示されるが、次のようなオプションをサポートしている:
1202+@code{source-highlight}は次のようなオプションをサポートしています。
1203+これらのオプションは、@code{source-highlight --detailed-help}の出力で表示されます。
11271204
11281205 @smallexample
11291206 @include help-output.texinfo
11301207 @end smallexample
11311208
1132-いくつかのオプションについて詳細に説明しよう(@code{--help}の出力自体から明らかなはずなものや、@ref{簡単な使い方}で既に説明済みのものは除く)。
1209+いくつかのオプションについて詳細に説明します(@code{--help}の出力自体から分かるものや、別の節(@pxref{Simple Usage})で説明済みのものは除きます)。
11331210
11341211 @c Formatting copied from the Texinfo 4.0 manual.
11351212 @table @code
@@ -1137,61 +1214,72 @@ source-highlight @var{option} @dots{}
11371214 @item --data-dir
11381215 @cindex @code{--data-dir}
11391216
1140-Source-highlightは、その実行の際、いくつかのファイル、たとえば、言語定義ファイル、出力フォーマットの定義ファイルなどを必要とする。
1141-これらのファイルは@code{prefix/share/source-highlight}にインストールされる(@code{prefix}はコンパイル時に選択される。@xref{インストール}参照)。
1142-なので、source-highlightは必要とするファイルを全て自由に見つけられるはずだ。
1143-しかし、この設定をオーバーライドしたい、たとえば、独自の言語定義ファイルがあるとか、単に、コンパイル時に使用したディレクトリとは違う場所に、使うsource-highlightのバイナリがあるなどの場合、コマンドラインオプションの@code{--data-dir}を使うことができる。
1217+Source-highlightは、実行の際、ファイルを必要とします。
1218+例えば、言語定義ファイル、出力フォーマットの定義ファイルなどです。
1219+これらのファイルは、@code{prefix/share/source-highlight}にインストールされます。
1220+@code{prefix}はコンパイル時に選択されます(@pxref{Installation})。
1221+ですから、source-highlightは、必要とするファイルを全て自由に見つけられるはずです。
1222+しかし、この設定をオーバーライドしたい場合があります。
1223+例えば、独自の言語定義ファイルがあるとか、単に、コンパイル時に使用したディレクトリとは違う場所にsource-highlightのバイナリがあるなどの場合です。
1224+そういった場合に、コマンドラインオプションの@code{--data-dir}を使うことができます。
11441225
11451226 @item --doc
11461227 @itemx -d
11471228
1148-スタンドアロンの出力ドキュメント(すなわち、他のドキュメントにインクルードされるとは考えられていない出力ドキュメント)が欲しい場合には、このオプションを指定する(そうでない場合には、他のドキュメントにペーストできるテキストが得られるだけだ)。
1149-このオプションを選択して、@code{--title}を指定しない場合には、タイトルとしてソースファイル名が使用される。
1229+スタンドアロンの出力ドキュメント(すなわち、他のドキュメントにインクルードされるとは考えられていない出力ドキュメント)が欲しい場合には、このオプションを指定します(そうでない場合には、他のドキュメントにペーストできるテキストが得られるだけです)。
1230+このオプションを選択して、かつ、@code{--title}を指定しない場合には、タイトルとしてソースファイル名を使用します。
11501231
11511232 @item --no-doc
1152-前述の@code{--doc}オプションは、実際には他のコマンドラインオプション(たとえば@code{--css})で暗黙のうちに指定される。
1153-これをしたくない場合には(たとえば、グローバルなスタイルシートを持っている既存のドキュメントに出力をインクルードしたいなどの場合)、@code{--no-doc}を使うことでこれを無効にできる。
1233+前述の@code{--doc}オプションは、実際には、他のコマンドラインオプション(例えば、@code{--css})で暗黙のうちに指定されるものです。
1234+これを行わせたくない場合(例えば、グローバルなスタイルシートを持っている既存のドキュメントに出力をインクルードしたいなどの場合)、@code{--no-doc}を使うことで無効にできます。
11541235
11551236 @item --css
11561237 @itemx -c
1157-出力ドキュメントに対してスタイルシートファイルを指定する(たとえばHTMLに対する@file{.css}@footnote{前に述べたように、もともとsource-highlightはHTMLの出力を生成するのが中心だと考えられていた。これが@emph{css}がスタイルシートに対して使われる理由だ})。
1158-source-highlightはこのファイルは使わないことに注意してほしい。
1159-出力ファイルが生成されるときにこのファイルの名前を単に使って、出力ファイルがこのファイルをスタイルシートとして使うということを指定する(たとえば、生成されたHTMLがCSSファイルとしてこのファイルに依存する場合)。
1238+出力ドキュメントに対してスタイルシートファイルを指定します(例えば、HTMLに対する@file{.css}です@footnote{前に述べたように、source-highlightは、HTMLの出力を生成するのが中心だともともと考えられていました。これが、スタイルシートに対して@emph{css}が使われる理由です。})。
1239+source-highlightはこのファイルを使わないことに注意してください。
1240+出力ファイルが生成される時、このファイルの名前を単に使って、出力ファイルがこのファイルをスタイルシートとして使うということを指定します(例えば、生成されたHTMLがCSSファイルとしてこのファイルに依存する場合)。
11601241
11611242 @item --tab
11621243 @itemx -t
1163-このオプションを使えば、タブ文字が指定された数の空白文字に変換される(タブ位置は保存される)。
1164-このオプションは、行番号を生成するときには自動的に選択される。
1244+このオプションを使えば、タブ文字が、指定された数の空白文字に変換されます(タブ位置は保存されます)。
1245+このオプションは、行番号を生成する時には自動的に選択される。
11651246
11661247 @item --style-file
11671248 @itemx --style-css-file
1168-source-highlightが出力を生成する(たとえば、フォーマットする)のに使用するファイルを指定する(たとえば、言語の各エレメントの色やスタイル)。
1169-これらのファイルの形式については@ref{出力フォーマットスタイル}と@ref{CSSを使用した出力フォーマットスタイル}にそれぞれ詳しく述べられている。
1249+source-highlightが出力を生成する(例えば、フォーマットする)のに使用するファイルを指定します(例えば、言語の各エレメントの色やスタイルです)。
1250+これらのファイルの形式については別の節にそれぞれ詳しく述べています。
1251+@xref{Output format style}, and @ref{Output format style using CSS}.
11701252
11711253 @item --style-defaults
1172-スタイルファイルにスタイルの指定が無いエレメントのデフォルトのスタイルが入ったファイルを指定する(さらに詳しくは@ref{デフォルトのスタイル}を参照)。
1254+スタイルファイルにスタイルの指定が無いエレメントのデフォルトのスタイルが入ったファイルを指定します。
1255+さらに詳しくは別の節を参照してください。
1256+@xref{Default Styles}.
11731257
11741258 @item --output-dir
1175-source-highlightには複数の入力ファイルを渡すことができる(@ref{簡単な使い方}を参照)。
1176-この場合出力ファイルの名前は指定できない。
1177-そういう場合には、コマンドを起動したディレクトリの中に出力ファイルが自動的に生成される。
1178-異なるディレクトリに出力ファイルを生成したい場合に、このオプションを使うことができる。
1259+source-highlightには複数の入力ファイルを渡すことができます(@pxref{Simple Usage})。
1260+この場合、出力ファイルの名前は指定できません。
1261+そういう場合には、コマンドを起動したディレクトリの中に出力ファイルが自動的に生成されます。
1262+異なるディレクトリに出力ファイルを生成したい場合には、このオプションを利用できます。
11791263
11801264 @item --infer-lang
11811265 @cindex language inference
11821266 @cindex @code{--infer-lang}
1183-入力言語を検出する推定メカニズムを強制する。
1184-これは@ref{入力言語の検出方法}に詳述する。
1267+入力言語を検出する推定メカニズムを強制します。
1268+これは、別の節で詳述します。
1269+@xref{How the input language is discovered}.
11851270
11861271 @item --line-number
1187-指定されたパディング文字を使って(オプショナル)、出力に行番号を生成する@footnote{パディング文字はバージョン2.8から指定できる}(デフォルトのパディング文字は@code{0})。
1272+指定されたパディング文字を使って(オプショナル)、出力に行番号を生成します@footnote{パディング文字はバージョン2.8から指定できるようになりました。}。
1273+デフォルトのパディング文字は@code{0}です。
11881274
11891275 @item --line-number-ref
1190-@code{--line-number}と同様このオプションは出力行全てに番号を振り、それに加えて各行にアンカーを生成する。
1191-アンカーは指定されたプリフィックス(デフォルトは@code{line})と行番号からなる(たとえば@code{line25})。
1192-例えば、多数のファイルを処理する場合、プリフィックスとしてファイル名を使ってもよい。
1193-出力言語によってはこの機能がサポートされないものもあることに注意してほしい(たとえば@code{esc}だ。そういう場合には意味を成さない)。
1194-指定された出力言語でアンカーをどのように生成するかを定義することについては@ref{アンカーとリファレンス}を参照してほしい。
1276+@code{--line-number}と同様、このオプションは出力行全てに番号を振ります。
1277+それに加えて、各行にアンカーを生成します。
1278+アンカーは、指定されたプリフィックス(デフォルトは@code{line})と行番号から構成されます(例えば、@code{line25}のようになります)。
1279+例えば、多数のファイルを処理する場合、プリフィックスとしてファイル名を使っても構いません。
1280+出力言語によってはこの機能がサポートされないものがありますので注意してください(例えば、@code{esc}です。そういう場合には意味を成しません)。
1281+指定出力言語でアンカーを生成する方法の定義については別の節を参照してください。
1282+@xref{Anchors and References}.
11951283
11961284 @cindex line ranges
11971285 @cindex range context
@@ -1199,95 +1287,102 @@ source-highlightには複数の入力ファイルを渡すことができる(@
11991287 @item --line-range
12001288 @itemx --range-context
12011289 @itemx --range-separator
1202-バージョン2.11から、複数行の範囲を指定できるようになった。
1203-ソースのうち、この範囲に収まる行だけが出力される。
1204-たとえば、次のように指定された場合だ。
1290+バージョン2.11からは、複数行の範囲を指定できるようになりました。
1291+ソースのうち、この範囲に収まる行だけが出力されます。
1292+例えば、次のように指定された場合を考えます。
12051293
12061294 @example
12071295 --line-range="-5","10","20-25","50-"
12081296 @end example
12091297
1210-この場合は、最初の5行、10行目、20行目から25行目まで、50行目から入力の最後まで、の各行が出力される(@ref{行による範囲指定}にある例も見てほしい)。
1298+この場合は、最初の5行、10行目、20行目から25行目まで、50行目から入力の最後までの各行が出力されます。
1299+別節の例も見てください。
1300+@xref{Line ranges}.
12111301
1212-@code{--line-range}とともに、@code{--range-context}も指定できる。
1213-これは、範囲に入っている行の前後に追加して表示される行数である(すなわち挟んでいる``context'')。
1214-これらの行はハイライトされず、@code{context}のスタイルに応じて表示される。
1215-例として、前の例を広げる。
1302+@code{--line-range}には、@code{--range-context}も一緒に指定できます。
1303+これは、範囲に入る行の前後に追加して表示される行数です(すなわち、範囲を囲む「context」です)。
1304+これらの行はハイライトされず、@code{context}のスタイルに応じて表示されます。
1305+例として、前の例を発展させます。
12161306
12171307 @example
12181308 --line-range="-5","10","20-25","50-" --range-context=1
12191309 @end example
12201310
1221-これによって、6行目、9行目、11行目、19行目、26行目、49行目の各行も出力される(@ref{行による範囲指定(コンテキスト付き)}の例も参照)。
1311+これによって、6行目、9行目、11行目、19行目、26行目、49行目の各行も出力されるようになります。
1312+別節の例も参照してください。
1313+@xref{Line ranges (with context)}.
12221314
1223-最後に、@code{--range-separator}を使って、範囲と範囲の間に表示される、範囲セパレータ行の文字列を指定することができる(@ref{行による範囲指定(コンテキスト付き)}の例も参照)。
1224-セパレータの文字列は自動的に実行されるので、たとえば、texinfo出力における@{ @}のような特殊な出力文字をエスケープする必要はない。
1315+最後に、@code{--range-separator}を使えば、範囲と範囲の間に表示される範囲セパレータ行の文字列を指定することができます。
1316+別節の例も参照してください(@pxref{Line ranges (with context)})。
1317+セパレータの文字列は自動的に実行されますので、例えば、texinfo出力における@{ @}のような特殊な出力文字をエスケープする必要はありません。
12251318
12261319 @cindex regex ranges
12271320 @item --regex-range
1321+範囲は、正規表現を使って表わすこともできます。
1322+コマンドラインオプション@code{--regex-range}を使います。
1323+この場合、範囲の開始は、指定正規表現とマッチする文字列を(任意の位置で)含む行で検出されます。
1324+範囲の終了は、その範囲を開始したのと同じ正規表現にマッチする文字列を含む行で検出されます。
1325+この機能は、例えば、まさにこのマニュアルのように、アドホックなやり方で(例えば、特定のコメントのパターンを使って)、ソースコードの中で範囲を区切られた場所だけを見せるようにして、コードをドキュメントにしたい場合に非常に便利です。
1326+@xref{Regex ranges}.
12281327
1229-範囲は、正規表現を使って表わすこともできる。
1230-これにはコマンドラインオプション@code{--regex-range}を使う。
1231-この場合、範囲の開始は、指定された正規表現とマッチする文字列(任意の位置で)含む行で検出される。
1232-範囲の終了は、その範囲を開始したのと同じ正規表現のマッチする文字列を含む行で検出される。
1233-この機能は、(たとえば、まさにこのマニュアルのように)ソースコードの中でアドホックなやり方で(たとえば、コメントのパターンを指定する)、範囲を区切られた指定した場所だけを見せるようにして、コードをドキュメントにしたい場合に非常に便利だ
1234-@xref{正規表現による範囲指定}
1235-。
1236-指定された文字列(このオプションは複数回指定してもよい)は、有効な正規表現でなければならい(なので、特殊な文字はそれなりにエスケープしなければならない)。
1237-そうでなければ、エラーとなる。
1328+指定文字列(このオプションは複数回指定可能)は、有効な正規表現でなければなりません(ですから、特殊な文字はそれなりにエスケープしなければなりません)。
1329+そうでなければ、エラーとなります。
12381330
1239-また、@code{--line-range}と@code{--regex-range}は同じコマンドラインに共存することはできない。
1331+また、@code{--line-range}と@code{--regex-range}は同じコマンドラインに共存することはできません。
12401332
12411333 @item --failsafe
12421334 @cindex failsafe
1243-言語の指定が見つからない場合、エラーが表示されプログラムは終了する。
1244-このオプションを使えば、その代わりに、そういう状況では、入力が出力フォーマットに単にフォーマットされる。
1245-これは、@command{source-highlight}が多数の入力ファイルでもって使われるときに便利である。
1246-また、@file{src-hilite-lesspipe.sh}スクリプトでも使用される。
1247-実のところ、このオプションを常には使うべきではないということに対する良い理由を私は見つけられなかった。
1248-なので、source-highlightを実行するときにはいつもこれを使うことをお勧めする(そして確かに、将来このオプションはデフォルトになるかもしれない)。
1249-@ref{lessでのsource-highlightの使用}と@ref{簡単なフォーマッタとしてのsource-highlightの使用}も見てほしい。
1335+言語の指定が見つからない場合、エラーが表示され、プログラムは終了します。
1336+このオプションを使えば、その代わりに、そういう状況になると、入力が、出力フォーマットに単にフォーマットされるようになります。
1337+これは、多数のファイルを入力して@command{source-highlight}を使う場合に便利です。
1338+また、@file{src-hilite-lesspipe.sh}スクリプトでも使用されます。
1339+実のところ、このオプションを常には使うべきではないということに対する良い理由を私は見つけられませんでした。
1340+ですから、source-highlightを実行する時にはこれを常用することを推奨します。
1341+実際、将来、このオプションはデフォルトになるかもしれません。
1342+@xref{Using source-highlight with less}, and @ref{Using source-highlight as a simple formatter}.
12501343
12511344 @cindex default.lang
1252-@code{--failsafe}を使うとき、入力言語がはっきりしない場合には、source-highlightは@file{default.lang}という入力言語の定義ファイルを使う。
1253-これは空のファイルである。
1254-そういったファイルはカスタマイズしてもかまわない。
1345+@code{--failsafe}を使う時、入力言語がはっきりしない場合には、source-highlightは、@file{default.lang}という入力言語の定義ファイルを使います。
1346+これは空のファイルです。
1347+このファイルはカスタマイズしても構いません。
12551348
12561349 @item --debug-lang
12571350 @item --show-regex
1258-言語定義ファイルをデバッグできるようにする。
1259-@ref{デバッギング}
1260-
1351+言語定義ファイルをデバッグできるようにします。
1352+@xref{Debugging}.
12611353 @end table
12621354
1263-リファレンスを処理するコマンドラインオプションは、@ref{リファレンスの生成}の中でさらに詳しく説明されている。
1355+リファレンスを処理するコマンドラインオプションは、別の節でさらに詳しく説明しています。
1356+@xref{Generating References}.
12641357
12651358 @menu
1266-* 入力言語の検出方法::
1359+* How the input language is discovered::
12671360 @end menu
12681361
1269-@node 入力言語の検出方法, , source-highlightの起動, source-highlightの起動
1362+
1363+@node How the input language is discovered, , Invoking source-highlight, Invoking source-highlight
12701364 @section 入力言語の検出方法
12711365
1272-既に述べたように(@ref{簡単な使い方})、source-highlightは、@code{--src-lang}オプションや@code{--lang-def}オプションで指定された言語に応じて、あるいは入力ファイルの拡張子を使うことによって、言語定義ファイルを使用する。
1366+既に述べたように(@pxref{Simple Usage})、source-highlightは、@code{--src-lang}オプションや@code{--lang-def}オプションで指定された言語に応じて、あるいは、入力ファイルの拡張子を使うことによって言語定義ファイルを使用します。
12731367
1274-バージョン2.5からは、source-highlightは、入力言語を推定するための推定メカニズムを使うことができる。
1275-今のところ、``sha-bang''メカニズムに基づくスクリプト言語の検出ができる。
1276-すなわち、スクリプトの最初の行に、たとえば次のような行を含んでいる場合だ。
1368+バージョン2.5からは、source-highlightは、入力言語を推定するための推定メカニズムを使うことができます。
1369+今のところ、「sha-bang」メカニズムに基づくスクリプト言語の検出が可能です。
1370+つまり、スクリプトの最初の行に、例えば、次のような行を含んでいる場合です。
12771371
12781372 @example
12791373 #!/bin/sh
12801374 @end example
12811375
1282-@code{env}プログラムを使って指定されたスクリプト言語を検出する@footnote{バージョン2.7から}:
1376+@code{env}プログラムを使って指定されたスクリプト言語も検出します@footnote{バージョン2.7からです。}。
12831377
12841378 @example
12851379 #!/usr/bin/env perl
12861380 @end example
12871381
1288-@code{-*- lang -*-}という形式を使ったEmacsのメジャーモードの宣言する、Emacsの慣習を認識する。
1382+Emacsにおける慣習も認識します。
1383+@code{-*- lang -*-}という形式を使ったEmacsのメジャーモードの宣言です。
12891384
1290-また一例として、以下のように始まるスクリプトの場合だ:
1385+また、一例として、以下のように始まるスクリプトの場合があります。
12911386
12921387 @example
12931388 #!/bin/bash
@@ -1295,131 +1390,143 @@ source-highlightには複数の入力ファイルを渡すことができる(@
12951390 @end example
12961391
12971392 @noindent
1298-この場合は、bashスクリプトではなく、Tclスクリプトとして解釈される。
1393+この場合は、bashスクリプトではなく、Tclスクリプトとして解釈されます。
12991394
1300-最後に、@code{<?}という記述(たとえば、@code{<?php}や@code{<?xml})と@code{<!doctype}(この場合xmlファイルだと推定される)を認識する@footnote{バージョン3.1.2から}。
1395+最後に、@code{<?}という記述(例えば、@code{<?php}や@code{<?xml})と@code{<!doctype}(この場合、xmlファイルと推定)を認識します@footnote{バージョン3.1.2からです。}。
13011396
1302-この推定メカニズムは、デフォルトで、入力言語が明示的に指定されていないか、あるいは、入力ファイルの拡張子やファイル名そのもの(小文字の場合もあるかもしれない)を使って言語マップで見つけられない場合に実行される(入力ファイルが拡張子を全く持たない場合もあるかもしれないが、たとえば、@file{ChangeLog}という入力ファイルは@file{changelog.lang}を使ってハイライトされる)。
1397+この推定メカニズムは、入力言語が明示的に指定されていないか、あるいは、入力ファイルの拡張子やファイル名そのもの(小文字の場合もあるかもしれません)を使って言語マップで見つけられない場合にデフォルトで実行されます。
1398+入力ファイルが拡張子を全く持たない場合もあるかもしれませんが、例えば、@file{ChangeLog}という入力ファイルは@file{changelog.lang}を使ってハイライトされます。
13031399
13041400 @cindex @code{--infer-lang}
1305-加えて、このメカニズムは、@code{--infer-lang}というコマンドラインオプションで優先されるようになる。
1306-たとえば、source-hiliteを実行するときに、PerlスクリプトをPrologスクリプトとしてフォーマットするという問題を避けるために(@file{.pl}という拡張子が言語マップファイルでPrologプログラムに関連付けられているため)、@file{src-hilite-lesspipe.sh}スクリプトで使われている。
1401+加えて、このメカニズムは、@code{--infer-lang}というコマンドラインオプションで優先されるようになります。
1402+例えば、source-hiliteを実行する時に、PerlスクリプトをPrologスクリプトとしてフォーマットしてしまう問題@footnote{@file{.pl}という拡張子が言語マップファイルでPrologプログラムに関連付けられているためです。@xref{Perl}.}を避けるために、@file{src-hilite-lesspipe.sh}スクリプトで使われています。
1403+@xref{Using source-highlight with less}.
1404+
13071405
1308-@node 言語の定義, 出力言語の定義, source-highlightの起動, Top
1406+@node Language Definitions, Output Language Definitions, Invoking source-highlight, Top
13091407 @chapter 言語の定義
13101408 @cindex language definition
13111409
1312-バージョン2.0から、source-highlightはソース言語のエレメント(たとえば、キーワード、文字列、コメントなど)を指定するのに固有のシンタックスを使用する。
1313-バージョン2.0以前では、言語のエレメントはFlexを通してスキャンされていた。
1314-このため、新たな言語を処理するのに新しくflexファイルを書かなければならないことが障害となっていた。
1315-さらに悪いことに、新しい言語は「動的」に追加することができず、source-highlightプログラム全部を再度コンパイルしなければならなかった。
1316-
1317-今はそれに代わり、言語のエレメントは(願わくば)簡単なシンタックスを使って、ファイルに記述され、動的にロードされる。
1318-そして、これらの定義は、内部的には、エレメントをハイライトするのに使うための正規表現をオンザフライに生成するのに使われる(@ref{source-highlightの仕組み}も参照してほしい)。
1319-詳しく言うと、使用している正規表現は、Boostライブラリが提供しているものだ(@ref{インストール}を見よ)。
1320-なので、言語の定義ファイルを書く場合には、正規表現を確実に使う必要がある。
1321-しかし、怖がる必要はない。
1322-言語のほとんどでは、難しい正規表現を扱う必要は決して無いだろうし、言語のキーワード(たとえば、``if''とか``while''など。@ref{簡単な定義})を指定することもできる。
1323-さらに、区切られた言語エレメントの場合、デリミタを除いて正規表現を書く必要は無いだろう(@ref{delim定義})。
1324-しかし、もっとややこしい正規表現を多用する必要のある言語の定義もあるかもしれない(たとえば一つ挙げるとPerlである)。
1325-
1326-もちろん、Boost regexライブラリの正規表現を使う。
1327-そのシンタックスについてはBoostのドキュメンテーション(@uref{http://www.boost.org/libs/regex/doc/syntax.html})を参照するが、@ref{正規表現に関する注意}の中で、正規表現を扱ったことの無い人にとって助けとなるかもしれない、正規表現に関する注意を用意した。
1328-デフォルトでは、Boost regexライブラリはPerlの正規表現シンタックスを使う。
1329-現状、これがsource-highlightのサポートしている唯一のシンタックスである。
1330-
1331-ここで、そのシンタックスを多くの例に依りながら詳細に見ていく。
1332-これにより、既存の言語定義を簡単に修正して、新しいものを作ることができるようになる。
1333-これらのファイルは通常@file{.lang}という拡張子を持つ。
1334-
1335-各定義は基本的に、一つの正規表現を一つの言語エレメントに関連付け、その言語エレメントに対して名前を定義している。
1336-その名前は、そのエレメントをハイライトするときに、特定のスタイル(ボールド、色など)と関連付けるのに使われる。
1337-言語定義のシンタックスで使われているキーワードと同じ名前を使うことはできない(たとえば、後で出てくる@code{start}は、予約語である)。
1338-
1339-@code{#}を使ってコメントを書くこともできる。
1340-その行のその文字以降の部分はコメントとして解釈される。
1341-
1342-Source-highlightは、入力ファイルの各行を別々にスキャンする。
1343-なので、new line文字にマッチしようとする正規表現は失敗する運命にある。
1344-しかし、言語定義のシンタックスは、複数行を処理するための手段を用意している(@ref{delim定義}と@ref{state/environment定義}を見よ)。
1410+バージョン2.0からは、ソース言語のエレメント(例えば、キーワード、文字列、コメントなど)を指定するのに固有のシンタックスを使用します。
1411+バージョン2.0以前では、言語のエレメントはFlexを通してスキャンされていました。
1412+このため、新たな言語を処理する場合、新しくflexファイルを書かなければならないことが障害となっていました。
1413+さらに悪いことに、新しい言語を「動的」に追加することができません。
1414+そのため、source-highlightプログラム全部を再度コンパイルしなければなりませんでした。
1415+
1416+今は違います。
1417+言語のエレメントは、(願わくば)簡単なシンタックスを使って、ファイルに記述され、動的にロードされます。
1418+これらの定義は、内部的には、エレメントをハイライトするのに使うための正規表現をオンザフライに生成するのに使われています(@pxref{How source-highlight works})。
1419+詳しく言うと、使用している正規表現は、Boostライブラリが提供しているものです(@pxref{Installation})。
1420+ですから、言語の定義ファイルを書く場合には、正規表現を確実に使う必要があります。
1421+しかし、恐れる必要はありません。
1422+言語の大半においては、難しい正規表現を扱う必要は決して無いでしょうし、言語のキーワード@footnote{例えば、ifとかwhileなどです。
1423+@xref{Simple definitions}.
1424+}を指定することもできます。
1425+さらに、区切られた言語エレメントの場合、区切り子を除いて、正規表現を書く必要は無いでしょう(@pxref{Delimited definitions})。
1426+しかし、もっとややこしい正規表現を多用する必要のある言語の定義もあるかもしれません(例えば、一つ挙げるととしたら、Perlです)。
1427+
1428+もちろん、Boost regexライブラリの正規表現を使います。
1429+そのシンタックスについてはBoostのドキュメント(@uref{http://www.boost.org/libs/regex/doc/syntax.html})を参照することにします。
1430+しかし、正規表現を扱ったことの無い人にとって助けとなるかもしれませんので、正規表現に関する注意を別節に用意しました(@pxref{Notes on regular expressions})。
1431+デフォルトでは、Boost regexライブラリはPerlの正規表現シンタックスを使います。
1432+現状、これが、source-highlightのサポートしている唯一のシンタックスである。
1433+
1434+ここで、そのシンタックスを多くの例に依りながら詳細に見ていくことにします。
1435+これを使うと、既存の言語定義を簡単に修正し、新しいものを作ることができるようになります。
1436+これらのファイルは、通常、@file{.lang}という拡張子を持ちます。
1437+
1438+基本的に、各定義は、一つの正規表現を一つの言語エレメントに関連付け、その言語エレメントに対して名前を定義しています。
1439+その名前は、そのエレメントをハイライトする時に、特定のスタイル(ボールド、色など)と関連付けるのに使われます。
1440+言語定義のシンタックスで使われているキーワードと同じ名前を使うことはできません(例えば、後で出てくる@code{start}は予約語です)。
1441+
1442+@code{#}を使ってコメントを書くこともできます。
1443+その行のその文字以降の部分はコメントとして解釈されます。
1444+
1445+Source-highlightは、入力ファイルの各行を別々にスキャンします。
1446+ですから、改行文字にマッチしようとすると、正規表現は失敗することになります。
1447+しかし、言語定義のシンタックスでは、複数行を処理するための手段を用意しています。
1448+@xref{Delimited definitions}, and @ref{State/Environment Definitions}.
13451449
13461450 @menu
1347-* 正規表現の指定方法::
1348-* 簡単な定義::
1349-* ラインワイド定義::
1350-* 定義の順序::
1351-* delim定義::
1352-* 変数定義::
1353-* 動的後方参照::
1354-* ファイルのインクルード:: Include the contents of another file
1355-* state/environment定義::
1356-* 名前を使った明示的な部分表現::
1357-* 再定義と置換::
1358-* source-highlightの仕組み::
1359-* 正規表現に関する注意::
1360-* check-regexpプログラム::
1361-* 言語エレメントの一覧::
1362-* まとめの所見::
1363-* デバッギング:: Debug a language definition file
1364-* 言語定義のチュートリアル::
1451+* Ways of specifying regular expressions::
1452+* Simple definitions::
1453+* Line wide definitions::
1454+* Order of definitions::
1455+* Delimited definitions::
1456+* Variable definitions::
1457+* Dynamic Backreferences::
1458+* File inclusion:: Include the contents of another file
1459+* State/Environment Definitions::
1460+* Explicit subexpressions with names::
1461+* Redefinitions and Substitutions::
1462+* How source-highlight works::
1463+* Notes on regular expressions::
1464+* The program check-regexp::
1465+* Listing Language Elements::
1466+* Concluding Remarks::
1467+* Debugging:: Debug a language definition file
1468+* Tutorials on Language Definitions::
13651469 @end menu
13661470
1367-@node 正規表現の指定方法, 簡単な定義, 言語の定義, 言語の定義
1471+
1472+@node Ways of specifying regular expressions, Simple definitions, Language Definitions, Language Definitions
13681473 @section 正規表現の指定方法
13691474
1370-言語定義のシンタックスの詳細に入る前に、正規表現の文字列を指定する三つの方法について説明することは極めて大切なことだ。
1371-この三つの方法は、基本的に正規表現の特殊文字を扱う方法の違いである。
1372-たとえばカッコとかがそうである。
1373-このため、一つの仕組みが他のものよりもパワフルな場合があるのだが、これについてはもう少し注意も必要だろう。
1374-加えて、他のものが要求されるゴールへ至ることができないために、一つの仕組みだけしか使えないような状況も起こりうる。
1475+言語定義のシンタックスの詳細に入る前に、正規表現文字列を指定する三つの方法について説明することは極めて重要なことです。
1476+この三つの方法は、基本的に、正規表現の特殊文字を扱う方法の違いによるものです。
1477+例えば、カッコなどがそれに相当します。
1478+このため、方法によっては、他のものよりもパワフルな場合がありますが、これについては少し注意も必要となることがあるでしょう。
1479+また、他の方法では要求されるゴールへ達することができず、一つの方法だけしか使えないような状況も起こり得ます。
13751480
13761481 @table @code
13771482 @cindex @code{"expression"}
13781483 @item "expression"
13791484
1380-二重引用符(@code{"}である。@code{``}でも@code{''}でもないことに注意)を使って正規表現を指定する場合、基本的に、オルターネーションシンボルつまりパイプシンボル@code{|}以外の全ての文字がそのまま字面通り解釈されので、自動的にエスケープされる(たとえば、ドット@code{.}は、正規表現のワイルドカードではなく、文字@code{.}として解釈される)。
1381-例として次のように指定した場合を考える。
1485+二重引用符@footnote{@code{"}です。@code{``}でも@code{''}でもないことに注意してください。}を使って正規表現を指定する場合、基本的に、オルターネーションシンボル、つまり、パイプシンボル@code{|}以外の全ての文字がそのまま字面通り解釈されます。
1486+そのため、自動的にエスケープされことになります(例えば、ドット@code{.}は、正規表現のワイルドカードではなく、文字@code{.}として解釈されます)。
1487+例として、次のように指定した場合を考えます。
13821488
13831489 @example
13841490 "my(regular)ex.pre$$ion@{*@}"
13851491 @end example
13861492
13871493 @noindent
1388-この場合、source-highlightは自動的に次のように変換する。
1494+この場合、自動的に次のように変換します。
13891495
13901496 @example
13911497 my\(regular\)ex\.pre\$\$ion\@{\*\@}
13921498 @end example
13931499
1394-
1395-二つの選択肢を分けるという意味を持たせない限り、@code{|}という特殊文字は、@code{\}文字でエスケープしなければならない。
1396-たとえば、@code{\|}のようになる。
1397-また、文字@code{\}も文字通りの意味を持たせるためには、@code{\\}のようにエスケープしなければならない。
1500+二つの選択肢を分けるという意味を持たせないのであれば、@code{|}という特殊文字は、@code{\}文字でエスケープしなければなりません(@pxref{Simple definitions})。
1501+例えば、@code{\|}のようにします。
1502+また、文字@code{\}も文字通りの意味を持たせるためには、@code{\\}のようにエスケープしなければなりません。
13981503
13991504 @cindex @code{'expression'}
14001505 @item 'expression'
14011506
1402-正規表現のフルパワーを享受したいのならば、二重引用符の代わりに、一重引用符(@code{'})の文字列を使う必要がある。
1403-これを使えば、特殊な文字を、その特殊な意味として指定することができるようになる。
1507+正規表現のフルパワーを享受したいならば、二重引用符ではなく、単引用符(@code{'})の文字列を使う必要があります。
1508+単引用符を使えば、特殊な文字を、その特殊な意味として指定することができるようになります。
14041509
1405-しかし、マークされた部分表現は、自動的にマークされていない部分表現に変換される。
1406-すなわち、まとまりの@code{(...)}という表現の部分は、@code{(?:...)}というように変形される(@ref{正規表現に関する注意}で説明しているように、@code{(?:...)}は、正規表現の一部をその字面通りにグループ化する。
1407-その際、マークされた部分表現は生成されない)。(訳注:いわゆる正規表現メモリのことを言っているのだと思う)
1510+しかし、マークされた部分表現は、マークされていない部分表現に自動的に変換されます。
1511+つまり、@code{(...)}という形式の表現は、@code{(?:...)}というように変形されます。
1512+別節で説明しているように、@code{(?:...)}は、正規表現の一部をその字面通りにグループ化します(@pxref{Notes on regular expressions})。
1513+その際、マークされた部分表現は生成されません@footnote{訳注:いわゆる正規表現メモリのことを言っているのだと思います。}。
14081514
1409-なので、例えば、次のように指定した場合を考える:
1515+ですから、例えば、次のように指定した場合を考えます。
14101516
14111517 @example
14121518 'my(regular)ex.pre$ion*'
14131519 @end example
14141520
14151521 @noindent
1416-この場合、source-highlightは自動的にこれを次のように変形する:
1522+この場合、自動的にこれを次のように変形します。
14171523
14181524 @example
14191525 my(?:regular)ex.pre$ion*
14201526 @end example
14211527
1422-マークされた部分表現はこのシンタックスでは指定することができないので、@emph{後方参照}は許されていない(@ref{正規表現に関する注意}を参照)。
1528+マークされた部分表現はこのシンタックスでは指定することができませんので、@emph{後方参照}は許されていません。
1529+@xref{Notes on regular expressions}.
14231530
14241531 @cindex @code{`expression`}
14251532 @item `expression`
@@ -1427,14 +1534,18 @@ my(?:regular)ex.pre$ion*
14271534 @cindex marked subexpressions
14281535 @cindex backreference
14291536 @cindex backtick
1430-正規表現を指定するための、このシンタックス@footnote{バージョン2.7から}(このシンタックスではバッククォート@code{`}を使っている。前のシンタックスは@code{'}を使っている。その違いに注意)は、他の二つのシンタックスの制限を克服するために導入された。
1431-このシンタックスを使うと、マークされた部分表現は変形されないので、@emph{後方参照}や@emph{条件}のような、マークされた部分表現に依存した正規表現の仕組みを利用することができる(@ref{正規表現に関する注意}を参照)。
1537+正規表現を指定するこのシンタックス@footnote{バージョン2.7から}は、他の二つのシンタックスの制限を克服するために導入されました(前のシンタッックスが@code{'}を使っているのに対し、バッククォート@code{`}を使っていますので注意してください)。
1538+このシンタックスを使うと、マークされた部分表現は変形されません。
1539+そのため、@emph{後方参照}や@emph{条件}のような、マークされた部分表現に依存した正規表現の仕組みを利用することがでます。
1540+@xref{Notes on regular expressions}.
14321541
1433-このシンタックスは、例えば、Perlの正規表現のように、あるプログラミング言語の特定のプログラム部分をハイライトすることに対しても極めて重要だ。
1434-Perlの正規表現は、(たとえば、置換の式において)多くの形式で表現されうる。
1435-具体的に言うと、置換される部分と置換する部分を分ける、英数字以外の任意の文字が可能なセパレータである@footnote{Perlの正規表現のシンタックスに関連するこの問題はElias Pippingによって提起され、また、このことは、たとえば、後方参照の利用を許すようなこのさらにパワフルなシンタックスを処理するように、私を駆り立てた。
1436-Perlのシンタックスを完璧にハイライトするには程遠いけれども(@ref{Perl})、この問題に関する貴重な情報をもたらしてくれたEliasに間違い無く私は感謝せねばなるまい :-)}。
1437-例を挙げる:
1542+このシンタックスは、例えば、Perlの正規表現のように、あるプログラミング言語の特定のプログラム部分をハイライトすることに対しても極めて重要です。
1543+Perlの正規表現は、(例えば、置換の式において)多くの形式で表現されることがあります。
1544+具体的に言うと、置換される部分と置換する部分を分けるセパレータです@footnote{Perlの正規表現のシンタックスに関連するこの問題はElias Pippingによって提起されました。
1545+また、このことによって、例えば、後方参照の利用を許すようなさらにパワフルなこのシンタックスを処理できるように私は駆り立てられることになりました。
1546+Perlのシンタックスを完璧にハイライトするには程遠いですが(@pxref{Perl})、この問題に関する貴重な情報をもたらしてくれたEliasに間違い無く私は感謝しなければなりません。:-)}。
1547+英数字以外の任意の文字が使えます。
1548+例を挙げます。
14381549
14391550 @example
14401551 s/foo/bar/g
@@ -1443,7 +1554,8 @@ s#foo#bar#g
14431554 s@@foo@@bar@@g
14441555 @end example
14451556
1446-このシンタックスと後方参照を使うと、一つの言語エレメントを定義して、これらの複数の表現を処理することが簡単にできるようになる(可能性のある非英数字を全て列挙することはない):
1557+このシンタックスと後方参照を使うと、これらの複数の表現を処理することができる一つの言語エレメントを簡単に定義できるようになります。
1558+可能性のある非英数字の場合を全て列挙するようなことはありません。
14471559
14481560 @example
14491561 regexp = `s([^[:alnum:][:blank:]]).*\1.*\1[ixsmogce]*`
@@ -1451,30 +1563,30 @@ regexp = `s([^[:alnum:][:blank:]]).*\1.*\1[ixsmogce]*`
14511563
14521564 @end table
14531565
1454-バージョン2.11からは、正規表現の指定全てで、改行文字を入れられるようになった。
1455-改行は単に無視される。
1456-なので、たとえば、次のファイルを見てほしい:
1566+バージョン2.11からは、あらゆる正規表現の指定において改行文字を入れられるようになりました。
1567+改行は単に無視されます。
1568+ですから、例えば、次のファイルを見てください。
14571569
14581570 @include test_newlines.lang.texinfo
14591571
14601572 @noindent
1461-このファイルは次のファイルと同等だ。
1462-and the file:
1573+このファイルは次のファイルと同等です。
14631574
14641575 @include test_nonewlines.lang.texinfo
14651576
14661577 @noindent
1467-しかし、前者が間違い無く読み易い。
1578+しかし、前者が間違い無く読み易いです。
14681579
1469-だが注意してほしいのだが、正規表現中の空白文字は無視されない。
1580+注意してほしいですが、正規表現中の空白文字は無視されません。
14701581
1471-@node 簡単な定義, ラインワイド定義, 正規表現の指定方法, 言語の定義
1582+
1583+@node Simple definitions, Line wide definitions, Ways of specifying regular expressions, Language Definitions
14721584 @section 簡単な定義
14731585 @cindex simple language definition
14741586
1475-言語のエレメントを記述する最も簡単な方法は、可能性のあるものをリストにすることだ。
1476-たとえば、これはキーワードの場合だ。
1477-例を挙げると、@file{java.lang}は次のようになっている:
1587+言語のエレメントを記述する最も簡単な方法は、可能性のあるものをリストにすることです。
1588+例えば、キーワードの場合です。
1589+例を挙げると、@file{java.lang}は次のようになっています。
14781590
14791591 @example
14801592 keyword = "abstract|assert|break|case|catch|class|const",
@@ -1486,45 +1598,49 @@ keyword = "native|new|null|private|protected|public|return",
14861598 @end example
14871599
14881600
1489-引用された定義はカンマで分けることができる。
1490-代わりに、引用された定義の内部では、選択肢はパイプシンボル@code{|}で分けられる。
1491-上の定義は、keywordという言語エレメントを定義するものだ。
1492-ソースファイルの中でエレメントが一つ見つかるごとに、そのエレメントは、出力フォーマットスタイルファイルにある同名の、そのエレメントに対するスタイルでハイライトされる(例で示されているエレメントは全て、source-highlightedと一緒に配布されている言語定義ファイルから取られたもので、その各エレメントにはスタイルが存在していることに注意してほしい)。
1493-出力フォーマットスタイルファイルで、そのようなエレメントが指定されていない場合には、単にハイライトされない(実際は、@code{normal}というスタイルでハイライトされる。@ref{設定ファイル}を参照)(なのでタイポには注意を払ってほしい :-))。
1601+引用された定義はカンマで分けることができます。
1602+また、引用された定義の内部では、パイプシンボル@code{|}で選択肢が分けられます。
1603+上の定義は、keywordという言語エレメントを定義するものです。
1604+ソースファイルの中でエレメントが一つ見つかるごとに、そのエレメントは、出力フォーマットスタイルファイルのそのエレメントに対する同名のスタイルでハイライトされます@footnote{例で示されているエレメントは、全て、source-highlightと一緒に配布されている言語定義ファイルから取られたものです。
1605+各エレメントにスタイルが存在していることに注意してください。
1606+@xref{Configuration files}.}。
1607+出力フォーマットスタイルファイルでそのようなエレメントが指定されていない場合には、単にハイライトされません@footnote{実際は、@code{normal}というスタイルでハイライトされます。
1608+@xref{Configuration files}.}(ですから、タイポには注意してください:-))。
14941609
1495-上の例から、言語の定義が累積的であることにお気付きかもしれない。
1496-つまり、2番目の@code{keyword}の定義は最初のものを置き換えるものではない。
1497-(実際には、場合によって、言語のエレメントを再定義したいと思うこともあるだろう。
1498-これは@ref{再定義と置換}で説明するように可能だ。)
1610+上の例から、言語の定義が累積的であることに気付いたかもしれません。
1611+つまり、2番目の@code{keyword}の定義は最初のものを置き換えるものではありません@footnote{実際には、場合によって、言語のエレメントを再定義したいと思うこともあります。
1612+別の節で説明するようにこれは可能です。
1613+@xref{Redefinitions and Substitutions}.}。
14991614
1500-二重引用符に括られて指定されたワードは、ソースファイルにおいて正確にマッチしなければならず、また独立して存在しなければならない(空白以外のもので挟まれていてはいけない)。
1501-なので、たとえば@code{class}という文字列は、キーワードとしてマッチするが、@code{my_class}の部分文字列@code{class}にはキーワードとしてはマッチしない。
1502-正規表現の点から言うと、二重引用符に括られた単純な定義における@code{class}というような文字列は、@code{\<(class)\>}というようなものを意図している。
1615+二重引用符に括られて指定されたワードは、ソースファイルにおいて正確にマッチしなければなりません。
1616+また、独立して存在しなければなりません(空白以外のもので挟まれていてはいけません)。
1617+ですから、例えば、@code{class}という文字列はキーワードとしてはマッチしますが、@code{my_class}の部分文字列の@code{class}にはキーワードとしてはマッチしません。
1618+正規表現の点から言うと、二重引用符に括られた単純な定義における@code{class}というような文字列は、@code{\<(class)\>}を意図したものです。
15031619
1504-特殊な文字は@code{\}という文字でエスケープしなければならない。
1505-なので例えば、@code{|}という文字を指定したい場合、これは通常、二重引用符で括られた文字列の中で選択肢を分割するものとして使われるのだが、これは@code{\|}というように指定しなければならない。
1620+特殊な文字は、@code{\}という文字でエスケープしなければなりません。
1621+ですから、例えば、@code{|}という文字は、通常、二重引用符で括られた文字列の中で選択肢を分割するものとして使われますが、この文字@code{|}を指定したい場合、@code{\|}のように指定しなければなりません。
15061622
1507-@ref{正規表現の指定方法}で述べているように、二重引用符で括られた定義は、字面のまま解釈される(ゆえに、たとえばドット@code{.}は、正規表現におけるワイルドカードとしてではなく、文字@code{.}として解釈される)。
1508-言語のあるオルタナティブを記述するのに(訳注:to specify a language alternative)正規表現のフルパワーを享受したい場合には、二重引用符の文字列の代わりに、一重引用符(@code{'})の文字列か、あるいはバッククォート(@code{`})で括られた文字列を使わなければならない。
1623+別の節(@pxref{Ways of specifying regular expressions})で述べているように、二重引用符で括られた定義は字面のまま解釈されます(ゆえに、例えば、ドット@code{.}は、正規表現におけるワイルドカードとしてではなく、文字@code{.}として解釈されます)。
1624+言語のある選択肢を記述する時に、正規表現のフルパワーを享受したい場合には、二重引用符の文字列の代わりに、単引用符(@code{'})の文字列か、あるいは、バッククォート(@code{`})で括られた文字列を使わなければなりません。
15091625
1510-たとえば、次のものは、C/C++におけるプリプロセッサの定義だ:
1626+例えば、次のものは、C/C++におけるプリプロセッサの定義です。
15111627
15121628 @example
15131629 preproc = '^[[:blank:]]*#([[:blank:]]*[[:word:]]*)'
15141630 @end example
15151631
1516-上で説明されているように、@code{'class'}という定義は、@code{"class"}とは違うということに注意してほしい。
1517-なので、たとえば、@code{'class'}は、@code{my_class}の中の@code{class}という部分表現にもマッチする。
1632+上で説明したように、@code{'class'}という定義は、@code{"class"}とは違うということに注意してください。
1633+ですから、例えば、@code{'class'}の場合、@code{my_class}の中の@code{class}という部分表現にもマッチします。
15181634
1519-加えて、二重引用符の文字列と一重引用符の文字列を同じリストに記述することは許されていない。
1520-そういうリストの定義は分割する必要がある。
1521-ゆえに、たとえば、以下の定義は間違いだ:
1635+加えて、二重引用符の文字列と単引用符の文字列を同じリストに記述することは許されていません。
1636+そういうリストを定義する場合、分割する必要があります。
1637+ゆえに、例えば、以下の定義は間違いとなります。
15221638
15231639 @example
15241640 preproc = "#define",'^[[:blank:]]*#([[:blank:]]*[[:word:]]*)'
15251641 @end example
15261642
1527-一方で、次のものは正しい:
1643+一方で、次のものは正しいものです。
15281644
15291645 @example
15301646 preproc = "#define"
@@ -1532,10 +1648,10 @@ preproc = '^[[:blank:]]*#([[:blank:]]*[[:word:]]*)'
15321648 @end example
15331649
15341650 @cindex nonsensitive
1535-最後に、定義のリストの最後において、@code{nonsensitive}というキーワードを記述してもよい。
1536-その場合、記述された文字列は大文字小文字を区別しないものとして解釈される。
1537-たとえば、この機能はPascal言語の定義で使用している。
1538-@file{pascal.lang}では、キーワードは大文字小文字を区別せずに解析される:
1651+最後に、定義のリストの最後において、@code{nonsensitive}というキーワードを記述することができます。
1652+その場合、記述された文字列は大文字小文字を区別しないものとして解釈されます。
1653+例えば、Pascal言語の定義でこの機能を使用しています。
1654+@file{pascal.lang}では、キーワードは大文字小文字を区別せずに解析されます。
15391655
15401656 @example
15411657 keyword = "alfa|and|array|begin|case|const|div",
@@ -1546,50 +1662,53 @@ keyword = "alfa|and|array|begin|case|const|div",
15461662 nonsensitive
15471663 @end example
15481664
1549-@node ラインワイド定義, 定義の順序, 簡単な定義, 言語の定義
1665+
1666+@node Line wide definitions, Order of definitions, Simple definitions, Language Definitions
15501667 @section ラインワイド定義
15511668 @cindex lines
15521669
1553-行末に至るまで残りの文字全てに影響する言語のエレメントを定義するのは、大変便利だ。
1554-そういう定義には、@code{=}の代わりに、@code{start}というキーワードを使わなければならない。
1555-たとえば、次のものは、C++における一行コメントの定義である:
1670+行末に至るまで残りの文字全てに影響する言語エレメントを定義できると大変便利です。
1671+そういう定義をする場合、@code{=}ではなく、@code{start}というキーワードを使わなければなりません。
1672+例えば、次のものは、C++における一行コメントの定義です。
15561673
15571674 @example
15581675 comment start "//"
15591676 @end example
15601677
1561-これは、ソースファイルの中で二つの文字@code{//}に遭遇すると、これらの文字から行末までの全てが@code{comment}というスタイルによってハイライトされるということを意味している。
1678+これは、ソースファイルの中で二つの文字@code{//}に遭遇すると、これらの文字から行末までの全てが、@code{comment}というスタイルによってハイライトされるということを意味しています。
15621679
1563-@node 定義の順序, delim定義, ラインワイド定義, 言語の定義
1680+
1681+@node Order of definitions, Delimited definitions, Line wide definitions, Language Definitions
15641682 @section 定義の順序
15651683 @cindex definition order
15661684
1567-言語の定義の順序が重要であるということを知るのは重要だ。
1568-その順序が正規表現のマッチングの間に使用されるからだ(このことは@ref{source-highlightの仕組み}に詳述するつもりだ)。
1569-それから、同じ文字で始まる定義があるならば、最も長い式をまずそのファイルの中で記述しなければならないということを確認しなければならない。
1570-たとえば、次のように書いたとする:
1685+言語の定義の順序が重要であるということを知っておくことは重要なことです。
1686+正規表現のマッチング際、その順序が使用されるからです(このことは別の節(@pxref{How source-highlight works})に詳述するつもりです)。
1687+それから、同じ文字で始まる定義があるならば、最も長い式を、そのファイルの中にまず記述しなければならないということを確認しなければなりません。
1688+例えば、次のように書いたとします。
15711689
15721690 @example
15731691 symbol = "/"
15741692 comment start "//"
15751693 @end example
15761694
1577-最初の式は、常に最初にマッチさせられる。
1578-そして2番目の式は決してマッチしない。
1579-正しい順序は次のようになる:
1695+最初の式が常に最初にマッチします。
1696+そして、2番目の式は決してマッチすることはありません。
1697+正しい順序は次のようになります。
15801698
15811699 @example
15821700 comment start "//"
15831701 symbol = "/"
15841702 @end example
15851703
1586-@node delim定義, 変数定義, 定義の順序, 言語の定義
1704+
1705+@node Delimited definitions, Variable definitions, Order of definitions, Language Definitions
15871706 @section delim定義
15881707 @cindex delimited definitions
15891708
1590-多くのエレメントは特定の文字の並びで区切られている。
1591-たとえば文字列や複数行のコメントである。
1592-こういうエレメントの定義のシンタックスは次のようになる:
1709+多くのエレメントは、特定の文字の並びで区切られています。
1710+例えば、文字列や複数行コメントです。
1711+こういうエレメントの定義シンタックスは次のようになります。
15931712
15941713 @example
15951714 <name> delim <left delimited> <right delimiter> \
@@ -1597,33 +1716,36 @@ symbol = "/"
15971716 @{multiline@} @{nested@}
15981717 @end example
15991718
1600-@code{escape}ステートメントは、そのエレメントの内部にある区切り子の一つに前置させるエスケープ用の文字を指定するものだ。
1601-これはオプショナルである。
1719+@code{escape}ステートメントは、そのエレメントの内部にある区切り子の前に置いてエスケープする時に使用する文字を指定するものです。
1720+これは省略可能です。
16021721
1603-たとえば、Cライクな文字列の定義は次のようになる:
1722+例えば、Cライクな文字列の定義は次のようになります。
16041723
16051724 @example
16061725 string delim "\"" "\"" escape "\\"
16071726 @end example
16081727
1609-@code{\}は定義における特殊文字なので、エスケープしなければならないことに注意してほしい。
1610-@code{escape}の指定が省略されると、Cの文字列@code{"write \"hello\" string"}は間違ってハイライトされてしまっていただろう(@code{"write \"}という文字列と、通常の文字並びの@code{hello\}、そして文字列の@code{" string"}というようにハイライトされてしまっていた)。
1728+@code{\}は定義における特殊文字なので、エスケープしなければなりませんので注意してください。
1729+@code{escape}の指定が省略された場合、Cの文字列@code{"write \"hello\" string"}は間違ってハイライトされてしまうでしょう(文字列の@code{"write \"}、通常の文字並びの@code{hello\}、文字列の@code{" string"}というようにハイライトされてしまいます)。
16111730
1612-@code{multiline}というオプションは、そのエレメントが複数行に渡ることがあるというとを記述するものだ。
1613-たとえば、PHPの文字列の定義は次のようになる:
1731+@code{multiline}というオプションは、そのエレメントが複数行に渡ることがあるというとを記述するものです。
1732+例えば、PHPの文字列の定義は次のようになります。
16141733
16151734 @example
16161735 string delim "\"" "\"" escape "\\" multiline
16171736 @end example
16181737
1619-@code{nested}というオプションは、区切りの文字が複数あった可能性をカウントして、(スタックを使って)対応する複数の(区切り文字の)出現をマッチさせるように指示するものだ。
1620-たとえば、ネストしているCライクな複数行コメントをハイライトしたいのならば(Ed Kellyが正しく指摘したように、Cスタイルのコメントはネストしない。数年間C++とJavaを使っていて、コメントというのはネストするとずっと思っていたことを遺憾に思う :-) そういう理由で、source-highlightの前のバージョンの配布物では、Cスタイルのコメントは(間違って)ネストされるように定義されていた。フィードバックをくれたEdに感謝する)、次のような定義が使えるだろう。
1738+@code{nested}というオプションは、区切り文字が複数あった場合をカウントして、対応する複数の区切り文字の出現にマッチするように指示するものです(スタックを使います)。
1739+例えば、ネストしているCライクな複数行コメントをハイライトしたい場合@footnote{Ed Kellyが正しく指摘したように、Cスタイルのコメントはネストしません。
1740+数年間C++とJavaを使っていて、コメントというのはネストするとずっと思っていたことを遺憾に思います。:-)
1741+そういうわけで、source-highlightの前のバージョンの配布物では、Cスタイルのコメントは(間違って)ネストされるように定義されていました。
1742+フィードバックをくれたEdに感謝します。}、次のような定義が使えます。
16211743
16221744 @example
16231745 comment delim "/*" "*/" multiline nested
16241746 @end example
16251747
1626-@code{nested}が使われなかったとしたら、以下に示すネストされたコメントの閉じる@code{*/}がこのコメントを終了させてしまうだろう(そして2番目の@code{*}はコメントとしてはハイライトされないだろう):
1748+@code{nested}が使われなかったとしたら、以下に示すネストされたコメントの閉じる@code{*/}によって、このコメントは終了してしまうでしょう(そして、2番目の@code{*}はコメントとしてはハイライトされません)。
16271749
16281750 @example
16291751 /*
@@ -1631,67 +1753,73 @@ comment delim "/*" "*/" multiline nested
16311753 */
16321754 @end example
16331755
1634-区切り子で区切られた言語のエレメントがネストできるようにするには、その開始と終了のエレメントが異なっていなければならない。
1635-なので、例えば以下の定義は正しくない:
1756+区切り子で区切られた言語のエレメントがネストできるようにするには、その開始・終了のエレメントが異なっていなければなりません。
1757+ですから、例えば、以下の定義は正しくありません。
16361758
16371759 @example
16381760 string delim "\"" "\"" nested # WRONG!
16391761 @end example
16401762
1641-上で述べたように、定義は累積的であり、そして文法的に異なった形式を使ったときですら累積的だ。
1642-従って、例えば、C++スタイルのコメントの完全な定義は次のようになる(実際、Cスタイルのコメントの定義はもっとややこしい。@file{c_comment.lang}というファイルを見てほしい):
1763+上で述べたように、定義は累積的です。
1764+文法的に異なった形式を使った時ですら累積的です。
1765+従って、例えば、C++スタイルのコメントの完全な定義は次のようになります@footnote{実際、Cスタイルのコメントの定義はもっとややこしいものです。
1766+@file{c_comment.lang}というファイルを見てください。}。
16431767
16441768 @example
16451769 comment start "//"
16461770 comment delim "/*" "*/" multiline
16471771 @end example
16481772
1649-@node 変数定義, 動的後方参照, delim定義, 言語の定義
1773+
1774+@node Variable definitions, Dynamic Backreferences, Delimited definitions, Language Definitions
16501775 @section 変数定義
16511776 @cindex variables
16521777
1653-言語定義ファイルの中の多くの場所で再利用されるように変数を定義することが可能だ。
1654-変数は次のように定義される。
1778+変数を定義すれば、言語定義ファイル中のあちこちの場所で再利用することが可能となります。
1779+変数は次のように定義します。
16551780
16561781 @code{vardef} <name of the variable> @code{=} <list of definitions>
16571782
1658-一度定義すると、その変数名の前に@code{$}というシンボルを付けることで使うことができる。
1659-例えば次のようになる。
1783+一度定義すると、その変数名の前に@code{$}というシンボルを付けることで使うことができます。
1784+例えば、次のようになります。
16601785
16611786 @example
16621787 vardef FUNCTION = '(?:[[:alpha:]]|_)[[:word:]]*(?=[[:blank:]]*\()'
16631788 function = $FUNCTION
16641789 @end example
16651790
1666-大文字にしたのは単に読み易さの為だけだ。
1791+大文字にしたのは単に読み易さの為だけです。
16671792
1668-変数と式を連結することも可能で、さらなる変数の定義の内部で変数を再利用することもできる:
1793+変数と式を連結することも可能で、さらに別の変数定義の内部で変数を再利用することもできます。
16691794
16701795 @example
16711796 vardef basic_time = '[[:digit:]]@{2@}:[[:digit:]]@{2@}:[[:digit:]]@{2@}'
16721797 vardef time = '\<' + $basic_time + '\>'
16731798 @end example
16741799
1675-@node 動的後方参照, ファイルのインクルード, 変数定義, 言語の定義
1800+
1801+@node Dynamic Backreferences, File inclusion, Variable definitions, Language Definitions
16761802 @section 動的後方参照
16771803 @cindex dynamic backreference
16781804
1679-@emph{動的後方参照}を使うと、@code{delim}指定の最初のエレメントの正規表現によってマッチした文字列を参照することができる(バージョン2.8から)。
1680-私はこの後方参照のことを、正規表現シンタックスの後方参照によってそれらを区別するために、ダイナミックと呼んだ(@ref{正規表現の指定方法}を参照)。
1681-右側のデリミタ(区切り子)が左側のデリミタによってマッチした部分表現に依存しているような場合にこれは極めて重要である。
1682-たとえば、Luaのコメントは@code{--[[ comment ]]}や@code{--[=[ comment ]=]}の形になるが、@code{--[=[ comment ]]}や@code{--[[ comment ]=]}のどちらでもない(さらに言えば、ネストしてもよい)@footnote{Luaのコメントに関するこの問題を挙げてくれたJurgen Hotzelに感謝している。このことで私は動的後方参照を導入することにした}。
1683-従って、右側のエレメントの正規表現は、左側のエレメントのものに依存している。
1805+@emph{動的後方参照}を使うと、@code{delim}指定の最初のエレメントの正規表現によってマッチした文字列を参照することができます@footnote{バージョン2.8からです。}。
1806+この後方参照のことを、正規表現シンタックスの後方参照によって区別するために、動的(dynamic)と呼びました(@pxref{Ways of specifying regular expressions})。
1807+右側の区切り子が、左側の区切り子によってマッチした部分表現に依存しているような場合にこれは極めて重要です。
1808+例えば、Luaのコメントは、@code{--[[ comment ]]}や@code{--[=[ comment ]=]}の形になります。
1809+@code{--[=[ comment ]]}や@code{--[[ comment ]=]}のどちらでもありません(さらに言えば、ネストも可能です)@footnote{Luaのコメントに関するこの問題を挙げてくれたJurgen Hotzelに感謝します。
1810+このことがあったので動的後方参照を導入することにしました。}。
1811+従って、右側のエレメントの正規表現は、左側のエレメントに依存しています。
16841812
1685-動的後方参照は変数に似ている(@ref{変数定義})が、宣言は無く、次のような形をしている。
1813+動的後方参照は変数に似ています(@pxref{Variable definitions})が、宣言は無く、次のような形をしています。
16861814
16871815 @example
16881816 @@@{number@}
16891817 @end example
16901818
16911819 @noindent
1692-ここで、@code{number}は左側のデリミタにおけるマークされた部分表現の番号だ(source-highlightは、そういったマークされた部分表現が左側のデリミタに存在することを実際に確認する)。
1820+@code{number}は、左側の区切り子におけるマークされた部分表現の番号です(source-highlightは、そういったマークされた部分表現が左側の区切り子に存在することを実際に確認します)。
16931821
1694-たとえば、これがLuaのコメントの定義だ(@file{lua.lang}も見よ):
1822+例えば、これがLuaのコメントの定義です(@file{lua.lang}も見てください)。
16951823
16961824 @example
16971825 environment comment delim `--\[(=*)\[` "]" + @@@{1@} + "]"
@@ -1702,23 +1830,24 @@ end
17021830 @end example
17031831
17041832 @noindent
1705-左側のデリミタが、マークされた部分表現としてオプショナルな@code{=}とどのようにマッチして、右側のデリミタが@@@{1@}によってそれをどのように参照するかを注意してほしい。
1833+左側の区切り子が、マークされた部分表現としてオプショナルな@code{=}とどのようにマッチするか、また、右側の区切り子が@@@{1@}によってどのように参照するかに注意してください。
17061834
1707-source-highlightは、動的後方参照の置き換えの際に、起こりうる特殊文字のエスケープの面倒を見る。
1708-たとえば、次に示すようなdelimエレメントで、@code{[^[:alnum:]]}という部分表現が@code{|}とマッチしたために、@@@{1@}を@code{|}に置き換えなければならないとしよう:
1835+source-highlightは、動的後方参照の置き換えの際に、特殊文字のエスケープの面倒を見ます。
1836+例えば、次に示すようなdelimエレメントの場合を考えます。
1837+@code{[^[:alnum:]]}という部分表現が@code{|}とマッチしたために、@@@{1@}を@code{|}に置き換えなければならないとします。
17091838
17101839 @example
17111840 comment delim `([^[:alnum:]])` @@@{1@}
17121841 @end example
17131842
17141843 @noindent
1715-@code{|}は正規表現のシンタックスにおいて特別な文字なので、source-highlightは、@code{@@@{1@}}を実際には@code{\|}と置き換える。
1844+@code{|}は正規表現のシンタックスにおいて特別な文字ですので、source-highlightは、@code{@@@{1@}}を実際には@code{\|}と置き換えます。
17161845
1717-重要:右側のデリミタは、その左側のデリミタの部分表現を参照できるだけである。
1718-そのため、ネストされたdelimエレメントの定義の場合(たとえばstateやenvironmentで。@ref{state/environment定義}を参照)、左側のデリミタはバインダとして振舞い、外側のdelimエレメントで定義されている起こりうる部分表現を隠す。
1846+重要:右側の区切り子は、その左側の区切り子の部分表現を参照できるだけです。
1847+そのため、ネストされたdelimエレメントの定義の場合(例えば、stateやenvironmentにおいてです。@pxref{State/Environment Definitions})、左側の区切り子はバインダとして振舞い、外側のdelimエレメントで定義されている部分表現を隠します。
17191848
1720-後方参照でネストしている区切り子で区切られたエレメントに正しくマッチすることは大変重要なことだ。
1721-source-highlightはこのLuaのネストした(そして文法上は正しい)コメントを正しく認識する:
1849+ネストしている区切り子で区切られたエレメントに後方参照で正しくマッチすることは大変重要なことです。
1850+source-highlightは、Luaのネストした(そして、文法上は正しい)コメントを正しく認識します。
17221851
17231852 @example
17241853 --[[
@@ -1732,16 +1861,17 @@ source-highlightはこのLuaのネストした(そして文法上は正しい
17321861 ]]
17331862 @end example
17341863
1735-@node ファイルのインクルード, state/environment定義, 動的後方参照, 言語の定義
1864+
1865+@node File inclusion, State/Environment Definitions, Dynamic Backreferences, Language Definitions
17361866 @section ファイルのインクルード
17371867 @cindex file inclusion
17381868
1739-言語定義ファイルを、別のファイルにインクルードすることができる。
1740-これは、インクルードが起きたちょうどその場所で、解析中の現在のファイルの中にインクルードされるファイルの内容を実際に物理的にインクルードする(ちょうどC/C++における@code{#include}のようなもの)。
1741-これは、多数のファイルで定義を再利用するのに役に立つ。
1742-たとえば、c++のコメントの定義は@file{c_comment.lang}というファイルで記述されていて、このファイルはJavaやC++の定義ファイルでインクルードされている。
1743-同じことは、numberやfunctionでも行われている。
1744-例を挙げると、@file{java.lang}ファイルには以下に示すincludeの指示が含まれている:
1869+言語定義ファイルは別のファイルにインクルードすることができます。
1870+インクルードが起きたちょうどその場所で、解析中の現在のファイルの中に、インクルードされるファイルの内容を実際に物理的にインクルードします(ちょうどC/C++における@code{#include}のようなものです)。
1871+これは、多数のファイルで定義を再利用する場合に有用です。
1872+例えば、c++のコメントの定義は@file{c_comment.lang}というファイルで記述されていますが、このファイルは、JavaやC++の定義ファイルでインクルードされています。
1873+同じことは、numberやfunctionでも行われています。
1874+例を挙げると、@file{java.lang}ファイルには以下に示すincludeの指示が含まれています。
17451875
17461876 @example
17471877 include "c_comment.lang"
@@ -1753,16 +1883,18 @@ keywords ...
17531883 include "function.lang"
17541884 @end example
17551885
1756-定義の順序が重要であるので、インクルードの順序が重要であることに注意してほしい。
1757-たとえば、キーワードの定義よりも前に関数の定義がインクルードされると、@code{if (exp)}というセンテンスは関数呼び出しとしてハイライトされるだろう(@ref{定義の順序}と@ref{source-highlightの仕組み}を参照)。
1886+定義の順序が重要ですので、インクルードの順序が重要であることに注意してください。
1887+例えば、キーワードの定義よりも前に関数の定義がインクルードされると、@code{if (exp)}というセンテンスが関数呼び出しとしてハイライトされてしまいます。
1888+@xref{Order of definitions}, and @ref{How source-highlight works}.
17581889
1759-@node state/environment定義, 名前を使った明示的な部分表現, ファイルのインクルード, 言語の定義
1890+
1891+@node State/Environment Definitions, Explicit subexpressions with names, File inclusion, Language Definitions
17601892 @section state/environment定義
17611893 @cindex states
17621894 @cindex environments
17631895
1764-他のエレメントに挟まれている場合にだけ、あるソースエレメントをハイライトしたいということが時折ある。
1765-source-highlightedの言語定義では、この機能も用意している。
1896+他のエレメントに挟まれている場合にだけ、あるソースエレメントをハイライトしたいという場合があります。
1897+source-highlightの言語定義には、この機能も用意しています。
17661898
17671899 @example
17681900 state|environment <standard definition> begin
@@ -1770,12 +1902,13 @@ state|environment <standard definition> begin
17701902 end
17711903 @end example
17721904
1773-この構造は再帰的だ(なので、state/environmentの定義は別のstate/environmentの内部で使うことができる)。
1774-state/environmentの意味は、state/environmentを定義している定義がマッチした場合にだけ、@code{begin ... end}の内部の定義がマッチするということである。
1775-しかし、state/environmentに入ったとき、そのstate/environmentの外側で指定されている定義はマッチしない。
1776-@code{state}と@code{environment}の違いは、後者においては、ソース言語の通常の部分(つまり、どの定義にもマッチしない部分)は、そのenvironmentを定義している定義のスタイルに応じてハイライトされるということだ。
1905+この構造は再帰的なものです(ですから、state/environmentの定義は別のstate/environmentの内部で使うことができます)。
1906+state/environmentの意味は、state/environmentを定義している定義がマッチした場合にだけ、@code{begin ... end}の内部の定義がマッチするということです。
1907+しかし、state/environmentに入った時、そのstate/environmentの外側で指定されている定義はマッチしません。
1908+@code{state}と@code{environment}の違いは、後者においては、ソース言語の通常の部分(つまり、どの定義にもマッチしない部分)が、そのenvironmentを定義している定義のスタイルに応じてハイライトされるということにあります。
17771909
1778-例として次に示すのは、複数行のネスト可能なCのコメントで、コメントの内側にURLやメールアドレスが表われたときだけ、それらをハイライトする(ファイルのインクルードを使っているので注意してほしい):
1910+例として次に示すのは、複数行のネストが可能なCのコメントです。
1911+コメントの内側にURLやメールアドレスが表われた時だけ、それらをハイライトします(ファイルのインクルードを使っていることに注意してください)。
17791912
17801913 @example
17811914 environment comment delim "/*" "*/" multiline nested begin
@@ -1783,11 +1916,12 @@ environment comment delim "/*" "*/" multiline nested begin
17831916 end
17841917 @end example
17851918
1786-コメントの内側の他の部分は全部commentのスタイルでフォーマットされなければならないため@code{environment}を使用しているので留意してほしい。
1919+コメント内の他の部分は全部commentのスタイルでフォーマットされなければなりません。
1920+そのため、@code{environment}を使用していることに注意してください。
17871921
1788-プログラミング言語の定義については、state/environmentを避けられるが(コメント内のURLとか、Javasocのコメント内のドキュメンテーションタグのように、特定の環境の内部だけでその一部分をハイライトできるようになるが)、ログやChangeLogファイルのようなファイルをハイライトするのにはかなり重要である。
1789-エレメントが特定の位置に表われたときにハイライトしなければならないからだ。
1790-たとえば、ChangeLogの場合(@file{changelog.lang}を参照)、日付や名前、メール、URL(@file{url.lang}から取った)をハイライトするのにstateを使っている:
1922+プログラミング言語の定義については、state/environmentを避けられます(コメント内のURLとか、Javasocのコメント内のドキュメントタグのように、特定の環境の内部だけ、一部分をハイライトできるようになりますけれども)。
1923+一方、ログやChangeLogファイルのようなファイルをハイライトする場合には、エレメントが特定の位置に表われた時にハイライトしなければならないため、state/environmentはかなり重要になります。
1924+例えば、ChangeLogの場合(@file{changelog.lang}を参照)、日付、名前、メール、URL(@file{url.lang}から取った)をハイライトするのにstateを使っています。
17911925
17921926 @example
17931927 state date start '[[:digit:]]@{2,4@}-?[[:digit:]]@{2@}-?[[:digit:]]@{2@}' begin
@@ -1796,16 +1930,15 @@ state date start '[[:digit:]]@{2,4@}-?[[:digit:]]@{2@}-?[[:digit:]]@{2@}' begin
17961930 end
17971931 @end example
17981932
1799-(訳注:ぐだぐだです)
1800-state/environmentの内部に現われる定義は、その環境で定義される式と同じスコープを持つ。
1801-これによって、@code{start}と@code{delim}の定義にとっては意味がある一方で、簡単な定義にとっては合理的でないかもしれない(つまり、取り得る式を単にリストするものなど)。
1802-事実、こういう場合そのような式はスコープを定義しない。
1803-そのような定義にとって、state/environmentの意味は、その選択肢の一つとマッチングしたあとにstate/environmentが開始するということだ。
1804-そしてそれはどこで終わるのだろうか。
1805-この場合環境を明示的に終了しなければならない。
1806-たとえば、state/environmentの内部にいる場合、ある言語定義がキーワード@code{exit}にぶつかったときにも、その環境を抜け出す(脱出するstateの数を指定することもできる)。
1807-@code{exitall}を使えば環境を全部抜けることもできる。
1808-たとえば、以下に示す定義は、ウェブメソッドが後に続く空でない文字列をハイライトにする:
1933+state/environmentの内部に現われる定義は、その環境で定義される式と同じスコープを持つことに注意してください。
1934+これは、@code{start}と@code{delim}の定義にとっては意味がありますが、他方、簡単な定義(つまり、取り得る式を単にリストするものなど)にとってはあまり意味が無いかもしれません。
1935+事実、この場合、そのような式はスコープを定義しません。
1936+そのような定義にとって、state/environmentの意味は、その選択肢の一つとマッチングしたあとにstate/environmentが開始するということです。
1937+そして、それはどこで終わるのでしょうか。
1938+この場合、環境を明示的に終了しなければなりません。
1939+例えば、state/environmentの内部にいる場合、ある言語定義がキーワード@code{exit}にぶつかった時にも、その環境を脱出します(脱出するstateの数を指定することもできます)。
1940+@code{exitall}を使えば、環境を全部抜けることもできます。
1941+例えば、以下に示す定義は、ウェブメソッドの後に続く空でない文字列をハイライトにします。
18091942
18101943 @example
18111944 vardef non_empty = '[^[:blank:]]+'
@@ -1816,22 +1949,24 @@ state webmethod = "OPTIONS|GET|HEAD|POST|PUT|DELETE",
18161949 end
18171950 @end example
18181951
1819-このような進んだ機能が必要な場合にはいつでも、いくつかのログファイル(アクセスログ、Apacheのログなど)のハイライトを定義している@file{log.lang}定義ファイルを見てもらったらよい。
1820-さらに、明示的な名前付きの部分式で十分なような場合、上述の例がその一つなのだが、そういう場合があるかもしれない。
1952+このような高度な機能が必要な場合には、いつでも、ログファイル(アクセスログ、Apacheのログなど)のハイライトを定義している@file{log.lang}定義ファイルを参照すれば良いでしょう。
1953+さらに、明示的な名前付きの部分式で十分間に合うような場合もあるかもしれません。
1954+上述の例がその一つです。
1955+@xref{Explicit subexpressions with names}.
18211956
1822-このセクションを面白い例で締め括ろう。
1823-M4ファイルにおけるコメントは、@code{dnl}というキーワードで始まる(行末まで)。
1824-たとえば、次のようになる。
1957+このセクションを面白い例で締め括ります。
1958+M4ファイルにおけるコメントは、@code{dnl}というキーワードで始まります(行末までがコメンドです)。
1959+例えば、次のようになります。
18251960
18261961 @example
18271962 dnl @@synopsis AC_CTAGS_FLAGS
18281963 @end example
18291964
1830-さて、@code{dnl}をキーワードとしてハイライトし、残りの部分をコメントとしてハイライトしたい場合、environmentに簡単に頼ることはできない。
1831-その行全体を同じスタイルでハイライトしてしまうからだ。
1832-加えて、@code{@@}で始まるエレメントを違うようにハイライトしたいので、実はstateが必要となる(これは前述の例にあるC++のコメントの場合のようにコメントの内部でURLをハイライトすることもできる)。
1833-なので、stateでenvironmentをシミュレートする必要がある。
1834-M4の例の場合次のようにする(@file{m4.lang}ファイルを見よ)。
1965+さて、@code{dnl}をキーワードとしてハイライトし、残りの部分をコメントとしてハイライトしたい場合、environmentに簡単に頼ることはできません。
1966+その行全体を同じスタイルでハイライトしてしまうからです。
1967+加えて、@code{@@}で始まるエレメントを別にハイライトしたいので、stateが実は必要となります(stateは、前述の例にあるC++のコメントの場合のように、コメントの内部でURLをハイライトすることもできます)。
1968+ですから、stateでenvironmentをシミュレートする必要があります。
1969+M4の例の場合、次のようにします(@file{m4.lang}ファイルを参照してください)。
18351970
18361971 @example
18371972 state keyword start "dnl" begin
@@ -1845,10 +1980,10 @@ state keyword start "dnl" begin
18451980 end
18461981 @end example
18471982
1848-一度このstateに入ると、単独の空白文字が全てコメントとしてハイライトされる。
1849-次に、URLと@@エレメントに対するルールがあって、それから、他の全てがコメントとしてハイライトされる(@code{.+} )。
1983+このstateに一度入ると、単独の空白文字は、全てコメントとしてハイライトされます。
1984+次に、URLと@@エレメントに対するルールがあって、それから、他の全てがコメントとしてハイライトされます(@code{.+})。
18501985
1851-単に次に示す定義をするのが、よりスマートな方法ではないかと考える人もいるかもしれない(after all, why bothering highlighting spaces as comments)。
1986+単に、次に示す定義の方が、よりスマートな方法ではないかと考える人もいるかもしれません(結局のところ、コメントとして空白をハイライトする必要があるのでしょうか)。
18521987
18531988 @example
18541989 state keyword start "dnl" begin
@@ -1859,40 +1994,44 @@ state keyword start "dnl" begin
18591994 end
18601995 @end example
18611996
1862-さて、この定義によって、マッチしたURLや@@エレメントの前にある空白は、プリフィックスであると考えられて、normalとしてハイライトされるだろう。
1863-これは、source-highlightがマッチするルールを探す方法に原因がある。
1864-詳細については、@ref{source-highlightの仕組み}を参照する。
1997+さて、この定義によって、マッチしたURLや@@エレメントの前にある空白は、プリフィックスであると考えられて、normalとしてハイライトされます。
1998+これは、source-highlightがマッチするルールを探す方法に原因があります。
1999+詳細については別節を参照してください。
2000+@xref{How source-highlight works}.
2001+
18652002
1866-@node 名前を使った明示的な部分表現, 再定義と置換, state/environment定義, 言語の定義
2003+@node Explicit subexpressions with names, Redefinitions and Substitutions, State/Environment Definitions, Language Definitions
18672004 @section 名前を使った明示的な部分表現
18682005
1869-よく、同じ正規表現の中でプログラムの二つのエレメントを記述する必要がある。
1870-それらが密接な関係があるからだが、それらを違うようにハイライトする必要がある場合もある。
2006+プログラムの二つのエレメントのことを、同じ正規表現の中で記述しなければならないことがよくあります。
2007+それらが密接な関係があるからなのですが、それらを別々にハイライトする必要がある場合もあります。
18712008
1872-たとえば、クラス(あるいはインターフェイス)の定義中のクラス名(あるいはインターフェイス名)をハイライトしたいことがあるかもしれない(たとえばJavaなど)。
1873-従って、@code{class}キーワードが前置きされて、識別子がその後に続くことを利用することができる。
2009+例えば、(Javaなど場合)クラス定義(あるいは、インターフェイス定義)の中にあるクラス名(あるいは、インターフェイス名)をハイライトしたいことがあるかもしれません。
2010+それゆえ、前置きされる@code{class}キーワードを利用することができます。
2011+このキーワードには識別子が続きます。
18742012
1875-一つ定義を示す。
2013+一つ定義を示します。
18762014
18772015 @example
18782016 keyword = '(\<(?:class|interface))([[:blank:]]+)([$[:alnum:]]+)'
18792017 @end example
18802018
18812019 @noindent
1882-このような定義は、良い結果をもたらさない。
1883-というのも、クラスの名前がキーワードとしてハイライトされてしまうからだ。
1884-これは望んでいたことではないかもしれない。
1885-たとえば、クラス名は@code{type}としてハイライトされるべきなど。
2020+このような定義だと、良い結果とはなりません。
2021+というのも、クラスの名前がキーワードとしてハイライトされてしまうからです。
2022+例えば、クラス名は@code{type}としてハイライトされるべきだったりなどのため、これは、希望することではないかもしれません。
18862023
1887-バージョン2.6までは、これを行なう方法はstateかenvironmentを使うことだけだった(@ref{state/environment定義})が、これを書くのはかなり難しくなりがちである。
2024+バージョン2.6までは、これを行なう方法は、stateかenvironmentを使うことだけでした(@pxref{State/Environment Definitions})が、記述がかなり難しくなる傾向にありました。
18882025
1889-バージョン2.7から、マークされた部分表現を使って正規表現を記述し、それらをそれぞれ特定の言語エレメントにバインドすることができるようになった(正規表現は@code{`}で括られる必要がある。@ref{正規表現の指定方法}を参照)。
2026+バージョン2.7からは、マークされた部分表現を使って正規表現を記述し、それらをそれぞれ特定の言語エレメントにバインドすることができるようになりました。
2027+この場合、正規表現は@code{`}で括られる必要があります。
2028+@xref{Ways of specifying regular expressions}.
18902029
18912030 @example
18922031 (elem1,...,elemn) = `(subexp1)(...)(subexpn)`
18932032 @end example
18942033
1895-さあ、このシンタックスを使えば、前出のゴールに辿り着ける。
2034+さあ、このシンタックスを使えば、前出のゴールに辿り着けます。
18962035
18972036 @example
18982037 (keyword,normal,type) =
@@ -1900,21 +2039,21 @@ keyword = '(\<(?:class|interface))([[:blank:]]+)([$[:alnum:]]+)'
19002039 @end example
19012040
19022041 @noindent
1903-このようにすれば、@code{class}(あるいは@code{interface})はキーワードとしてハイライトされ、間を分けるブランクの文字は@code{normal}としてフォーマットされ、そして、クラス名は@code{type}としてフォーマットされる。
2042+このようにすれば、@code{class}(あるいは@code{interface})はキーワードとしてハイライトされ、間を分けるブランクの文字は@code{normal}としてフォーマットされ、そして、クラス名は@code{type}としてフォーマットされます。
19042043
1905-エレメントの名前の数は、正規表現中の部分表現の数と等しくなければならない。
1906-さらに、少なくとも現在のバージョンでは、その正規表現の中にはマークされた部分表現だけしか入れられず(部分表現の外には文字が無い)、部分表現をネストすることもできない。
2044+エレメント名の数は、正規表現中の部分表現の数と等しくなければなりませんので注意してください。
2045+さらに、少なくとも現在のバージョンでは、その正規表現の中には、マークされた部分表現だけしか入れられず(部分表現の外には文字が入れられません)、部分表現をネストすることもできません。
19072046
1908-従って次のような記述は正しくない。
2047+従って、次のような記述は間違いです。
19092048
19102049 @example
1911-(keyword,symbol) = `(...)(...)(...)` # number of elements doesn't match
1912-(keyword,symbol) = `(...(...)...)(...)` # contains nested subexpressions
1913-(keyword,symbol) = `...(...)...(...)` # outside characters
2050+(keyword,symbol) = `(...)(...)(...)` # エレメント数の不一致
2051+(keyword,symbol) = `(...(...)...)(...)` # 部分表現のネスト
2052+(keyword,symbol) = `...(...)...(...)` # 部分表現外の文字
19142053 @end example
19152054
1916-このメカニズムでは、ある状況において、正規表現をもっとコンパクトに、そして恐らくもっと読み易いやり方で表記することを許している。
1917-たとえば、次に示すようなChangeLogの各部をハイライトする場合を考える(オプショナルな@code{*}はシンボルとして、オプショナルなファイル名とカッコ内に記述されたエレメントは@code{file}エレメントとして、そして残りの部分は@code{normal}でハイライトする)。
2055+このメカニズムを使うと、ある状況において、正規表現をもっとコンパクトに、そして、恐らくもっと読み易いやり方で表記することが許されます。
2056+例えば、次に示すようなChangeLogの各部をハイライトする場合を考えます(省略可能な@code{*}はシンボルとして、省略可能なファイル名とカッコ内に指定されたエレメントは@code{file}エレメントとして、そして、残りの部分は@code{normal}としてハイライトします)。
19182057
19192058 @example
19202059 * src/Makefile.am (source_highlight_SOURCES): correctly include
@@ -1924,7 +2063,7 @@ keyword = '(\<(?:class|interface))([[:blank:]]+)([$[:alnum:]]+)'
19242063 @end example
19252064
19262065 @noindent
1927-バージョン2.6以前は、次の二つの言語定義を使っていた。
2066+バージョン2.6以前は、次の二つの言語定義を使っていました。
19282067
19292068 @example
19302069 state symbol start '^(?:[[:blank:]]+)\*[[:blank:]]+' begin
@@ -1941,8 +2080,8 @@ end
19412080 @end example
19422081
19432082 @noindent
1944-これを書いてしまった後に読むのは大変だ。
1945-さて今は、もっと簡単に書くことができる(@file{changelog.lang}を見よ)。
2083+これは、書いてしまった後に読むのは大変です。
2084+今は、もっと簡単に書くことができます(@file{changelog.lang}を見てください)。
19462085
19472086 @example
19482087 (normal,symbol,normal,file)=
@@ -1950,21 +2089,23 @@ end
19502089 (normal,file)= `(^[[:blank:]]+)((?:[^:]+\:)?)`
19512090 @end example
19522091
1953-名前の付きの明示的な部分表現を使った言語エレメントの定義は複数のエレメントからできていて、それゆえ複数のフォーマットスタイルから成っているので、environmentを開始するのに使うことはできない(デフォルトのエレメントは何なのだろう?)。
1954-一方、上で見たように、stateを開始するのには使うことができる。
2092+名前付きの明示的な部分表現を使った言語エレメントの定義は、複数のエレメントからできています。
2093+それゆえ、複数のフォーマットスタイルから構成されますので、environmentを開始するのに使うことはできません(デフォルトのエレメントは何になるのでしょうか)。
2094+一方、上で見たように、stateを開始するのには使うことができます。
19552095
1956-@node 再定義と置換, source-highlightの仕組み, 名前を使った明示的な部分表現, 言語の定義
2096+
2097+@node Redefinitions and Substitutions, How source-highlight works, Explicit subexpressions with names, Language Definitions
19572098 @section 再定義と置換
19582099
1959-この二つの機能は、既存の言語定義にいくらかの変更加えて再利用することによって言語を定義したい場合に便利だ。
1960-通常だと、他の言語定義ファイルを@code{include}して、いくつかの要素について再定義と置き換えを行なう。
2100+この二つの機能は、既存の言語定義に何らかの変更加えて再利用することによって言語を定義したい場合に便利です。
2101+通常は、他の言語定義ファイルを@code{include}して、いくつかの要素について再定義と置き換えを行うことになります。
19612102
19622103 @cindex redef
1963-@code{redef}を使うと、その言語エレメントの元の定義を新しい定義で消してしまう。
1964-その新しい言語定義は、まさにその定義の位置に配置される。
1965-たとえば、@code{caml}言語の定義を再利用することで@code{sml}言語を定義するようなときにこの機能を使う。
1966-この二つの言語はキーワードだけが違う@footnote{少なくとも私の知る限り:-)}。
1967-事実、@file{sml.lang}の中身は次のように要約できる。
2104+@code{redef}を使うと、その言語エレメントの元の定義を新しい定義で消すことになります。
2105+その新しい言語定義は、まさにその新しい定義の位置に配置されます。
2106+例えば、@code{caml}言語の定義を再利用して、@code{sml}言語を定義するような時にこの機能を使います。
2107+この二つの言語は、キーワードだけが違います@footnote{少なくとも私の知る限り:-)}。
2108+実際、@file{sml.lang}の中身は次のように要約できます。
19682109
19692110 @example
19702111 include "caml.lang"
@@ -1974,9 +2115,11 @@ redef keyword = "abstraction|abstype|and|andalso..."
19742115 redef type = "int|byte|boolean|char|long|float|double|short|void"
19752116 @end example
19762117
1977-この新しい言語エレメントの定義は、再定義されたちょうどその位置に現われるので、そのような正規表現は、それよりも前のもの(インクルードされるファイルにあるもの)がマッチしなかったときだけマッチするということを意味している。
1978-これによって、望まない結果が生じるケースもある(@code{sml}のケースは違うけれども)。
1979-言い換えてみよう。次のコードを見てほしい。
2118+この新しい言語エレメントの定義は、再定義されたちょうどその位置に現われます。
2119+そのため、その正規表現は、それ以前の正規表現(インクルードされるファイルにあるもの)がマッチしなかった時だけマッチするということを意味しています。
2120+これによって、望まない結果が生じるケースもあります(@code{sml}のケースは違いますけれども)。
2121+言い換えてみます。
2122+次のコードを見てください。
19802123
19812124 @example
19822125 keyword = "foo"
@@ -1986,7 +2129,7 @@ redef keyword = "myfoo"
19862129 @end example
19872130
19882131 @noindent
1989-このコードはさらに次のコードと等価である。
2132+このコードは、次のコードと等価です。
19902133
19912134 @example
19922135 type = "int"
@@ -1994,9 +2137,10 @@ keyword = "myfoo"
19942137 @end example
19952138
19962139 @cindex subst
1997-これが必要なものではないのなら、@code{subst}を使うことができる。
1998-これは@code{redef}と似ているが、言語エレメントの前の最初の定義を、その最初の定義のちょうどその位置で置き換えてしまうということが異なる(他の可能な限りの定義は単に消去される)。
1999-次のコードを見てほしい。
2140+これが所望でなければ、@code{subst}を使うことができます。
2141+これは、@code{redef}と似ています。
2142+ただし、その言語エレメントの最初の定義を、その最初の定義のちょうどその位置で置き換えてしまいます(他の定義があった場合は単に消去されます)。
2143+次のコードを見てください。
20002144
20012145 @example
20022146 keyword = "foo"
@@ -2006,15 +2150,16 @@ subst keyword = "myfoo"
20062150 @end example
20072151
20082152 @noindent
2009-これはすなわち、さらに次のコードと等価である。
2153+これは、次のコードと等価です。
20102154
20112155 @example
20122156 keyword = "myfoo"
20132157 type = "int"
20142158 @end example
20152159
2016-要求にぴったりと合うのがどちらなのかを決めるのはあなた次第だ。
2017-この機能で、@code{java}を元にして@code{javascript}を定義してもよい。
2160+要求にぴったりと合うのがどちらなのかを判断するのはユーザです。
2161+この機能を使って、@code{java}の用語を元にして@code{javascript}を定義することもできるでしょう。
2162+例えば、次のようになります。
20182163
20192164 @example
20202165 include "java.lang"
@@ -2023,125 +2168,128 @@ subst keyword = "abstract|break|case|catch|class|if..."
20232168 @end example
20242169
20252170 @noindent
2026-ここで、@code{redef}は、@code{if (exp)}が関数呼び出しとしてハイライトされてしまうという望まない振舞いをしてしまう。
2027-これはfunctionエレメントの定義が@code{if}をキーワードとして再定義するものより先に来て(そして先にマッチして)しまうからだ。
2028-もう一つ別の例を挙げると、C/C++の言語定義を再利用したC#の言語定義である(@ref{C/C++とC#のハイライティング})。
2171+@code{redef}を使うと、@code{if (exp)}が関数呼び出しとしてハイライトされてしまうという望まない振舞いをしてしまいます。
2172+これは、functionエレメントの定義が、@code{if}をキーワードとして再定義するものより先に来て(そして、先にマッチして)しまうためです。
2173+もう一つ別の例を挙げますと、C/C++の言語定義を再利用したC#の言語定義です。
2174+@xref{Highlighting C/C++ and C#}.
2175+
20292176
2030-@node source-highlightの仕組み, 正規表現に関する注意, 再定義と置換, 言語の定義
2177+@node How source-highlight works, Notes on regular expressions, Redefinitions and Substitutions, Language Definitions
20312178 @section source-highlightの仕組み
20322179
2033-@ref{言語の定義}の冒頭で少し書いたように、source-highlightは言語の定義ファイルにある定義を使って、入力ファイルのトークンをハイライトするのに使う正規表現を内部的にオンザフライに生成する。
2034-ここで、言語定義ファイルを正しく書く方法を理解するのに重要となる内部の詳細について述べる@footnote{source-highlightによる正規表現のマッチングに関する戦略はバージョン2.11から変わった(そしてバージョン2.10においては、使用している戦略が完全に概念的に正しいものではなく、オーバーヘッドが多くあった)}。
2180+別の節(@pxref{Language Definitions})の冒頭で少し書いたように、source-highlightは、言語定義ファイルにある定義を使って、入力ファイルのトークンをハイライトするのに使う正規表現を内部的にオンザフライに生成します。
2181+ここでは、言語定義ファイルを正しく書く方法を理解するのに重要となる内部の詳細について説明します@footnote{source-highlightによる正規表現のマッチングに関する戦略はバージョン2.11から変わりました。
2182+バージョン2.10においては、使用している戦略が完全に概念的に正しいものではなく、オーバーヘッドが多くありました。}。
20352183
2036-まず、各エレメントの定義ごとに、source-highlightがハイライトのためのルールを作る(同じ言語エレメントに該当するものでもそのようにする)。
2037-従って、各言語エレメントのファイルはハイライトのためのルールのリストに対応する。
2038-source-highlightは、入力ファイルの各行について、その行全体を(もっと正しく言うと、その行のまだハイライトされていない部分を)これらのルール全てに対してマッチしてみる。
2039-ハイライトのためのルールが一つマッチしたらすぐに止めるわけではない。
2040-「ベター」にマッチする別のルールがあるかもしれないからだ。
2041-ここで、全てというのは基本的に@emph{ベターマッチ}という意味に帰着する。
2184+まず、source-highlightは、各エレメントの定義ごとに、ハイライトのためのルールを作ります(同じ言語エレメントに該当するものでもそのようにします)。
2185+従って、各言語エレメントのファイルは、ハイライトのためのルールのリストに対応することになります。
2186+source-highlightは、入力ファイルの各行について、その行全体(もっと、正しく言うと、その行のまだハイライトされていない部分)を、これらのルール全てに対してマッチしてみます。
2187+ハイライトのためのルールが一つマッチしたらすぐにマッチを止めるわけではありません。
2188+「ベター」にマッチする別のルールがあるかもしれないからです。
2189+ここで、全てのものが、基本的に、@emph{ベターマッチ}という意味に帰着します。
20422190
20432191 @cindex matching strategy
2044-source-highlightが使う戦略は、次の状態の最初にマッチしたルールを選択するということだ。
2192+source-highlightが使う戦略は、次の状態のうち、最初にマッチしたルールを選択するということです。
20452193
20462194 @itemize
2047-
20482195 @item
2049-空のプリフィックス(あるいは空白の文字、すなわちスペースやタブだけを含むプリフィックス)を伴う
2196+空のプリフィックス(あるいは、空白文字だけ、すなわち、スペースやタブだけを含むプリフィックス)とマッチする。
20502197
20512198 @item
2052-最小のプリフィックスを伴う
2053-
2199+最小のプリフィックスとマッチする。
20542200 @end itemize
20552201
20562202 @cindex prefix
2057-ここでマッチしたルールにおける@emph{プリフィックス}というのは、検査済みの文字列の、マッチしなかった部分である@footnote{正規表現の用語よれば}。
2058-従って、たとえば、次の文字列に対して@code{=}という簡単な正規表現をマッチさせてみる。
2203+ここで、マッチしたルールにおける@emph{プリフィックス}というのは、調査済みの文字列のマッチしなかった部分のことです@footnote{正規表現の用語よれば。}。
2204+従って、例えば、次の文字列に対して、@code{=}という簡単な正規表現をマッチさせてみます。
20592205
20602206 @example
20612207 i = 10;
20622208 @end example
20632209
20642210 @cindex suffix
2065-このとき、プリフィックスはスペースを含んだ@code{i }となる。
2066-正規表現の用語に従えば、残りのマッチしなかった部分、すなわち@code{ 10;}は@emph{サフィックス}という。
2067-source-highlightが、上で述べた戦略でマッチするルールを見つけると、マッチされた部分をフォーマットし(プリフィックスは@code{normal}でフォーマットし)、サフィックスの部分からマッチするルールの探索を再開する。
2068-そしてこれがその行全体を処理するまで続く。
2211+この時、プリフィックスは、スペースを含んだ@code{i }となります。
2212+正規表現の用語に従えば、残りのマッチしなかった部分、すなわち@code{ 10;}は@emph{サフィックス}と言います。
2213+source-highlightが、上で述べた戦略でマッチするルールを見つけた場合、マッチした部分をフォーマットし(プリフィックスは@code{normal}でフォーマットし)、サフィックスの部分から、マッチするルールの探索を再開します。
2214+そして、これが、その行全体を処理するまで続きます。
20692215
2070-例を用いて、もう少し詳しくこの戦略を説明したい。
2071-次に示す言語定義ファイルを考えてみよう。
2216+例を用いて、もう少し詳しくこの戦略を説明します。
2217+次に示す言語定義ファイルを考えてみてください。
20722218
20732219 @include strategy_example.lang.texinfo
20742220
20752221 @noindent
2076-そして、次の行をハイライトさせる。
2222+そして、次の行をハイライトさせます。
20772223
20782224 @example
20792225 int i = null
20802226 @end example
20812227
2082-source-highlightは以下のステップを実行する。
2228+source-highlightは以下のステップを実行します。
20832229
20842230 @enumerate
20852231
20862232 @item
2087-最初のマッチするルールは@code{type}のためのものだ。
2088-空のプリフィックスなのでこれ以上見る必要はない。
2089-@code{int}は@code{type}としてハイライトされる。
2090-処理すべき残りの部分は@code{ i = null}となっている。
2233+最初のマッチするルールは、@code{type}に対するものです。
2234+空のプリフィックスなので、これ以上見る必要はありません。
2235+@code{int}は、@code{type}としてハイライトされます。
2236+処理すべき残りの部分は@code{ i = null}となります。
20912237
20922238 @item
2093-最初にマッチするルールは@code{keyword}に対するものだ。
2094-プリフィックスは@code{ i = }である。
2095-このプリフィックスは空でない(あるいはスペースだけを含むわけではない)ので他のルールを検査する。
2239+最初にマッチするルールは、@code{keyword}に対するものです。
2240+プリフィックスは@code{ i = }です。
2241+このプリフィックスは空でありません(あるいは、スペースだけを含むわけではありません)。
2242+ですから、他のルールを検査します。
20962243
20972244 @item
2098-次にマッチするルールは@code{symbol}に対するものだ。
2099-プリフィックスは@code{ i }である。
2100-このプリフィックスは@code{keyword}のときよりも小さい。
2101-他にもうマッチするルールはないので、@code{symbol}に対するものがベターだ。
2102-@code{=}がsymbolとしてハイライトされる。
2103-処理すべき残りの部分は@code{ null}となっている。
2245+次にマッチするルールは、@code{symbol}に対するものです。
2246+プリフィックスは@code{ i }です。
2247+このプリフィックスは、@code{keyword}に対するものよりも小さいものです。
2248+マッチするルールは他にもうありませんので、@code{symbol}に対するものがベターです。
2249+@code{=}がsymbolとしてハイライトされます。
2250+処理すべき残りの部分は@code{ null}となります。
21042251
21052252 @item
2106-最初にマッチするルールは@code{keyword}に対するものだ。
2107-プリフィックスは空白だけなので、これ以上見る必要はない。
2108-@code{null}が@code{keyword}としてハイライトされる。
2109-
2253+最初にマッチするルールは、@code{keyword}に対するものです。
2254+プリフィックスは空白だけですので、これ以上見る必要はありません。
2255+@code{null}が@code{keyword}としてハイライトされます。
21102256 @end enumerate
21112257
2112-以下の言語定義を示してこのセクションを終える。
2113-この言語定義は、ハイライトの戦略について述べたことをまとめたものだ。
2258+以下の言語定義を示してこのセクションを終えることにします。
2259+この言語定義は、ハイライトの戦略について述べたことをまとめたものです。
21142260
21152261 @include test_string_stop.lang.texinfo
21162262
21172263
2118-@node 正規表現に関する注意, check-regexpプログラム, source-highlightの仕組み, 言語の定義
2264+@node Notes on regular expressions, The program check-regexp, How source-highlight works, Language Definitions
21192265 @section 正規表現に関する注意
21202266 @cindex regular expressions
21212267
2122-Boostのシンタックスを知るのにはBoostのドキュメンテーション(@uref{http://www.boost.org/libs/regex/doc/syntax.html})を見るわけですが、ここで、あまり知られていないかもしれないが言語の定義に非常に便利な正規表現の形式についていくらか説明をしようと思う。
2268+Boostのシンタックスを知るにはBoostのドキュメント(@uref{http://www.boost.org/libs/regex/doc/syntax.html})を参照します。
2269+けれども、ここでは、あまり知られていないかもしれませんが、言語の定義に非常に便利な正規表現の形式についていくらか説明をしようと思います。
21232270
21242271 @cindex non-marking parenthesis
2125-カッコを使って正規表現の一部をグループ化する必要はあるが、マークされた部分表現を余分に吐き出させたくないようなときは、通常、@emph{マークしないカッコ}@code{(?:expression)}を使うことができる。
2126-これは、言語定義のシンタックスには必要ではない。
2127-たとえ普通のカッコを使ったとしても、source-highlightはマークしないカッコへそれを変形してしまう。
2272+通常、カッコを使って正規表現の一部をグループ化する必要があるが、マークされた部分表現を余分に吐き出させたくないような時は、@emph{マークしないカッコ}@code{(?:expression)}を使うことができます。
2273+これは、言語定義のシンタックスに必須のものではありません。
2274+たとえ普通のカッコを使ったとしても、source-highlightは、マークしないカッコへそれを変形してしまいます。
21282275
21292276 @cindex marked subexpressions
2130-source-highlightは、@emph{マークされた部分表現}、すなわち@code{(}と@code{)}に括られたものを、マークしない部分表現(つまり上で説明したもの)に変換する。
2131-バージョン2.7から、@code{`}の内側に正規表現を書いた場合には、そのマークされた部分表現はそのまま残される(@ref{正規表現の指定方法}も参照してほしい)。
2132-これは、@emph{後方参照}や@emph{条件}のときに便利だ。
2277+source-highlightは、@emph{マークされた部分表現}、すなわち、@code{(}と@code{)}に括られたものをマークしない部分表現(つまり上で説明したもの)に変換します。
2278+バージョン2.7から、@code{`}の内側に正規表現を書いた場合には、マークされた部分表現はそのまま残されます(@pxref{Ways of specifying regular expressions})。
2279+これは、@emph{後方参照}や@emph{条件}の時に便利です。
21332280
21342281 @cindex backreference
2135-エスケープ文字の後ろに1から9の範囲の数字nが付いたものは@emph{後方参照}で、n番目の部分表現にマッチしたのと同じ文字列にマッチするものだ。
2136-たとえば、@code{^(a*).*\1$}という表記は、@code{aaabbaaa}という文字列にはマッチするが、@code{aaabba}にはマッチしない。
2137-後方参照は、Perlの置換指示子のような場合に、コンパクトな言語エレメントを書くのに役立つ。
2138-なので、次のような場合を考える。
2282+エスケープ文字の後ろに1から9の範囲の数字nが付いたものは@emph{後方参照}です。
2283+n番目の部分表現にマッチしたのと同じ文字列にマッチします。
2284+例えば、@code{^(a*).*\1$}という表記は、@code{aaabbaaa}という文字列にはマッチしますが、@code{aaabba}にはマッチしません。
2285+後方参照は、Perlの置換指示子のような場合に、コンパクトな言語エレメントを書くのに役立ちます。
2286+次のような場合を考えます。
21392287
21402288 @example
21412289 regexp = `s([^[:alnum:][:blank:]]).*\1.*\1[ixsmogce]*`
21422290 @end example
21432291
2144-これは次の形式の全てにマッチする。
2292+これは、次の形式の全てにマッチします。
21452293
21462294 @example
21472295 s/foo/bar/g
@@ -2151,30 +2299,34 @@ s@@foo@@bar@@g
21512299 @end example
21522300
21532301 @cindex lookahead asserts
2154-正規表現の形式で便利なのが、@emph{前方先読み表明(Forward Lookahead Asserts)}だ。
2155-これには二つの形式があって、一つは肯定的先読み表明そしてもう一つが否定的先読み表明である。
2302+正規表現の形式で便利なのが、@emph{前方先読み表明(Forward Lookahead Asserts)}です。
2303+前方先読み表明には二つの形式があります。
2304+一つは、肯定的先読み表明、そして、もう一つが、否定的先読み表明です。
21562305
21572306 @table @code
21582307 @item (?=abc)
2159-``abc''という表現が後に続く場合にだけゼロ文字にマッチする。(訳注:ゼロ文字にマッチするというのは、要するに、この表現自体何らかの個別の文字にマッチしたり文字を捕捉したりすることはなく、ゼロの幅であるということです)
2308+``abc''という表現が後に続く場合にだけ、ゼロ文字にマッチします@footnote{訳注:ゼロ文字にマッチするというのは、要するに、この表現自体何らかの個別の文字にマッチしたり文字を捕捉したりすることはなく、ゼロの幅であるということです。}。
2309+
21602310 @item (?!abc)
2161-``abc''という表現が後に続かない場合にだけゼロ文字にマッチする。
2311+``abc''という表現が後に続かない場合にだけ、ゼロ文字にマッチします。
21622312 @end table
21632313
2164-たとえば、関数の定義(@file{function.lang})において、次のような正規表現を使う。
2314+例えば、関数の定義(@file{function.lang})において、次のような正規表現を使います。
21652315
21662316 @example
21672317 ([[:alpha:]]|_)[[:word:]]*(?=[[:blank:]]*\()
21682318 @end example
21692319
21702320 @noindent
2171-これによって、@code{(?=\()}という正規表現で、関数名の後開きカッコ@code{(}がマッチするかどうかをテストする。
2172-しかし、それがマッチすることがあって、入力にその部分を残したままにしておく。
2173-そうすると、そのカッコが関数名と同じようにフォーマットされることは無い(この言語定義の理解を深めるには@ref{source-highlightの仕組み}も参照してほしい)。
2321+これによって、@code{(?=\()}という正規表現で、関数名の後に、開きカッコ@code{(}がマッチするかどうかをテストします。
2322+しかし、それがマッチ可能な場合には、その部分を入力に残したままにしておきます。
2323+そうすると、そのカッコは、関数名と同じようにフォーマットされることはありません。
2324+この言語定義の理解を深めるには、別節も参照してください。
2325+@xref{How source-highlight works}.
21742326
2175-このような正規表現の形式を使う場合には注意してほしい。
2176-入力の一部が実際には取り除かれないので、正規表現をきちんと書かなければ、いつも同じ入力部分をスキャンしてしまうことになるかもしれない(要するにループしている)。
2177-たとえば、次のような言語定義を考えてみよ。
2327+このような正規表現の形式を使う場合には注意してください。
2328+入力の一部が実際に取り除かれませんので、正規表現をきちんと書かなければ、いつも同じ入力部分をスキャンしてしまうことになるかもしれません(要するにループしています)。
2329+例えば、次のような言語定義を考えてみてください。
21782330
21792331 @example
21802332 state foo = '(?=foo)' begin
@@ -2183,7 +2335,7 @@ end
21832335 @end example
21842336
21852337 @noindent
2186-そして次のものが入力ファイルである。
2338+以下が入力ファイルです。
21872339
21882340 @example
21892341 hello
@@ -2192,10 +2344,10 @@ bar
21922344 @end example
21932345
21942346 @noindent
2195-@code{foo}をマッチしたら、すぐ、それを入力においたまま、stateに入る。
2196-stateでは、入力に残したままの@code{foo}というワードのマッチを試みる。
2197-ご想像の通りかもしれないが、これによって、source-highlightは永久にループしてしまう。
2198-恐らく、次のような言語定義が書きたかったのではないだろうか。
2347+@code{foo}にマッチしたら、それを入力に残したまま、すぐ、stateに入ります。
2348+stateでは、入力に残したままの@code{foo}というワードのマッチを試みます。
2349+ご想像の通りかもしれませんが、これによって、source-highlightは永久にループしてしまいます。
2350+恐らく、次のような言語定義が書きたかったのではないでしょうか。
21992351
22002352 @example
22012353 state foo = '(?=foo)' begin
@@ -2204,31 +2356,33 @@ end
22042356 @end example
22052357
22062358 @noindent
2207-しかし、カット・アンド・ペースト・エラーというのは勝手なものだった ;-)
2359+しかし、カット・アンド・ペーストのエラーというのは勝手なものでした。 ;-)
22082360
22092361 @cindex lookbehind asserts
2210-@emph{戻り読み表明}というものも使うことができる。
2362+@emph{戻り読み表明}も使うことができます。
22112363
22122364 @table @code
22132365 @item (?<=pattern)
2214- 現在の場所よりも前の文字に対してpatternがマッチするときだけゼロ文字消費する(patternは固定幅でなければならない)。
2366+ 現在の場所よりも前の文字に対してpatternがマッチする時だけゼロ文字消費します(patternは固定幅でなければなりません)。
22152367 @item (?<!pattern)
2216- 現在の場所よりも前の文字に対してpatternがマッチしないときだけゼロ文字消費する(patternは固定幅でなければならない)。
2368+ 現在の場所よりも前の文字に対してpatternがマッチしない時だけゼロ文字消費します(patternは固定幅でなければなりません)。
22172369 @end table
22182370
22192371 @cindex conditional expressions
2220-もう一つ、進んだ正規表現のメカニズムなのが@emph{条件式}の一つである。
2372+もう一つ、進んだ正規表現のメカニズムなのが@emph{条件式}の一つです。
22212373
22222374 @table @code
22232375 @item (?(condition)yes-pattern|no-pattern)
2224-conditionが真であればyes-patternのマッチを試み、そうでなければno-patternのマッチを試みる。
2376+conditionが真であればyes-patternのマッチを試みます。
2377+そうでなければno-patternのマッチを試みます。
22252378 @item (?(condition)yes-pattern)
2226-conditionが真であればyes-patternのマッチを試み、そうでなければ失敗する。
2379+conditionが真であればyes-patternのマッチを試みます。
2380+そうでなければ失敗します。
22272381 @end table
22282382
2229-conditionは先読み表明か、あるいはマークされた部分表現のインデックス@footnote{エスケープ文字は使わず、インデックスだけ}である(この部分表現がマッチすればconditionは真になる)。
2230-たとえば、次に示す式@footnote{この式は、boostのリスト(訳注:メーリングリスト?)に私がポストした問題の解決策として、Boost regexライブラリの作者であるJohn Maddockが出したものだ。@uref{http://thread.gmane.org/gmane.comp.lib.boost.devel/158237/focus=158276}}を見てほしい。
2231-これは、読み易くなるようにすべくより多くの行を使って書いたものだ。
2383+conditionは先読み表明か、あるいは、マークされた部分表現のインデックス@footnote{インデックスだけです。エスケープ文字は使いません。}です(この部分表現がマッチすればconditionは真になります)。
2384+例えば、次に示す式@footnote{この式は、boostのリストに私がポストした問題の解決策として、Boost regexライブラリの作者であるJohn Maddockが出したものです。@uref{http://thread.gmane.org/gmane.comp.lib.boost.devel/158237/focus=158276}}を見てください。
2385+これは、読み易くなるように、より行を使って書いたものです。
22322386
22332387 @example
22342388 (?:
@@ -2246,23 +2400,25 @@ conditionは先読み表明か、あるいはマークされた部分表現の
22462400 )))))
22472401 @end example
22482402
2249-この式は、@code{(foo)}と@code{[foo]}、@code{@{foo@}}にマッチするが、@code{(foo]}や@code{@{foo]}、@code{@{foo)}にはマッチしない。
2403+この式は、@code{(foo)}、@code{[foo]}、@code{@{foo@}}にはマッチしますが、@code{(foo]}、@code{@{foo]}、@code{@{foo)}にはマッチしません。
2404+
22502405
2251-@node check-regexpプログラム, 言語エレメントの一覧, 正規表現に関する注意, 言語の定義
2406+@node The program check-regexp, Listing Language Elements, Notes on regular expressions, Language Definitions
22522407 @section The program @command{check-regexp}
22532408
22542409 @cindex @command{check-regexp}
2255-バージョン2.7から、source-highlightのパッケージには、@command{check-regexp}という小さな追加プログラムが含まれている。
2256-このプログラムは、コマンドラインで正規表現をテストできるようにするものだ。
2410+バージョン2.7から、source-highlightのパッケージには、@command{check-regexp}という小さな追加プログラムが含まれています。
2411+このプログラムは、コマンドラインで正規表現をテストできるようにするものです。
22572412
2258-単に、コマンドラインの1番目の引数として正規表現を書き、次にマッチしたい文字列を書いて渡す(実際にこのプログラムは指定された正規表現で文字列を探索するので、文字列全体にマッチする必要はない)。
2259-シェルによる置換を避けるために、正規表現と文字列の両方を一重引用符で括ることは大事なことだ。
2413+単に、コマンドラインの1番目の引数として正規表現を書き、次に、マッチしたい文字列を書いて渡します(実際に、このプログラムは、指定された正規表現で文字列を探索しますので、文字列全体にマッチする必要はありません)。
2414+シェルによる置換を避けるために、正規表現と文字列の両方を一重引用符で括ることが大事なことです。
22602415
2261-プログラムは(成功裏するかもしれないマッチング)に関する情報を出力する。
2262-@code{what[0]}の部分は、マッチ全体を表わしていて、@code{what[i]}の部分はマッチしたi番目のマークされた部分表現を表わしている。
2263-このプログラムは、プリフィックスとサフィックスについても出力する。
2416+プログラムは、(成功するマッチング)@footnote{何故かカッコ書き。}に関する情報を出力します。
2417+@code{what[0]}の部分は、マッチ全体を表わしています。
2418+@code{what[i]}の部分は、マッチした部分のうち、マークされた部分表現のi番目を表わしています。
2419+このプログラムは、プリフィックスとサフィックスについても出力します。
22642420
2265-このプログラムの出力例である。
2421+以下は、このプログラムの出力例です。
22662422
22672423 @example
22682424 check-regexp '(a+)(.*)\1' 'aabcdaa' 'babbbacc'
@@ -2288,7 +2444,7 @@ suffix: cc
22882444 total number of matches: 1
22892445 @end example
22902446
2291-そして、次は、@ref{正規表現に関する注意}で見た、カッコをマッチングする例である。
2447+そして、次は、別の節(@pxref{Notes on regular expressions})で見た、カッコをマッチングする例です。
22922448
22932449 @smallexample
22942450 check-regexp \
@@ -2314,43 +2470,44 @@ what[0]: [hithere]
23142470 total number of matches: 1
23152471 @end smallexample
23162472
2317-@node 言語エレメントの一覧, まとめの所見, check-regexpプログラム, 言語の定義
2473+
2474+@node Listing Language Elements, Concluding Remarks, The program check-regexp, Language Definitions
23182475 @section 言語エレメントの一覧
23192476
2320-言語の定義を本当に役立つものとするためには、フォーマットするスタイルと正しく組み合わせて使わなければならい(@ref{出力フォーマットスタイル}を参照せよ)。
2321-しかし、別々のこのファイルが同じ人物によって開発されるわけでないかもしれない。
2322-あるいは、ただ単に、誰かがいずれかのファイルをカスタマイズしたいと考えるかもしれない。
2323-出力フォーマットスタイルファイルをうまく定義するには、言語定義ファイルに定義されている各言語エレメントのことを知っておくべきだ。
2324-言語定義ファイル自体の中身を見なければならない(そして再帰的にインクルードされているファイルをそれぞれ見なければならない)代わりに、コマンドラインオプションの
2477+言語の定義を本当に役立つものとするためには、フォーマットするスタイルと正しく組み合わせて使わなければなりません(@pxref{Output format style})。
2478+しかし、この別々のファイルが、同じ人物によって開発されるわけでないかもしれません。
2479+あるいは、ただ単に、いずれかのファイルをカスタマイズしようと考える人がいるかもしれません。
2480+出力フォーマットスタイルファイルをうまく定義するには、言語定義ファイルに定義されている各言語エレメントのことを知っておく必要があります。
23252481 @cindex @code{--show-lang-elements}
2326-@code{--show-lang-elements}を使ってもよい@footnote{バージョン2.4から}。
2327-これは、指定された言語定義ファイルでハイラトされる言語エレメントを全て標準出力へ単に出力するものだ。
2482+言語定義ファイル自体の中身を見なければならない(そして、再帰的にインクルードされているファイルをそれぞれ見なければならない)代わりに、コマンドラインオプションの@code{--show-lang-elements}を使うことができます@footnote{バージョン2.4からです。}。
2483+これは、指定された言語定義ファイルでハイライトされる言語エレメントを標準出力へ単に全て出力します。
23282484
2329-たとえば、@code{cpp.lang}の場合次のようなものが得られる。
2485+例えば、@code{cpp.lang}の場合、次のようなものが出力されます。
23302486
23312487 @example
23322488 @include cpp.langelems.texinfo
23332489 @end example
23342490
2335-また、@code{log.lang}の場合ならば次のようなものが得られる。
2491+また、@code{log.lang}の場合ならば、次のようなものが出力されます。
23362492
23372493 @example
23382494 @include log.langelems.texinfo
23392495 @end example
23402496
2341-@node まとめの所見, デバッギング, 言語エレメントの一覧, 言語の定義
2497+
2498+@node Concluding Remarks, Debugging, Listing Language Elements, Language Definitions
23422499 @section まとめの所見
23432500
2344-こういった機能を全て組み合わせることで、想像を膨らませ、わずかな行のコードを書いて既存のものを再利用しながら、
2345-FlexやBisonのような複雑な言語のハイライティングを定義することができる。
2346-たとえば、FlexやBisonは、それ独自のシンタックスを持ち、そのソース言語の特定部分にC/C++のコードを書くことができる。
2347-たとえば、次の例の中で、一番外側のブラケットの間にあるコードは、C++のコードで、C++言語の定義に従ってハイライトされるべきものだ(@code{$}が前に付いている変数は別にして)。
2501+こういった機能を全て組み合わせることで、想像を膨らませ、わずかな行のコードを書いて既存のものを再利用しながら、FlexやBisonのような複雑な言語のハイライティングを定義することができます。
2502+例えば、FlexやBisonは独自のシンタックスを持ち、ソース言語の特定部分に、C/C++のコードを書くことができます。
2503+例えば、次の例の中で、一番外側のブラケットの間にあるコードはC++のコードです。
2504+C++言語の定義に従ってハイライトされるべきものです(@code{$}が前に付いている変数は除きます)。
23482505
23492506 @example
23502507 globaltags : options @{ if (...) @{ setTags( $1 ); @} @}
23512508 @end example
23522509
2353-これを行なうのは簡単だ(@file{flex.lang}から取ったもの)。
2510+これを行なうのは簡単です(@file{flex.lang}から持って来たものです)。
23542511
23552512 @example
23562513 state cbracket delim "@{" "@}" multiline nested begin
@@ -2359,25 +2516,26 @@ state cbracket delim "@{" "@}" multiline nested begin
23592516 end
23602517 @end example
23612518
2362-@code{nested}を使っているので、最後の閉じカッコ@code{@}}がマッチしたならばC++言語の定義はもうそれ以上は考慮されないということが確認できる。
2519+@code{nested}を使っているので、最後の閉じカッコ@code{@}}がマッチしたならば、C++言語の定義はそれ以上はもう考慮されません。
2520+
23632521
2364-@node デバッギング, 言語定義のチュートリアル, まとめの所見, 言語の定義
2522+@node Debugging, Tutorials on Language Definitions, Concluding Remarks, Language Definitions
23652523 @section デバッギング
23662524 @cindex debug
23672525
2368-言語の定義ファイルを書くとき、デバッグできるとかなり便利だ(複雑な正規表現を使用することで、思いもよらない振舞に悩むかもしれない)。
2369-バージョン2.1からは、@code{--debug-lang}というコマンドラインオプションが利用できる。
2370-このオプションを使えば、追加的な情報が標準出力へ出力される。
2526+言語の定義ファイルを書く時、デバッグができるとかなり便利です(複雑な正規表現を使用することで、思いもよらない振る舞いに悩むかもしれません)。
2527+バージョン2.1からは、@code{--debug-lang}というコマンドラインオプションが利用できます。
2528+このオプションを使えば、追加的な情報が標準出力へ出力されます。
23712529
2372-バージョン2.5からこのオプションは、下位の指定を受け付けるようになった(@ref{source-highlightの起動}を見よ)。
2373-@code{dump}(デフォルト)を使うと、後で説明する追加的な情報が全て、ユーザとやり取りすることなくダンプされる。
2374-@code{interactive}を使うと、フォーマットされた文字列それぞれ毎に、ユーザからの指示を待ってプログラムが停止する。
2375-この非常に原始的な対話的デバッグにおいては、ユーザは、@code{ENTER}を押して、次のフォーマットされた文字列に至るまでプログラムを継続させることだけすればよい。
2376-このようにして、入力ファイルの各部分でステップする機会が持てる。
2377-加えて、デバッグが有効の場合、プログラムがバッファリングを実行しなくなり、そのためフォーマットされたエレメントはすぐに出力されることになる。
2378-たとえば、@command{tail -f}というコマンドを使って、出力ファイルに対する変更をオンザフライに見ることができる。
2530+バージョン2.5から、このオプションは、補助的な指定を受け付けるようになりました(@pxref{Invoking source-highlight})。
2531+@code{dump}(デフォルト)を使うと、後で説明する追加的な情報全てが、ユーザとやり取りすることなくダンプされます。
2532+@code{interactive}を使うと、フォーマットされた文字列それぞれごとに、ユーザからの指示を待つためプログラムが停止します。
2533+非常に原始的なこの対話的デバッグにおいては、ユーザは、@code{ENTER}を押して、フォーマットされた次の文字列に至るまでプログラムを継続させるだけです。
2534+このようにして、入力ファイルの各部分でステップする機会が得られます。
2535+加えて、デバッグが有効の場合、プログラムがバッファリングを実行しなくなり、そのため、フォーマットされたエレメントがすぐに出力されることになります。
2536+例えば、@command{tail -f}というコマンドを使えば、出力ファイルに対する変更をオンザフライに見ることができます。
23792537
2380-このコマンドラインオプションを使用したときに生成される追加的な情報というのは次のフォーマットになっている。
2538+このコマンドラインオプションを使用した時に生成される追加的な情報というのは次のフォーマットになっています。
23812539
23822540 @example
23832541 <.lang filename>:<line number>
@@ -2387,16 +2545,19 @@ entering: <next state's id>
23872545 exiting state, level: <number of states>
23882546 @end example
23892547
2390-@code{entering}と@code{exiting}、@code{exitingall}で始まる行は、新たなstate/environmentに入ったり、state/environmentから一つあるいは全部抜け出したりすることに関連している(@code{current state}がもし表示されるのならば、@code{entering}の後に来て、その同じstateの正規表現を動的後方参照の置換を行なった後出力する。@ref{動的後方参照})。
2391-The first line shows a link to the @file{.lang} definition file and the line number, i.e., and the sub-expression that matched and the line starting with @code{formatting} shows the source file string that matched with that expression.
2392-@code{formatting}で始まる行の前に部分表現へのリンクを持った行が無ければ、何の正規表現もマッチせず、@code{normal}のスタイルがその文字列をフォーマットするのに使われるということを意味している。
2548+@code{entering}、@code{exiting}、@code{exitingall}で始まる行は、新たなstate/environmentに入ったり、state/environmentから一つ抜け出したり、あるいは、全部抜け出したりすることに関連しています(@code{current state}が表示される場合、@code{entering}の後に表示されます。
2549+そして、動的後方参照の置換を行なった後、同じstateの正規表現を出力します。
2550+@pxref{Dynamic Backreferences})。
2551+最初の行は、すなわち、@file{.lang}定義ファイルや行番号へのリンクを示します。
2552+そして、マッチした部分表現が示され、@code{formatting}で始まる行が、その部分表現でマッチしたソースファイルの文字列を示しています。
2553+@code{formatting}で始まる行の前に部分表現へのリンクを持った行が無ければ、何の正規表現もマッチせず、@code{normal}のスタイルがその文字列をフォーマットするのに使われるということを意味しています。
23932554
2394-次に示す(簡単化された)Javaのソースファイルを考えてみる。
2555+次に示す(簡単化された)Javaのソースファイルを考えてみてください。
23952556
23962557 @include debug.java.texinfo
23972558
2398-さて、@code{--debug-lang}コマンドラインオプションを使って、@file{java.lang}をデバッグすることができる。
2399-そしてその出力は次のようになる。
2559+ここで、@code{--debug-lang}コマンドラインオプションを使って、@file{java.lang}をデバッグすることができます。
2560+出力は次のようになります。
24002561
24012562 @example
24022563 c_comment.lang:24
@@ -2432,190 +2593,209 @@ exiting state, level: 1
24322593 ... omissis ...
24332594 @end example
24342595
2435-これで、正規表現がどのように使用され、state/environmentにどのように入って抜けたかといったような情報が十分供給されているはずだ。
2436-出力されている部分表現が、@file{.lang}ファイルで記述されている元々のものと異なっているかもしれないことに注意してほしい。
2437-これは、source-highlightが前処理を実行するためだ。
2438-さらに、@file{.lang}ファイルでは全く定義されていない部分表現もある。
2439-たとえば、ラインワイド定義、すなわち、@code{start}キーワードの付いた定義の場合である(@ref{ラインワイド定義})。
2440-上述の最後の数行、@code{expression: "\z"}と表示しているところだが、これは行末にマッチしたということを示している。
2596+これは、正規表現がどのように使用され、state/environmentにどのように入って抜けたかといったような情報を十分提供しています。
2597+出力されている部分表現が、@file{.lang}ファイルで記述されている元々のものと異なっているかもしれませんので注意してください。
2598+これは、source-highlightが前処理を実行するためです。
2599+さらに、@file{.lang}ファイルでは全く定義されていない部分表現もあります。
2600+例えば、ラインワイド定義、すなわち、@code{start}キーワードの付いた定義の場合です(@pxref{Line wide definitions})。
2601+上述の最後の数行、@code{expression: "\z"}と表示しているところですが、これは、行末にマッチしたということを示しています。
24412602
2442-デバッグに便利なもう一つの機能が、@code{--show-regex}オプションである。
2443-これは、source-highlightが作成した正規表現オートマトンを標準出力に出力するものだ。
2603+デバッグに便利なもう一つの機能が、@code{--show-regex}オプションです。
2604+これは、source-highlightが作成した正規表現オートマトンを標準出力に出力するものです。
24442605
2445-例として次の言語定義(@file{comment-show.lang})を考えてみよう。
2606+例として、次の言語定義(@file{comment-show.lang})を考えてみてください。
24462607
24472608 @include comment-show.lang.texinfo
24482609
24492610 @noindent
2450-ここで次のコマンドを実行したとする。
2611+ここで、次のコマンドを実行したとします。
24512612
24522613 @example
24532614 source-highlight --show-regex=comment-show.lang
24542615 @end example
24552616
24562617 @noindent
2457-標準出力に次のような出力が得られる@footnote{バージョン2.9までは、@code{--show-regex}の出力は読むには少し複雑だった。今の出力がベターになっていることを望んでいる}。
2618+標準出力には、次のような出力が得られます@footnote{バージョン2.9までは、@code{--show-regex}の出力は読むのが少し難しいものでした。
2619+今の出力が良くなっていれば嬉しいです。}。
24582620
24592621 @smallexample
24602622 @include comment-show.show.texinfo
2623+@c
24612624 @end smallexample
24622625
24632626 @noindent
2464-これは、stateと、source-highlightが作成した入力ソースのフォーマットに使われる正規表現オートマトンのハイライトルールを示している。
2627+これは、source-highlightが作成し、入力ソースのフォーマットに使われる正規表現オートマトンのハイライトルールとstateを示しています。
24652628
2466-各stateは、識別のためのユニークな番号が付けられている。
2467-さらに、そのstateのデフォルトのエレメントが表示される(つまり、stateのルールが何もマッチしなかったならば、その部分はデフォルトのエレメントスタイルでハイライトされる)。
2468-たとえば、最初のstateはデフォルトのスタイルがnormalだ。
2469-それから、各state毎にそのstateのルールを表示する。
2470-各ルールでは、そのルールに対応するエレメントやルールの正規表現、その他の情報を表示する。
2471-それらは以下で説明する。
2629+各stateは、識別のためのユニークな番号が付けられています。
2630+さらに、そのstateのデフォルトのエレメントが表示されます(つまり、stateのルールが何もマッチしなかった場合、その部分は、デフォルトのエレメントスタイルでハイライトされます)。
2631+例えば、最初のstateはデフォルトのスタイルがnormalです。
2632+それから、各state毎にそのstateのルールを表示します。
2633+各ルールでは、そのルールに対応するエレメントやルールの正規表現、その他の情報を表示します。
2634+以下で説明します。
24722635
2473-@code{/**}(特殊文字をエスケープした文字列@code{/\*\*}として表示される)とマッチする場合、新しいstateに入る。
2474-この場合はstate 2(@code{next: 2})。
2475-これは、新たなenvironmentを定義する区切られたエレメントに相当する(@ref{state/environment定義})。
2476-実際それがenvironmentであってstate(このstateの概念はオートマトンのstateの概念とは違うことに注意)でないということは、デフォルトのエレメントがenvironmentそれ自身と同じであるということでわかる。
2477-@code{*/}とマッチすれば、すなわち、区切られたエレメントの最後になれば、一段階抜ける。
2478-つまりstate 1に戻る。
2479-次に、@code{cbracket}についてのstateがある。
2480-これはenvironmentではない。
2481-実際そのデフォルトのエレメントはnormalだ。
2482-このstateの2番目のルール@code{\\.}は、stateの定義の@code{escape}文字列を表わしている。
2483-区切られたエレメントは、ネストするように定義されるので、3番目の@code{@{}という@code{nested}という情報のついたルールを使う。
2484-なので、これにマッチすれば、単にstate 3自身の新たなインスタンスに入る。
2636+@code{/**}(特殊文字をエスケープした文字列@code{/\*\*}として表示されます)とマッチする場合、新しいstateに入ります。
2637+この場合はstate 2(@code{next: 2})です。
2638+これは、新たなenvironmentを定義する区切られたエレメントに相当します(@pxref{State/Environment Definitions})。
2639+それが実際はenvironmentであって、state(このstateの概念は、オートマトンのstateの概念とは違うことに注意)でないということは、デフォルトのエレメントがenvironment自体と同じであるということから分かります。
2640+@code{*/}とマッチした場合、つまり、区切られたエレメントの最後になった場合、一段階抜けます。
2641+すなわち、state 1に戻ります。
2642+次に、@code{cbracket}についてのstateがあります。
2643+これはenvironmentではありません。
2644+実際、デフォルトのエレメントはnormalです。
2645+このstateの2番目のルール@code{\\.}は、stateの定義の@code{escape}文字列を表わしています。
2646+区切られたエレメントは、ネストするように定義されますので、3番目の@code{@{}という@code{nested}情報のついたルールを使います。
2647+ですから、これにマッチすれば、state 3自身の新たなインスタンスに単に入ります。
24852648
2486-@code{string}と@code{string2}は、@code{multiline}オプションによって、暗黙のうちに示される違いというのもを表わしている。
2487-source-highlightは入力行を別々に処理するために、最初のdelimを使った定義は一つの正規表現で処理できるが、複数行のバージョンはそれができない。
2649+@code{string}と@code{string2}は、@code{multiline}オプションによって暗黙のうちに示される違いを表わしています。
2650+source-highlightは入力行を別々に処理するために、最初のdelimを使った定義は一つの正規表現で処理できますが、複数行のバージョンはそれができません。
24882651
2489-state/environmentは、外側と内側の状態を理解するのが簡単になるようにするためのものだということに留意してほしい。
2652+state/environmentは、外側と内側の状態を理解するのが簡単になるようにするためのものということに留意してください。
24902653
2491-さて、前の例のバリエーションを考えてみよう。
2654+さて、前の例のバリエーションを考えてみましょう。
24922655
24932656 @include comment-show2.lang.texinfo
24942657
2495-@code{--show-regex}の出力を見る。
2658+@code{--show-regex}の出力を見ます。
24962659
24972660 @smallexample
24982661 @include comment-show2.show.texinfo
2662+@c
24992663 @end smallexample
25002664
2501-@code{regexp}というルールで、@code{`}の正規表現(@ref{正規表現の指定方法})を使ったので、後方参照を正しく動作させるために部分表現は変換されない。
2665+@code{regexp}というルールで、@code{`}の正規表現(@pxref{Ways of specifying regular expressions})を使いました。
2666+そのため、後方参照を正しく動作させるため、部分表現は変換されません。
25022667
2503-最後のルールは、名前付きの明示的な部分表現を使っている(@ref{名前を使った明示的な部分表現})。
2504-この式は、違うエレメントから構成されているけれども、全体としてマッチする。
2668+最後のルールは、名前付きの明示的な部分表現を使っています(@pxref{Explicit subexpressions with names})。
2669+この式は違うエレメントから構成されていますが、全体としてマッチします。
25052670
2506-@node 言語定義のチュートリアル, , デバッギング, 言語の定義
2671+
2672+@node Tutorials on Language Definitions, , Debugging, Language Definitions
25072673 @section 言語定義のチュートリアル
25082674
2509-ここで、言語定義の例をいくつか提供する。
2510-前のセクションで既にコード片をいくつか紹介したが、ここでは、言語定義の完全な例を提供する。
2511-これはsource-highlightの配布物自体に含まれているものだ。
2675+ここで、言語定義の例をいくつか提供します。
2676+前のセクションでコード片をいくつか既に紹介しました。
2677+ここでは、言語定義の完全な例を示します。
2678+これは、source-highlightの配布物自体に含まれているものです。
25122679
2513-特に、言語定義のシンタックス自体の言語定義をまず示す(@file{langdef.lang})。
2514-これは、このセクションで示す言語定義の例をハイライトするのに使うものである(このマニュアルを@code{info}コマンドで見ているならばハイライトされているのはわからない)。
2515-もちろん、この例はそれ自体ハイライトされている。
2680+特に、言語定義のシンタックス自体の言語定義をまず示します(@file{langdef.lang})。
2681+これは、このセクションで示す言語定義の例をハイライトするのに使うものです(このマニュアルを@code{info}コマンドで見ている場合は、ハイライトされていることはわかりません)。
2682+もちろん、この例は、それ自体ハイライトされています。
25162683
25172684 @include langdef.lang.texinfo
25182685
2519-これらの例をTexinfoでハイライトするスタイルは、@ref{出力フォーマットスタイル}で示されている@file{texinfo.style}だ。
2520-このスタイルのシンタックスに対する言語定義(@file{style.lang}ファイル)はさらにシンプルだ。
2686+これらの例をTexinfoでハイライトするスタイルは、別節(@pxref{Output format style})で示している@file{texinfo.style}です。
2687+このスタイルのシンタックスに対する言語定義(@file{style.lang}ファイル)はさらにシンプルです。
25212688
25222689 @include style.lang.texinfo
25232690
2524-この定義は、言語定義のシンタックスがシンプルなので、かなりシンプルになっているということに注意していほしい。
2525-次の例では、さらに複雑な機能を使って、もっと複雑な言語のシンタックスをハイライトする方法を見ていく。
2691+言語定義のシンタックスがシンプルですので、この定義がかなりシンプルになっていることに注意してください。
2692+次の例では、さらに複雑な機能を使って、もっと複雑な言語のシンタックスをハイライトする方法を見ていきます。
25262693
25272694 @menu
2528-* C/C++とC#のハイライティング::
2529-* Diffファイルのハイライティング::
2530-* 擬似的な意味解析::
2695+* Highlighting C/C++ and C#::
2696+* Highlighting Diff files::
2697+* Pseudo semantic analysis::
25312698 @end menu
25322699
2533-@node C/C++とC#のハイライティング, Diffファイルのハイライティング, 言語定義のチュートリアル, 言語定義のチュートリアル
2700+
2701+@node Highlighting C/C++ and C#, Highlighting Diff files, Tutorials on Language Definitions, Tutorials on Language Definitions
25342702 @subsection C/C++とC#のハイライティング
25352703
2536-これは、Cの言語定義である。
2537-@file{c.lang}というファイルでインクルードされている。
2704+これは、C言語の言語定義です。
2705+@file{c.lang}というファイルでインクルードされます。
25382706
25392707 @include c.lang.texinfo
25402708
25412709 @noindent
2542-たくさんの@code{include}を利用していることに注目してほしい。
2543-これらの部分で、他の言語定義を再利用している(例えば、JavaはC/C++と共通の部分が多数あるので、そういった部分は別のファイルとして書かれている)。
2544-とくに、コメントの定義の部分である。
2710+たくさんの@code{include}を利用していることに注目してください。
2711+これらの部分は、他の言語定義を再利用されます(例えば、JavaはC/C++と共通の部分が多数ありますので、そういった部分は別のファイルとして書かれています)。
2712+特に、コメントの定義の部分です。
25452713
25462714 @include c_comment.lang.texinfo
25472715
25482716 @noindent
2549-さて、ラインワイドコメント(@code{//})に対する定義と、URLアドレスとメールアドレスもハイライトする複数行コメントに対する定義がある(ここには示されていない@file{url.lang}ファイルで定義されている)。
2550-さらに、自動的にドキュメンテーションを生成するツール(DoxygenやJavadocのようなもの)で使われるコメント、つまり、@code{/**}や@code{///}で始まるものについてもHTMLのシンタックス(ここでは示されていない@file{html.lang}ファイルで定義されている)を完全にハイライトする。
2717+ここに、ラインワイドコメント(@code{//})に対する定義と、URLアドレスとメールアドレスもハイライトする複数行コメントに対する定義があります(@file{url.lang}ファイルで定義されていますが、ここには示していません)。
2718+さらに、ドキュメントを自動生成するツール(DoxygenやJavadocのようなもの)で使われるコメント、つまり、@code{/**}や@code{///}で始まるものについてもHTMLのシンタックス(@file{html.lang}ファイルで定義されていますが、ここには示されていません)を完全にハイライトします。
25512719
2552-@file{c.lang}に戻って、構造体名をハイライトするのに名前付きの部分表現(@ref{名前を使った明示的な部分表現}を見よ)を使っている(@code{struct}が前に付いているときにキーワードとしてハイライトされる)。
2720+@file{c.lang}に戻って、構造体名をハイライトするのに名前付きの部分表現(@pxref{Explicit subexpressions with names})を使っています(@code{struct}が前に付いている時にキーワードとしてハイライトします)。
25532721
2554-プリプロセッサディレクティブの@code{#include}については、この場合、@code{<file>}というシンタックスでインクルードされるファイルが、文字列としてフォーマットされなければならない(そして、このコンテキストにおいてだけ、@code{<>}を文字列として考え、その他の場所ではすべてオペレータとして考える)ので、state定義を使っている。
2555-stateは、そのstateの外側の定義を消してしまうので、このコンテキストにおいてもコメントをハイライトするために、@file{c_comment.lang}をもう一度インクルードしなければならない@footnote{将来の拡張として、オーバーライドするのではなく、外側のコンテキストを拡張するstate/environmentを定義するのに、言語定義のシンタックスの中に、一つ何か方法を用意することを考えるかもしれない}。
2556-そして次に、その他のプリプロセッサディレクティブを全て捕捉する@code{preproc}の定義がある。
2722+プリプロセッサディレクティブの@code{#include}については、この場合、@code{<file>}というシンタックスでインクルードされるファイルが、文字列としてフォーマットされなければなりません(そして、このコンテキストにおいてだけ、@code{<>}を文字列として考え、その他の場所ではすべてオペレータとして考えます)ので、state定義を使っています。
2723+stateは、そのstateの外側の定義を消してしまいます。
2724+このコンテキストにおいてもコメントをハイライトするためには、@file{c_comment.lang}をもう一度インクルードしなければなりません@footnote{将来の拡張として、オーバーライドするのではなく、外側のコンテキストを拡張するstate/environmentを定義するできるように、言語定義のシンタックス中に、何か一つ方法を用意することを考えるかもしれません}。
2725+次に、その他のプリプロセッサディレクティブを全て捕捉する@code{preproc}の定義があります。
25572726
2558-インクルードされている@file{number.lang}というファイルは、数値定数をキャッチするための正規表現を定義していて(ここには示されない)、次に、文字列を定義する@file{c_string.lang}ファイルをインクルードする(また、Javaで共有される)。
2727+インクルードされている@file{number.lang}というファイルは、数値定数をキャッチするための正規表現を定義しています(ここには示していません)。
2728+次に、文字列を定義する@file{c_string.lang}ファイルをインクルードします(また、Javaで共有されます)。
25592729
25602730 @include c_string.lang.texinfo
25612731
25622732 @noindent
2563-文字列の内部では、特殊な文字(たとえば、@code{\n}や@code{\t}などのような)や、通常のエスケープされた文字を別の方法でハイライトしたい。
2564-これらは、`@code{\\.}'という正規表現でマッチされる、
2733+文字列の内部では、特殊な文字(例えば、@code{\n}や@code{\t}などのような文字)や、通常のエスケープされた文字を別の方法でハイライトしようと考えます。
2734+こういった文字は、`@code{\\.}'という正規表現でマッチできます。
25652735
2566-インクルードされている@file{symbols.lang}というファイルでは、シンボルが全て定義されている(他の言語でも共有している)。
2736+インクルードされている@file{symbols.lang}というファイルは、シンボルを全て定義しています(他の言語でも共有しています)。
25672737
25682738 @include symbols.lang.texinfo
25692739
25702740 @noindent
2571-ここでは、@code{\}や@code{|}という文字をエスケープしなければならいということがわかる以外に面白いことは無い。
2741+ここでは、@code{\}や@code{|}という文字をエスケープしなければならいということがわかる以外に面白いことはありません。
25722742
2573-インクルードされている@file{function.lang}というファイルでは、関数定義や関数呼び出しにマッチするための正規表現を定義している。
2743+インクルードされている@file{function.lang}というファイルは、関数定義や関数呼び出しにマッチする次のような正規表現を定義しています。
25742744
25752745 @include function.lang.texinfo
25762746
25772747 @noindent
2578-これは、開きカッコに対する前方先読み表明の例を示している(@ref{正規表現に関する注意}を参照)。
2579-@ref{ファイルのインクルード}で記したように、キーワードの定義の後にこのファイルをインクルードするのは非常に大事なことだ。
2748+これは、開きカッコに対する前方先読み表明の例を示しています(@pxref{Notes on regular expressions})。
2749+別の節(@pxref{File inclusion})で記したように、キーワードの定義の後にこのファイルをインクルードするのが非常に重要なこととなります。
25802750
2581-最後に、@file{c.lang}は@file{clike_vardeclaration.lang}というファイルをインクルードする。
2751+最後に、@file{c.lang}は、以下の@file{clike_vardeclaration.lang}というファイルをインクルードします。
25822752
25832753 @include clike_vardeclaration.lang.texinfo
25842754
2585-この定義は、名前付きの部分表現を使って(@ref{名前を使った明示的な部分表現}を参照)、関数パラメータや変数宣言にあるユーザ型(たとえば構造体名)のマッチを試みる@footnote{広範囲のテストは行なっていないので、正しい状態のものを全て捕捉することはできないかもしれない}。
2586-基本的に型の識別子のマッチを試み、それからテンプレートの記述のマッチを試みる@footnote{OK、Cにテンプレートは無くて、C++にだけテンプレートがある。しかし、Cファイルをハイライトするのに不都合は無いはずだと考えている}。
2587-そして、完全な先読み表明がある。
2588-これは、@code{&}や@code{*}といった参照やポインタの記述が付く可能性のある変数の識別子のマッチを試みるもので、その後には、アサインメントの@code{=}や@code{;}が続いたり、もっと広く、@code{[:punct:]}や@code{[]}(配列の記述)が続いたりする。
2589-これは、以下のように(@code{usertype}をわざとイタリックで強調している)、正しいコンテキストでユーザ型をキャッチするはずだ。
2755+この定義は、名前付きの部分表現を使って(@pxref{Explicit subexpressions with names})、関数パラメータや変数宣言にあるユーザ型(例えば、構造体名)のマッチを試みます@footnote{広範囲のテストは行なっていませんので、正しい状態のものを全て捕捉することはできないかもしれません}。
2756+基本的に、型の識別子のマッチを試み、それから、テンプレート記述のマッチを試みます@footnote{分かっています。
2757+Cにテンプレートはありません。
2758+C++にだけテンプレートがあります。
2759+しかし、Cファイルをハイライトするのに、これで不都合は無いはずだと考えています。}。
2760+そして、完全な先読み表明がある(@pxref{Notes on regular expressions})。
2761+これは、@code{&}や@code{*}といった参照やポインタの記述が付く可能性のある変数の識別子のマッチを試みるものです。
2762+その後には、アサインメントの@code{=}や@code{;}が続いたり、もっと広く言うと、@code{[:punct:]}や@code{[]}(配列の記述)が続いたりします。
2763+これは、以下のように(@code{usertype}をわざとイタリックで強調しています)、正しいコンテキストでユーザ型を捕捉するはずです。
25902764
25912765 @include test_vardecl.cc.texinfo
25922766
2593-注意してほしいが、3番目のグループに先読み表面を使っているので、マッチしたものは実際にフォーマットはされず、別のルールでフォーマットできるように入力ストリームに戻してしまう(たとえば、@code{*}や@code{=}に対する@code{symbol})。
2767+3番目のグループに先読み表面を使っています。
2768+そのため、マッチしたものは実際にフォーマットはされず、別のルールでフォーマットできるように入力ストリームに戻してしまいますので注意してください(例えば、@code{*}や@code{=}に対する@code{symbol})。
25942769
2595-少くともシンタックスの上ではC++はCの拡張であるので、C++に対する言語定義は、@file{cpp.lang}ファイル内でインクルードすることで、@file{c.lang}に依存している@footnote{バージョン2.9以前では、CとC++の両方に使われる@file{cpp.lang}だけが存在した。しかし、このようにすれば、C++のキーワードを変数名として使っているCプログラムがあった場合、もちろんそういったことはCでは正しいのであるが、そういった変数は実際にはキーワードとしてハイライトされてしまうことになり、そういう状況は正しくはなかった}。
2770+少くともシンタックスの上ではC++はCの拡張ですので、@file{cpp.lang}ファイルでインクルードされるC++に対する言語定義は、@file{c.lang}に依存しています@footnote{バージョン2.9以前では、CとC++の両方に使われる@file{cpp.lang}だけが存在していました。
2771+しかし、このようにすれば、C++のキーワードを変数名として使っているCプログラムがあった場合に問題となります。
2772+もちろん、Cでは正しいことなのですが、そういった変数があると、実際には、キーワードとしてハイライトされてしまうことになり、正しい状況ではありませんでした。}。
25962773
25972774 @include cpp.lang.texinfo
25982775
2599-具体的には、キーワードのセットを拡張する。
2600-さらに、クラス(あるいは構造体)の名前をハイライトするのに名前付きの部分表現(@ref{名前を使った明示的な部分表現})を使っていることに注意してほしい(@code{class}や@code{struct}、あるいは@code{typename}が前に付いているときに、キーワードとしてハイライトされる)。
2776+具体的には、キーワードのセットを拡張します。
2777+さらに、クラス名(あるいは、構造体名)をハイライトするのに名前付きの部分表現(@pxref{Explicit subexpressions with names})を使っていることに注意してください(@code{class}、@code{struct}、あるいは、@code{typename}が前に付いている時に、キーワードとしてハイライトします)。
26012778
2602-さてこれで、C/C++に対する言語定義を書いたので、C#用のものを書くのは容易だ。
2603-プリプロセッサのエレメントとして@code{using}キーワードを追加し、キーワードと型を再定義する(よりベターに言えば、「置き換える」。@ref{再定義と置換})必要があるだけだからである。
2779+さて、これで、C/C++に対する言語定義は記述できました。
2780+C#用のものを書くのは簡単です。
2781+プリプロセッサのエレメントとして@code{using}キーワードを追加し、キーワードと型を再定義する@footnote{よりベターに言うならば、「置き換える」です。
2782+@xref{Redefinitions and Substitutions}.}だけです。
26042783
26052784 @include csharp.lang.texinfo
26062785
2607-@node Diffファイルのハイライティング, 擬似的な意味解析, C/C++とC#のハイライティング, 言語定義のチュートリアル
2786+
2787+@node Highlighting Diff files, Pseudo semantic analysis, Highlighting C/C++ and C#, Tutorials on Language Definitions
26082788 @subsection Diffファイルのハイライティング
26092789
2610-さてここで、@code{diff}(普通はパッチを作成するのに使われる)が生成したファイルをハイライトしたい。
2611-このプログラムは三つの異なったフォーマットで出力を生成することができる(少なくとも私の知る限り)。
2790+さて、ここで、@code{diff}@footnote{普通はパッチを作成するのに使われます。}が生成したファイルをハイライトしようと思います。
2791+diffプログラムは、少なくとも私の知る限り、三つの異なったフォーマットで出力を生成することができます。
26122792
2613-@code{-u|--unified}というオプションを使えば、ファイル間の差が同じコンテキストで表示される。
2614-たとえば次のようになる(ここで示すdiffファイルの例は、ページの幅にフィットするように手で修正してある)。
2793+@code{-u|--unified}というオプションを使えば、ファイル間の差が同じコンテキストで表示されます。
2794+例えば、次のようになります(ここで示すdiffファイルの例は、ページの幅にフィットするように手で修正してあります)。
26152795
26162796 @include example-u.diff.texinfo
26172797
2618-オプション@code{-c|--context}と使えば、差分は二つの別々の部分に示される。
2798+オプション@code{-c|--context}を指定すれば、差分は、二つの別々の部分に分けて示されます。
26192799
26202800 @include example-c.diff.texinfo
26212801
@@ -2623,169 +2803,180 @@ stateは、そのstateの外側の定義を消してしまうので、このコ
26232803
26242804 @include example-n.diff.texinfo
26252805
2626-まとめると、これら三つの異なったシンタックスを全て処理できるようにしたい。
2627-最初のフォーマットと2番目のフォーマットでは、衝突する部分がある。
2628-最初のものは@code{---}をファイルの新しいバージョンを示すのに使っている一方、2番目のフォーマットでは、それをファイルの古いバージョンを示すのに使っている。
2629-古い部分と新しい部分は別々にハイライトしたいので(強力なフォーマット機能が欠けているため、Texinfoのハイライティングでは見ることができないが、HTMLの出力例では二つの違う色を使っているのが目にできる)、この動作によって少し難しさが加わる。
2630-もちろん、diffのそれぞれの出力フォーマットに対応する三つの別々の言語定義を定義することもできた。
2631-しかし、同一ファイルでそれら全てを処理したかったのだ!
2806+まとめると、これら三つの異なったシンタックスを全て処理できるようにしたいということです。
2807+最初のフォーマットと2番目のフォーマットには、衝突する部分があります。
2808+最初のものは@code{---}をファイルの新しいバージョンを示すのに使っています。
2809+一方、2番目のフォーマットでは、同じものを、ファイルの古いバージョンを示すのに使っています。
2810+古い部分と新しい部分は異なったハイライトを行いたいので@footnote{強力なフォーマット機能が欠けているため、Texinfoのハイライティングでは見ることができませんが、HTMLの出力例では二つの違う色を使っているのが目にできます。}、この動作によって少し難しさが加わります。
2811+もちろん、diffのそれぞれの出力フォーマットに対応する三つの別々の言語定義を定義することもできました。
2812+しかし、全ての処理を同一ファイルで実現したかったのです。
26322813
2633-これがdiffファイルに対する言語定義である。
2814+これが、diffファイルに対する言語定義です。
26342815
26352816 @include diff.lang.texinfo
26362817
2637-diffファイルを処理するときには、同じdiffのコマンドラインスイッチを使って生成した情報だけが含まれていると安全に仮定することができるので、diffの三つの出力フォーマットに対応する三つの別々のstateを定義する。
2638-これらのstateには簡単な定義で入るということに注意してほしい。
2639-@ref{state/environment定義}に記されているように、これは、自動的に抜け出す手段が用意されていないことを意味している。
2640-明示的に抜ける条件が指定されないので、つまり、stateの一つに一度入ると、決して終了しないということである。
2641-このことは我々の目的に適っている。
2642-もちろん、stateに入るための式は正しく定義されなければならないし、また、具体的に言うと、@code{---}が、@code{-u|--unified}オプションによる最初の差分の記述として使われるために、この最初の@code{---}という並びをまず探索するので、これが、処理しようとしているdiffフォーマットを推定する目印となっている。
2643-
2644-別の面白いこととして、処理しているファイルフォーマットを知りたいだけなので、開きカッコに対して前方先読み表明を使っていることがある。
2645-一旦正しいstateに入ったならば、特定のdiffファイルフォーマットのエレメントに対する正規表現を書くことができる。
2646-
2647-@code{-c|--context}オプションで作成したファイルに対しては、内側にenvironmentを二つ定義している。
2648-新しいファイルの部分に対するものと古いファイルの部分に対するものだ(これらは@code{---}や@code{***}、そして行番号情報で区切られている)。
2649-これらはenvironmentなので、どの式にもマッチしないものは、そのenvironmentを定義しているエレメントのスタイルに応じてフォーマットされることに注意してほしい。
2650-なので、normalとしてフォーマットされなければならないテキストに対する式も用意している。
2651-diffファイルについて言うと、これは空白で始まる行や@code{diff}で始まる行に相当する(上の例を見てみてほしい)。
2652-とくに、後者の場合は新しいファイルの部分の間でだけ起こる。
2653-このenvironmentではともに、抜け出す条件を定義しなければならない。
2654-両者の場合とも、これは互いに補完する部分の開始位置に一致する。
2655-この場合においても、前方先読み表明を使用している。
2656-それは、environmentから抜け出すためだけに使用している。
2657-外側の@code{oldfile}と@code{newfile}についての定義はソースファイルの情報の行をマッチするのに使われる。
2658-
2659-3番目のstateは、diffの通常の出力フォーマットに対応するもので、今となればもうわかりやすいはずだ。
2660-
2661-@node 擬似的な意味解析, , Diffファイルのハイライティング, 言語定義のチュートリアル
2818+diffファイルを処理する時には、同じdiffのコマンドラインスイッチを使って生成した情報だけが含まれていると仮定しても差し支えありませんので、diffの三つの出力フォーマットに対応する三つの別々のstateを定義することにします。
2819+これらのstateには簡単な定義を使って入るということに注意してください。
2820+別の節に説明しているように、これは、自動的に抜け出す手段が用意されていないことを意味しています(@pxref{State/Environment Definitions})。
2821+明示的に抜ける条件が指定されませんので、つまり、stateの一つに一度入ると、決して終了しないということです。
2822+このことは我々の目的に適っています。
2823+もちろん、stateに入るための式は正しく定義されなければなりません。
2824+また、具体的に言うと、@code{---}が、@code{-u|--unified}オプションによる最初の差分の記述として使われるために、この最初の@code{---}という並びをまず探索しますので、これが、処理しようとしているdiffフォーマットを推定する目印となっています。
2825+
2826+別の面白いこととして、処理しているファイルフォーマットを知りたいだけのために、開きカッコに対して前方先読み表明を使っていることがあります(@pxref{Notes on regular expressions})。
2827+正しいstateに一度入ったならば、特定のdiffファイルフォーマットのエレメントに対する正規表現を書くことができます。
2828+
2829+@code{-c|--context}オプションで作成したファイルに対しては、内側にenvironmentを二つ定義しています。
2830+新しいファイル部分に対するものと古いファイル部分に対するものです(これらは、@code{---}、@code{***}、行番号情報で区切られています)。
2831+これらはenvironmentです。
2832+そのため、どの式にもマッチしないものは、environmentを定義しているエレメントのスタイルに応じてフォーマットされますので注意してください。
2833+ですから、normalとしてフォーマットしなければならないテキストに対する式も用意しています。
2834+diffファイルについて言うと、これは、空白で始まる行や@code{diff}で始まる行に相当します(上の例を見てください)。
2835+特に、後者の場合は新しいファイルの部分の間でだけ起こります。
2836+このenvironmentでは、抜け出す条件をともに定義しなければなりません。
2837+両者の場合とも、これは互いに補完する部分の開始位置に一致します。
2838+この場合においても、前方先読み表明を使用しています。
2839+environmentから抜け出すためだけに使用しています。
2840+外側の@code{oldfile}と@code{newfile}についての定義は、ソースファイルの情報の行をマッチするのに使われます。
2841+
2842+3番目のstateは、diffの通常の出力フォーマットに対応するもので、今となればもう分かりやすいはずです。
2843+
2844+
2845+@node Pseudo semantic analysis, , Highlighting Diff files, Tutorials on Language Definitions
26622846 @subsection 擬似的な意味解析
26632847
2664-source-highlightは、正規表現を用いて、入力ソースをレキシカルに解析することができるだけである。
2665-とくに、入力ソースが、その入力言語の点から文法的に正しいということを前提としている。
2666-しかし、言語定義のシンタックスを使い、また正しい正規表現を書くことで、入力ソースのある種の意味的な解析をシミュレートすることも可能だ。
2848+source-highlightは、正規表現を用いて、入力ソースをレキシカルに解析することができるだけです。
2849+特に、入力ソースが、その入力言語の点から文法的に正しいということを前提としています。
2850+しかし、言語定義のシンタックスを使い、また、正しい正規表現を書くことで、入力ソースのある種の意味的な解析をシミュレートすることも可能です。
26672851
2668-例として、以下のC(あるいはC++)のソースファイルを考えてほしい。
2852+例として、以下のC(あるいはC++)のソースファイルを考えてみてください。
26692853
26702854 @include test_extreme_comment.cpp.texinfo
26712855
26722856 @noindent
2673-@code{#if 0}と@code{#else}にあるコードが決して実行されない(実際コンパイルすらされない)ことを検証するのは簡単だ。
2674-なので、これをコメントとしてフォーマットしたくなるかもしれない。
2857+@code{#if 0}と@code{#else}にあるコードは決して実行されないことを検証するのは簡単です(実際、コンパイルすらされません)。
2858+ですから、これをコメントとしてフォーマットしたくなるかもしれません。
26752859
2676-従って、@file{cpp.lang}ファイルを基にして、別の言語定義を書く。
2860+従って、@file{cpp.lang}ファイルを基にして、別の言語定義を記述します。
26772861
26782862 @include extreme_comment.lang.texinfo
26792863
26802864 @noindent
2681-この最初のバージョンには故意に誤りを入れてある。
2682-environmentを開始するのに@code{start}エレメントを使ったが、そのエレメントは一つの行のスコープを持つので、期待した動作にならない。
2865+最初のこのバージョンには故意に誤りを入れてあります。
2866+environmentを開始するのに@code{start}エレメントを使いましたが、そのエレメントは一つの行のスコープを持ちます。
2867+そのため、期待した動作になりません。
26832868
26842869 @include test_extreme_comment_wrong.texinfo
26852870
2686-ベターな解決方法は次のようなものだ。
2871+ベターな解決方法は次のようなものです。
26872872
26882873 @include extreme_comment2.lang.texinfo
26892874
26902875 @noindent
2691-ここでは、@code{comment} environmentに、区切られたエレメントを使わず、単に@code{#ifdef 0}にマッチする正規表現によって入っている
2692-そして、@code{#else}にマッチするか、@code{#endif}にマッチするときのどちらかに、そのenvironmentを抜け出す。
2693-これは動作するように思える。
2876+ここでは、区切られたエレメントを使わず、単に、@code{#ifdef 0}にマッチする正規表現によって@code{comment} environmentに入っています。
2877+そして、@code{#else}にマッチするか、@code{#endif}にマッチする時のどちらかに、そのenvironmentを抜け出します。
2878+これは動作するように思えます。
26942879
26952880 @include test_extreme_comment_1.texinfo
26962881
2697-しかしながら、@code{#if...#else}がネストすることを考えた場合うまく動作しない。
2698-例として次のコードを考える。
2699-前述の言語定義でフォーマットされている。
2882+しかしながら、@code{#if...#else}がネストすることを考えた場合うまく動作しません。
2883+例として、次のコードを考えます。
2884+前述の言語定義でフォーマットされています。
27002885
27012886 @include test_extreme_comment_wrong2.texinfo
27022887
27032888 @noindent
2704-問題は、前述の言語定義が@code{#if}のネストを考慮していないために、@code{#else}か@code{#endif}にマッチする最初のタイミングで@code{comment} environmentから抜け出していることである。
2889+問題は、前述の言語定義が@code{#if}のネストを考慮していないために、@code{#else}か@code{#endif}にマッチする最初のタイミングで@code{comment} environmentから抜け出していることにあります。
27052890
2706-ネストが起きることに配慮しなければならない。
2707-これを実現するには、@code{nested}オプションを付けて区切られたエレメントを使用する(@ref{delim定義})。
2891+ネストが起きることに配慮しなければなりません。
2892+これを実現するには、@code{nested}オプションを付けて区切られたエレメントを使用します。
2893+@xref{Delimited definitions}.
27082894
27092895 @include extreme_comment3.lang.texinfo
27102896
27112897 @noindent
2712-今度は、コードの期待通りのブロックがコメントとして正しくフォーマットされている。
2898+今度は、期待通りのコードブロックがコメントとして正しくフォーマットされています。
27132899
27142900 @include test_extreme_comment_2.texinfo
27152901
2716-(@code{#endif}だけでなく)@code{#else}にマッチするときにもenvironmentを脱出することが大事であることに注意してほしい。
2717-このようにすれば、別の@code{#ifdef 0}に再度マッチすることができる。
2718-例えば、次のようなコードを考えてみてほしい。
2902+(@code{#endif}だけでなく)@code{#else}にマッチする時にも、environmentを脱出することが大事であることに注意してください。
2903+このようにすれば、別の@code{#ifdef 0}に再度マッチすることができます。
2904+例えば、次のようなコードを考えてみてください。
27192905
27202906 @include test_extreme_comment_3.texinfo
27212907
2722-@node 出力言語の定義, リファレンスの生成, 言語の定義, Top
2908+
2909+@node Output Language Definitions, Generating References, Language Definitions, Top
27232910 @chapter 出力言語の定義
27242911 @cindex output language definition
27252912
2726-バージョン2.1からsource-highlightは、固有のシンタックスを使って出力フォーマットを記述する(たとえば、HTMLや@LaTeX{}などでフォーマットする方法)。
2727-バージョン2.1以前では、新たな出力フォーマットを追加するのに、C++のクラスをたくさん書かなければならなかった。
2728-これは、新たな出力フォーマットを「動的に」追加するのに障害となっていた。
2729-source-highlightプログラムを丸ごと再コンパイルしなければならなかったからだ。
2913+バージョン2.1から、source-highlightは、固有のシンタックスを使って出力フォーマットを記述します(例えば、HTMLや@LaTeX{}などでフォーマットする方法など)。
2914+バージョン2.1以前では、新たな出力フォーマットを追加するのに、C++のクラスをたくさん書かなければなりませんでした。
2915+これは、新たな出力フォーマットを「動的に」追加するのに障害となっていました。
2916+source-highlightプログラムを丸ごと再コンパイルしなければならなかったからです。
27302917
2731-それに代わって、現在では、出力フォーマットは(願わくは)簡単なシンタックスでファイルで記述し、動的にロードされる。
2732-そして、これらの定義がテキストフォーマッタをオンザフライに生成するために内部で使用される。
2918+それに代わって、現在では、(願わくは)簡単なシンタックスで出力フォーマットをファイルに記述します。
2919+そして、出力フォーマットは動的にロードされます。
2920+これらの定義は、テキストフォーマッタをオンザフライに生成するために内部で使用されます。
27332921
2734-ここでは、多数の例に頼りながら、そのシンタックスを詳細に見ていく。
2735-これによって、ユーザが既存の出力フォーマットを修正したり、新しいものを作成するのが簡単にできる。
2736-こういったファイルは通常@file{.outlang}という拡張子を付ける。
2922+ここでは、多数の例に頼りながら、そのシンタックスを詳細に見ていきます。
2923+これによって、ユーザが既存の出力フォーマットを修正したり、新しいものを作成するのが簡単にできるようになります。
2924+こういったファイルには、通常、@file{.outlang}という拡張子を付けます。
27372925
2738-各定義は基本的に、テキストスタイル(たとえばボールド、イタリック、色などのようなもの)を、出力フォーマットへ入れこまれるそのスタイルの表記(たとえば@code{<b>$text</b>}のようなもの)と結び付けるものだ。
2739-その表記は@code{"}で指定され、その定義内では、伝統的なエスケープ文字の@code{\}を使って、@code{"}を使うことができる。
2740-ある文字に対してASCIIコードを指定したい場合には、@code{\x}を前に置いた16進表記の数値コードを記述することができる。
2741-例としては@ref{スタイルテンプレート}を参照してほしい。
2926+各定義は、基本的に、テキストスタイル(例えば、ボールド、イタリック、色などのようなもの)を、出力フォーマットへ入れ込まれるスタイルの表記(例えば、@code{<b>$text</b>}のようなもの)と結び付けるものです。
2927+その表記は@code{"}で指定されます。
2928+定義内では、伝統的なエスケープ文字の@code{\}を使って、@code{"}を使うことができます。
2929+ある文字に対してASCIIコードを指定したい場合には、@code{\x}を前に置いた16進表記の数値コードを記述することができます。
2930+例としては、別節を参照してください(@pxref{Style template})。
27422931
2743-特定のスタイル、たとえばボールドなどに定義が与えられていない場合には、フォーマット中にそのスタイルが要求されると、そのテキストはそのままフォーマットされる。
2744-つまり、定義の無いスタイルは単に無視される。
2932+特定のスタイル、例えば、ボールドなどに定義が与えられていない場合には、フォーマット中にそのスタイルが要求されると、テキストはそのままフォーマットされます。
2933+つまり、定義の無いスタイルは単に無視されます。
27452934
2746-コメントは@code{#}を使って書くことができる。
2747-その行のそれ以降の部分はコメントとして扱われる。
2935+@code{#}を使ってコメントを記述できます。
2936+その行のそれ以降の部分はコメントとして処理されます。
27482937
2749-ファイルは言語定義の場合と同様の方法でインクルードすることができる。
2750-@ref{ファイルのインクルード}
2938+ファイルは言語定義の場合と同様の方法でインクルードすることができます。
2939+@xref{File inclusion}.
27512940
2752-どのような場合でも、スタイルに対する定義が複数回与えられた場合は、最後の定義が、その他の定義全てを置き換えてしまう。
2941+どのような場合でも、スタイルに対する定義が複数回与えられた場合は、最後の定義が、その他の定義全てを置き換えてしまいます。
27532942
27542943 @menu
2755-* ファイルの拡張子:: Specify the output file extension
2756-* テキストのスタイル:: Bold, Italics, Underline, etc.
2757-* 色:: Style and definitions for colors
2758-* アンカーとリファレンス::
2759-* ワンスタイル::
2760-* スタイルテンプレート::
2761-* 行プリフィックス::
2762-* 文字列変換::
2763-* ドキュメントテンプレート::
2764-* HTML出力の生成::
2944+* File extension:: Specify the output file extension
2945+* Text styles:: Bold, Italics, Underline, etc.
2946+* Colors:: Style and definitions for colors
2947+* Anchors and References::
2948+* One style::
2949+* Style template::
2950+* Line prefix::
2951+* String translation::
2952+* Document template::
2953+* Generating HTML output::
27652954 @end menu
27662955
2767-@node ファイルの拡張子, テキストのスタイル, 出力言語の定義, 出力言語の定義
2956+
2957+@node File extension, Text styles, Output Language Definitions, Output Language Definitions
27682958 @section ファイルの拡張子
27692959
2770-次の行を見てほしい。
2960+次の行を見てください。
27712961
27722962 @example
27732963 extension "<file extension>"
27742964 @end example
27752965
27762966 @noindent
2777-この行によって、デフォルトのファイル拡張子(@code{.}無し)を定義する。
2778-これは、この出力フォーマットに応じてフォーマットされるファイルを生成するのに使う、
2779-ファイル名が指定されていないときに使われる。
2780-@code{.outlang}にインクルードされていないファイル拡張子が定義されていなくて(訳注:イマイチ意味不明)、出力ファイル名が指定されていない場合には、エラーが発生する。
2967+この行によって、デフォルトのファイル拡張子(@code{.}無し)を定義します。
2968+これは、出力フォーマットに応じてフォーマットされるファイルを生成する際に使用します。
2969+ファイル名が指定されていない時に使われます。
2970+@code{.outlang}にインクルードされていないファイル拡張子が定義されていなくて、出力ファイル名が指定されていない場合には、エラーが発生します。
27812971
2782-たとえば、次のものは@file{html_common.outlang}の中で使用されている。
2972+例えば、以下は、@file{html_common.outlang}の中で使用されています。
27832973
27842974 @example
27852975 extension "html"
27862976 @end example
27872977
2788-@node テキストのスタイル, 色, ファイルの拡張子, 出力言語の定義
2978+
2979+@node Text styles, Colors, File extension, Output Language Definitions
27892980 @section テキストのスタイル
27902981 @cindex bold
27912982 @cindex italics
@@ -2793,7 +2984,7 @@ extension "html"
27932984 @cindex fixed
27942985 @cindex notfixed
27952986
2796-次に挙げるものが定義可能なテキストスタイルである。
2987+次に挙げるものは、定義可能なテキストスタイルです。
27972988
27982989 @example
27992990 bold
@@ -2804,10 +2995,10 @@ fixed
28042995 @end example
28052996
28062997 @noindent
2807-もちろん、これらは、出力フォーマットのスタイルを指定するのに使われるものに対応している。
2808-@ref{出力フォーマットスタイル}
2998+もちろん、これらは、出力フォーマットのスタイルを指定するのに使われるものに対応しています。
2999+@xref{Output format style}.
28093000
2810-たとえば、次の定義はHTMLフォーマットの定義のものである。
3001+例えば、次の定義は、HTMLフォーマットの定義のものである。
28113002
28123003 @example
28133004 bold "<b>$text</b>"
@@ -2817,18 +3008,19 @@ underline "<u>$text</u>"
28173008
28183009 @cindex $text
28193010 @noindent
2820-定義内では、@code{$text}という特殊な変数を使って、フォーマットされる実際のテキストが挿入される場所を指定する。
2821-たとえば、上の@code{bold}の定義は、@code{class}というキーワードをHTMLにおいてboldでフォーマットすることが必要になった場合に、@code{<b>class</b>}というテキストが生成されるということを言っている。
2822-この変数は、一つ以上のスタイルを再帰的に組み合わせるときにも使われる。
2823-具体的に言うと、ボールドとイタリックでフォーマットしたい場合(すなわち、まずボールドそれからイタリック、言い替えると、出力フォーマットスタイルファイルの中で使われる@code{i, b}という並び。@ref{出力フォーマットスタイル}を参照してほしい)、まず@code{class}というテキストを@code{<b>$text</b>}に@code{$text}として代入し、次に、@code{<b>class</b>}というテキストを@code{<i>$text</i>}に@code{$text}として代入する。
2824-そうして、@code{<i><b>class</b></i>}が得られる。
3011+定義内では、@code{$text}という特殊な変数を使って、フォーマットされる実際のテキストが挿入される場所を指定します。
3012+例えば、上の@code{bold}の定義は、@code{class}というキーワードをHTMLにおいてboldでフォーマットする必要がある場合に、@code{<b>class</b>}というテキストが生成されるということを述べています。
3013+この変数は、一つ以上のスタイルを再帰的に組み合わせる時にも使われます。
3014+具体的に言うと、ボールドとイタリックでフォーマットしたい場合(すなわち、まずボールド、それから、イタリックというフォーマットをしたい場合、言い替えると、出力フォーマットスタイルファイルの中で使われる@code{i, b}という並びの場合です。@pxref{Output format style})、まず、@code{class}というテキストを@code{<b>$text</b>}に@code{$text}として代入し、次に、@code{<b>class</b>}というテキストを@code{<i>$text</i>}に@code{$text}として代入します。
3015+そうして、@code{<i><b>class</b></i>}が得られます。
28253016
2826-@node 色, アンカーとリファレンス, テキストのスタイル, 出力言語の定義
3017+
3018+@node Colors, Anchors and References, Text styles, Output Language Definitions
28273019 @section 色
28283020 @cindex colors
28293021 @cindex $style
28303022
2831-フォーマッティングの際に色を使うための定義には、次の@code{color}スタイルの定義が必要である。
3023+フォーマッティングの際に色を使うための定義には、次の@code{color}スタイルの定義が必要です。
28323024
28333025 @example
28343026 color "..."
@@ -2836,39 +3028,39 @@ color "..."
28363028
28373029 @cindex background color
28383030 @noindent
2839-また、次の@code{bgcolor}スタイルの定義が必要である@footnote{バージョン2.6から}。
3031+また、次の@code{bgcolor}スタイルの定義が必要です@footnote{バージョン2.6からです。}。
28403032
28413033 @example
28423034 bgcolor "..."
28433035 @end example
28443036
2845-この定義は、特定のハイライトされるエレメントの背景色だけに関わりがある。
2846-つまり、スタイルファイルの中で@code{bg:}というプリフィックスを付けて記述される色や(@ref{出力フォーマットスタイル}を参照)、あるいは@code{--style-css-file}へ渡されるCSSファイルで記述される@code{background-color}というプロパティである(@ref{CSSを使用した出力フォーマットスタイル}を参照)。
2847-なので、出力全体の背景色(すなわちスタイルファイルで@code{bgcolor}を使って記述したものや、あるいは、CSSファイルにおける@code{body}セレクタの@code{background-color}プロパティ)と混同してはいけない
2848-ドキュメント全体の背景色については@ref{ドキュメントテンプレート}で説明する。
3037+この定義は、ハイライトされる特定のエレメントの背景色だけに関わりがあります。
3038+つまり、スタイルファイルの中で@code{bg:}というプリフィックスを付けて記述される色や(@pxref{Output format style})、あるいは、@code{--style-css-file}へ渡されるCSSファイルで記述される@code{background-color}というプロパティのことです(@pxref{Output format style using CSS})。
3039+ですから、出力全体の背景色(すなわち、スタイルファイルで@code{bgcolor}を使って記述したものや、あるいは、CSSファイルにおける@code{body}セレクタの@code{background-color}プロパティ)と混同してはいけません。
3040+ドキュメント全体の背景色については別節で説明します(@pxref{Document template})。
28493041
2850-背景色は出力フォーマットの全てで利用できるわけではないことに注意してほしい。
2851-たとえば、HTMLについては次のようなものがある。
3042+背景色は、出力フォーマットの全てで利用できるわけではないので注意してください。
3043+例えば、HTMLについては次のようなものがあります。
28523044
28533045 @example
28543046 color "<font color=\"$style\">$text</font>"
28553047 @end example
28563048
28573049 @noindent
2858-他方XHTMLでは次のようなものがある。
3050+他方、XHTMLでは次のようなものがあります。
28593051
28603052 @example
28613053 color "<span style=\"color: $style\">$text</span>"
28623054 bgcolor "<span style=\"background-color: $style\">$text</span>"
28633055 @end example
28643056
2865-既に見た@code{$text}の他に、@code{$style}という変数もある。
2866-これは、実際の色を置き換えるものだ。
3057+既に見た@code{$text}の他に、@code{$style}という変数もあります。
3058+これは、実際の色を置き換えるものです。
28673059
2868-source-highlightは色に関する定数を多数認識する。
2869-@ref{出力フォーマットスタイル}を参照してほしい。
3060+source-highlightは色に関する定数を多数認識します。
3061+@xref{Output format style}.
28703062
2871-出力フォーマットの中では、@code{colormap}の定義を使って、色の定数とその色の定義を関連付けなければならない。
3063+出力フォーマットの中では、@code{colormap}の定義を使って、色の定数とその色の定義を関連付けなければなりません。
28723064
28733065 @example
28743066 colormap
@@ -2879,9 +3071,9 @@ default "default color representation"
28793071 end
28803072 @end example
28813073
2882-@code{default}の行(@code{"}が無いことに注意)は、フォーマティングの際に色定数が使われたが、出力フォーマットには定義されていない場合に使われる色を定義するものだ。
3074+@code{default}の行(@code{"}が無いことに注意)は、フォーマティングの際に色定数が使われたが、出力フォーマットには定義されていない場合に使われる色を定義するものです。
28833075
2884-例として、HTMLについては次のようになっている。
3076+例として、HTMLについては次のようになっています。
28853077
28863078 @example
28873079 colormap
@@ -2906,33 +3098,35 @@ default "#000000"
29063098 end
29073099 @end example
29083100
2909-出力フォーマットが色を取り扱わないのであれば、@code{color}と@code{colormap}の定義をただ単に避ければよい。
2910-そうすれば、source-highlightは色をただ単に無視する。
3101+出力フォーマットが色を取り扱わないのであれば、単に、@code{color}と@code{colormap}の定義をせずに済ますことができます。
3102+そうすれば、source-highlightは色をただ単に無視します。
29113103
2912-色は、他のスタイル、たとえばボールドやイタリックなどが適用された後に適用される。
3104+色は、他のスタイル、例えば、ボールドやイタリックなどが適用された後に適用されます。
29133105
2914-なので、前のセクションの例を続けて、keywordに関して以下の出力スタイルを定義したとしよう。
3106+ですから、前のセクションの例を続けて、keywordに関して以下の出力スタイルを定義したとしましょう。
29153107
29163108 @example
29173109 keyword blue i, b;
29183110 @end example
29193111
29203112 @noindent
2921-そうすると、色の定義@code{<font color="$style">$text</font>}の内部で、@code{$text}変数が@code{class}というテキストに置き換わり、@code{$style}が@code{$0000FF}という値に置き換わる。
2922-それから、そうして得られる@code{<font color="#0000FF">class</font>}が@code{<b>$text</b>}の@code{$text}を置き換え、イタリックについてもいろいろ行われ、最終的に次のものが得られる。
3113+そうすると、色の定義@code{<font color="$style">$text</font>}の内部で、@code{$text}変数が@code{class}というテキストに置き換わります。
3114+@code{$style}は@code{$0000FF}という値に置き換わります。
3115+それから、そうして得られる@code{<font color="#0000FF">class</font>}は@code{<b>$text</b>}の@code{$text}を置き換え、イタリックについてもいろいろ行われ、最終的に次のものが得られます。
29233116
29243117 @code{<i><b><font color="#0000FF">class</font></b></i>}
29253118
2926-@node アンカーとリファレンス, ワンスタイル, 色, 出力言語の定義
3119+
3120+@node Anchors and References, One style, Colors, Output Language Definitions
29273121 @section アンカーとリファレンス
29283122 @cindex $linenum
29293123
2930-コマンドラインオプションの@code{--line-number-ref}(@ref{source-highlightの起動})を使うと、出力ファイルの中に、それぞれの行番号についてアンカーが生成される。
2931-アンカーのスタイルは、@code{anchor}の定義によって定義される。
2932-これが定義されていない場合には、@code{--line-number-ref}は効果を持たない。
2933-@code{$linenum}という変数が行番号に置き換えられ、@code{$text}変数が実際のテキストと置き換えられる。
3124+コマンドラインオプションの@code{--line-number-ref}(@pxref{Invoking source-highlight})を使うと、出力ファイルの中に、それぞれの行番号についてアンカーが生成されます。
3125+アンカーのスタイルは、@code{anchor}の定義によって定義されます。
3126+これが定義されていない場合には、@code{--line-number-ref}は効果を持ちません。
3127+@code{$linenum}という変数が行番号に置き換えられ、@code{$text}変数が実際のテキストと置き換えられます。
29343128
2935-たとえば、HTMLでは次のようになっている。
3129+例えば、HTMLでは次のようになっています。
29363130
29373131 @example
29383132 anchor "<a name=\"$linenum\">$text</a>"
@@ -2941,22 +3135,23 @@ anchor "<a name=\"$linenum\">$text</a>"
29413135 @cindex $infile
29423136 @cindex $infilename
29433137 @cindex $outfile
2944-バージョン2.2からは、source-highlightは複数のエレメント(たとえば、変数やクラス定義など)に対してリファレンスを生成できるようにもなった(@ref{リファレンスの生成})。
2945-この場合にも@code{anchor}の定義が使用される。
2946-それに加えて、@code{reference}の定義が必要だ。
2947-@code{anchor}と@code{reference}の定義では、@code{$linenum}変数の他に、@code{$infile}(元の入力ファイル名)と@code{$infilename}(パス無しの元の入力ファイル名)という変数も使える。
2948-また、@code{reference}の定義では、@code{$outfile}(そのアンカーが存在するファイルの名前)という変数も使える。
2949-これら二つの変数を使ってアンカーとリファレンスを定義する方法を決めることができる。
2950-たとえば、HTMLについては次のようになっている。
3138+バージョン2.2からは、source-highlightは、複数のエレメント(例えば、変数やクラス定義など)に対してリファレンスを生成できるようにもなりました(@pxref{Generating References})。
3139+この場合にも、@code{anchor}の定義が使用されます。
3140+それに加えて、@code{reference}の定義が必要です。
3141+@code{anchor}と@code{reference}の定義では、@code{$linenum}変数の他に、@code{$infile}(元の入力ファイル名)と@code{$infilename}(パス無しの元の入力ファイル名)という変数も使えます。
3142+また、@code{reference}の定義では、@code{$outfile}(そのアンカーが存在するファイルの名前)という変数も使えます。
3143+これら二つの変数を使って、アンカーとリファレンスを定義する方法を決めることができます。
3144+例えば、HTMLについては次のようになっています。
29513145
29523146 @example
29533147 reference "<a href=\"$outfile#$linenum\">$text</a>"
29543148 @end example
29553149
29563150 @noindent
2957-この場合、別の出力ファイル(あるいは同じ出力ファイルかもしれない)へのリンクを生成するので@code{$outfile}を使っていることに注意してほしい。
3151+この場合、別の出力ファイル(あるいは、同じ出力ファイルかもしれない)へのリンクを生成しますので、@code{$outfile}を使っていることに注意してください。
29583152
2959-一方、@LaTeX{}の場合では、「クリッカブル」なリファレンスを生成しないので、元の入力ファイル名を参照している(@code{anchor}と@code{reference}の定義でともに、@code{$infilename}と@code{$linenum}の両方を使用している)。
3153+一方、@LaTeX{}の場合では「クリッカブル」なリファレンスを生成しません。
3154+そのため、元の入力ファイル名を参照しています(@code{anchor}と@code{reference}の定義で、ともに、@code{$infilename}と@code{$linenum}の両方を使用しています)。
29603155
29613156 @example
29623157 anchor "\label@{$infilename:$linenum@}$text"
@@ -2965,13 +3160,14 @@ reference "@{\hfill $text $\rightarrow$ $infile:$linenum, \
29653160 @end example
29663161
29673162 @noindent
2968-とくに、@code{\label}を生成するのに@code{$infile}ではなく、@code{$infilename}を使っている。
2969-これは、パスのシンボルが@LaTeX{}の「邪魔をする」からだ(その一方で、リファレンスのテキスト情報ではファイルの完全なパスを使用している)。
3163+特に、@code{\label}を生成するのに、@code{$infile}ではなく、@code{$infilename}を使っています。
3164+これは、パスのシンボルが、@LaTeX{}の「邪魔をする」からです(その一方で、リファレンスのテキスト情報ではファイルの完全なパスを使用しています)。
29703165
2971-これによって正しく割り当てられたリファレンスを生成する。
2972-@LaTeX{}でリファレンスを生成するときには、インラインリファレンスの生成は無意味なので(少なくとも格好いいものを生成する方法を私は知らない :-))、@code{--gen-references=postline}ではなく、@code{--gen-references=postline}か、あるいは@code{--gen-references=postdoc}を使うことを想定していることに留意してほしい。
3166+これによって、正しく割り当てられたリファレンスを生成します。
3167+@LaTeX{}でリファレンスを生成する時には、インラインリファレンスの生成は無意味ですので@footnote{少なくとも、格好いいものを生成する方法を私は知りません。 :-)}、@code{--gen-references=postline}ではなく、@code{--gen-references=postline}か、あるいは、@code{--gen-references=postdoc}を使うことを想定していることに留意してください。
3168+@xref{Generating References}.
29733169
2974-さらに、Texinfoについては次のようになる。
3170+さらに、Texinfoについては次のようになります。
29753171
29763172 @example
29773173 anchor "@@anchor@{$infilename:$linenum@}$text"
@@ -2981,20 +3177,20 @@ reference "@@flushright
29813177 @end example
29823178
29833179 @noindent
2984-@code{anchor}の定義中で、@code{$infilename}と、そして@code{$linenum}も使うことで、なんとかしてアンカーが重複しないようにしている。
2985-これは@LaTeX{}やTexinfoに対して行なわれることで、HTMLに対しては行なわれない。
2986-というのは、このマニュアルで行なわれているように、生成される@file{.tex}と@file{.texinfo}ファイルがマスターファイルに直接インクルードされることが想定されているからだ(一方HTMLでは、各ソース毎に別々のHTMLファイルが生成され、分割されたまなになることが想定されている)。
2987-これがそぐわない場合には、@code{anchor}と@code{reference}の定義を、ピッタリ合うように変更して構わない。
2988-Texinfoにおけるリファレンスの付いた出力例は@ref{例}に示されている。
3180+@code{anchor}の定義中で、@code{$infilename}と、そして、@code{$linenum}も使うことで、なんとかしてアンカーが重複しないようにしています。
3181+これは、@LaTeX{}やTexinfoに対して行なわれることで、HTMLに対しては行なわれません。
3182+というのは、このマニュアルで行なわれているように、生成される@file{.tex}と@file{.texinfo}ファイルがマスターファイルに直接インクルードされることが想定されているからです(一方、HTMLでは、別々のHTMLファイルが各ソースごとに生成され、分割されたまなになることが想定されています)。
3183+これがそぐわない場合には、@code{anchor}と@code{reference}の定義を、ピッタリ合うように変更して構いません。
3184+Texinfoにおけるリファレンスの付いた出力例は別の節に示します(@pxref{Examples})。
29893185
29903186 @cindex inline_reference
29913187 @cindex postline_reference
29923188 @cindex postdoc_reference
2993-実は、@code{--gen-references}コマンドラインオプションに渡せる三つの引数に対応する@code{reference}に関する定義をさらに三つ使うことができる。
2994-@code{inline_reference}と@code{postline_reference}、そして@code{postdoc_reference}である。
2995-この一つが定義されていなければ、@code{reference}の定義と同じものが使われる。
2996-違う定義を記述できるというのは、たとえば、HTMLの場合に便利である。
2997-postlineリファレンスやpostdocリファレンスも使われるとき、インラインリファレンスについて同じスタイルであるのはかなり不恰好なことである。
3189+実は、@code{--gen-references}コマンドラインオプション(@pxref{Generating References})に渡すことのできる三つの引数に対応する@code{reference}に関する定義をさらに三つ使うことができます。
3190+@code{inline_reference}、@code{postline_reference}、@code{postdoc_reference}の三つです。
3191+定義されていないものがあれば、@code{reference}の定義と同じものが使われます。
3192+違う定義を記述できるのは、例えば、HTMLの場合に便利です。
3193+postlineリファレンスやpostdocリファレンスも使われる場合、インラインリファレンスについて同じスタイルだと、かなり不恰好です。
29983194
29993195 @smallexample
30003196 postline_reference "<a href=\"$outfile#$linenum\">$text -> $infile:$linenum</a>"
@@ -3002,50 +3198,51 @@ postdoc_reference "<a href=\"$outfile#$linenum\">$text -> $infile:$linenum</a>"
30023198 reference "<a href=\"$outfile#$linenum\">$text</a>"
30033199 @end smallexample
30043200
3005-@node ワンスタイル, スタイルテンプレート, アンカーとリファレンス, 出力言語の定義
3201+
3202+@node One style, Style template, Anchors and References, Output Language Definitions
30063203 @section ワンスタイル
30073204 @cindex one style
30083205
3009-あなたが定義している出力フォーマットがボールドやイタリック、そして色などに特定のスタイルを持たない場合には、単に@code{onestyle}という定義を使うことができる。
3010-この定義では、@code{$style}と@code{$text}を両方使うことができる。
3011-また、どのようなスタイルに対しても使える(実際、ボールド、イタリック、色のなどのような他のあらゆる定義は無視される)。
3012-実は、この場合、それぞれのソースエレメントのスタイルは、その独自のシンタックスを使ってファイル内に定義される。
3013-すなわち、source-highlightが定義するシンタックスではない。
3014-(たとえば、CSSスタイルシートを使うHTMLがその例である。)
3015-さらに、出力フォーマットスタイルが使われないので、フォーマッティングの際、@code{$style}変数は、ハイライトするエレメントの名前に置き換えられる(たとえば、@code{keyword}、@code{comment}など)。
3206+定義している出力フォーマットがボールド、イタリック、そして、色などについて特定のスタイルを持たない場合には、単に@code{onestyle}という定義を使うことができます。
3207+この定義では、@code{$style}と@code{$text}を両方使うことができます。
3208+また、どのようなスタイルに対しても使えます(実際、ボールド、イタリック、色のなどのような他のあらゆる定義は無視されます)。
3209+実は、この場合、それぞれのソースエレメントのスタイルは、独自のシンタックスを使ってファイル内に定義されます。
3210+すなわち、source-highlightが定義するシンタックスではありません(例えば、CSSスタイルシートを使うHTMLがその例です)。
3211+さらに、出力フォーマットスタイルが使われませんので、フォーマッティングの際、@code{$style}変数は、ハイライトするエレメントの名前に置き換えられます(例えば、@code{keyword}、@code{comment}など)。
30163212
3017-たとえば、HTML CSSでは単純に次のようになる。
3213+例えば、HTML CSSでは単純に次のようになります。
30183214
30193215 @example
30203216 onestyle "<span class=\"$style\">$text</span>"
30213217 @end example
30223218
30233219 @noindent
3024-事実、HTML CSSは、別のファイル(要するに@file{.css}ファイル)で用意されるスタイル定義に依存する。
3025-なので、@code{keyword}の、たとえば@code{abstract}をフォーマットする場合には、次のようになる。
3220+実際、HTML CSSは、別のファイル(要するに@file{.css}ファイル)で用意されるスタイル定義に依存します。
3221+ですから、@code{keyword}、例えば、@code{abstract}をフォーマットする場合には、次のようになります。
30263222
30273223 @example
30283224 <span class="keyword">abstract</span>
30293225 @end example
30303226
30313227 @noindent
3032-もちろん、@code{keyword}に対するスタイルが@file{.css}ファイルで定義されていなくはならない。
3228+もちろん、@code{keyword}に対するスタイルが@file{.css}ファイルで定義されていなくはなりません。
3229+
30333230
3034-@node スタイルテンプレート, 行プリフィックス, ワンスタイル, 出力言語の定義
3231+@node Style template, Line prefix, One style, Output Language Definitions
30353232 @section スタイルテンプレート
30363233 @cindex style template
30373234 @cindex style separator
30383235
3039-出力フォーマットによっては、独自のテンプレートに基づくものもある。
3040-そのテンプレートで他のスタイルが組み立てられる。
3041-組み立ての際、スタイルは指定のセパレータでセパレートされる。
3236+出力フォーマットによっては、独自のテンプレートに基づくものもあります。
3237+そのテンプレートで他のスタイルが組み立てられます。
3238+組み立ての際、スタイルは、指定のセパレータでセパレートされます。
30423239
30433240 @example
30443241 styletemplate "..."
30453242 styleseparator "..."
30463243 @end example
30473244
3048-たとえば、これは、ANSIカラーエスケープシーケンスの出力フォーマット(@file{esc.outlang})で使われる。
3245+例えば、以下は、ANSIカラーエスケープシーケンスの出力フォーマット(@file{esc.outlang})で使われるものです。
30493246
30503247 @example
30513248 styletemplate "\x1b[$stylem$text\x1b[m"
@@ -3058,31 +3255,36 @@ color "$style"
30583255 @end example
30593256
30603257 @noindent
3061-複数のスタイルをスタイルテンプレートに混ぜて入れてもよいので、@code{bold}、@code{underline}、…は@code{$style}変数を明示的に使用している。
3258+複数のスタイルをスタイルテンプレートに混ぜて入れてもよいので、@code{bold}、@code{underline}、@dots{}は@code{$style}変数を明示的に使用しています。
30623259
3063-@node 行プリフィックス, 文字列変換, スタイルテンプレート, 出力言語の定義
3260+
3261+@node Line prefix, String translation, Style template, Output Language Definitions
30643262 @section 行プリフィックス
30653263
3066-この機能を使えば、入力行に対応して生成される各行のプリフィックスとして文字列を生成することができる(つまり、このプリフィックスは生成された他の出力エレメント、たとえば、ヘッダやフッタなどの行に対して生成されるものではない)。
3264+この機能を使えば、入力行に対応して生成される各行のプリフィックスとして文字列を生成することができます(つまり、このプリフィックスは生成された他の出力エレメント、例えば、ヘッダやフッタなどの行に対して生成されるものではありません)。
30673265
3068-この機能は@LaTeX{}出力で使っている(@ref{LaTeXの出力})。
3266+この機能は@LaTeX{}出力で使っています。
3267+@xref{LaTeX output}.
30693268
30703269 @example
30713270 lineprefix "\mbox@{@}"
30723271 @end example
30733272
30743273 @noindent
3075-このようにすれば、@LaTeX{}出力の行はそれぞれ、@code{\mbox@{@}}がプリフィックスとして付けられる@footnote{これは、tabular環境を使わずに行頭にスペースを挿入するトリックの一つだ。@code{\mbox@{@}}が前に無いと、スペースが無視されてしまう。これを実現するのに私が知っている唯一の方法だが、他に方法があるならお前ら教えてください}。
3274+このようにすれば、@LaTeX{}出力の行は、@code{\mbox@{@}}がプリフィックスとしてそれぞれ付けられます@footnote{これは、tabular環境を使わずに行頭にスペースを挿入するトリックの一つです。
3275+@code{\mbox@{@}}が前に無いと、スペースが無視されてしまいます。
3276+これを実現するのに私が知っている唯一の方法ですが、他に方法があるならお前ら教えてください}。
3277+
3278+もう一つ興味深い例として、@code{lineprefix}を使うjavadocの出力があります。
3279+@xref{Generating HTML output}.
30763280
3077-@code{lineprefix}を使う別の興味深い例がjavadocの出力である。
3078-@ref{HTML出力の生成}を見てほしい。
30793281
3080-@node 文字列変換, ドキュメントテンプレート, 行プリフィックス, 出力言語の定義
3282+@node String translation, Document template, Line prefix, Output Language Definitions
30813283 @section 文字列変換
30823284
3083-ソースファイルにある文字の並びが出力フォーマットでは特別な意味を持つことがある。
3084-なので、そういったものは前処理が必要となる(たとえば、エスケープする)。
3085-その変換テーブルを次のように記述することができる。
3285+ソースファイルにある文字の並びが出力フォーマットでは特別な意味を持つことがあります。
3286+ですから、そういったものは前処理が必要となります(例えば、エスケープします)。
3287+変換テーブルは、次のように記述できます。
30863288
30873289 @example
30883290 translations
@@ -3093,10 +3295,12 @@ end
30933295 @end example
30943296
30953297 @noindent
3096-@code{"original sequence"}と@code{'regex'}の違いは、前者が、@code{\}(挿入する必要がある場合にはエスケープされていなければならない)や、@code{\n}(改行)、@code{\t}(タブ文字)のような特殊な文字は別にして、字面そのままにマッチする文字の並び記述するものである。
3097-それに対し、後者を使えば、正規表現を記述することができる(これは、言語定義における@code{"}と@code{'}の違いと基本的に同じである)。
3298+@code{"original sequence"}と@code{'regex'}の違いは、前者が、@code{\}(挿入する必要がある場合にはエスケープされていなければならない)や、@code{\n}(改行)、@code{\t}(タブ文字)のような特殊な文字は別にして、字面そのままにマッチする文字の並び記述するものです。
3299+それに対し、後者を使えば、正規表現を記述することができます。
3300+これは、言語定義における@code{"}と@code{'}の違いと基本的に同じです。
3301+@xref{Simple definitions}.
30983302
3099-たとえば、HTMLについて言うと、次のような変換テーブルがある。
3303+例えば、HTMLについて言うと、次のような変換テーブルがあります。
31003304
31013305 @example
31023306 translations
@@ -3106,9 +3310,9 @@ translations
31063310 end
31073311 @end example
31083312
3109-@LaTeX{}の場合だと変換テーブルは少しだけ大きい。
3110-ここでは少しだけ示す。
3111-これは、特殊文字をエスケープする方法(たとえば@code{\}など)、改行やタブ文字を変換する方法を示している。
3313+@LaTeX{}の場合だと変換テーブルは少しだけ大きくなります。
3314+ここでは少しだけ示します。
3315+これは、特殊文字をエスケープする方法(例えば、@code{\}など)、改行やタブ文字を変換する方法を示しています。
31123316
31133317 @example
31143318 translations
@@ -3123,12 +3327,15 @@ end
31233327 @end example
31243328
31253329 @noindent
3126-注意してほしいのだが、改行(訳注:「new character」となっているが「new line character」の間違いかな?)は、@LaTeX{}では@code{\\}に変換されなければならないので、二つの@code{\}をエスケープしなければならない(すなわち、@code{\\\\})。
3127-そしてその時、出力ファイルに改行@code{\n}を実際に挿入したい。
3330+注意してほしいのですが、改行@footnote{訳注:「new character」となっていますが,「new line character」の間違いか。}は、@LaTeX{}では@code{\\}に変換する必要がありますので、二つの@code{\}をエスケープしなければなりません(すなわち、@code{\\\\})。
3331+そして、その時、出力ファイルに改行@code{\n}を実際に挿入したいのです。
3332+
3333+For HTML with not fixed font by default, @file{html_notfixed.outlang},
3334+we need two translate two space sequence, and we also need to translate a space starting a new line in the source; thus we have:
31283335
3129-デフォルトでは等幅フォントではないHTML、@file{html_notfixed.outlang}については、二つの空白の並び(つまり、隣合った空白。HTMLでは連続する空白が一つの空白だけとしてレンダリングされる@footnote{@code{<tt>...</tt>}の内部に無い限り}のに反して、それらの空白をそのままにしておきたい)を変換する必要がある。
3130-そして、ソース中における、改行に続く空白も変換する必要がある(なので、@code{'}で括った正規表現@code{^ }を使っている)。
3131-したがって、次のようになる。
3336+デフォルトでは等幅フォントではないHTMLに対する@file{html_notfixed.outlang}(@pxref{HTML and XHTML output})ですが、二つの空白の並び(つまり、隣り合った空白のことですが、それらの空白をそのままにしておきたい一方で、HTMLでは、連続する空白は一つの空白としてレンダリングされてしまいます@footnote{@code{<tt>...</tt>}の中で無ければです。}ので、この空白)を変換する必要があります。
3337+そして、ソース中における、改行に続く空白も変換する必要があります(ですから、@code{'}で括った正規表現@code{^ }を使います)。
3338+従って、次のようになります。
31323339
31333340 @example
31343341 translations
@@ -3139,10 +3346,11 @@ translations
31393346 end
31403347 @end example
31413348
3142-@node ドキュメントテンプレート, HTML出力の生成, 文字列変換, 出力言語の定義
3349+
3350+@node Document template, Generating HTML output, String translation, Output Language Definitions
31433351 @section ドキュメントテンプレート
31443352
3145-出力ファイルの始めと終わりを次のように定義することができる。
3353+出力ファイルの始めと終わりは次のように定義できます。
31463354
31473355 @cindex doctemplate
31483356 @example
@@ -3160,10 +3368,12 @@ nodoctemplate
31603368 end
31613369 @end example
31623370
3163-最初のものは、@code{--doc}というコマンドラインオプションが指定される時に使われる。
3164-一方、2番目のものは、その他のケースで使われる@footnote{バージョン2.9までは@code{doctemplate}だけだった。そして@code{--doc}については、@code{.outlang}ファイルが別にあった。私は現在のソリューションのほうが良くて、ファイルの数も減らせると考えている}。
3371+最初のものは、コマンドラインオプション@code{--doc}が指定される時に使われます。
3372+他方、2番目のものは、その他のケースで使われます@footnote{バージョン2.9までは@code{doctemplate}だけでした。
3373+そして、@code{--doc}については、@code{.outlang}ファイルが別にありました。
3374+私は、現在のソリューションのほうが良くて、ファイルの数も減らせると考えています。}。
31653375
3166-例として、HTMLでは次のようになる。
3376+例として、HTMLでは次のようになります。
31673377
31683378 @example
31693379 nodoctemplate
@@ -3175,27 +3385,34 @@ end
31753385 @end example
31763386
31773387 @noindent
3178-終わりに対する部分には明示的な改行があることに注意してほしい。
3388+終わりの部分に明示的な改行があることに注意してください。
31793389
3180-@code{doctemplate}と@code{nodoctemplate}の定義では、次の変数が使用でき、出力が生成される際に置き換えられる。
3390+@code{doctemplate}と@code{nodoctemplate}の定義では、次の変数が使用できます。
3391+出力が生成される際に置き換えられます。
31813392
31823393 @table @code
31833394 @item $title
3184-出力ファイルのタイトルの値(たとえば、@code{--title}というコマンドラインオプションで渡されたもの)
3395+出力ファイルのタイトルの値(例えば、@code{--title}というコマンドラインオプションで渡されたもの)です。
3396+
31853397 @item $header
3186-コマンドラインオプション@code{--header}で指定されたファイルの内容
3398+コマンドラインオプション@code{--header}で指定されたファイルの内容です。
3399+
31873400 @item $footer
3188-コマンドラインオプション@code{--footer}で指定されたファイルの内容
3401+コマンドラインオプション@code{--footer}で指定されたファイルの内容です。
3402+
31893403 @item $css
3190-コマンドラインオプション@code{--css}で渡された値
3404+コマンドラインオプション@code{--css}で渡された値です。
3405+
31913406 @item $additional
3192-その他の追加的な情報。source-highlightはこれをその名前とそのバージョンで置き換える。
3407+その他の追加的な情報です。
3408+source-highlightは、名前とバージョンでこれを置き換えます。
3409+
31933410 @item $docbgcolor@footnote{バージョン2.6から}
3194-出力ドキュメントの背景色。
3195-source-highlightはこれを、@file{.style}ファイルの@code{bgcolor}で記述されている値(@ref{出力フォーマットスタイル}を見よ)か、あるいは、@code{--style-css-file}で渡されるCSSファイルの@code{body}セレクタで記述されている値(@ref{CSSを使用した出力フォーマットスタイル})に置き換える。
3411+出力ドキュメントの背景色です。
3412+source-highlightは、これを、@file{.style}ファイルの@code{bgcolor}で記述された値(@pxref{Output format style})か、あるいは、@code{--style-css-file}で渡されるCSSファイルの@code{body}セレクタで記述された値(@pxref{Output format style using CSS})に置き換えます。
31963413 @end table
31973414
3198-例えば、cssを使ったHTMLドキュメント(@file{htmlcss.outlang}ファイル)の場合は次のようになる。
3415+例えば、cssを使ったHTMLドキュメント(@file{htmlcss.outlang}ファイル)の場合は、次のようになります。
31993416
32003417 @example
32013418 doctemplate
@@ -3218,7 +3435,8 @@ $footer</body>
32183435 end
32193436 @end example
32203437
3221-ヘッダとフッタの付いたHTMLドキュメント(@file{html.outlnag})の場合は次のようになる(@code{$docbgcolor}の使用に注意)。
3438+ヘッダとフッタの付いたHTMLドキュメント(@file{html.outlnag})の場合は次のようになります。
3439+@code{$docbgcolor}の使用に注意してください。
32223440
32233441 @example
32243442 doctemplate
@@ -3238,7 +3456,7 @@ $footer</body>
32383456 end
32393457 @end example
32403458
3241-そしてHTMLテーブルの出力に対するものである(@file{htmltable.outlang}ファイル)。
3459+そして、HTMLテーブルの出力に対するものです(@file{htmltable.outlang}ファイル)。
32423460
32433461 @example
32443462 doctemplate
@@ -3254,22 +3472,23 @@ doctemplate
32543472 end
32553473 @end example
32563474
3257-@node HTML出力の生成, , ドキュメントテンプレート, 出力言語の定義
3475+
3476+@node Generating HTML output, , Document template, Output Language Definitions
32583477 @section HTML出力の生成
32593478
3260-完全な例として、@file{html_common.outlang}というファイルを示す。
3261-これには、様々なHTML出力フォーマット(@file{html.outlang}、@file{htmltable.outlang}など)についての共通の定義が含まれている。
3479+完全な例として、@file{html_common.outlang}というファイルを示します。
3480+これには、様々なHTML出力フォーマット(@file{html.outlang}、@file{htmltable.outlang}など)に対する共通定義が含まれています。
32623481
32633482 @include html_common.outlang.texinfo
32643483
3265-さらに、このファイルは、javadocの出力を生成するのにも使われる。
3484+さらに、このファイルは、javadocの出力を生成するのにも使われます。
32663485
32673486 @include javadoc.outlang.texinfo
32683487
3269-javadocの出力フォーマットは、コード片を、別のJavaファイルのjavadocコメントの内部に含めなければならないときに役立つ@footnote{テストしていないのだけれども、Doxygenのコメントでもうまく働くと思う}。
3270-生成されるHTMLドキュメンテーションにおいてナイスにフォーマットされることとは別に、コード片に含まれる特殊文字(すなわち、@code{&}と@code{<}、@code{>})をエスケープする作業からプログラマを解放してくれる。
3271-また、@code{*/}という文字並びも、(javadocの)コメントの終了として解釈される。@code{*/}という文字並びも回避することに注意してほしい。
3272-たとえば、次のコードを書いたとする。
3488+javadocの出力フォーマットは、コード片を、別のJavaファイルのjavadocコメントの内部に含めなければならない時に有用です@footnote{テストしてませんが、Doxygenのコメントでもうまく働くと思います。}。
3489+生成されるHTMLドキュメントにおいてナイスにフォーマットされることとは別に、コード片に含まれる特殊文字(すなわち、@code{&}、@code{<}、@code{>})をエスケープする作業からプログラマを解放します。
3490+また、@code{*/}という文字並びも、(javadocの)コメントの終了として解釈されないように、回避しますので注意してください。
3491+例えば、次のコードを書いたとします。
32733492
32743493 @example
32753494 /**
@@ -3282,125 +3501,138 @@ javadocの出力フォーマットは、コード片を、別のJavaファイル
32823501 @end example
32833502
32843503 @noindent
3285-結果のJavaコードはシンタックスエラーを含んでいる。
3286-source-highlightを使って、javadocコメントに挿入するコードをフォーマットするならば、これらの問題は回避されるだろう。
3504+結果のJavaコードはシンタックスエラーがあります。
3505+source-highlightを使って、javadocコメントに挿入するコードをフォーマットするならば、これらの問題は回避されるでしょう。
3506+
3507+source-highlightによってフォーマットされたコード片を含む、javadocが生成したHTMLページの例は、ドキュメントディレクトリの@file{SimpleClass-doc.html}というファイルで見つけられます。
32873508
3288-source-highlightによってフォーマットされたコード片を含む、javadocが生成したHTMLページの例はドキュメンテーションディレクトリの@file{SimpleClass-doc.html}というファイルで見つけられる。
32893509
3290-@node リファレンスの生成, 例, 出力言語の定義, Top
3510+@node Generating References, Examples, Output Language Definitions, Top
32913511 @chapter リファレンスの生成
32923512 @cindex reference
32933513 @cindex anchor
32943514 @cindex ctags
32953515
3296-バージョン2.2から、source-highlightはフィールドや変数などに対するリファレンスも生成する。
3297-これを行なうために、@emph{Exuberant Ctags}というプログラムに依存している。
3298-このプログラムはDarren Hiebertによるもので、@url{http://ctags.sourceforge.net}から入手可能だ。
3299-ゆえに、source-highlightでこの機能を使う場合には、そのプログラムをインストールしなければならない。
3516+バージョン2.2から、source-highlightは、フィールドや変数などに対するリファレンスも生成します。
3517+これを行なうために、@emph{Exuberant Ctags}というプログラムに依存しています。
3518+このプログラムはDarren Hiebertによるもので、@url{http://ctags.sourceforge.net}から入手可能です。
3519+ゆえに、source-highlightでこの機能を使う場合には、このプログラムをインストールしなければなりません。
33003520
3301-@code{ctags}プログラムは、ファイル中に見つかる言語の様々なオブジェクトについて、インデックスファイル(あるいは「タグ」ファイル)を生成する。
3302-こうすることで、テキストエディタやその他のユーティリティ(ここでのsource-highlightのようなもの)によって、それらのアイテムの位置を素早く簡単に特定できるようになる。
3303-「タグ」は、インデックスエントリが利用可能な言語のオブジェクト(あるいは、そのオブジェクトに対して生成されたインデックスエントリ)を表わすものである@footnote{この説明はctagsのmanページから持って来たものだ}。
3521+@code{ctags}プログラムは、ファイル中に見つかる言語の様々なオブジェクトについてインデックスファイル(あるいは、「タグ」ファイル)を生成します。
3522+こうすることで、テキストエディタやその他のユーティリティ(ここでのsource-highlightのようなもの)によって、それらのアイテムの位置を素早く簡単に特定できるようになります。
3523+「タグ」は、インデックスエントリが利用可能な言語のオブジェクト(あるいは、そのオブジェクトに対して生成されたインデックスエントリ)を表わすものです@footnote{この説明はctagsのmanページから持って来たものです}。
33043524
3305-これは、@code{ctags}が特定のソース言語を処理できる場合にだけ、source-highlightがその言語のリファレンスを生成できることを意味している。
3306-ファイルの拡張子とサポートされている言語の関連を知るには、@code{ctags}のコマンドラインオプション@code{--list-maps}と@code{--list-languages}を参照する。
3525+これは、特定のソース言語を@code{ctags}が処理できる場合にだけ、source-highlightが、その言語のリファレンスを生成できることを意味しています。
3526+ファイルの拡張子とサポート言語の関連を知るには、@code{ctags}のコマンドラインオプション@code{--list-maps}と@code{--list-languages}を参照します。
33073527
3308-リファレンスの生成は、コマンドラインオプションの@code{--gen-references}を使って有効にする(@ref{source-highlightの起動})。
3309-このオプションは、リファレンスの生成方法を決める引数を一つ取る。
3528+リファレンスの生成は、コマンドラインオプションの@code{--gen-references}を使って有効にします(@pxref{Invoking source-highlight})。
3529+このオプションは、リファレンスの生成方法を決める以下のような引数を一つ取ります。
33103530
33113531 @table @code
33123532 @item inline
3313-リファレンスポインタをそのエレメントとちょうど同じ場所に生成する。
3314-これは、HTMLのようにもともとリンクをサポートしているような出力フォーマットで役に立つ。
3315-一方、@LaTeX{}のようなインラインリンクをサポートしない出力フォーマットでは役に立たない。
3533+リファレンスポインタを、そのエレメントとちょうど同じ場所に生成します。
3534+これは、HTMLのようにもともとリンクをサポートしているような出力フォーマットで役に立ちます。
3535+一方、@LaTeX{}のようなインラインリンクをサポートしない出力フォーマットでは役に立ちません。
3536+
33163537 @item postline
3317-入力ソースのある行が、リファレンスのあるエレメントを含む場合、リファレンスのリストがその行の直後に生成される(@ref{例}を参照してほしい)。
3538+入力ソースのある行が、リファレンスのあるエレメントを含む場合、リファレンスのリストがその行の直後に生成されます。
3539+@xref{Examples}.
3540+
33183541 @item postdoc
3319-入力ファイル全体が生成された後、リファレンスが全て生成される。
3542+入力ファイル全体が生成された後、リファレンスが全て生成されます。
33203543 @end table
33213544
3322-例外がある。
3323-エレメントが複数のリファレンスを持つとき(変数が複数のソースで定義されたり、メソッドがオーバーロードされたり)、@code{inline}が指定されていれば、その発生についてリファレンスの生成が@code{postline}に切り替わる。
3545+例外があります。
3546+(変数が複数のソースで定義されたり、メソッドがオーバーロードされたりするため)エレメントが複数のリファレンスを持つ場合、@code{inline}が指定されていれば、その箇所について、リファレンスの生成が@code{postline}に切り替わります。
33243547
3325-@code{--gen-references}が指定されている場合、source-highlightはまず@code{ctags}を実行する。
3326-ユーザ(訳注:useになってるけどuserと解釈)は、この呼び出しを@code{--ctags}というコマンドラインオプションでカスタマイズすることができる(@ref{source-highlightの起動})。
3327-とくに、source-highlightによって@code{ctags}を実行したくない場合(たとえば、タグファイルが既に生成されているためだったり)、@code{--ctags}には空文字列@code{""}を渡さなければならない。
3328-こういう場合や、あるいは、@code{ctags}のコマンドラインで指定することによって別の出力タグファイルが生成されるようなときは、@code{--ctags-file}コマンドラインオプションを使って正確なタグファイルを指定しなければならない。
3548+@code{--gen-references}が指定されている場合、source-highlightは、まず@code{ctags}を実行します。
3549+ユーザ@footnote{訳注:useになってますが、userと解釈しました。}は、この呼び出しを@code{--ctags}というコマンドラインオプションでカスタマイズできます(@pxref{Invoking source-highlight})。
3550+特に、(例えば、タグファイルが既に生成されているため、)source-highlightによって@code{ctags}を実行したくない場合、@code{--ctags}には空文字列@code{""}を渡さなければなりません。
3551+こういう場合や、あるいは、@code{ctags}のコマンドラインで指定することによって別の出力タグファイルが生成されるような時は、@code{--ctags-file}コマンドラインオプションを使って正確なタグファイルを指定しなければなりません。
33293552
3330-一度タグファイルが生成されると、source-highlightは、@code{ctags}配布物に用意されていて、source-highlightのソースに含まれている@file{readtags}ライブラリに頼ることになる。
3553+タグファイルが一度生成されると、source-highlightは、@code{ctags}配布物に用意されていて、また、source-highlightのソースに含まれる@file{readtags}ライブラリを当てにします。
33313554
3332-プログラムエレメントが、@code{noref}というオプションを持つスタイルに応じてフォーマットされる場合(@ref{出力フォーマットスタイル}を参照)、このエレメントはタグとは見做されず、リファレンスは生成されない。
3333-たとえば、@code{comment}エレメント、すなわち、@code{comment}スタイルで生成される各文字列については、@code{noref}オプションで宣言されるので、タグとは見做されない(@ref{例}を参照)。
3555+プログラムエレメントが、@code{noref}というオプションを持つスタイルに応じてフォーマットされる場合(@pxref{Output format style})、このエレメントはタグとは見做されず、リファレンスは生成されません。
3556+例えば、@code{comment}エレメント、すなわち、@code{comment}スタイルで生成される各文字列については、@code{noref}オプションで宣言されますので、タグとは見做されません。
3557+@xref{Examples}.
33343558
3335-@node 例, バグ報告, リファレンスの生成, Top
3559+
3560+@node Examples, Problems, Generating References, Top
33363561 @chapter 例
33373562
3338-ここでは、@code{-f texinfo}というコマンドラインオプションを付けてsource-highlightでフォーマットされたソースの例をいくつか示す。
3339-Infoファイルではハイライティングは見えないが、印刷されたマニュアルやHTML出力でだけは見えるということを覚えていてほしい(えーと、少なくとも行番号はどこでも見える:-))。
3563+ここでは、@code{-f texinfo}というコマンドラインオプションを付けてsource-highlightでフォーマットされたソースの例をいくつか示します。
3564+Infoファイルではハイライティングは見えません。
3565+印刷マニュアルやHTML出力でだけ見えるということを覚えていてください(えーと、少なくとも行番号はどこでも見えます:-))。
33403566
33413567 @menu
3342-* 簡単な例::
3343-* リファレンス::
3344-* 行による範囲指定::
3345-* 行による範囲指定(コンテキスト付き)::
3346-* 正規表現による範囲指定::
3568+* Simple example::
3569+* References::
3570+* Line ranges::
3571+* Line ranges (with context)::
3572+* Regex ranges::
33473573 @end menu
33483574
3349-@node 簡単な例, リファレンス, 例, 例
3575+
3576+@node Simple example, References, Examples, Examples
33503577 @section 簡単な例
33513578
3352-最初の例は、次のコマンドを使って生成されたものだ。
3579+最初の例は、次のコマンドを使って生成されたものです。
33533580
33543581 @example
33553582 source-highlight -f texinfo -i test.java -o test.java.texinfo -n
33563583 @end example
33573584
3358-そして、これが結果。
3585+そして、これが結果です。
33593586
33603587 @include test.java.texinfo
33613588
3362-@node リファレンス, 行による範囲指定, 簡単な例, 例
3589+
3590+@node References, Line ranges, Simple example, Examples
33633591 @section リファレンス
33643592
3365-この例は、@code{--gen-references}機能の利用について示すものだ。
3366-具体的には、次のコマンドで以下のような出力が生成される。
3593+この例は、@code{--gen-references}機能の使い方を示すものです。
3594+具体的には、次のコマンドで以下のような出力が生成されます。
33673595
33683596 @example
33693597 source-highlight -f texinfo -i test.h -o test_ref.h.texinfo -n \
33703598 --gen-references=postline
33713599 @end example
33723600
3373-そしてこれが結果である(@code{mysum}という文字列を含むコメント行がどんな風にリファレンスを含まないのかに注意してほしい。それが@code{comment}エレメントであって、そしてこのエレメントが@file{texinfo.style}の中で@code{noref}オプションを持っているからである。
3374-@ref{出力フォーマットスタイル}を参照せよ。
3375-同じことが、最後のコメント行の@code{_TEXTGEN_H}というコメントにも当てはまる)。
3601+そして、以下が結果です。
3602+@code{mysum}という文字列を含むコメント行がどのようににリファレンスを含まないのかに注意してください。
3603+それが、@code{comment}エレメントであって、そして、このエレメントが@file{texinfo.style}の中で@code{noref}オプションを持っているからです。
3604+@xref{Output format style}.
3605+同じことが、最後のコメント行の@code{_TEXTGEN_H}というコメントにも当て嵌ります。
33763606
33773607 @include test_ref.h.texinfo
33783608
3379-@node 行による範囲指定, 行による範囲指定(コンテキスト付き), リファレンス, 例
3609+
3610+@node Line ranges, Line ranges (with context), References, Examples
33803611 @section 行による範囲指定
33813612
33823613 @cindex line ranges
3383-これは、@xref{簡単な例}にある入力ファイルについて、@code{--line-range}というコマンドラインオプションを使った例である。
3614+これは、別の節(@pxref{Simple example})にある入力ファイルについて、コマンドラインオプション@code{--line-range}を使った例です。
33843615
33853616 @example
33863617 source-highlight -f texinfo -i test.java -n \
33873618 --line-range="12-18","29-34"
33883619 @end example
33893620
3390-これによって以下の出力が生成される。
3621+これによって以下の出力が生成されます。
33913622
33923623 @include test_lineranges1.java.texinfo
33933624
3394-指定された行の範囲は、コメント環境まで及んでいるが、ハイライティングは配慮されている。
3395-コメントの開始は表示されていないが、コメントの残りの部分は正しくコメントとしてハイライトされている。
3625+指定された行の範囲はコメント環境まで及んでいますが、ハイライティングは配慮されています。
3626+コメントの開始は表示されていませんが、コメントの残りの部分は正しくコメントとしてハイライトされています。
3627+
33963628
3397-@node 行による範囲指定(コンテキスト付き), 正規表現による範囲指定, 行による範囲指定, 例
3629+@node Line ranges (with context), Regex ranges, Line ranges, Examples
33983630 @section 行による範囲指定(コンテキスト付き)
33993631
34003632 @cindex line ranges
34013633 @cindex range context
34023634 @cindex range separator
3403-これは、@code{--line-range}オプションと一緒に@code{--range-context}と@code{--range-separator}を使った例である。
3635+これは、@code{--line-range}オプションと一緒に@code{--range-context}と@code{--range-separator}を使った例です。
34043636
34053637 @example
34063638 source-highlight -f texinfo -i test.java -n \
@@ -3409,49 +3641,52 @@ source-highlight -f texinfo -i test.java -n \
34093641 --range-separator="@{... not in range ...@}"
34103642 @end example
34113643
3412-これによって以下の出力が得られる。
3644+これによって以下の出力が得られます。
34133645
34143646 @include test_lineranges2.java.texinfo
34153647
3416-指定範囲の前後に余分な2行が追加されていることに注意してほしい(@ref{行による範囲指定}にある出力と比較せよ)。
3417-また、コンテキストとして示されている行(のエレメント)はハイライトされていないことにも注意せよ。
3418-さらに、指定範囲と指定範囲の間に、@code{"@{... not in range ...@}"}という範囲を区切る行が出力されている(セパレータの文字列は自動的に実行されるので、たとえば、texinfo出力における@{ @}のような特殊な出力文字をエスケープする必要ない)。
3648+指定範囲の前後に余分な2行が追加されているので注意が必要です。
3649+別節にある出力と比較してください(@pxref{Line ranges})。
3650+また、コンテキストとして示されている行(のエレメント)はハイライトされていないことにも注意してください。
3651+さらに、指定範囲と指定範囲の間に、@code{"@{... not in range ...@}"}という範囲を区切る行が出力されています。
3652+セパレータの文字列は自動的に実行されますので、例えば、texinfo出力における@{ @}のような特殊な出力文字をエスケープする必要ありません。
3653+
34193654
3420-@node 正規表現による範囲指定, , 行による範囲指定(コンテキスト付き), 例
3655+@node Regex ranges, , Line ranges (with context), Examples
34213656 @section 正規表現による範囲指定
34223657
34233658 @cindex regex ranges
3424-範囲の指定は、正規表現を使って表記することもできる。
3425-これには、@code{--regex-range}というコマンドラインオプションを使う。
3426-この場合、指定範囲の開始は、指定された正規表現にマッチする文字列を(任意の位置で)含む行によって検出される。
3427-また、範囲の終了は、範囲を開始する正規表現と同じものにマッチする文字列を含む行によって検出される。
3428-この機能は、ソースコードにおいてアドホックに区切られた(たとえば、特定のコメントのパターンなどで)特定の部分だけを示すようにして、コードをドキュメントにしたい(たとえば、ちょうどこのマニュアルでやっているように)ときに非常に役に立つ。
3659+範囲の指定は、正規表現を使って表記できます。
3660+これには、コマンドラインオプション@code{--regex-range}を使います。
3661+この場合、指定範囲の開始は、指定された正規表現にマッチする文字列を(任意の位置で)含む行によって検出されます。
3662+また、範囲の終了は、範囲を開始する正規表現と同じものにマッチする文字列を含む行によって検出されます。
3663+この機能は、(例えば、特定のコメントのパターンなどで、)ソースコードにおいてアドホックに区切られた特定の部分だけを示すようにして、(例えば、ちょうどこのマニュアルでやっているように、)コードをドキュメントにしたい時に非常に役に立ちます。
34293664
3430-例として、次の指定をすることで、@xref{簡単な例}に示されているソースから、下の出力が生成された。
3665+例として、次の指定をすることで、別節(@pxref{Simple example})に示されているソースから、下の出力が生成されました。
34313666
34323667 @example
34333668 --regex-range="/// [[:alpha:]]+"
34343669 @end example
34353670
34363671 @noindent
3437-@code{/// class}という文字列を含む行は、範囲を指定するものだが、出力の中には示されない。
3672+@code{/// class}という文字列を含む行は範囲を指定するものですが、出力の中には示されません。
34383673
34393674 @include test_regexrange1.java.texinfo
34403675
3441-それに加えて、行番号は元のファイルの行と一致している。
3676+それに加えて、行番号は、元のファイルの行と一致しています。
34423677
3443-@code{/* main */}の間にインクルードされているものだけを出力したい場合には、次のように指定する(@code{*}という特殊な正規表現の文字はエスケープしなければならないので注意)。
3678+@code{/* main */}の間にインクルードされているものだけを出力したい場合には、次のように指定します(@code{*}という正規表現の特殊文字はエスケープしなければならないので注意してください)。
34443679
34453680 @example
34463681 --regex-range="/\* main \*/"
34473682 @end example
34483683
34493684 @noindent
3450-そして次のものが得られる。
3685+そして次のものが得られます。
34513686
34523687 @include test_regexrange_main.java.texinfo
34533688
3454-このソースファイルの中の、メソッド名を含むコメント行によって区切られたメソッドだけを出力したい場合には、次のように指定することができる。
3689+このソースファイル中、メソッド名を含むコメント行によって区切られたメソッドだけを出力したい場合には、次のように指定することができます。
34553690
34563691 @example
34573692 --regex-range="/\* [[:alpha:]]+ \*/"
@@ -3459,59 +3694,61 @@ source-highlight -f texinfo -i test.java -n \
34593694
34603695 @include test_regexrange_methods.java.texinfo
34613696
3462-この場合は、次のようにも指定できる。
3697+この場合は、次のようにも指定できます。
34633698
34643699 @example
34653700 --regex-range="/\* main \*/","/\* mymethod \*/"
34663701 @end example
34673702
34683703 @noindent
3469-@code{--regex-range}は複数の正規表現を受け付けるからだ。
3704+@code{--regex-range}は、複数の正規表現を受け付けるからです。
34703705
3471-重要:コマンドラインで指定された正規表現は、その指定された順序でテストされるので非常に重要だ。
3706+重要:コマンドラインで指定された正規表現は、その指定された順序でテストされますので非常に重要です。
34723707
3473-@node バグ報告, メーリングリスト, 例, Top
3708+
3709+@node Problems, Mailing Lists, Examples, Top
34743710 @chapter バグ報告
34753711 @cindex bugs
34763712 @cindex problems
34773713
3478-@command{source-highlight}にバグを見つけた場合には、次のアドレスにメールを送ってほしい。
3714+@command{source-highlight}にバグを見つけた場合には、次のアドレスにメールを送ってください。
34793715
34803716 @code{bug-source-highlight at gnu dot org}
34813717
3482-バージョンナンバーを含めてほしい。
3483-@w{@samp{source-highlight --version}}を実行すればバージョンナンバーが判る。
3484-またプログラムの出力と期待する出力もメッセージに含めてほしい。@refill
3485-Include the version
3718+バージョン番号を入れてください。
3719+@w{@samp{source-highlight --version}}を実行すればバージョン番号が分かります。
3720+また、プログラムの出力と期待する出力もメッセージに入れてください。@refill
3721+
3722+@command{source-highlight}についてのその他の質問、コメント、提案がある場合には、メールで作者に連絡してください(メールアドレスは@value{myhomepage}で分かります)。
3723+作者は、その問題を解決する時間が無いかもしれませんが、ユーザを支援するつもりはあります。
34863724
3487-その他の@command{source-highlight}についての質問、コメント、提案がある場合には、メールで作者に連絡してほしい(メールアドレスは@value{myhomepage}で見つけられる)。
3488-作者は、その問題を解決する時間が無いかもしれないけれども、あなたを助けようとはするつもりだ。
34893725
3490-@node メーリングリスト, Concept Index, バグ報告, Top
3726+@node Mailing Lists, Concept Index, Problems, Top
34913727 @chapter メーリングリスト
34923728 @cindex mailing list
34933729
3494-以下の複数のメーリングリストが利用可能だ。
3730+以下のように、複数のメーリングリストが利用できます。
34953731
34963732 @code{help-source-highlight at gnu dot org}
34973733
3498-これは、このプログラムについての一般的な議論や、助けを頼む場合のメーリングリストである(オープンなメーリングリスト)。
3734+これは、このプログラムについての一般的な議論をする場合や、支援を頼む場合のメーリングリストです(オープンなメーリングリスト)。
34993735 @uref{http://mail.gnu.org/mailman/listinfo/help-source-highlight}
35003736
35013737 @code{info-source-highlight at gnu dot org}
35023738
3503-これは、新規リリースや新機能に関する情報を受け取るためのメーリングリストだ(リードオンリーのメーリングリスト)。
3739+これは、新規リリースや新機能に関する情報を受け取るためのメーリングリストです(リードオンリーのメーリングリスト)。
35043740 @uref{http://mail.gnu.org/mailman/listinfo/info-source-highlight}.
35053741
3506-メーリングリストを購読したい場合には、示したURLへ行って、指示に従ってほしい。
3507-もしくは私にメールを送ってもらえば、登録して差し上げる。
3742+メーリングリストを購読したい場合には、示したURLへ行って、指示に従ってください。
3743+もしくは、メールを私に送ってもらえば、登録して差し上げます。
35083744
3509-新規リリースにおける新機能については私のブログでも説明するつもりだ。
3510-ブログのURLは次の通り。
3745+新規リリースにおける新機能については私のブログでも説明するつもりです。
3746+ブログのURLは次の通りです。
35113747
35123748 @uref{http://tronprog.blogspot.com/search/label/source-highlight}
35133749
3514-@node Concept Index, , メーリングリスト, Top
3750+
3751+@node Concept Index, , Mailing Lists, Top
35153752 @unnumbered Concept Index
35163753
35173754 @cindex tail recursion