source-highlight
| Revision | 8205167ce2561424b6c962b1438ac42c8c5eee04 (tree) |
|---|---|
| Time | 2011-04-05 20:23:23 |
| Author | akngw <akngw@user...> |
| Commiter | akngw |
いろいろ修正。
| @@ -63,14 +63,14 @@ Software Foundation raise funds for GNU development.'' | ||
| 63 | 63 | @contents |
| 64 | 64 | |
| 65 | 65 | @ifnottex |
| 66 | -@node Top, 導入, (dir), (dir) | |
| 66 | +@node Top, Introduction, (dir), (dir) | |
| 67 | 67 | @top GNU Source-highlight |
| 68 | 68 | |
| 69 | -GNU Source-highlightは、入力したソースファイルからシンタックスを強調したドキュメントを生成する。 | |
| 69 | +GNU Source-highlightは、入力したソースファイルから、シンタックスを強調したドキュメントを生成します。 | |
| 70 | 70 | |
| 71 | -このドキュメントは、Source-highlightマニュアルの@value{EDITION}エディションである。 | |
| 71 | +このドキュメントは、Source-highlightマニュアルの@value{EDITION}エディションです。 | |
| 72 | 72 | |
| 73 | -このファイルは、GNU Source-highlightバージョン@value{VERSION}について記述している。 | |
| 73 | +このファイルは、GNU Source-highlightバージョン@value{VERSION}について記述しています。 | |
| 74 | 74 | |
| 75 | 75 | @insertcopying |
| 76 | 76 | @end ifnottex |
| @@ -82,275 +82,295 @@ GNU Source-highlightは、入力したソースファイルからシンタック | ||
| 82 | 82 | @c All the menus can be updated with the EMACS command |
| 83 | 83 | @c texinfo-all-menus-update, which is normally bound to C-c C-u C-a. |
| 84 | 84 | @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:: | |
| 97 | 97 | * Concept Index:: Index of concepts. |
| 98 | 98 | @end menu |
| 99 | 99 | |
| 100 | -@node 導入, インストール, Top, Top | |
| 101 | -@chapter 導入 | |
| 102 | 100 | |
| 101 | +@node Introduction, Installation, Top, Top | |
| 102 | +@chapter 導入 | |
| 103 | 103 | @cindex introduction |
| 104 | 104 | @cindex features |
| 105 | 105 | |
| 106 | -GNU Source-highlightは、入力したソースファイルからシンタックスが強調されたドキュメントを生成する。 | |
| 107 | -色やスタイルについては、設定ファイルを使ったり、コマンドラインで指定する何らかのオプションを使うことで指定することができる(ボールド、イタリック、下線)。 | |
| 106 | +GNU Source-highlightは、入力したソースファイルから、シンタックスが強調されたドキュメントを生成します。 | |
| 107 | +設定ファイルを使ったり、コマンドラインで何らかのオプションを指定することで、色やスタイルを指定することができます(ボールド・イタリック・下線)。 | |
| 108 | 108 | |
| 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})。 | |
| 113 | 113 | |
| 114 | 114 | @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}. | |
| 118 | 118 | |
| 119 | 119 | @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:: | |
| 125 | 125 | @end menu |
| 126 | 126 | |
| 127 | -@node サポートしている言語, source-highlight-settingsプログラム, 導入, 導入 | |
| 127 | + | |
| 128 | +@node Supported languages, The program source-highlight-settings, Introduction, Introduction | |
| 128 | 129 | @section サポートしている言語 |
| 129 | 130 | |
| 130 | -Source-highlight(@value{VERSION})で本来サポートされている言語(要するにファイルの拡張子)の完全なリストは、@code{--lang-list}で報告されるものと同じであるが、以下のものである。 | |
| 131 | +Source-highlight(@value{VERSION})で本来サポートしている言語(要するにファイルの拡張子)の完全なリストは、@code{--lang-list}で報告されるものと同じです。 | |
| 132 | +以下に示します。 | |
| 131 | 133 | |
| 132 | 134 | @example |
| 133 | 135 | @include lang-list.texinfo |
| 134 | 136 | @end example |
| 135 | 137 | |
| 136 | -Source-highlight(@value{VERSION})で本来サポートされている出力フォーマットの完全なリストは、@code{--outlang-list}で報告されるものと同じであるが、以下のものである。 | |
| 138 | +Source-highlight(@value{VERSION})で本来サポートしている出力フォーマットの完全なリストは、@code{--outlang-list}で報告されるものと同じです。 | |
| 139 | +以下に示します。 | |
| 137 | 140 | |
| 138 | 141 | @example |
| 139 | 142 | @include outlang-list.texinfo |
| 140 | 143 | @end example |
| 141 | 144 | |
| 142 | 145 | @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}ディレクトリに入っていない言語のプログラム例を持っている場合は、テストスイートに入れられるように、それを私に送ってください。 | |
| 144 | 155 | |
| 145 | -留意しおいてほしいのだが、私は、個人的には、こういった言語の定義を全てテストしているわけではない。 | |
| 146 | -実のところ、定義ファイルが文法的に正しいことは(コマンドラインオプションの@code{--check-lang}と@code{--check-outlang}を使って @ref{source-highlightの起動})チェックしているが、それらの定義がその言語のシンタックスを本当に遵守しているかは確かめてはいない(たとえば、インターネットで情報を探して言語の定義を作り上げたものがあるが、私がその言語でプログラムを書いた経験はなかったりする)。 | |
| 147 | -なので、的確ではない言語の定義があったならば教えてほしい。 | |
| 148 | -そしてまた、@file{test}ディレクトリに入っていない言語のプログラム例を持っている場合は、それを私に送ってほしい。 | |
| 149 | -そうすれば、そのテストスイートに入れることができる。 | |
| 150 | 156 | |
| 151 | -@node source-highlight-settingsプログラム, いくつかの言語についての注意, サポートしている言語, 導入 | |
| 157 | +@node The program source-highlight-settings, Notes on some languages, Supported languages, Introduction | |
| 152 | 158 | @section @code{source-highlight-settings}プログラム |
| 153 | 159 | |
| 154 | 160 | @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が見つけられるかどうかをチェックし、念の為、ユーザのホームディレクトリの設定ファイルに正しい設定を格納するのに使われます。 | |
| 157 | 163 | |
| 158 | 164 | @cindex source-highlight.conf |
| 159 | -特に、この格納された設定ファイルは@file{source-highlight.conf}というもので、@file{$HOME/.source-highlight/}の中に収められる。 | |
| 165 | +具体的には、この格納設定ファイルは@file{source-highlight.conf}という名前で、@file{$HOME/.source-highlight/}の中に収められます。 | |
| 160 | 166 | |
| 161 | 167 | @cindex @code{--data-dir} |
| 162 | -差し当たり、このファイルには@code{--data-dir}のためのデフォルト値が格納される。 | |
| 168 | +差し当たり、このファイルには、@code{--data-dir}のデフォルト値が格納されます。 | |
| 163 | 169 | |
| 164 | -ユーザは、 | |
| 165 | 170 | @cindex @code{SOURCE_HIGHLIGHT_DATADIR} |
| 166 | -@code{SOURCE_HIGHLIGHT_DATADIR}環境変数を使って、いつでもこの設定ファイルの内容と、ハードコードされているデフォルト値をオーバーライドしてよい。 | |
| 171 | +@code{SOURCE_HIGHLIGHT_DATADIR}環境変数を使って、この設定ファイルの内容とハードコードされているデフォルト値をいつでもオーバーライドして構いません。 | |
| 167 | 172 | |
| 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 | |
| 169 | 175 | @section いくつかの言語についての注意 |
| 170 | 176 | |
| 171 | -このセクションでは、特定の言語のハイライティングについて細部に触れるつもりだ。 | |
| 172 | -これらのノートは、ハイライティングされる言語が、コマンドラインでのさらなる指定が必要な「方言」を持つような場合に役に立つかもしれない(たとえば、特定の方言を選択するためなど)。 | |
| 177 | +このセクションでは、特定の言語のハイライティングについて詳細に触れます。 | |
| 178 | +ハイライティングされる言語が、コマンドラインでさらに指定が必要な「方言」を持つような場合、ここでの記述が役に立つかもしれません(例えば、特定の方言を選択するためなど)。 | |
| 173 | 179 | |
| 174 | 180 | @menu |
| 175 | 181 | * Fortran:: |
| 176 | 182 | * Perl:: |
| 177 | 183 | @end menu |
| 178 | 184 | |
| 179 | -@node Fortran, Perl, いくつかの言語についての注意, いくつかの言語についての注意 | |
| 185 | + | |
| 186 | +@node Fortran, Perl, Notes on some languages, Notes on some languages | |
| 180 | 187 | @subsection Fortran |
| 181 | 188 | |
| 182 | 189 | @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}を指定する必要があります。 | |
| 186 | 199 | |
| 187 | -デフォルトでは、Fortranファイルはフリーフォマットを想定している。 | |
| 188 | -固定フォーマットが使いたい場合には、@code{--src-lang}というコマンドラインオプションで@code{fortran-fixed}を指定する必要がある。 | |
| 189 | 200 | |
| 190 | -@node Perl, , Fortran, いくつかの言語についての注意 | |
| 201 | +@node Perl, , Fortran, Notes on some languages | |
| 191 | 202 | @subsection Perl |
| 192 | 203 | |
| 193 | 204 | @cindex Perl |
| 194 | -Perlの文法形式、特にその正規表現の仕様は、かなり悪夢だ;-) | |
| 195 | -@file{perl.lang}の中で可能な限り記述してみたが、特定の正規表現で正しくハイライトされないものがあるかもしれない。 | |
| 196 | -実は私はPerlでプログラムを書いたことがないので、あなたのPerlプログラムで正しくハイライトされていない部分があるのならば、Perlのハイライトを改善できるように私に連絡するのを躊躇わないでほしい。 | |
| 205 | +Perlの文法形式、特に、正規表現の仕様はかなりの悪夢です(;-))。 | |
| 206 | +@file{perl.lang}の中で可能な限り記述しましたが、特定の正規表現において正しくハイライトされないことがあるかもしれません。 | |
| 207 | +実は、私は、Perlでプログラムを書いたことがありません。 | |
| 208 | +Perlプログラムで正しくハイライトされていない部分があれば、Perlのハイライトを改善できるように、遠慮無く私に連絡してください。 | |
| 197 | 209 | |
| 198 | 210 | @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}というコマンドライン指定を使うこともできます。 | |
| 202 | 215 | |
| 203 | -@node 簡単なフォーマッタとしてのsource-highlightの使用, 関連するソフトウェアとリンク, いくつかの言語についての注意, 導入 | |
| 216 | + | |
| 217 | +@node Using source-highlight as a simple formatter, Related Software and Links, Notes on some languages, Introduction | |
| 204 | 218 | @section 簡単なフォーマッタとしてのsource-highlightの使用 |
| 205 | 219 | |
| 206 | -source-highlightを入力ファイルの簡単なフォーマッタとして使うこともできる。 | |
| 207 | -すなわち、ハイライティングをさせずに使うこともできる@footnote{これは以前のバージョンで可能だったかもしれないが、バージョン2.5から公式にサポートされている機能だ}。 | |
| 220 | +入力ファイルの簡単なフォーマッタとしてsource-highlightを使うこともできます。 | |
| 221 | +つまり、ハイライティングをさせずにsource-highlightを使うこともできます@footnote{以前のバージョンでも可能だったかもしれませんが、バージョン2.5から公式にサポートされている機能です。}。 | |
| 208 | 222 | |
| 209 | 223 | @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})。 | |
| 214 | 228 | |
| 215 | -たとえば、これによって、テキストファイルをHTMLや@LaTeX{}に変換したいような場合にsource-highlightが使えるようになる。 | |
| 216 | -出力の際、事実、source-highlightは、出力フォーマットにおいて特別な意味を持つ文字があっても正しくそれらの文字を生成するだろう。 | |
| 229 | +例えば、これを使えば、テキストファイルをHTMLや@LaTeX{}に変換したいような場合にsource-highlightが使えるようになります。 | |
| 230 | +事実、出力の際、出力フォーマットにおいて特別な意味を持つ文字があったとしても、それらの文字は正しく生成されます。 | |
| 217 | 231 | |
| 218 | 232 | @include txt2texinfo.txt |
| 219 | 233 | |
| 220 | -これが上のセンテンスのTexinfoソースだ: | |
| 234 | +上のセンテンスのTexinfoソースが以下です。 | |
| 221 | 235 | |
| 222 | 236 | @include txt2texinfo.txt.texinfo |
| 223 | 237 | |
| 224 | 238 | @noindent |
| 225 | -これは、source-highlightによってハイライト無しの単純なテキストファイルとして処理されたものだ。 | |
| 226 | -しかし、Texinfoでフォーマットされていたので、必要なエスケープ処理が自動的に実行された。 | |
| 227 | -このように、コードとその結果を同じドキュメントの中に簡単に挿入できる(ここでの例のように)。 | |
| 239 | +これは、ハイライト無しの単純なテキストファイルとしてsource-highlightによって処理されたものです。 | |
| 240 | +Texinfoでフォーマットされていましたので、必要なエスケープ処理が自動的に実行されました。 | |
| 241 | +このようにすれば、同じドキュメントの中に、コードとその結果を挿入するのが簡単になります。 | |
| 228 | 242 | |
| 229 | -これは実際にsource-highlightが実行したフォーマットだ。 | |
| 230 | -コメントを除いて、これが、手作業でやる場合に基本的に自分で書かなければならないことである: | |
| 243 | +source-highlightがフォーマットを実際に実行したのが以下です。 | |
| 244 | +コメントを除いて、これが、手作業でやる場合に、基本的に自分で書かなければならないことです。 | |
| 231 | 245 | |
| 232 | 246 | @include txt2texinfo.txt.texinfo.texinfo |
| 233 | 247 | |
| 234 | 248 | @cindex failsafe |
| 235 | -特定の入力言語をsource-highlightが処理しない場合に、さらに@code{--failsafe}オプションを使うことができ(@ref{source-highlightの起動})、そしてその場合はハイライトは実行されないが、source-highlightは入力ファイルを出力フォーマットに変換する。 | |
| 249 | +特定の入力言語をsource-highlightが処理しない場合、さらに、@code{--failsafe}オプションを使うことができます(@pxref{Invoking source-highlight})。 | |
| 250 | +その場合、ハイライトは実行されませんが、入力ファイルは出力フォーマットに変換されます。 | |
| 236 | 251 | |
| 237 | 252 | @cindex default.lang |
| 238 | -だが、入力言語が確認できなかった場合には、@file{default.lang}が使われる。 | |
| 239 | -これは空の言語定義ファイルだが、これをカスタマイズしたいと考えることもあるかもしれない。 | |
| 253 | +しかしながら、入力言語が確認できなかった場合には、@file{default.lang}が使われますので注意してください。 | |
| 254 | +これは、空の言語定義ファイルです。 | |
| 255 | +このファイルをカスタマイズしたい場合もあるでしょう。 | |
| 256 | + | |
| 240 | 257 | |
| 241 | -@node 関連するソフトウェアとリンク, , 簡単なフォーマッタとしてのsource-highlightの使用, 導入 | |
| 258 | +@node Related Software and Links, , Using source-highlight as a simple formatter, Introduction | |
| 242 | 259 | @section 関連するソフトウェアとリンク |
| 243 | 260 | |
| 244 | -ここに、バックエンドとして使ったり(つまりsource-highlightへのインターフェイスを用意している)、その特徴の一部を使ったり(たとえば、定義ファイル)という意味において、source-highlightと関連しているソフトウェアを挙げていく: | |
| 261 | +ここで、バックエンドとして使ったり(source-highlightへのインターフェイスを用意していたり)、あるいは、その特徴(例えば、定義ファイル)の一部を使ったりという意味においてsource-highlightと関連しているソフトウェアを挙げていきます。 | |
| 245 | 262 | |
| 246 | 263 | @itemize |
| 247 | - | |
| 248 | 264 | @item |
| 249 | 265 | @cindex Source-Highlight-Qt |
| 250 | 266 | @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の両方に対応しています。 | |
| 253 | 270 | |
| 254 | 271 | @uref{http://srchiliteqt.sourceforge.net}. |
| 255 | 272 | |
| 256 | 273 | @item |
| 257 | 274 | @cindex QSource-Highlight |
| 258 | 275 | @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など)によっては、ハイライトされた出力のプレビューを見ることができます。 | |
| 264 | 282 | |
| 265 | 283 | @uref{http://qsrchilite.sourceforge.net}. |
| 266 | 284 | |
| 267 | 285 | @item |
| 268 | 286 | @cindex SourceHighlightIDE |
| 269 | 287 | @cindex KDE |
| 270 | -SourceHighlightIDEは、新たなsource-highlight用の言語定義を開発したりデバッグしたりするために私が書いた小さなIDE(KDE用)だ。 | |
| 288 | +SourceHighlightIDEは、新たなsource-highlight用の言語定義を開発したり、デバッグしたりするために私が書いた小さなIDE(KDE用)です。 | |
| 271 | 289 | |
| 272 | 290 | @uref{http://srchighliteide.sourceforge.net}. |
| 273 | 291 | |
| 274 | 292 | @item |
| 275 | 293 | @cindex Ksrc2highlight |
| 276 | 294 | @cindex KDE |
| 277 | -Martin Gebertがsource-highlightプログラムのKDEインターフェイスを実装した(彼は素晴しい仕事をしてくれた)。 | |
| 278 | -@emph{Ksrc2highlight}というものだ。 | |
| 279 | -試してみたい場合は以下: | |
| 295 | +Martin Gebertは、source-highlightプログラムのKDEインターフェイスを実装しました(彼は、素晴しい仕事をしました)。 | |
| 296 | +@emph{Ksrc2highlight}と呼ばれます。 | |
| 297 | +試してみたい場合は以下を見てください。 | |
| 280 | 298 | |
| 281 | 299 | @uref{http://www.mgebert.de/Ksrc2highlight}. |
| 282 | 300 | |
| 283 | 301 | @item |
| 284 | 302 | @cindex java2html |
| 285 | -java2htmlのJavaバージョンもある。 | |
| 286 | -以下のところにある。 | |
| 303 | +Java版のjava2htmlというのもあります。 | |
| 304 | +以下のところにあります。 | |
| 287 | 305 | |
| 288 | 306 | @uref{http://www.generationjava.com/projects/Java2Html.shtml}. |
| 289 | 307 | |
| 290 | 308 | @item |
| 291 | -このウェブサイトはオンラインでハイライティングをするためのsource-highlightのインターフェイスを提供している。 | |
| 309 | +次のウェブサイトは、オンラインでハイライティングをするためのsource-highlightのインターフェイスを提供しています。 | |
| 292 | 310 | |
| 293 | -@uref{http://www.alaide.com/outils_colorsyntaxe.php} | |
| 311 | +@uref{http://www.alaide.com/outils_colorsyntaxe.php}. | |
| 294 | 312 | |
| 295 | 313 | @item |
| 296 | 314 | @cindex SHJS |
| 297 | -SHJSは、HTMLドキュメントの中でソースコード片をハイライトするJavaScriptプログラムだ。 | |
| 298 | -SHJSを使ったドキュメントはウェブブラウザによってクライアントサイドでハイライトされる。 | |
| 299 | -SHJSはSource-highlightの言語定義を使用している。 | |
| 315 | +SHJSは、HTMLドキュメントの中でソースコード片をハイライトするJavaScriptプログラムです。 | |
| 316 | +SHJSを使ったドキュメントは、ウェブブラウザによってクライアントサイドでハイライトされます。 | |
| 317 | +SHJSはSource-highlightの言語定義を使用しています。 | |
| 300 | 318 | |
| 301 | -@uref{http://shjs.sourceforge.net} | |
| 319 | +@uref{http://shjs.sourceforge.net}. | |
| 302 | 320 | |
| 303 | 321 | @item |
| 304 | 322 | @cindex code2blog |
| 305 | -Code2blogは、source-highlightのpyGTKフロントエンドで、ソースコードをHTMLへ簡単に変換するためのものだ。 | |
| 323 | +Code2blogは、source-highlightのpyGTKフロントエンドです。 | |
| 324 | +ソースコードをHTMLへ簡単に変換するためのものです。 | |
| 306 | 325 | |
| 307 | -@uref{http://code.google.com/p/code2blog} | |
| 326 | +@uref{http://code.google.com/p/code2blog}. | |
| 308 | 327 | |
| 309 | 328 | @item |
| 310 | 329 | @cindex Apache |
| 311 | -Andy Buckleyは、source-highlightのラッパを書いた。 | |
| 312 | -これは、ウェブページの中でソースコードをオンザフライにハイライティングするApacheフィルタとして使うことができる。 | |
| 330 | +Andy Buckleyは、source-highlightのラッパを書きました。 | |
| 331 | +ウェブページで、ソースコードをオンザフライにハイライティングするApacheフィルタとして使うことができます。 | |
| 313 | 332 | |
| 314 | -@uref{http://www.insectnation.org/projects/filter-src-highlight} | |
| 333 | +@uref{http://www.insectnation.org/projects/filter-src-highlight}. | |
| 315 | 334 | |
| 316 | 335 | @item |
| 317 | 336 | @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の内部で、シンタックスが色付けされたコードをユーザが簡単に追加することができるようにするものです。 | |
| 320 | 340 | |
| 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}. | |
| 322 | 342 | |
| 323 | 343 | @item |
| 324 | 344 | @cindex Firefox |
| 325 | -Mauricio Zepedaは、自動的にファイルをハイライトしてFirefoxでそれを表示するスクリプトについて、彼のブログに記事を書いた。 | |
| 345 | +Mauricio Zepedaは、自動的にファイルをハイライトし、Firefoxでそれを表示するスクリプトについてブログに記事を書きました。 | |
| 326 | 346 | |
| 327 | -@uref{http://chillorb.com/?p=122} | |
| 347 | +@uref{http://chillorb.com/?p=122}. | |
| 328 | 348 | |
| 329 | 349 | @item |
| 330 | 350 | @cindex Wiki |
| 331 | 351 | @cindex Ikiwiki |
| 332 | -Jason Blevinsは、ソースコード片やファイル全体のシンタックスハイライティングを有効にするIkiwiki用のプラグインを作成した。 | |
| 352 | +Jason Blevinsは、Ikiwiki用のプラグインを作成しました。 | |
| 353 | +このプラグインは、source-highlightを使って、ソースコード片やファイル全体のシンタックスハイライティングを有効にするものです。 | |
| 333 | 354 | |
| 334 | -@uref{http://jblevins.org/projects/ikiwiki/code} | |
| 355 | +@uref{http://jblevins.org/projects/ikiwiki/code}. | |
| 335 | 356 | |
| 336 | 357 | @item |
| 337 | 358 | @cindex Wiki |
| 338 | 359 | @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を使うものではありません。 | |
| 343 | 362 | |
| 363 | +@uref{http://code.google.com/p/php-source-highlight/}. | |
| 344 | 364 | @end itemize |
| 345 | 365 | |
| 346 | 366 | |
| 347 | -@node インストール, Copying, 導入, Top | |
| 367 | +@node Installation, Copying, Introduction, Top | |
| 348 | 368 | @chapter インストール |
| 349 | 369 | @cindex インストール |
| 350 | 370 | |
| 351 | -ビルドやインストールの詳細については@file{INSTALL}を見てほしい。 | |
| 352 | -そもそも、ソースで入手したLinuxソフトウェアをコンパイルするのに慣れているのであれば、いつもの手順を単に辿ればよい。 | |
| 353 | -すなわち、ディレクトリにダウンロードしたファイルをuntarして、それから以下のようにする: | |
| 371 | +構築やインストールの詳細については@file{INSTALL}を見てください。 | |
| 372 | +そもそも、ソースで入手したLinuxソフトウェアをコンパイルするのに慣れているのであれば、いつもの手順を単に辿れば良いです。 | |
| 373 | +つまり、ディレクトリにダウンロードしたファイルをuntarして、それから、次のようにします。 | |
| 354 | 374 | |
| 355 | 375 | @example |
| 356 | 376 | cd <source code main directory> |
| @@ -359,253 +379,273 @@ make | ||
| 359 | 379 | make install |
| 360 | 380 | @end example |
| 361 | 381 | |
| 362 | -しかし、これを実行する前には、source-highlightをビルドするのに必要なものが全てそろっているかチェックしてほしい。 | |
| 363 | -@ref{source-highlightのビルドに必要なもの} | |
| 382 | +これを実行する前には、source-highlightを構築するのに必要なものが全て揃っているかチェックするようにしてください。 | |
| 383 | +@xref{What you need to build source-highlight}. | |
| 364 | 384 | |
| 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になっている必要があります。 | |
| 366 | 386 | |
| 367 | -configureスクリプトに渡すことのできるオプションが全て見るのには、@code{./configure --help}を実行してほしい。 | |
| 387 | +configureスクリプトに渡せるオプションを全て見る場合には、@code{./configure --help}を実行してください。 | |
| 368 | 388 | |
| 369 | 389 | @cindex directories |
| 370 | - | |
| 371 | -各ファイルは以下のディレクトリへインストールされる: | |
| 390 | +各ファイルは、以下のディレクトリへインストールされます。 | |
| 372 | 391 | |
| 373 | 392 | @table @code |
| 374 | 393 | @item 実行ファイル |
| 375 | 394 | @code{prefix/bin} |
| 395 | + | |
| 376 | 396 | @item ドキュメントと出力例 |
| 377 | 397 | @code{prefix/share/doc/source-highlight} |
| 398 | + | |
| 378 | 399 | @item ライブラリの例 |
| 379 | 400 | @code{prefix/share/doc/source-highlight/examples} |
| 380 | -@item ライブラリAPIのドキュメンテーション | |
| 401 | + | |
| 402 | +@item ライブラリAPIのドキュメント | |
| 381 | 403 | @code{prefix/share/doc/source-highlight/api} |
| 404 | + | |
| 382 | 405 | @item 設定ファイル |
| 383 | 406 | @code{prefix/share/source-highlight} |
| 384 | 407 | @end table |
| 385 | 408 | |
| 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}を実行してください。 | |
| 388 | 412 | |
| 389 | 413 | @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}を使って、このディレクトリを明示することを推奨します。 | |
| 395 | 419 | |
| 396 | 420 | @cindex library |
| 397 | 421 | @cindex @code{--with-doxygen} |
| 398 | 422 | @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 | +ドキュメントは、次のディレクトリにインストールされます。 | |
| 401 | 426 | |
| 402 | 427 | @table @code |
| 403 | -@item ライブラリAPIドキュメンテーション | |
| 428 | +@item ライブラリAPIドキュメント | |
| 404 | 429 | @code{prefix/share/doc/source-highlight/api} |
| 405 | 430 | @end table |
| 406 | 431 | |
| 407 | 432 | |
| 408 | 433 | @cindex java2html |
| 409 | 434 | @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です。 | |
| 412 | 439 | |
| 413 | 440 | @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:: | |
| 423 | 450 | @end menu |
| 424 | 451 | |
| 425 | -@node qmakeでのビルド, ダウンロード, インストール, インストール | |
| 426 | -@section qmakeでのビルド | |
| 452 | + | |
| 453 | +@node Building with qmake, Download, Installation, Installation | |
| 454 | +@section qmakeでの構築 | |
| 427 | 455 | @cindex qmake |
| 428 | 456 | |
| 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}を構築できるようになりました。 | |
| 431 | 459 | @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{訳注:原文に閉じカッコが見当たらないのでここに入れてみました。}にだけ使用すべきです。 | |
| 434 | 462 | @cindex boost |
| 435 | -さらにboost regexライブラリも必要で、MSVCを使う場合は、このライブラリのインストールパッケージが@url{http://www.boostpro.com}で手に入る。 | |
| 463 | +さらに、boost regexライブラリも必要です。 | |
| 464 | +MSVCを使う場合は、このライブラリのインストールパッケージが@url{http://www.boostpro.com}で入手できます。 | |
| 436 | 465 | |
| 437 | -このビルドメカニズムはまだ実験的なもので、MSVCを使うときには、@value{srchilitelib}の静的バージョンだけをビルドできる(.dllではない)。 | |
| 466 | +この構築メカニズムはまだ実験的なものです。 | |
| 467 | +MSVCを使う時には、@value{srchilitelib}の静的バージョンだけが構築できます(.dllではありません)。 | |
| 438 | 468 | @cindex MinGW |
| 439 | -また、MinGWコンパイラ(@uref{http://www.mingw.org})があって(たとえば、QtのWindowsディストリビューションと一緒に来るものがある)、 | |
| 440 | 469 | @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}ベースのメカニズムを使うべきでしょう。 | |
| 443 | 472 | |
| 444 | -@code{qmake}を使うとき、ビルドの際に指定できるオプション(おまけにqmakeを使うときには普通使うもの)が少しあって、これらのオプションは環境変数を使ってだけ指定することができる: | |
| 473 | +@code{qmake}を使う時、構築の際に指定できるオプション(その上、qmakeを使う時には普通使うもの)が以下のように少しだけあります。 | |
| 474 | +これらのオプションは、環境変数を使ってだけ指定することができます。 | |
| 445 | 475 | |
| 446 | 476 | @table @code |
| 447 | 477 | @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 | + | |
| 451 | 482 | @item INCPATH |
| 452 | -boostヘッダファイルのパスを指定する。 | |
| 483 | +boostヘッダファイルのパスを指定します。 | |
| 484 | + | |
| 453 | 485 | @item LIBS |
| 454 | -boost libファイルのパスを指定する。 | |
| 486 | +boost libファイルのパスを指定します。 | |
| 455 | 487 | @end table |
| 456 | 488 | |
| 457 | -boostライブラリのインクルードパスとライブラリパスの指定は、システムパスディクレトリにそれらが無いのであれば、完全にあなたが@code{INCPATH}と@code{LIBS}を使って決めることだいうことを考慮に入れておいてほしい。 | |
| 489 | +boostライブラリのインクルードパスとライブラリパスの指定は、システムパスのディクレトリにライブラリバスが無いのであれば、@code{INCPATH}と@code{LIBS}を使ってユーザが完全に決めるということを考慮に入れておいてください。 | |
| 490 | + | |
| 491 | +また、qmakeを実行する時には、@code{-recursive}というオプションを必ず使うということを覚えていてください。 | |
| 458 | 492 | |
| 459 | -また、qmakeを実行するときには、@code{-recursive}というオプションを常に使うということを覚えていてほしい。 | |
| 493 | +次に、@code{make install}を実行したい場合には、@code{INSTALL_ROOT}変数を使って、インストールするパスのプリフィックスを指定することができます。 | |
| 494 | +そうしない場合、そのパスはルートディレクトリです。 | |
| 460 | 495 | |
| 461 | -次に、@code{make install}を実行したい場合には、@code{INSTALL_ROOT}変数を使って、インストールするパスのプリフィックスを指定することができる。 | |
| 462 | -そうしない場合はパスはルートディレクトリである。 | |
| 463 | 496 | |
| 464 | -@node ダウンロード, Gitの匿名チェックアウト, qmakeでのビルド, インストール | |
| 497 | +@node Download, Anonymous Git Checkout, Building with qmake, Installation | |
| 465 | 498 | @section ダウンロード |
| 466 | 499 | @cindex download |
| 467 | 500 | |
| 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}を見よ)のいずれかからダウンロードができます。 | |
| 469 | 502 | |
| 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 | +しかし、私は、このバイナリを個人的にメンテナンスしていませんし、古くなっていることもあるかもしれません。 | |
| 476 | 510 | |
| 477 | -アーカイブはGNU gpg(@uref{http://www.gnupg.org})を使って私がデジタル署名している。 | |
| 478 | -私のGPGのパブリックキーは私のホームページ(@value{myhomepage})で見つけられる。 | |
| 511 | +アーカイブには、GNU gpg(@uref{http://www.gnupg.org})を使って私がデジタル署名しています。 | |
| 512 | +GPGのパブリックキーは私のホームページ(@value{myhomepage})で見つけられます。 | |
| 479 | 513 | |
| 480 | -個別のリリースのもが利用可能であれば、パッチも入手できる(以前のバージョンからのパッチについては後述)。 | |
| 514 | +個別のリリースに対するパッチが利用できる場合、パッチも入手できます(以前のバージョンからのパッチについては後述します)。 | |
| 481 | 515 | |
| 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の匿名チェックアウト | |
| 484 | 519 | |
| 485 | 520 | @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リポジトリは使わなくなりました}。 | |
| 487 | 522 | |
| 488 | 523 | @example |
| 489 | 524 | git clone git://git.savannah.gnu.org/src-highlite.git |
| 490 | 525 | @end example |
| 491 | 526 | |
| 492 | -詳しい手順については次のアドレスで見つけられる: | |
| 527 | +詳しい手順については次のアドレスで見つけられます。 | |
| 493 | 528 | |
| 494 | 529 | @uref{http://savannah.gnu.org/projects/src-highlite}. |
| 495 | 530 | |
| 496 | -そして、gitリポジトリは次のアドレスでオンラインで見ることもできる: | |
| 531 | +また、gitリポジトリは、次のアドレスからオンラインで見ることができます。 | |
| 497 | 532 | |
| 498 | 533 | @uref{http://git.savannah.gnu.org/cgit/src-highlite.git}. |
| 499 | 534 | |
| 500 | -このように、Source-highlightの最新の開発ソースを手に入れられるが、それは不安定なものかもしれないことに注意してほしい。 | |
| 501 | -このプログラムを修正したり拡張したりする場合には、この方法がベストである。 | |
| 502 | -パッチを私に送るのに、そのパッチは、Gitリポジトリの最新のソースに対するものであるべきだ。 | |
| 535 | +以上のようにすれば、Source-highlightの最新の開発ソースを手に入れられます。 | |
| 536 | +ただし、不安定なものかもしれないので注意してください。 | |
| 537 | +このプログラムを修正したり拡張したりする場合には、この方法がベストです。 | |
| 538 | +パッチを私に送る場合、パッチは、Gitリポジトリの最新のソースに対するものにしてください。 | |
| 503 | 539 | |
| 504 | -反対に、指定したリリースのソースをgitを通して入手したい場合、たとえばバージョンX.Y.Zならば、rel_X_Y_Zというタグを指定しなければならない。 | |
| 540 | +反対に、指定したリリースのソースをgit経由で入手したい場合、例えば、バージョンX.Y.Zならば、rel_X_Y_Zというタグを指定しなければなりません。 | |
| 505 | 541 | |
| 506 | -Gitリポジトリから手に入れたソースをコンパイルするとき、@code{configure}や@code{make}コマンドを初めて実行する前に次のコマンドを実行しなければならない: | |
| 542 | +Gitリポジトリから入手したソースをコンパイルする場合、@code{configure}や@code{make}コマンドを最初に実行する前に次のコマンドを実行しなければなりません。 | |
| 507 | 543 | |
| 508 | 544 | @example |
| 509 | 545 | autoreconf -i |
| 510 | 546 | @end example |
| 511 | 547 | |
| 512 | 548 | @noindent |
| 513 | -これによってautotoolsのコマンドが正しい順番に実行され、ひょっとしたら欠けているかもしれないファイルもコピーしてくれるだろう。 | |
| 514 | -これを成功させるためには、 | |
| 549 | +これによって、autotoolsのコマンドが正しい順番に実行されます。 | |
| 550 | +ひょっとしたら欠けているかもしれないファイルもコピーしてくれるでしょう。 | |
| 515 | 551 | @cindex automake |
| 516 | 552 | @cindex autoconf |
| 517 | 553 | @cindex libtool |
| 518 | -@code{automake}と@code{autoconf}、@code{libtool}の最近のバージョンがインストールされていたほうがよい。 | |
| 554 | +これを成功させるには、@code{automake}、@code{autoconf}、@code{libtool}の最近のバージョンがインストールされていたほうがよいでしょう。 | |
| 555 | + | |
| 519 | 556 | |
| 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の構築に必要なもの | |
| 522 | 559 | |
| 523 | 560 | @cindex compilation requirements |
| 524 | 561 | @cindex building requirements |
| 525 | 562 | |
| 526 | 563 | @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ライブラリを最低でもインストールする必要があります。 | |
| 528 | 566 | |
| 529 | -ほとんどのGNU/Linuxディストリビューションでは、コンパイルされた状態ですでにこのライブラリが用意されている。 | |
| 530 | -使用しているディストリビューションのパッケージを使うならば、boostライブラリの開発パッケージも必ずインストールしてほしい。 | |
| 567 | +ほとんどのGNU/Linuxディストリビューションでは、コンパイルされた状態でこのライブラリが既に用意されています。 | |
| 568 | +使用ディストリビューションのパッケージを使う場合、boostライブラリの開発パッケージも必ずインストールしてください。 | |
| 531 | 569 | |
| 532 | -Boost Regexライブラリのインストールに問題がある場合や、このライブラリのためにsource-highlightのコンパイルに問題がある場合には、@ref{Boost Regexライブラリのインストールに関するTips}を見てほしい。 | |
| 570 | +Boost Regexライブラリのインストールに問題がある場合、あるいは、このライブラリのためにsource-highlightのコンパイルに問題がある場合には、次節を見てください(@pxref{Tips on installing Boost Regex library})。 | |
| 533 | 571 | |
| 534 | -(たくさん違うバージョンを使っているため)特定のバージョンのBoost regexライブラリを使いたい場合には、configureの@code{--with-boost-regex}オプションを使って特定のサフィックスを指定することができる。 | |
| 535 | -たとえば次のようになる。 | |
| 572 | +多数のバージョンを使っているなどの理由で、特定のバージョンのBoost regexライブラリを使いたい場合には、configureの@code{--with-boost-regex}オプションを使って、特定のサフィックスを指定することができます。 | |
| 573 | +例えば、次のようになります。 | |
| 536 | 574 | |
| 537 | 575 | @example |
| 538 | 576 | ./configure --with-boost-regex=boost_regex-gcc-1_31 |
| 539 | 577 | @end example |
| 540 | 578 | |
| 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に移植しました。 | |
| 542 | 582 | |
| 543 | -私は | |
| 544 | 583 | @cindex automake |
| 545 | 584 | @cindex autoconf |
| 546 | 585 | @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}}という素晴しいソフトウェアを使っています。 | |
| 548 | 587 | @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})を使いました。 | |
| 551 | 592 | |
| 552 | -最後に、私はコマンドラインの解析のため、@emph{GNU gengetopt}(@uref{http://www.gnu.org/software/gengetopt})を使った。 | |
| 593 | +また、動的オーバーロードを許す@emph{doublecpp}(@uref{http://doublecpp.sourceforge.net})も使い始めました。 | |
| 553 | 594 | |
| 554 | -動的オーバーロードを許す@emph{doublecpp}(@uref{http://doublecpp.sourceforge.net})も使い始めた。 | |
| 595 | +実際、boost regexライブラリは別にすると、source-highlightの開発をしたいと思わないかぎり、source-highlightを構築するのに上に挙げたその他のツールは必要ではありません(実際のところ、前述したツールを使って生成した出力ソースが提供されています)。 | |
| 555 | 596 | |
| 556 | -実際、boost regexライブラリは別にすると、source-highlightの開発をしたいと思わないかぎり、source-highlightをビルドするのに上に挙げたその他のツールは必要ではない(確かに私は前述したツールを使って生成した出力ソースを提供している)。 | |
| 597 | +しかし、Gitからソースを取得した場合、必要となる他のツールもあります。 | |
| 598 | +@xref{Anonymous Git Checkout}. | |
| 557 | 599 | |
| 558 | -しかし、Gitからソースを取得したのならば、他のツールがいくつか必要となる。 | |
| 559 | -@ref{Gitの匿名チェックアウト}を参照してほしい。 | |
| 560 | 600 | |
| 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 | |
| 562 | 602 | @section Boost Regexライブラリのインストールに関するTips |
| 563 | 603 | |
| 564 | 604 | @cindex Boost regex |
| 565 | 605 | |
| 566 | -source-highlightのコンパイルに何の問題もなければ、幸運にもこのセクションは飛ばしてかまわない@footnote{バージョン2.11からは、boost regexライブラリがコンパイラのデフォルトパスにあれば、@code{configure}スクリプトが正しく見つけてくれるはずだ}。:-) | |
| 606 | +source-highlightのコンパイルに何の問題も無ければ、幸運にも、このセクションは飛ばすことができます@footnote{バージョン2.11からは、boost regexライブラリがコンパイラのデフォルトパスにあれば、@code{configure}スクリプトが正しく見つけてくれるはずです}。:-) | |
| 567 | 607 | |
| 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のコンパイルに問題が発生する場合に、事態をどのように調整するかを説明します。 | |
| 573 | 613 | |
| 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}パッケージをインストールしなければなりませんでした。 | |
| 577 | 617 | |
| 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++のコンパイル時に、ヘッダファイルを探索する場所になっていますので、これをお勧めします。 | |
| 582 | 622 | |
| 583 | -Boost Regexライブラリをコンパイルしてインストールするのに成功したり、あるいはディストリビューションのパッケージをインストールても、まだsource-highlightのコンパイルに問題が起きる場合には、次に説明する事柄を簡単に調整する必要がある。 | |
| 623 | +Boost Regexライブラリをコンパイルしてインストールするのに成功したり、あるいは、ディストリビューションのパッケージをインストールしても、source-highlightのコンパイルに問題がまだ起きる場合には、次に説明する事柄を調整しなければなりません。 | |
| 584 | 624 | |
| 585 | -まず、source-highlightの@code{./configure}コマンドが次のように報告する場合だ: | |
| 625 | +まず、source-highlightの@code{./configure}コマンドが次のようにエラーを報告する場合です。 | |
| 586 | 626 | |
| 587 | 627 | @example |
| 588 | 628 | ERROR! Boost::regex library not installed. |
| 589 | 629 | @end example |
| 590 | 630 | |
| 591 | 631 | @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 | +その時は、シンボリックリンクを次のように作成するだけで良いです。 | |
| 596 | 636 | |
| 597 | 637 | @example |
| 598 | 638 | ln -s /usr/include/boost-1_33/boost /usr/include/boost |
| 599 | 639 | @end example |
| 600 | 640 | |
| 601 | 641 | @noindent |
| 602 | -代わりに、source-highlightのconfigureを次のように実行してもよい: | |
| 642 | +代わりに、source-highlightのconfigureを次のように実行しても構いません: | |
| 603 | 643 | |
| 604 | 644 | @example |
| 605 | 645 | ./configure CXXFLAGS=-I/usr/include/boost-1_33/ |
| 606 | 646 | @end example |
| 607 | 647 | |
| 608 | -さらに、source-highlightの@code{./configure}が次のような別のエラーを出す場合だ: | |
| 648 | +次に、source-highlightの@code{./configure}が、次のような別のエラーを出す場合です。 | |
| 609 | 649 | |
| 610 | 650 | @example |
| 611 | 651 | ERROR! Boost::regex library is installed, but you |
| @@ -614,16 +654,16 @@ for instance, --with-boost-regex=boost_regex-gcc-1_31 | ||
| 614 | 654 | @end example |
| 615 | 655 | |
| 616 | 656 | @noindent |
| 617 | -このとき、修正しなければならないことが他にまだある。 | |
| 618 | -インストールしたBoost Regexライブラリの正確なファイル名を調べなければならない。 | |
| 619 | -これは次のコマンドを使えばよい: | |
| 657 | +この時、修正しなければならないことが他にもあります。 | |
| 658 | +インストールしたBoost Regexライブラリの正確なファイル名を調べなければなりません。 | |
| 659 | +これは、次のコマンドを使えば分かります。 | |
| 620 | 660 | |
| 621 | 661 | @example |
| 622 | 662 | $ ls -l /usr/lib/libboost_regex* |
| 623 | 663 | @end example |
| 624 | 664 | |
| 625 | 665 | @noindent |
| 626 | -例えば、私のcygwinをインストールした環境の一つでは次のように報告される: | |
| 666 | +例えば、cygwinをインストールした環境の一つでは次のように報告されます。 | |
| 627 | 667 | |
| 628 | 668 | @example |
| 629 | 669 | -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* | ||
| 633 | 673 | @end example |
| 634 | 674 | |
| 635 | 675 | @noindent |
| 636 | -これで、source-highlightの次のようにconfigureコマンドを正しく実行する情報が揃った: | |
| 676 | +これで、source-highlightのconfigureコマンドを正しく実行する情報が揃いました。 | |
| 677 | +コマンドは次のようになります。 | |
| 637 | 678 | |
| 638 | 679 | @example |
| 639 | 680 | ./configure --with-boost-regex=boost_regex-gcc-mt-s-1_33 |
| 640 | 681 | @end example |
| 641 | 682 | |
| 642 | 683 | @noindent |
| 643 | -あるいは、1番目の問題を2番目の方法@footnote{長過ぎるコマンドラインは、@code{\}によって、インデントされた複数行に分割されている。もちろんどうしてもというなら一行で書いてもよい}で解決した場合には次のようになる: | |
| 684 | +あるいは、1番目の問題を2番目の方法で解決した場合には次のようになります@footnote{コマンドラインが長過ぎる場合、@code{\}によって、インデントされた複数行に分割されます。もちろん、どうしてもというなら、一行で書いても構いません。}。 | |
| 644 | 685 | |
| 645 | 686 | @example |
| 646 | 687 | ./configure CXXFLAGS=-I/usr/include/boost-1_33/ \ |
| 647 | 688 | --with-boost-regex=boost_regex-gcc-mt-s-1_33 |
| 648 | 689 | @end example |
| 649 | 690 | |
| 650 | -もちろん、ファイルをインストールしたBoost Regexライブラリの名前に応じてこのコマンドを修正しなければならない。 | |
| 691 | +もちろん、ファイルをインストールしたBoost Regexライブラリの名前に応じてこのコマンドは修正しなければなりません。 | |
| 651 | 692 | |
| 652 | -問題が起きていた多数のユーザが、この手順でsource-highlightをなんとかコンパイルできるようになった。 | |
| 653 | -依然問題を抱えているならば私にメールを送ってほしい。 | |
| 693 | +問題が起きていた多数のユーザが、この手順により、source-highlightをなんとかコンパイルできるようになりました。 | |
| 694 | +依然問題を抱えているならば、メールを送ってください。 | |
| 654 | 695 | |
| 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 | |
| 656 | 698 | @section 前のバージョンからのパッチ |
| 657 | 699 | @cindex patching |
| 658 | 700 | |
| 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して、次のようにタイプしてください。 | |
| 660 | 704 | |
| 661 | 705 | @example |
| 662 | 706 | gunzip -cd ../source-highlight-1.3-1.3.1.patch.gz | patch -p1 |
| 663 | 707 | @end example |
| 664 | 708 | |
| 665 | -そして、コンパイルの手順をリスタートする(既にconfigureを実行しているならば、ただmakeをすればいいはずだ)。 | |
| 709 | +そして、コンパイル手順を再開します(configureを既に実行しているならば、makeをただ実行すればいいはずです)。 | |
| 710 | + | |
| 666 | 711 | |
| 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 | |
| 668 | 713 | @section lessでのsource-highlightの使用 |
| 669 | 714 | |
| 670 | -これはKonstantine Serebrianyが提案したことだ。 | |
| 671 | -@file{src-hilite-lesspipe.sh}というスクリプトがsource-highlightと一緒にインストールされるだろう。 | |
| 672 | -次に挙げる環境変数を使うことができる。 | |
| 715 | +これは、Konstantine Serebrianyが提案しました。 | |
| 716 | +@file{src-hilite-lesspipe.sh}というスクリプトがsource-highlightと一緒にインストールされます。 | |
| 717 | +以下の環境変数を利用できます。 | |
| 673 | 718 | |
| 674 | 719 | @example |
| 675 | 720 | export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s" |
| 676 | 721 | export LESS=' -R ' |
| 677 | 722 | @end example |
| 678 | 723 | |
| 679 | -このようにすれば、ファイルをlessを使ってブラウズするとき、それがsource-highlightによって処理されるソースファイルであれば、自動的にハイライトされる。 | |
| 724 | +このようにすれば、lessを使ってファイルを閲覧する時、source-highlightによって処理されるソースファイルであれば、自動的にハイライトされるようになります。 | |
| 725 | + | |
| 680 | 726 | |
| 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 | |
| 682 | 728 | @section source-highlightのCGIとして使用 |
| 683 | 729 | |
| 684 | 730 | @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 | +このような実行ファイルは、次のコマンドを実行して構築できます。 | |
| 689 | 735 | |
| 690 | 736 | @example |
| 691 | 737 | make source-highlight-cgi |
| 692 | 738 | @end example |
| 693 | 739 | |
| 694 | 740 | @noindent |
| 695 | -これは@file{src}ディレクトリで実行する。 | |
| 741 | +このコマンドは、@file{src}ディレクトリで実行します。 | |
| 696 | 742 | |
| 697 | 743 | |
| 698 | -@node .rpmのビルド, , source-highlightのCGIとして使用, インストール | |
| 699 | -@section .rpmのビルド | |
| 744 | +@node Building .rpm, , Using source-highlight as a CGI, Installation | |
| 745 | +@section .rpmの構築 | |
| 700 | 746 | @cindex rpm |
| 701 | 747 | |
| 702 | -Christian W. Zuckschwerdtが.rpmと.rpm.srcをビルドするサポートを追加した。 | |
| 703 | -バイナリの入った.rpmをビルドするには次のコマンドを実行すればよい: | |
| 748 | +Christian W. Zuckschwerdtは、.rpmと.rpm.srcを構築するサポートを追加しました。 | |
| 749 | +バイナリの入った.rpmを構築するには、次のコマンドを実行します。 | |
| 704 | 750 | |
| 705 | 751 | @example |
| 706 | 752 | rpmbuild -tb source-highlight-@value{VERSION}.tar.gz |
| 707 | 753 | @end example |
| 708 | 754 | |
| 709 | -そしてソースの入った.rpm.srcをビルドするには次のようにする: | |
| 755 | +そして、ソースの入った.rpm.srcを構築するには、次のようにします。 | |
| 710 | 756 | |
| 711 | 757 | @example |
| 712 | 758 | rpmbuild -ts source-highlight-@value{VERSION}.tar.gz |
| 713 | 759 | @end example |
| 714 | 760 | |
| 715 | 761 | |
| 716 | -@node Copying, 簡単な使い方, インストール, Top | |
| 762 | +@node Copying, Simple Usage, Installation, Top | |
| 717 | 763 | @chapter Copying Conditions |
| 718 | 764 | @cindex Copying conditions |
| 719 | 765 |
| @@ -724,15 +770,17 @@ under the terms of the GNU General Public License that accompanies this software | ||
| 724 | 770 | GNU @command{source-highlight} was written and |
| 725 | 771 | maintained by Lorenzo Bettini @value{myhomepage}. |
| 726 | 772 | |
| 727 | -@node 簡単な使い方, 設定ファイル, Copying, Top | |
| 773 | + | |
| 774 | +@node Simple Usage, Configuration files, Copying, Top | |
| 728 | 775 | @chapter 簡単な使い方 |
| 729 | 776 | @cindex sample |
| 730 | 777 | |
| 731 | -ここで、@command{source-highlight}実行する実際的な例を示す@footnote{長過ぎるコマンドラインは、@code{\}によって、インデントされた複数行に分割されている。もちろんどうしてもというなら一行で書いてもよい}。 | |
| 778 | +ここで、@command{source-highlight}を実行する実際的な例を示します@footnote{コマンドラインが長過ぎる場合、@code{\}によって、インデントされた複数行に分割されます。もちろん、どうしてもというなら、一行で書いても構いません。}。 | |
| 732 | 779 | |
| 733 | -Source-highlightは、ソースコードの字面だけを解析するので、そのプログラムソースが正しく書かれていることが前提となっている。 | |
| 780 | +Source-highlightは、ソースコードの字面だけを解析します。 | |
| 781 | +そのため、プログラムソースが正しく書かれていることが前提となっています。 | |
| 734 | 782 | |
| 735 | -source-highlightの実行方法を示す(この例ではC/C++の入力ファイルを使うが、それ以外のsource-highlightの入力言語に対しても有効である): | |
| 783 | +source-highlightの実行方法を示します(この例では、C/C++の入力ファイルを使いますが、これは、source-highlightのその他の入力言語に対しても有効です)。 | |
| 736 | 784 | |
| 737 | 785 | @example |
| 738 | 786 | source-highlight --src-lang cpp --out-format html \ |
| @@ -742,13 +790,14 @@ source-highlight --src-lang cpp --out-format html \ | ||
| 742 | 790 | @var{options} |
| 743 | 791 | @end example |
| 744 | 792 | |
| 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})には、指定言語の各部のフォーマット方法についての情報を入れます(キーワードを青のボールドで、など)。 | |
| 749 | 798 | |
| 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 | +これらを混用するとエラーとなります。 | |
| 752 | 801 | |
| 753 | 802 | @example |
| 754 | 803 | source-highlight -o main.html main.cpp |
| @@ -757,134 +806,146 @@ source-highlight [OPTIONS]... -i input_file -o output_file | ||
| 757 | 806 | source-highlight [OPTIONS]... [FILES]... |
| 758 | 807 | @end example |
| 759 | 808 | |
| 760 | -@code{STDOUT}という文字列が@code{-o (--output)}オプションとして渡された場合、出力は標準出力に強制される。 | |
| 809 | +@code{STDOUT}という文字列が@code{-o}(@code{--output})オプションとして渡された場合、出力は標準出力に強制されます。 | |
| 761 | 810 | |
| 762 | -@code{-s (--src-lang)}が指定されていなければ、ソース言語は、入力ファイルの拡張子もしくはファイル名自体から推定される(小文字のバージョンを使うかもしれない(訳注:えーと?後でも出てくるが、どういう意味だろう。ファイル名を小文字にした名前の言語定義ファイルを使うこともあるとか...そういう意味かな?))。 | |
| 763 | -これは、もちろん、標準入力のリダイレクトでは働かない。 | |
| 764 | -詳細については、@ref{入力言語の検出方法}を参照してほしい。 | |
| 811 | +@code{-s}(@code{--src-lang})オプションが指定されていなければ、ソース言語は、入力ファイルの拡張子、もしくは、ファイル名自体から推定されます(小文字のバージョンを使うかもしれません)。 | |
| 812 | +これは、もちろん、標準入力のリダイレクトでは働きません。 | |
| 813 | +詳細については、別の節を参照してください(@pxref{How the input language is discovered})。 | |
| 765 | 814 | |
| 766 | -@code{-f (--out-format)}が指定されていない場合、出力はHTMLで生成される。 | |
| 815 | +@code{-f}(@code{--out-format})が指定されていない場合、出力はHTMLで生成される。 | |
| 767 | 816 | |
| 768 | -@code{--style-file}が指定されていなければ、配布物に含まれている@file{default.style}が使われる(詳細は@ref{出力フォーマットスタイル}を参照していほしい)。 | |
| 817 | +@code{--style-file}が指定されていなければ、配布物に含まれている@file{default.style}が使われます。 | |
| 818 | +詳細は、別の節を参照してください(@pxref{Output format style}。 | |
| 769 | 819 | |
| 770 | 820 | @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:: | |
| 776 | 826 | @end menu |
| 777 | 827 | |
| 778 | -@node HTMLの出力とXHTMLの出力, LaTeXの出力, 簡単な使い方, 簡単な使い方 | |
| 828 | + | |
| 829 | +@node HTML and XHTML output, LaTeX output, Simple Usage, Simple Usage | |
| 779 | 830 | @section HTMLの出力とXHTMLの出力 |
| 780 | 831 | @cindex HTML |
| 781 | 832 | @cindex XHTML |
| 782 | 833 | |
| 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}というファイルです。 | |
| 788 | 839 | |
| 789 | -さらに、@file{htmltable.outlang}というファイルが、HTMLテーブルに括られたHTMLを出力するのに使われる(スタイルファイルで指定すれば背景色も使用する)。 | |
| 790 | -@file{xhtmltable.outlang}というファイルがXHTMLの出力に対して同じことをするものだ。 | |
| 840 | +さらに、@file{htmltable.outlang}というファイルは、HTMLテーブルに括られたHTMLを出力するのに使われます(スタイルファイルで指定すれば背景色も使用します)。 | |
| 841 | +XHTMLの出力に対して同じことを行うファイルは@file{xhtmltable.outlang}です。 | |
| 791 | 842 | |
| 792 | -@node LaTeXの出力, Texinfoの出力, HTMLの出力とXHTMLの出力, 簡単な使い方 | |
| 843 | + | |
| 844 | +@node LaTeX output, Texinfo output, HTML and XHTML output, Simple Usage | |
| 793 | 845 | @section @LaTeX{}の出力 |
| 794 | 846 | @cindex @LaTeX{} |
| 795 | 847 | |
| 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 | + | |
| 800 | 853 | |
| 801 | -@node Texinfoの出力, DocBookの出力, Texinfoの出力, 簡単な使い方 | |
| 854 | +@node Texinfo output, DocBook output, LaTeX output, Simple Usage | |
| 802 | 855 | @section Texinfoの出力 |
| 803 | 856 | @cindex Texinfo |
| 804 | 857 | |
| 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})。 | |
| 807 | 861 | |
| 808 | -@node DocBookの出力, ANSIカラーエスケープシーケンス, Texinfoの出力, 簡単な使い方 | |
| 862 | + | |
| 863 | +@node DocBook output, ANSI color escape sequences, Texinfo output, Simple Usage | |
| 809 | 864 | @section DocBookの出力 |
| 810 | 865 | @cindex DocBook |
| 811 | 866 | |
| 812 | -DocBookの出力は@code{<programlisting>}タグを使って生成される。 | |
| 813 | -もし、@code{--doc}というコマンドラインオプションが指定されれば、@code{<article>}ドキュメントが生成される。 | |
| 867 | +DocBookの出力は、@code{<programlisting>}タグを使って生成されます。 | |
| 868 | +もし、@code{--doc}というコマンドラインオプションが指定されれば、@code{<article>}ドキュメントが生成されます。 | |
| 869 | + | |
| 814 | 870 | |
| 815 | -@node ANSIカラーエスケープシーケンス, , DocBookの出力, 簡単な使い方 | |
| 871 | +@node ANSI color escape sequences, , DocBook output, Simple Usage | |
| 816 | 872 | @section ANSIカラーエスケープシーケンス |
| 817 | 873 | @cindex ANSI color |
| 818 | 874 | |
| 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 | + | |
| 821 | 878 | |
| 822 | -@node 設定ファイル, source-highlightの起動, 簡単な使い方, Top | |
| 879 | +@node Configuration files, Invoking source-highlight, Simple Usage, Top | |
| 823 | 880 | @chapter 設定ファイル |
| 824 | 881 | @cindex configuration files |
| 825 | 882 | |
| 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 | +これらのファイルについては次のセクションで説明します。 | |
| 828 | 886 | |
| 829 | 887 | @cindex @code{--data-dir} |
| 830 | -もし、そういったファイルのディレクトリが@code{--data-dir}というコマンドラインオプションで明示されていなければ、次の順でこれらのファイルを探す: | |
| 888 | +そういったファイルのディレクトリが、@code{--data-dir}というコマンドラインオプションで明示されていなければ、これらのファイルを次の順に探します: | |
| 831 | 889 | |
| 832 | 890 | @itemize |
| 833 | 891 | @item |
| 834 | 892 | カレントディレクトリ |
| 893 | + | |
| 835 | 894 | @item |
| 836 | -設定ファイルのインストールディレクトリ。 | |
| 837 | -@ref{インストール}を参照(このディレクトリは、コンパイル時にsource-highlightにハードコードされていることを覚えていてほしい)。 | |
| 895 | +設定ファイルのインストールディレクトリ(@pxref{Installation})(このディレクトリは、コンパイル時に、source-highlightにハードコードされていることを覚えていてください) | |
| 896 | + | |
| 838 | 897 | @item |
| 839 | -source-highlightコマンドが明示的なパス名を付けて指定された場合、インストールディレクトリが依然使用されるが、その明示したパス名に対して相対的である(訳注:イマイチ理解していない)。 | |
| 898 | +source-highlightコマンドが明示的なパス名を付けて指定された場合、インストールディレクトリ名が依然使用されますが、その明示したパス名に対して相対的となります。 | |
| 840 | 899 | @end itemize |
| 841 | 900 | |
| 842 | -とくに、ユーザは、環境変数 | |
| 843 | 901 | @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})。 | |
| 845 | 903 | |
| 846 | -実行の際にどのファイルが使われているかを確認したいときは、@code{--verbose}オプションを使うことができる。 | |
| 904 | +実行の際、どのファイルが使われるかを確認したい時は、@code{--verbose}オプションを使ってください。 | |
| 847 | 905 | |
| 848 | 906 | @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:: | |
| 857 | 915 | @end menu |
| 858 | 916 | |
| 859 | -@node 出力フォーマットスタイル, CSSを使用した出力フォーマットスタイル, 設定ファイル, 設定ファイル | |
| 917 | + | |
| 918 | +@node Output format style, Output format style using CSS, Configuration files, Configuration files | |
| 860 | 919 | @section 出力フォーマットスタイル |
| 861 | 920 | @cindex output style |
| 862 | 921 | @cindex default.style |
| 863 | 922 | |
| 864 | -@file{default.style}というファイルにシンタックスハイライティングのオプションを指定しなければならない@footnote{バージョン2.1より前には、このファイルは@file{tags.j2h}という非常に曖昧な名前で呼ばれていた。今度の名前付けの規則が良いものになっていることを信じている:-)}。 | |
| 865 | -言語定義のファイルで定義された各要素について、フォーマッティングのオプションを指定することができる(その要素のリストは、 | |
| 923 | +@file{default.style}というファイルには、シンタックスハイライティングのユーザオプションを指定しなければなりません@footnote{バージョン2.1より前には、このファイルは@file{tags.j2h}という非常に曖昧な名前で呼ばれていました。 | |
| 924 | +今度の名前付けの規則が良いものになっていることを信じています:-)}。 | |
| 866 | 925 | @cindex @code{--show-lang-elements} |
| 867 | -@code{--show-lang-elements}を使うと得られる)。 | |
| 868 | -@ref{言語エレメントの一覧}を参照してほしい。 | |
| 926 | +言語定義のファイルで定義された各要素について、フォーマッティングのオプションを指定することができます(その要素のリストは、@code{--show-lang-elements}を使うと得られます)。 | |
| 927 | +@xref{Listing Language Elements}. | |
| 869 | 928 | |
| 870 | 929 | @cindex @code{bgcolor} |
| 871 | 930 | @cindex background color |
| 872 | -バージョン2.6から、出力ドキュメントの背景色も指定できる。 | |
| 873 | -これには@code{bgcolor}というキーワードを使う(@code{--doc}というコマンドラインオプションが使われたときだけ目にできるかもしれない)。 | |
| 931 | +バージョン2.6から、出力ドキュメントの背景色も指定できます。 | |
| 932 | +これには、@code{bgcolor}というキーワードを使います(@code{--doc}というコマンドラインオプションが使われた時だけ目にできるかもしれません)。 | |
| 874 | 933 | |
| 875 | -多数のエレメントが、同じフォーマッティングオプションを共有している場合、同じ行に、これらのエレメントをカンマで分割して指定することができる@footnote{バージョン2.6から}。 | |
| 934 | +多数のエレメントが、同じフォーマッティングオプションを共有している場合、これらのエレメントをカンマで分割して、同じ行に指定することができます@footnote{バージョン2.6からです。}。 | |
| 876 | 935 | |
| 877 | -ここに、この配布物と一緒に入っている@file{default.style}がある(これは、@ref{言語定義のチュートリアル}で示されている@file{style.lang}を使ってフォーマットされている): | |
| 936 | +以下は、この配布物と一緒に入っている@file{default.style}です。 | |
| 937 | +別の節で示されている@file{style.lang}を使ってフォーマットされています(@pxref{Tutorials on Language Definitions})。 | |
| 878 | 938 | |
| 879 | 939 | @include default.style.texinfo |
| 880 | 940 | |
| 881 | -このファイルは、Source-highlightの配布物に一緒に入っている言語定義で定義されているほとんどのエレメントについてスタイル定義を試みている。 | |
| 941 | +このファイルは、Source-highlightの配布物に同梱の言語定義で定義されている大半のエレメントについて、スタイル定義を試みています。 | |
| 882 | 942 | |
| 883 | 943 | @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}. | |
| 886 | 947 | |
| 887 | -次の行を追加するとノーマルテキストの色を指定することもできる。 | |
| 948 | +次の行を追加すると、ノーマルテキストの色を指定することもできる。 | |
| 888 | 949 | |
| 889 | 950 | @example |
| 890 | 951 | normal darkblue ; |
| @@ -892,20 +953,20 @@ normal darkblue ; | ||
| 892 | 953 | |
| 893 | 954 | @cindex color |
| 894 | 955 | @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}エレメントに背景色が指定されています)。 | |
| 898 | 959 | |
| 899 | -背景色は出力フォーマットの全てで利用できるわけではないことに注意してほしい。 | |
| 900 | -XHTMLや@LaTeX{}では利用できるが、HTML@footnote{もちろん、HTMLと外部のCSSファイルを使えば同じ結果は得られる}ではそうではない。 | |
| 960 | +背景色は、出力フォーマットの全てで利用できるわけではないことに注意してください。 | |
| 961 | +XHTMLや@LaTeX{}では利用できますが、HTMLでは利用できません@footnote{もちろん、HTMLと外部のCSSファイルを使えば同じ結果は得られます}。 | |
| 901 | 962 | |
| 902 | 963 | @cindex bold |
| 903 | 964 | @cindex italics |
| 904 | 965 | @cindex underline |
| 905 | 966 | @cindex fixed |
| 906 | 967 | @cindex notfixed |
| 907 | -それから、ボールドやイタリックなどのような、それ以上のフォーマティングオプションを指定することができる。 | |
| 908 | -以下が使用できるキーワードだ: | |
| 968 | +それから、ボールドやイタリックなどのように、フォーマティングオプションをさらに指定することができます。 | |
| 969 | +以下は、使用できるキーワードです。 | |
| 909 | 970 | |
| 910 | 971 | @example |
| 911 | 972 | b = bold |
| @@ -917,30 +978,30 @@ noref = no reference information is generated for these elements | ||
| 917 | 978 | @end example |
| 918 | 979 | |
| 919 | 980 | @cindex color |
| 920 | -バージョン2.2からは、色の指定が不要になった。 | |
| 921 | -たとえば、@file{texinfo.style}を次に示す(Texinfoの出力に対して色を使っていない): | |
| 981 | +バージョン2.2からは色の指定が不要になりました。 | |
| 982 | +例えば、@file{texinfo.style}を次に示します(Texinfoの出力に色を使っていません): | |
| 922 | 983 | |
| 923 | 984 | @include texinfo.style.texinfo |
| 924 | 985 | |
| 925 | 986 | これらのオプションはカンマ区切りで複数指定してもよい。 |
| 926 | -たとえば次のようになる。 | |
| 987 | +例えば、次のようになる。 | |
| 927 | 988 | |
| 928 | 989 | @example |
| 929 | 990 | keyword blue u, b ; |
| 930 | 991 | @end example |
| 931 | 992 | |
| 932 | 993 | @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>}というフォーマット結果を生じます。 | |
| 937 | 998 | |
| 938 | 999 | @cindex noref |
| 939 | -@code{noref}オプションは、このエレメントについて、リファレンス情報が生成されないというとを指定する(@ref{リファレンスの生成}を参照)。 | |
| 940 | -たとえば、これは@code{comment}エレメントに対して使われる。 | |
| 941 | -コメント内のエレメントについてクロスリファレンスを探索したいとは思わないからだ。 | |
| 1000 | +@code{noref}オプションは、このエレメントについてリファレンス情報が生成されないというとを指定します(@pxref{Generating References})。 | |
| 1001 | +例えば、これは、@code{comment}エレメントに対して使われます。 | |
| 1002 | +コメント内のエレメントについて、クロスリファレンスを探索したいとは思わないからです。 | |
| 942 | 1003 | |
| 943 | -以下は、source-highlightが処理可能な色の論理名である@footnote{これらのHTMLでの色は、@file{colors.html}というファイルで見ることができる}: | |
| 1004 | +以下は、source-highlightが処理可能な色の論理名です@footnote{HTMLでのこれらの色は、@file{colors.html}というファイルで見ることができます。}。 | |
| 944 | 1005 | |
| 945 | 1006 | @example |
| 946 | 1007 | black |
| @@ -964,151 +1025,166 @@ white | ||
| 964 | 1025 | @end example |
| 965 | 1026 | |
| 966 | 1027 | @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 | +もちろん、生成の際、二重引用符は取り除かれます。 | |
| 970 | 1031 | |
| 971 | -たとえば、次のものは@file{tests}ディレクトリで使われている@file{syslog.style}である。 | |
| 972 | -これは、カラースキームを直接使用している。 | |
| 1032 | +例えば、次のものは@file{tests}ディレクトリで使われる@file{syslog.style}です。 | |
| 1033 | +これは、カラースキームを直接使用しています。 | |
| 973 | 1034 | |
| 974 | 1035 | @include syslog.style.texinfo |
| 975 | 1036 | |
| 976 | -カラースキームを直接使用する場合には、source-highlightは変換を何も実行せず、指定されたカラースキームをそのまま出力することに注意してほしい。 | |
| 977 | -たとえば、@code{"brown"}という指定は、@code{brown}とは違う。 | |
| 978 | -前者はそのまま出力されるだろうが、後者は、出力フォーマットの対応する色へと変換される(HTMLについては見た目の結果は同じになりそうだ)。 | |
| 1037 | +カラースキームを直接使用する場合には、source-highlightは変換を何も実行せず、指定されたカラースキームをそのまま出力することに注意してください。 | |
| 1038 | +例えば、@code{"brown"}という指定は、@code{brown}とは異なります。 | |
| 1039 | +前者は、そのまま出力されます。 | |
| 1040 | +後者は、出力フォーマットの対応する色へと変換されます(HTMLについては見た目の結果は同じになりそうです)。 | |
| 979 | 1041 | |
| 980 | -指定された出力フォーマットによって処理されるカラースキームの文字列の指定はあなた次第である。 | |
| 981 | -ゆえに、別々の出力フォーマットの間では、直接カラースキームを指定することはポータブルではないかもしれない。 | |
| 982 | -たとえば、@code{"#00FF00"}はHTMLでは有効だが、@LaTeX{}ではそうではない。 | |
| 1042 | +指定出力フォーマットによって処理されるカラースキームの文字列指定はユーザに任されています。 | |
| 1043 | +ゆえに、別々の出力フォーマットの間では、カラースキームを直接指定すると可搬性に関わるかもしれません。 | |
| 1044 | +例えば、@code{"#00FF00"}はHTMLでは有効ですが、@LaTeX{}ではそうではありません。 | |
| 983 | 1045 | |
| 984 | -@node CSSを使用した出力フォーマットスタイル, デフォルトのスタイル, 出力フォーマットスタイル, 設定ファイル | |
| 1046 | + | |
| 1047 | +@node Output format style using CSS, Default Styles, Output format style, Configuration files | |
| 985 | 1048 | @section CSSを使用した出力フォーマットスタイル |
| 986 | 1049 | |
| 987 | 1050 | @cindex CSS |
| 988 | -バージョン2.6からは、制限されたCSSのシンタックスを使って出力フォーマットスタイルを指定できるようになった。 | |
| 989 | -これは、@code{--css}オプションを使ってsource-highlightが生成する出力とは無関係であることに注意してほしい。 | |
| 1051 | +バージョン2.6からは、制限付きのCSSシンタックスを使って出力フォーマットスタイルを指定できるようになりました。 | |
| 1052 | +これは、@code{--css}オプションを使ってsource-highlightが生成する出力とは無関係であることに注意してください。 | |
| 990 | 1053 | |
| 991 | 1054 | @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}. | |
| 995 | 1060 | |
| 996 | -この機能は基本的にコードの再利用のために用意されている。 | |
| 997 | -CSSファイルを使って出力フォーマットスタイルを指定してから、同じCSSファイルを他のHTMLページの実際のスタイルシートとして使うことができる(あるいは、@code{-css}オプションを指定してsource-highlightで生成した出力ファイルでさえも使える)。 | |
| 1061 | +この機能は、コードの再利用のために基本的に用意されています。 | |
| 1062 | +CSSファイルを使って出力フォーマットスタイルを指定してから、他のHTMLページの実際のスタイルシートとして同じCSSファイルを使うことができます(あるいは、@code{-css}オプションを指定してsource-highlightで生成した出力ファイルも使えます)。 | |
| 998 | 1063 | |
| 999 | -この機能はかなり原始的なものなので、CSSのシンタックスを制限したサブセットしか認識しない。 | |
| 1000 | -とくに、セレクタは常にCSSのクラスセレクタとして扱うので、必ずドットから始めなければならない。 | |
| 1001 | -@code{/* */}のコメントは処理される。 | |
| 1002 | -source-highlightが処理しないプロパティ(と、その値)は単に(そして静かに)取り除かれる。 | |
| 1064 | +この機能はかなり原始的なものですので、CSSのシンタックスを制限したサブセットしか認識しません。 | |
| 1065 | +特に、セレクタは、CSSのクラスセレクタとして常に扱いますので、ドットから必ず始めなければなりません。 | |
| 1066 | +@code{/* */}のコメントは処理されます。 | |
| 1067 | +source-highlightが処理しないプロパティ(および、その値)は、単に(そして、黙って)取り除かれます。 | |
| 1003 | 1068 | |
| 1004 | -次のものは、スタイルフォーマットの指定としてsource-highlightが正しく処理するCSSの指定の例である: | |
| 1069 | +次のものは、スタイルフォーマットの指定としてsource-highlightが正しく処理するCSS指定の例です。 | |
| 1005 | 1070 | |
| 1006 | 1071 | @include css_example.css.texinfo |
| 1007 | 1072 | |
| 1008 | -最後に、次のものが、@ref{出力フォーマットスタイル}で提示された@file{default.style}に対応する@file{default.css}である: | |
| 1073 | +最後に、以下は、別の節で提示された@file{default.style}に対応する@file{default.css}です(@pxref{Output format style})。 | |
| 1009 | 1074 | |
| 1010 | 1075 | @include default.css.texinfo |
| 1011 | 1076 | |
| 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スタイルを使ったものです。 | |
| 1013 | 1082 | |
| 1014 | -source-highlightには、HTMLドキュメントの標準的なCSSファイルとしても、あるいは、@code{--style-css-file}へ渡すスタイルファイルとしても使える沢山のCSSファイルが付属している。 | |
| 1015 | -ドキュメンテーションのインストールディレクトリの中に@file{style_examples.html}というファイルがある。 | |
| 1016 | -これは多数の出力例を示すもので、それぞれ別々のCSSスタイルを使ったものだ。 | |
| 1017 | 1083 | |
| 1018 | -@node デフォルトのスタイル, 言語マップ, CSSを使用した出力フォーマットスタイル, 設定ファイル | |
| 1084 | +@node Default Styles, Language map, Output format style using CSS, Configuration files | |
| 1019 | 1085 | @section デフォルトのスタイル |
| 1020 | 1086 | |
| 1021 | -次のファイル@footnote{バージョン2.9から}(デフォルトファイルは@file{style.defaults})は、スタイルファイルの中で、出力スタイルが指定されていない言語エレメントのデフォルトスタイルのリストだ。 | |
| 1022 | -特に次の行を見てほしい(コメント行は@code{#}で始まる): | |
| 1087 | +次に挙げるファイル@footnote{バージョン2.9から。}(デフォルトファイルは@file{style.defaults})は、スタイルファイルの中で、出力スタイルが指定されていない言語エレメントのデフォルトスタイルのリストです。 | |
| 1088 | +特に、次のような行があります(コメント行は@code{#}で始まります)。 | |
| 1023 | 1089 | |
| 1024 | 1090 | @example |
| 1025 | 1091 | elem1 = elem2 |
| 1026 | 1092 | @end example |
| 1027 | 1093 | |
| 1028 | 1094 | @noindent |
| 1029 | -この行は、エレメント、ここではelem1に対するスタイルが、スタイルファイルで指定されていない場合、elem1がelem2と同じスタイルを持つということを示している。 | |
| 1095 | +こういう行は、elem1というエレメントに対するスタイルがスタイルファイルで指定されていない場合、elem1はelem2と同じスタイルを持つということを示しています。 | |
| 1030 | 1096 | |
| 1031 | 1097 | @cindex style.defaults |
| 1032 | -たとえば、次のものはsource-highlightに付いている@file{style.defaults}だ: | |
| 1098 | +例えば、以下は、source-highlightに付いている@file{style.defaults}です。 | |
| 1033 | 1099 | |
| 1034 | 1100 | @include style.defaults.texinfo |
| 1035 | 1101 | |
| 1036 | 1102 | @noindent |
| 1037 | -この場合、@code{preproc}エレメントのスタイルが@code{keyword}エレメントのスタイルをデフォルトとする。 | |
| 1103 | +この場合においては、@code{preproc}エレメントのスタイルが@code{keyword}エレメントのスタイルをデフォルトとしています。 | |
| 1104 | + | |
| 1105 | +独自のスタイルファイルを作成し、そのスタイルの中で、同じ出力スタイルを持つエレメントのスタイルを全て指定したくないような場合にこのファイルは便利です(例えば、デフォルトのスタイルでは、@code{preproc}エレメントはkeywordとは違うフォーマットがされます。 | |
| 1106 | +独自スタイルを使えば、スタイルを指定しない場合、@code{preproc}エレメントは、@code{keyword}と同じようにフォーマットされます)。 | |
| 1038 | 1107 | |
| 1039 | -このファイルは、独自のスタイルファイルを作成して、そのスタイルの中で、同じ出力スタイルを持つエレメントのスタイルを全て指定したくないような場合に便利だ(たとえば、デフォルトのスタイルでは、@code{preproc}エレメントはkeywordとは違うフォーマットがされるが、独自にスタイルを指定するのに、そのスタイルを指定していなければ、@code{preproc}エレメントは@code{keyword}と同じようにフォーマットされる)。 | |
| 1040 | 1108 | |
| 1041 | -@node 言語マップ, 言語の定義ファイル, デフォルトのスタイル, 設定ファイル | |
| 1109 | +@node Language map, Language definition files, Default Styles, Configuration files | |
| 1042 | 1110 | @section 言語マップ |
| 1043 | 1111 | @cindex language map |
| 1044 | 1112 | |
| 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}と言うファイルです。 | |
| 1048 | 1117 | |
| 1049 | -もちろん、このファイルの設定は、独自の言語マップファイルを書いて、コマンドラインオプションの@code{--lang-map}でそのファイルを指定すれば、オーバーライドすることもできる。 | |
| 1050 | -さらに、上で説明したように、カレントディレクトリに@file{lang.map}が存在すれば、そのバージョンが使用される。 | |
| 1051 | -そのファイルのフォーマットは極めてシンプルだ(コメント行は@code{#}で始まる): | |
| 1118 | +もちろん、このファイルの設定をオーバーライドすることもできます。 | |
| 1119 | +独自の言語マップファイルを書いて、コマンドラインオプションの@code{--lang-map}でそのファイルを指定してください。 | |
| 1120 | +さらに、上で説明したように、カレントディレクトリに@file{lang.map}が存在すれば、そのファイルが使用されます。 | |
| 1121 | +ファイルのフォーマットは極めてシンプルです(コメント行は@code{#}で始まります)。 | |
| 1052 | 1122 | |
| 1053 | 1123 | @example |
| 1054 | 1124 | extension = language definition file |
| 1055 | 1125 | @end example |
| 1056 | 1126 | |
| 1057 | -デフォルトの言語定義ファイルは@ref{導入}の中で示されている。 | |
| 1127 | +デフォルトの言語定義ファイルは別の節の中で示されています(@pxref{Introduction})。 | |
| 1058 | 1128 | |
| 1059 | -@node 言語の定義ファイル, 出力言語マップ, 言語マップ, 設定ファイル | |
| 1129 | + | |
| 1130 | +@node Language definition files, Output Language map, Language map, Configuration files | |
| 1060 | 1131 | @section 言語の定義ファイル |
| 1061 | 1132 | |
| 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 | + | |
| 1065 | 1137 | |
| 1066 | -@node 出力言語マップ, 出力言語の定義ファイル, 言語の定義ファイル, 設定ファイル | |
| 1138 | +@node Output Language map, Output Language definition files, Language definition files, Configuration files | |
| 1067 | 1139 | @section 出力言語マップ |
| 1068 | 1140 | @cindex output language map |
| 1069 | 1141 | |
| 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}と呼ばれるファイルが付属しています。 | |
| 1073 | 1145 | |
| 1074 | -もちろん、このファイルの設定は、独自の言語マップを書いて、そういったファイルをコマンドラインオプションの@code{--outlang-map}で指定すれば、オーバーライドすることができる。 | |
| 1075 | -さらに、上で述べたように、@file{outlang.map}というファイルがカレントディレクトリに存在すれば、そのバージョンが使われる。 | |
| 1076 | -そういったファイルのフォーマットは極めてシンプルだ: | |
| 1146 | +もちろん、このファイルの設定はオーバーライドすることができます。 | |
| 1147 | +独自の言語マップを書いて、そのファイルを、コマンドラインオプションの@code{--outlang-map}で指定してください。 | |
| 1148 | +さらに、上で述べたように、@file{outlang.map}というファイルがカレントディレクトリに存在すれば、そのファイルが使われます。 | |
| 1149 | +ファイルのフォーマットは極めてシンプルです。 | |
| 1077 | 1150 | |
| 1078 | 1151 | @example |
| 1079 | 1152 | output format name = language definition file |
| 1080 | 1153 | @end example |
| 1081 | 1154 | |
| 1082 | -デフォルトの言語定義ファイルは@ref{導入}で示されている。 | |
| 1155 | +デフォルトの言語定義ファイルは別の節で示しています(@pxref{Introduction})。 | |
| 1083 | 1156 | |
| 1084 | -とくに、出力言語マップの出力フォーマットの名前には、付け方がある。 | |
| 1085 | -@code{-css}サフィックスが付いているものは、@code{--css}というコマンドラインオプションが指定されたときに使われるものだ。 | |
| 1157 | +特に、出力言語マップの出力フォーマットの名前には付け方があります。 | |
| 1158 | +@code{-css}サフィックスが付いているものは、@code{--css}というコマンドラインオプションが指定される時に使われるものです。 | |
| 1086 | 1159 | |
| 1087 | -@node 出力言語の定義ファイル, 独自定義ファイルの開発, 出力言語マップ, 設定ファイル | |
| 1160 | + | |
| 1161 | +@node Output Language definition files, Developing your own definition files, Output Language map, Configuration files | |
| 1088 | 1162 | @section 出力言語の定義ファイル |
| 1089 | 1163 | |
| 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})。 | |
| 1093 | 1167 | |
| 1094 | -これらのファイルはsource-highlightの配布物の一部であるが、次の場所から自由にダウンロードすることもできる: | |
| 1168 | +これらのファイルはsource-highlightの配布物の一部ですが、次の場所から自由にダウンロードすることができます。 | |
| 1095 | 1169 | |
| 1096 | 1170 | @value{outlangfilesurl} |
| 1097 | 1171 | |
| 1098 | -@node 独自定義ファイルの開発, , 出力言語の定義ファイル, 設定ファイル | |
| 1172 | + | |
| 1173 | +@node Developing your own definition files, , Output Language definition files, Configuration files | |
| 1099 | 1174 | @section 独自定義ファイルの開発 |
| 1100 | 1175 | |
| 1101 | -新しい言語定義を書いたり、既存の言語定義を訂正修正して、それを私に送ってくれるようにお勧めしたい。 | |
| 1102 | -そうすれば、source-highlightの配布物にそれらを追加することができる。 | |
| 1176 | +新しい言語定義を書いたり、既存の言語定義を訂正・修正した場合、私に送ってくださるようにお願いします。 | |
| 1177 | +そうすれば、source-highlightの配布物にそれらを追加することができます。 | |
| 1103 | 1178 | |
| 1104 | -これらのファイルにはさらなる説明が必要なので(しかし、source-highlightの通常の使用には必要ではない)、複数のパート@ref{言語の定義}と@ref{出力言語の定義}で丁寧に説明する。 | |
| 1179 | +これらのファイルにはさらなる説明が必要です(しかし、source-highlightの通常の使用には必要でははありません)。 | |
| 1180 | +複数のパート(@pxref{Language Definitions}, and @ref{Output Language Definitions})で丁寧に説明することにします。 | |
| 1105 | 1181 | |
| 1106 | -これらのファイルはsource-highlightの配布物の一部であるが、次の場所から自由にダウンロードすることもできる: | |
| 1182 | +これらのファイルはsource-highlightの配布物の一部ですが、次の場所から自由にダウンロードすることができます。 | |
| 1107 | 1183 | |
| 1108 | 1184 | @value{langfilesurl} |
| 1109 | 1185 | |
| 1110 | 1186 | |
| 1111 | -@node source-highlightの起動, 言語の定義, 設定ファイル, Top | |
| 1187 | +@node Invoking source-highlight, Language Definitions, Configuration files, Top | |
| 1112 | 1188 | @chapter @command{source-highlight}の起動 |
| 1113 | 1189 | @cindex invoking |
| 1114 | 1190 | @cindex version |
| @@ -1117,19 +1193,20 @@ output format name = language definition file | ||
| 1117 | 1193 | @cindex help |
| 1118 | 1194 | @cindex getting help |
| 1119 | 1195 | |
| 1120 | -@command{source-highlight}プログラムを実行する形式は次のようになる: | |
| 1196 | +@command{source-highlight}プログラムの実行書式は次のようになります。 | |
| 1121 | 1197 | |
| 1122 | 1198 | @example |
| 1123 | 1199 | source-highlight @var{option} @dots{} |
| 1124 | 1200 | @end example |
| 1125 | 1201 | |
| 1126 | -@code{source-highlight}は、@code{source-highlight --detailed-help}の出力で表示されるが、次のようなオプションをサポートしている: | |
| 1202 | +@code{source-highlight}は次のようなオプションをサポートしています。 | |
| 1203 | +これらのオプションは、@code{source-highlight --detailed-help}の出力で表示されます。 | |
| 1127 | 1204 | |
| 1128 | 1205 | @smallexample |
| 1129 | 1206 | @include help-output.texinfo |
| 1130 | 1207 | @end smallexample |
| 1131 | 1208 | |
| 1132 | -いくつかのオプションについて詳細に説明しよう(@code{--help}の出力自体から明らかなはずなものや、@ref{簡単な使い方}で既に説明済みのものは除く)。 | |
| 1209 | +いくつかのオプションについて詳細に説明します(@code{--help}の出力自体から分かるものや、別の節(@pxref{Simple Usage})で説明済みのものは除きます)。 | |
| 1133 | 1210 | |
| 1134 | 1211 | @c Formatting copied from the Texinfo 4.0 manual. |
| 1135 | 1212 | @table @code |
| @@ -1137,61 +1214,72 @@ source-highlight @var{option} @dots{} | ||
| 1137 | 1214 | @item --data-dir |
| 1138 | 1215 | @cindex @code{--data-dir} |
| 1139 | 1216 | |
| 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}を使うことができます。 | |
| 1144 | 1225 | |
| 1145 | 1226 | @item --doc |
| 1146 | 1227 | @itemx -d |
| 1147 | 1228 | |
| 1148 | -スタンドアロンの出力ドキュメント(すなわち、他のドキュメントにインクルードされるとは考えられていない出力ドキュメント)が欲しい場合には、このオプションを指定する(そうでない場合には、他のドキュメントにペーストできるテキストが得られるだけだ)。 | |
| 1149 | -このオプションを選択して、@code{--title}を指定しない場合には、タイトルとしてソースファイル名が使用される。 | |
| 1229 | +スタンドアロンの出力ドキュメント(すなわち、他のドキュメントにインクルードされるとは考えられていない出力ドキュメント)が欲しい場合には、このオプションを指定します(そうでない場合には、他のドキュメントにペーストできるテキストが得られるだけです)。 | |
| 1230 | +このオプションを選択して、かつ、@code{--title}を指定しない場合には、タイトルとしてソースファイル名を使用します。 | |
| 1150 | 1231 | |
| 1151 | 1232 | @item --no-doc |
| 1152 | -前述の@code{--doc}オプションは、実際には他のコマンドラインオプション(たとえば@code{--css})で暗黙のうちに指定される。 | |
| 1153 | -これをしたくない場合には(たとえば、グローバルなスタイルシートを持っている既存のドキュメントに出力をインクルードしたいなどの場合)、@code{--no-doc}を使うことでこれを無効にできる。 | |
| 1233 | +前述の@code{--doc}オプションは、実際には、他のコマンドラインオプション(例えば、@code{--css})で暗黙のうちに指定されるものです。 | |
| 1234 | +これを行わせたくない場合(例えば、グローバルなスタイルシートを持っている既存のドキュメントに出力をインクルードしたいなどの場合)、@code{--no-doc}を使うことで無効にできます。 | |
| 1154 | 1235 | |
| 1155 | 1236 | @item --css |
| 1156 | 1237 | @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ファイルとしてこのファイルに依存する場合)。 | |
| 1160 | 1241 | |
| 1161 | 1242 | @item --tab |
| 1162 | 1243 | @itemx -t |
| 1163 | -このオプションを使えば、タブ文字が指定された数の空白文字に変換される(タブ位置は保存される)。 | |
| 1164 | -このオプションは、行番号を生成するときには自動的に選択される。 | |
| 1244 | +このオプションを使えば、タブ文字が、指定された数の空白文字に変換されます(タブ位置は保存されます)。 | |
| 1245 | +このオプションは、行番号を生成する時には自動的に選択される。 | |
| 1165 | 1246 | |
| 1166 | 1247 | @item --style-file |
| 1167 | 1248 | @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}. | |
| 1170 | 1252 | |
| 1171 | 1253 | @item --style-defaults |
| 1172 | -スタイルファイルにスタイルの指定が無いエレメントのデフォルトのスタイルが入ったファイルを指定する(さらに詳しくは@ref{デフォルトのスタイル}を参照)。 | |
| 1254 | +スタイルファイルにスタイルの指定が無いエレメントのデフォルトのスタイルが入ったファイルを指定します。 | |
| 1255 | +さらに詳しくは別の節を参照してください。 | |
| 1256 | +@xref{Default Styles}. | |
| 1173 | 1257 | |
| 1174 | 1258 | @item --output-dir |
| 1175 | -source-highlightには複数の入力ファイルを渡すことができる(@ref{簡単な使い方}を参照)。 | |
| 1176 | -この場合出力ファイルの名前は指定できない。 | |
| 1177 | -そういう場合には、コマンドを起動したディレクトリの中に出力ファイルが自動的に生成される。 | |
| 1178 | -異なるディレクトリに出力ファイルを生成したい場合に、このオプションを使うことができる。 | |
| 1259 | +source-highlightには複数の入力ファイルを渡すことができます(@pxref{Simple Usage})。 | |
| 1260 | +この場合、出力ファイルの名前は指定できません。 | |
| 1261 | +そういう場合には、コマンドを起動したディレクトリの中に出力ファイルが自動的に生成されます。 | |
| 1262 | +異なるディレクトリに出力ファイルを生成したい場合には、このオプションを利用できます。 | |
| 1179 | 1263 | |
| 1180 | 1264 | @item --infer-lang |
| 1181 | 1265 | @cindex language inference |
| 1182 | 1266 | @cindex @code{--infer-lang} |
| 1183 | -入力言語を検出する推定メカニズムを強制する。 | |
| 1184 | -これは@ref{入力言語の検出方法}に詳述する。 | |
| 1267 | +入力言語を検出する推定メカニズムを強制します。 | |
| 1268 | +これは、別の節で詳述します。 | |
| 1269 | +@xref{How the input language is discovered}. | |
| 1185 | 1270 | |
| 1186 | 1271 | @item --line-number |
| 1187 | -指定されたパディング文字を使って(オプショナル)、出力に行番号を生成する@footnote{パディング文字はバージョン2.8から指定できる}(デフォルトのパディング文字は@code{0})。 | |
| 1272 | +指定されたパディング文字を使って(オプショナル)、出力に行番号を生成します@footnote{パディング文字はバージョン2.8から指定できるようになりました。}。 | |
| 1273 | +デフォルトのパディング文字は@code{0}です。 | |
| 1188 | 1274 | |
| 1189 | 1275 | @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}. | |
| 1195 | 1283 | |
| 1196 | 1284 | @cindex line ranges |
| 1197 | 1285 | @cindex range context |
| @@ -1199,95 +1287,102 @@ source-highlightには複数の入力ファイルを渡すことができる(@ | ||
| 1199 | 1287 | @item --line-range |
| 1200 | 1288 | @itemx --range-context |
| 1201 | 1289 | @itemx --range-separator |
| 1202 | -バージョン2.11から、複数行の範囲を指定できるようになった。 | |
| 1203 | -ソースのうち、この範囲に収まる行だけが出力される。 | |
| 1204 | -たとえば、次のように指定された場合だ。 | |
| 1290 | +バージョン2.11からは、複数行の範囲を指定できるようになりました。 | |
| 1291 | +ソースのうち、この範囲に収まる行だけが出力されます。 | |
| 1292 | +例えば、次のように指定された場合を考えます。 | |
| 1205 | 1293 | |
| 1206 | 1294 | @example |
| 1207 | 1295 | --line-range="-5","10","20-25","50-" |
| 1208 | 1296 | @end example |
| 1209 | 1297 | |
| 1210 | -この場合は、最初の5行、10行目、20行目から25行目まで、50行目から入力の最後まで、の各行が出力される(@ref{行による範囲指定}にある例も見てほしい)。 | |
| 1298 | +この場合は、最初の5行、10行目、20行目から25行目まで、50行目から入力の最後までの各行が出力されます。 | |
| 1299 | +別節の例も見てください。 | |
| 1300 | +@xref{Line ranges}. | |
| 1211 | 1301 | |
| 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 | +例として、前の例を発展させます。 | |
| 1216 | 1306 | |
| 1217 | 1307 | @example |
| 1218 | 1308 | --line-range="-5","10","20-25","50-" --range-context=1 |
| 1219 | 1309 | @end example |
| 1220 | 1310 | |
| 1221 | -これによって、6行目、9行目、11行目、19行目、26行目、49行目の各行も出力される(@ref{行による範囲指定(コンテキスト付き)}の例も参照)。 | |
| 1311 | +これによって、6行目、9行目、11行目、19行目、26行目、49行目の各行も出力されるようになります。 | |
| 1312 | +別節の例も参照してください。 | |
| 1313 | +@xref{Line ranges (with context)}. | |
| 1222 | 1314 | |
| 1223 | -最後に、@code{--range-separator}を使って、範囲と範囲の間に表示される、範囲セパレータ行の文字列を指定することができる(@ref{行による範囲指定(コンテキスト付き)}の例も参照)。 | |
| 1224 | -セパレータの文字列は自動的に実行されるので、たとえば、texinfo出力における@{ @}のような特殊な出力文字をエスケープする必要はない。 | |
| 1315 | +最後に、@code{--range-separator}を使えば、範囲と範囲の間に表示される範囲セパレータ行の文字列を指定することができます。 | |
| 1316 | +別節の例も参照してください(@pxref{Line ranges (with context)})。 | |
| 1317 | +セパレータの文字列は自動的に実行されますので、例えば、texinfo出力における@{ @}のような特殊な出力文字をエスケープする必要はありません。 | |
| 1225 | 1318 | |
| 1226 | 1319 | @cindex regex ranges |
| 1227 | 1320 | @item --regex-range |
| 1321 | +範囲は、正規表現を使って表わすこともできます。 | |
| 1322 | +コマンドラインオプション@code{--regex-range}を使います。 | |
| 1323 | +この場合、範囲の開始は、指定正規表現とマッチする文字列を(任意の位置で)含む行で検出されます。 | |
| 1324 | +範囲の終了は、その範囲を開始したのと同じ正規表現にマッチする文字列を含む行で検出されます。 | |
| 1325 | +この機能は、例えば、まさにこのマニュアルのように、アドホックなやり方で(例えば、特定のコメントのパターンを使って)、ソースコードの中で範囲を区切られた場所だけを見せるようにして、コードをドキュメントにしたい場合に非常に便利です。 | |
| 1326 | +@xref{Regex ranges}. | |
| 1228 | 1327 | |
| 1229 | -範囲は、正規表現を使って表わすこともできる。 | |
| 1230 | -これにはコマンドラインオプション@code{--regex-range}を使う。 | |
| 1231 | -この場合、範囲の開始は、指定された正規表現とマッチする文字列(任意の位置で)含む行で検出される。 | |
| 1232 | -範囲の終了は、その範囲を開始したのと同じ正規表現のマッチする文字列を含む行で検出される。 | |
| 1233 | -この機能は、(たとえば、まさにこのマニュアルのように)ソースコードの中でアドホックなやり方で(たとえば、コメントのパターンを指定する)、範囲を区切られた指定した場所だけを見せるようにして、コードをドキュメントにしたい場合に非常に便利だ | |
| 1234 | -@xref{正規表現による範囲指定} | |
| 1235 | -。 | |
| 1236 | -指定された文字列(このオプションは複数回指定してもよい)は、有効な正規表現でなければならい(なので、特殊な文字はそれなりにエスケープしなければならない)。 | |
| 1237 | -そうでなければ、エラーとなる。 | |
| 1328 | +指定文字列(このオプションは複数回指定可能)は、有効な正規表現でなければなりません(ですから、特殊な文字はそれなりにエスケープしなければなりません)。 | |
| 1329 | +そうでなければ、エラーとなります。 | |
| 1238 | 1330 | |
| 1239 | -また、@code{--line-range}と@code{--regex-range}は同じコマンドラインに共存することはできない。 | |
| 1331 | +また、@code{--line-range}と@code{--regex-range}は同じコマンドラインに共存することはできません。 | |
| 1240 | 1332 | |
| 1241 | 1333 | @item --failsafe |
| 1242 | 1334 | @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}. | |
| 1250 | 1343 | |
| 1251 | 1344 | @cindex default.lang |
| 1252 | -@code{--failsafe}を使うとき、入力言語がはっきりしない場合には、source-highlightは@file{default.lang}という入力言語の定義ファイルを使う。 | |
| 1253 | -これは空のファイルである。 | |
| 1254 | -そういったファイルはカスタマイズしてもかまわない。 | |
| 1345 | +@code{--failsafe}を使う時、入力言語がはっきりしない場合には、source-highlightは、@file{default.lang}という入力言語の定義ファイルを使います。 | |
| 1346 | +これは空のファイルです。 | |
| 1347 | +このファイルはカスタマイズしても構いません。 | |
| 1255 | 1348 | |
| 1256 | 1349 | @item --debug-lang |
| 1257 | 1350 | @item --show-regex |
| 1258 | -言語定義ファイルをデバッグできるようにする。 | |
| 1259 | -@ref{デバッギング} | |
| 1260 | - | |
| 1351 | +言語定義ファイルをデバッグできるようにします。 | |
| 1352 | +@xref{Debugging}. | |
| 1261 | 1353 | @end table |
| 1262 | 1354 | |
| 1263 | -リファレンスを処理するコマンドラインオプションは、@ref{リファレンスの生成}の中でさらに詳しく説明されている。 | |
| 1355 | +リファレンスを処理するコマンドラインオプションは、別の節でさらに詳しく説明しています。 | |
| 1356 | +@xref{Generating References}. | |
| 1264 | 1357 | |
| 1265 | 1358 | @menu |
| 1266 | -* 入力言語の検出方法:: | |
| 1359 | +* How the input language is discovered:: | |
| 1267 | 1360 | @end menu |
| 1268 | 1361 | |
| 1269 | -@node 入力言語の検出方法, , source-highlightの起動, source-highlightの起動 | |
| 1362 | + | |
| 1363 | +@node How the input language is discovered, , Invoking source-highlight, Invoking source-highlight | |
| 1270 | 1364 | @section 入力言語の検出方法 |
| 1271 | 1365 | |
| 1272 | -既に述べたように(@ref{簡単な使い方})、source-highlightは、@code{--src-lang}オプションや@code{--lang-def}オプションで指定された言語に応じて、あるいは入力ファイルの拡張子を使うことによって、言語定義ファイルを使用する。 | |
| 1366 | +既に述べたように(@pxref{Simple Usage})、source-highlightは、@code{--src-lang}オプションや@code{--lang-def}オプションで指定された言語に応じて、あるいは、入力ファイルの拡張子を使うことによって言語定義ファイルを使用します。 | |
| 1273 | 1367 | |
| 1274 | -バージョン2.5からは、source-highlightは、入力言語を推定するための推定メカニズムを使うことができる。 | |
| 1275 | -今のところ、``sha-bang''メカニズムに基づくスクリプト言語の検出ができる。 | |
| 1276 | -すなわち、スクリプトの最初の行に、たとえば次のような行を含んでいる場合だ。 | |
| 1368 | +バージョン2.5からは、source-highlightは、入力言語を推定するための推定メカニズムを使うことができます。 | |
| 1369 | +今のところ、「sha-bang」メカニズムに基づくスクリプト言語の検出が可能です。 | |
| 1370 | +つまり、スクリプトの最初の行に、例えば、次のような行を含んでいる場合です。 | |
| 1277 | 1371 | |
| 1278 | 1372 | @example |
| 1279 | 1373 | #!/bin/sh |
| 1280 | 1374 | @end example |
| 1281 | 1375 | |
| 1282 | -@code{env}プログラムを使って指定されたスクリプト言語を検出する@footnote{バージョン2.7から}: | |
| 1376 | +@code{env}プログラムを使って指定されたスクリプト言語も検出します@footnote{バージョン2.7からです。}。 | |
| 1283 | 1377 | |
| 1284 | 1378 | @example |
| 1285 | 1379 | #!/usr/bin/env perl |
| 1286 | 1380 | @end example |
| 1287 | 1381 | |
| 1288 | -@code{-*- lang -*-}という形式を使ったEmacsのメジャーモードの宣言する、Emacsの慣習を認識する。 | |
| 1382 | +Emacsにおける慣習も認識します。 | |
| 1383 | +@code{-*- lang -*-}という形式を使ったEmacsのメジャーモードの宣言です。 | |
| 1289 | 1384 | |
| 1290 | -また一例として、以下のように始まるスクリプトの場合だ: | |
| 1385 | +また、一例として、以下のように始まるスクリプトの場合があります。 | |
| 1291 | 1386 | |
| 1292 | 1387 | @example |
| 1293 | 1388 | #!/bin/bash |
| @@ -1295,131 +1390,143 @@ source-highlightには複数の入力ファイルを渡すことができる(@ | ||
| 1295 | 1390 | @end example |
| 1296 | 1391 | |
| 1297 | 1392 | @noindent |
| 1298 | -この場合は、bashスクリプトではなく、Tclスクリプトとして解釈される。 | |
| 1393 | +この場合は、bashスクリプトではなく、Tclスクリプトとして解釈されます。 | |
| 1299 | 1394 | |
| 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からです。}。 | |
| 1301 | 1396 | |
| 1302 | -この推定メカニズムは、デフォルトで、入力言語が明示的に指定されていないか、あるいは、入力ファイルの拡張子やファイル名そのもの(小文字の場合もあるかもしれない)を使って言語マップで見つけられない場合に実行される(入力ファイルが拡張子を全く持たない場合もあるかもしれないが、たとえば、@file{ChangeLog}という入力ファイルは@file{changelog.lang}を使ってハイライトされる)。 | |
| 1397 | +この推定メカニズムは、入力言語が明示的に指定されていないか、あるいは、入力ファイルの拡張子やファイル名そのもの(小文字の場合もあるかもしれません)を使って言語マップで見つけられない場合にデフォルトで実行されます。 | |
| 1398 | +入力ファイルが拡張子を全く持たない場合もあるかもしれませんが、例えば、@file{ChangeLog}という入力ファイルは@file{changelog.lang}を使ってハイライトされます。 | |
| 1303 | 1399 | |
| 1304 | 1400 | @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 | + | |
| 1307 | 1405 | |
| 1308 | -@node 言語の定義, 出力言語の定義, source-highlightの起動, Top | |
| 1406 | +@node Language Definitions, Output Language Definitions, Invoking source-highlight, Top | |
| 1309 | 1407 | @chapter 言語の定義 |
| 1310 | 1408 | @cindex language definition |
| 1311 | 1409 | |
| 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}. | |
| 1345 | 1449 | |
| 1346 | 1450 | @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:: | |
| 1365 | 1469 | @end menu |
| 1366 | 1470 | |
| 1367 | -@node 正規表現の指定方法, 簡単な定義, 言語の定義, 言語の定義 | |
| 1471 | + | |
| 1472 | +@node Ways of specifying regular expressions, Simple definitions, Language Definitions, Language Definitions | |
| 1368 | 1473 | @section 正規表現の指定方法 |
| 1369 | 1474 | |
| 1370 | -言語定義のシンタックスの詳細に入る前に、正規表現の文字列を指定する三つの方法について説明することは極めて大切なことだ。 | |
| 1371 | -この三つの方法は、基本的に正規表現の特殊文字を扱う方法の違いである。 | |
| 1372 | -たとえばカッコとかがそうである。 | |
| 1373 | -このため、一つの仕組みが他のものよりもパワフルな場合があるのだが、これについてはもう少し注意も必要だろう。 | |
| 1374 | -加えて、他のものが要求されるゴールへ至ることができないために、一つの仕組みだけしか使えないような状況も起こりうる。 | |
| 1475 | +言語定義のシンタックスの詳細に入る前に、正規表現文字列を指定する三つの方法について説明することは極めて重要なことです。 | |
| 1476 | +この三つの方法は、基本的に、正規表現の特殊文字を扱う方法の違いによるものです。 | |
| 1477 | +例えば、カッコなどがそれに相当します。 | |
| 1478 | +このため、方法によっては、他のものよりもパワフルな場合がありますが、これについては少し注意も必要となることがあるでしょう。 | |
| 1479 | +また、他の方法では要求されるゴールへ達することができず、一つの方法だけしか使えないような状況も起こり得ます。 | |
| 1375 | 1480 | |
| 1376 | 1481 | @table @code |
| 1377 | 1482 | @cindex @code{"expression"} |
| 1378 | 1483 | @item "expression" |
| 1379 | 1484 | |
| 1380 | -二重引用符(@code{"}である。@code{``}でも@code{''}でもないことに注意)を使って正規表現を指定する場合、基本的に、オルターネーションシンボルつまりパイプシンボル@code{|}以外の全ての文字がそのまま字面通り解釈されので、自動的にエスケープされる(たとえば、ドット@code{.}は、正規表現のワイルドカードではなく、文字@code{.}として解釈される)。 | |
| 1381 | -例として次のように指定した場合を考える。 | |
| 1485 | +二重引用符@footnote{@code{"}です。@code{``}でも@code{''}でもないことに注意してください。}を使って正規表現を指定する場合、基本的に、オルターネーションシンボル、つまり、パイプシンボル@code{|}以外の全ての文字がそのまま字面通り解釈されます。 | |
| 1486 | +そのため、自動的にエスケープされことになります(例えば、ドット@code{.}は、正規表現のワイルドカードではなく、文字@code{.}として解釈されます)。 | |
| 1487 | +例として、次のように指定した場合を考えます。 | |
| 1382 | 1488 | |
| 1383 | 1489 | @example |
| 1384 | 1490 | "my(regular)ex.pre$$ion@{*@}" |
| 1385 | 1491 | @end example |
| 1386 | 1492 | |
| 1387 | 1493 | @noindent |
| 1388 | -この場合、source-highlightは自動的に次のように変換する。 | |
| 1494 | +この場合、自動的に次のように変換します。 | |
| 1389 | 1495 | |
| 1390 | 1496 | @example |
| 1391 | 1497 | my\(regular\)ex\.pre\$\$ion\@{\*\@} |
| 1392 | 1498 | @end example |
| 1393 | 1499 | |
| 1394 | - | |
| 1395 | -二つの選択肢を分けるという意味を持たせない限り、@code{|}という特殊文字は、@code{\}文字でエスケープしなければならない。 | |
| 1396 | -たとえば、@code{\|}のようになる。 | |
| 1397 | -また、文字@code{\}も文字通りの意味を持たせるためには、@code{\\}のようにエスケープしなければならない。 | |
| 1500 | +二つの選択肢を分けるという意味を持たせないのであれば、@code{|}という特殊文字は、@code{\}文字でエスケープしなければなりません(@pxref{Simple definitions})。 | |
| 1501 | +例えば、@code{\|}のようにします。 | |
| 1502 | +また、文字@code{\}も文字通りの意味を持たせるためには、@code{\\}のようにエスケープしなければなりません。 | |
| 1398 | 1503 | |
| 1399 | 1504 | @cindex @code{'expression'} |
| 1400 | 1505 | @item 'expression' |
| 1401 | 1506 | |
| 1402 | -正規表現のフルパワーを享受したいのならば、二重引用符の代わりに、一重引用符(@code{'})の文字列を使う必要がある。 | |
| 1403 | -これを使えば、特殊な文字を、その特殊な意味として指定することができるようになる。 | |
| 1507 | +正規表現のフルパワーを享受したいならば、二重引用符ではなく、単引用符(@code{'})の文字列を使う必要があります。 | |
| 1508 | +単引用符を使えば、特殊な文字を、その特殊な意味として指定することができるようになります。 | |
| 1404 | 1509 | |
| 1405 | -しかし、マークされた部分表現は、自動的にマークされていない部分表現に変換される。 | |
| 1406 | -すなわち、まとまりの@code{(...)}という表現の部分は、@code{(?:...)}というように変形される(@ref{正規表現に関する注意}で説明しているように、@code{(?:...)}は、正規表現の一部をその字面通りにグループ化する。 | |
| 1407 | -その際、マークされた部分表現は生成されない)。(訳注:いわゆる正規表現メモリのことを言っているのだと思う) | |
| 1510 | +しかし、マークされた部分表現は、マークされていない部分表現に自動的に変換されます。 | |
| 1511 | +つまり、@code{(...)}という形式の表現は、@code{(?:...)}というように変形されます。 | |
| 1512 | +別節で説明しているように、@code{(?:...)}は、正規表現の一部をその字面通りにグループ化します(@pxref{Notes on regular expressions})。 | |
| 1513 | +その際、マークされた部分表現は生成されません@footnote{訳注:いわゆる正規表現メモリのことを言っているのだと思います。}。 | |
| 1408 | 1514 | |
| 1409 | -なので、例えば、次のように指定した場合を考える: | |
| 1515 | +ですから、例えば、次のように指定した場合を考えます。 | |
| 1410 | 1516 | |
| 1411 | 1517 | @example |
| 1412 | 1518 | 'my(regular)ex.pre$ion*' |
| 1413 | 1519 | @end example |
| 1414 | 1520 | |
| 1415 | 1521 | @noindent |
| 1416 | -この場合、source-highlightは自動的にこれを次のように変形する: | |
| 1522 | +この場合、自動的にこれを次のように変形します。 | |
| 1417 | 1523 | |
| 1418 | 1524 | @example |
| 1419 | 1525 | my(?:regular)ex.pre$ion* |
| 1420 | 1526 | @end example |
| 1421 | 1527 | |
| 1422 | -マークされた部分表現はこのシンタックスでは指定することができないので、@emph{後方参照}は許されていない(@ref{正規表現に関する注意}を参照)。 | |
| 1528 | +マークされた部分表現はこのシンタックスでは指定することができませんので、@emph{後方参照}は許されていません。 | |
| 1529 | +@xref{Notes on regular expressions}. | |
| 1423 | 1530 | |
| 1424 | 1531 | @cindex @code{`expression`} |
| 1425 | 1532 | @item `expression` |
| @@ -1427,14 +1534,18 @@ my(?:regular)ex.pre$ion* | ||
| 1427 | 1534 | @cindex marked subexpressions |
| 1428 | 1535 | @cindex backreference |
| 1429 | 1536 | @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}. | |
| 1432 | 1541 | |
| 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 | +例を挙げます。 | |
| 1438 | 1549 | |
| 1439 | 1550 | @example |
| 1440 | 1551 | s/foo/bar/g |
| @@ -1443,7 +1554,8 @@ s#foo#bar#g | ||
| 1443 | 1554 | s@@foo@@bar@@g |
| 1444 | 1555 | @end example |
| 1445 | 1556 | |
| 1446 | -このシンタックスと後方参照を使うと、一つの言語エレメントを定義して、これらの複数の表現を処理することが簡単にできるようになる(可能性のある非英数字を全て列挙することはない): | |
| 1557 | +このシンタックスと後方参照を使うと、これらの複数の表現を処理することができる一つの言語エレメントを簡単に定義できるようになります。 | |
| 1558 | +可能性のある非英数字の場合を全て列挙するようなことはありません。 | |
| 1447 | 1559 | |
| 1448 | 1560 | @example |
| 1449 | 1561 | regexp = `s([^[:alnum:][:blank:]]).*\1.*\1[ixsmogce]*` |
| @@ -1451,30 +1563,30 @@ regexp = `s([^[:alnum:][:blank:]]).*\1.*\1[ixsmogce]*` | ||
| 1451 | 1563 | |
| 1452 | 1564 | @end table |
| 1453 | 1565 | |
| 1454 | -バージョン2.11からは、正規表現の指定全てで、改行文字を入れられるようになった。 | |
| 1455 | -改行は単に無視される。 | |
| 1456 | -なので、たとえば、次のファイルを見てほしい: | |
| 1566 | +バージョン2.11からは、あらゆる正規表現の指定において改行文字を入れられるようになりました。 | |
| 1567 | +改行は単に無視されます。 | |
| 1568 | +ですから、例えば、次のファイルを見てください。 | |
| 1457 | 1569 | |
| 1458 | 1570 | @include test_newlines.lang.texinfo |
| 1459 | 1571 | |
| 1460 | 1572 | @noindent |
| 1461 | -このファイルは次のファイルと同等だ。 | |
| 1462 | -and the file: | |
| 1573 | +このファイルは次のファイルと同等です。 | |
| 1463 | 1574 | |
| 1464 | 1575 | @include test_nonewlines.lang.texinfo |
| 1465 | 1576 | |
| 1466 | 1577 | @noindent |
| 1467 | -しかし、前者が間違い無く読み易い。 | |
| 1578 | +しかし、前者が間違い無く読み易いです。 | |
| 1468 | 1579 | |
| 1469 | -だが注意してほしいのだが、正規表現中の空白文字は無視されない。 | |
| 1580 | +注意してほしいですが、正規表現中の空白文字は無視されません。 | |
| 1470 | 1581 | |
| 1471 | -@node 簡単な定義, ラインワイド定義, 正規表現の指定方法, 言語の定義 | |
| 1582 | + | |
| 1583 | +@node Simple definitions, Line wide definitions, Ways of specifying regular expressions, Language Definitions | |
| 1472 | 1584 | @section 簡単な定義 |
| 1473 | 1585 | @cindex simple language definition |
| 1474 | 1586 | |
| 1475 | -言語のエレメントを記述する最も簡単な方法は、可能性のあるものをリストにすることだ。 | |
| 1476 | -たとえば、これはキーワードの場合だ。 | |
| 1477 | -例を挙げると、@file{java.lang}は次のようになっている: | |
| 1587 | +言語のエレメントを記述する最も簡単な方法は、可能性のあるものをリストにすることです。 | |
| 1588 | +例えば、キーワードの場合です。 | |
| 1589 | +例を挙げると、@file{java.lang}は次のようになっています。 | |
| 1478 | 1590 | |
| 1479 | 1591 | @example |
| 1480 | 1592 | keyword = "abstract|assert|break|case|catch|class|const", |
| @@ -1486,45 +1598,49 @@ keyword = "native|new|null|private|protected|public|return", | ||
| 1486 | 1598 | @end example |
| 1487 | 1599 | |
| 1488 | 1600 | |
| 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}.}(ですから、タイポには注意してください:-))。 | |
| 1494 | 1609 | |
| 1495 | -上の例から、言語の定義が累積的であることにお気付きかもしれない。 | |
| 1496 | -つまり、2番目の@code{keyword}の定義は最初のものを置き換えるものではない。 | |
| 1497 | -(実際には、場合によって、言語のエレメントを再定義したいと思うこともあるだろう。 | |
| 1498 | -これは@ref{再定義と置換}で説明するように可能だ。) | |
| 1610 | +上の例から、言語の定義が累積的であることに気付いたかもしれません。 | |
| 1611 | +つまり、2番目の@code{keyword}の定義は最初のものを置き換えるものではありません@footnote{実際には、場合によって、言語のエレメントを再定義したいと思うこともあります。 | |
| 1612 | +別の節で説明するようにこれは可能です。 | |
| 1613 | +@xref{Redefinitions and Substitutions}.}。 | |
| 1499 | 1614 | |
| 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)\>}を意図したものです。 | |
| 1503 | 1619 | |
| 1504 | -特殊な文字は@code{\}という文字でエスケープしなければならない。 | |
| 1505 | -なので例えば、@code{|}という文字を指定したい場合、これは通常、二重引用符で括られた文字列の中で選択肢を分割するものとして使われるのだが、これは@code{\|}というように指定しなければならない。 | |
| 1620 | +特殊な文字は、@code{\}という文字でエスケープしなければなりません。 | |
| 1621 | +ですから、例えば、@code{|}という文字は、通常、二重引用符で括られた文字列の中で選択肢を分割するものとして使われますが、この文字@code{|}を指定したい場合、@code{\|}のように指定しなければなりません。 | |
| 1506 | 1622 | |
| 1507 | -@ref{正規表現の指定方法}で述べているように、二重引用符で括られた定義は、字面のまま解釈される(ゆえに、たとえばドット@code{.}は、正規表現におけるワイルドカードとしてではなく、文字@code{.}として解釈される)。 | |
| 1508 | -言語のあるオルタナティブを記述するのに(訳注:to specify a language alternative)正規表現のフルパワーを享受したい場合には、二重引用符の文字列の代わりに、一重引用符(@code{'})の文字列か、あるいはバッククォート(@code{`})で括られた文字列を使わなければならない。 | |
| 1623 | +別の節(@pxref{Ways of specifying regular expressions})で述べているように、二重引用符で括られた定義は字面のまま解釈されます(ゆえに、例えば、ドット@code{.}は、正規表現におけるワイルドカードとしてではなく、文字@code{.}として解釈されます)。 | |
| 1624 | +言語のある選択肢を記述する時に、正規表現のフルパワーを享受したい場合には、二重引用符の文字列の代わりに、単引用符(@code{'})の文字列か、あるいは、バッククォート(@code{`})で括られた文字列を使わなければなりません。 | |
| 1509 | 1625 | |
| 1510 | -たとえば、次のものは、C/C++におけるプリプロセッサの定義だ: | |
| 1626 | +例えば、次のものは、C/C++におけるプリプロセッサの定義です。 | |
| 1511 | 1627 | |
| 1512 | 1628 | @example |
| 1513 | 1629 | preproc = '^[[:blank:]]*#([[:blank:]]*[[:word:]]*)' |
| 1514 | 1630 | @end example |
| 1515 | 1631 | |
| 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}という部分表現にもマッチします。 | |
| 1518 | 1634 | |
| 1519 | -加えて、二重引用符の文字列と一重引用符の文字列を同じリストに記述することは許されていない。 | |
| 1520 | -そういうリストの定義は分割する必要がある。 | |
| 1521 | -ゆえに、たとえば、以下の定義は間違いだ: | |
| 1635 | +加えて、二重引用符の文字列と単引用符の文字列を同じリストに記述することは許されていません。 | |
| 1636 | +そういうリストを定義する場合、分割する必要があります。 | |
| 1637 | +ゆえに、例えば、以下の定義は間違いとなります。 | |
| 1522 | 1638 | |
| 1523 | 1639 | @example |
| 1524 | 1640 | preproc = "#define",'^[[:blank:]]*#([[:blank:]]*[[:word:]]*)' |
| 1525 | 1641 | @end example |
| 1526 | 1642 | |
| 1527 | -一方で、次のものは正しい: | |
| 1643 | +一方で、次のものは正しいものです。 | |
| 1528 | 1644 | |
| 1529 | 1645 | @example |
| 1530 | 1646 | preproc = "#define" |
| @@ -1532,10 +1648,10 @@ preproc = '^[[:blank:]]*#([[:blank:]]*[[:word:]]*)' | ||
| 1532 | 1648 | @end example |
| 1533 | 1649 | |
| 1534 | 1650 | @cindex nonsensitive |
| 1535 | -最後に、定義のリストの最後において、@code{nonsensitive}というキーワードを記述してもよい。 | |
| 1536 | -その場合、記述された文字列は大文字小文字を区別しないものとして解釈される。 | |
| 1537 | -たとえば、この機能はPascal言語の定義で使用している。 | |
| 1538 | -@file{pascal.lang}では、キーワードは大文字小文字を区別せずに解析される: | |
| 1651 | +最後に、定義のリストの最後において、@code{nonsensitive}というキーワードを記述することができます。 | |
| 1652 | +その場合、記述された文字列は大文字小文字を区別しないものとして解釈されます。 | |
| 1653 | +例えば、Pascal言語の定義でこの機能を使用しています。 | |
| 1654 | +@file{pascal.lang}では、キーワードは大文字小文字を区別せずに解析されます。 | |
| 1539 | 1655 | |
| 1540 | 1656 | @example |
| 1541 | 1657 | keyword = "alfa|and|array|begin|case|const|div", |
| @@ -1546,50 +1662,53 @@ keyword = "alfa|and|array|begin|case|const|div", | ||
| 1546 | 1662 | nonsensitive |
| 1547 | 1663 | @end example |
| 1548 | 1664 | |
| 1549 | -@node ラインワイド定義, 定義の順序, 簡単な定義, 言語の定義 | |
| 1665 | + | |
| 1666 | +@node Line wide definitions, Order of definitions, Simple definitions, Language Definitions | |
| 1550 | 1667 | @section ラインワイド定義 |
| 1551 | 1668 | @cindex lines |
| 1552 | 1669 | |
| 1553 | -行末に至るまで残りの文字全てに影響する言語のエレメントを定義するのは、大変便利だ。 | |
| 1554 | -そういう定義には、@code{=}の代わりに、@code{start}というキーワードを使わなければならない。 | |
| 1555 | -たとえば、次のものは、C++における一行コメントの定義である: | |
| 1670 | +行末に至るまで残りの文字全てに影響する言語エレメントを定義できると大変便利です。 | |
| 1671 | +そういう定義をする場合、@code{=}ではなく、@code{start}というキーワードを使わなければなりません。 | |
| 1672 | +例えば、次のものは、C++における一行コメントの定義です。 | |
| 1556 | 1673 | |
| 1557 | 1674 | @example |
| 1558 | 1675 | comment start "//" |
| 1559 | 1676 | @end example |
| 1560 | 1677 | |
| 1561 | -これは、ソースファイルの中で二つの文字@code{//}に遭遇すると、これらの文字から行末までの全てが@code{comment}というスタイルによってハイライトされるということを意味している。 | |
| 1678 | +これは、ソースファイルの中で二つの文字@code{//}に遭遇すると、これらの文字から行末までの全てが、@code{comment}というスタイルによってハイライトされるということを意味しています。 | |
| 1562 | 1679 | |
| 1563 | -@node 定義の順序, delim定義, ラインワイド定義, 言語の定義 | |
| 1680 | + | |
| 1681 | +@node Order of definitions, Delimited definitions, Line wide definitions, Language Definitions | |
| 1564 | 1682 | @section 定義の順序 |
| 1565 | 1683 | @cindex definition order |
| 1566 | 1684 | |
| 1567 | -言語の定義の順序が重要であるということを知るのは重要だ。 | |
| 1568 | -その順序が正規表現のマッチングの間に使用されるからだ(このことは@ref{source-highlightの仕組み}に詳述するつもりだ)。 | |
| 1569 | -それから、同じ文字で始まる定義があるならば、最も長い式をまずそのファイルの中で記述しなければならないということを確認しなければならない。 | |
| 1570 | -たとえば、次のように書いたとする: | |
| 1685 | +言語の定義の順序が重要であるということを知っておくことは重要なことです。 | |
| 1686 | +正規表現のマッチング際、その順序が使用されるからです(このことは別の節(@pxref{How source-highlight works})に詳述するつもりです)。 | |
| 1687 | +それから、同じ文字で始まる定義があるならば、最も長い式を、そのファイルの中にまず記述しなければならないということを確認しなければなりません。 | |
| 1688 | +例えば、次のように書いたとします。 | |
| 1571 | 1689 | |
| 1572 | 1690 | @example |
| 1573 | 1691 | symbol = "/" |
| 1574 | 1692 | comment start "//" |
| 1575 | 1693 | @end example |
| 1576 | 1694 | |
| 1577 | -最初の式は、常に最初にマッチさせられる。 | |
| 1578 | -そして2番目の式は決してマッチしない。 | |
| 1579 | -正しい順序は次のようになる: | |
| 1695 | +最初の式が常に最初にマッチします。 | |
| 1696 | +そして、2番目の式は決してマッチすることはありません。 | |
| 1697 | +正しい順序は次のようになります。 | |
| 1580 | 1698 | |
| 1581 | 1699 | @example |
| 1582 | 1700 | comment start "//" |
| 1583 | 1701 | symbol = "/" |
| 1584 | 1702 | @end example |
| 1585 | 1703 | |
| 1586 | -@node delim定義, 変数定義, 定義の順序, 言語の定義 | |
| 1704 | + | |
| 1705 | +@node Delimited definitions, Variable definitions, Order of definitions, Language Definitions | |
| 1587 | 1706 | @section delim定義 |
| 1588 | 1707 | @cindex delimited definitions |
| 1589 | 1708 | |
| 1590 | -多くのエレメントは特定の文字の並びで区切られている。 | |
| 1591 | -たとえば文字列や複数行のコメントである。 | |
| 1592 | -こういうエレメントの定義のシンタックスは次のようになる: | |
| 1709 | +多くのエレメントは、特定の文字の並びで区切られています。 | |
| 1710 | +例えば、文字列や複数行コメントです。 | |
| 1711 | +こういうエレメントの定義シンタックスは次のようになります。 | |
| 1593 | 1712 | |
| 1594 | 1713 | @example |
| 1595 | 1714 | <name> delim <left delimited> <right delimiter> \ |
| @@ -1597,33 +1716,36 @@ symbol = "/" | ||
| 1597 | 1716 | @{multiline@} @{nested@} |
| 1598 | 1717 | @end example |
| 1599 | 1718 | |
| 1600 | -@code{escape}ステートメントは、そのエレメントの内部にある区切り子の一つに前置させるエスケープ用の文字を指定するものだ。 | |
| 1601 | -これはオプショナルである。 | |
| 1719 | +@code{escape}ステートメントは、そのエレメントの内部にある区切り子の前に置いてエスケープする時に使用する文字を指定するものです。 | |
| 1720 | +これは省略可能です。 | |
| 1602 | 1721 | |
| 1603 | -たとえば、Cライクな文字列の定義は次のようになる: | |
| 1722 | +例えば、Cライクな文字列の定義は次のようになります。 | |
| 1604 | 1723 | |
| 1605 | 1724 | @example |
| 1606 | 1725 | string delim "\"" "\"" escape "\\" |
| 1607 | 1726 | @end example |
| 1608 | 1727 | |
| 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"}というようにハイライトされてしまいます)。 | |
| 1611 | 1730 | |
| 1612 | -@code{multiline}というオプションは、そのエレメントが複数行に渡ることがあるというとを記述するものだ。 | |
| 1613 | -たとえば、PHPの文字列の定義は次のようになる: | |
| 1731 | +@code{multiline}というオプションは、そのエレメントが複数行に渡ることがあるというとを記述するものです。 | |
| 1732 | +例えば、PHPの文字列の定義は次のようになります。 | |
| 1614 | 1733 | |
| 1615 | 1734 | @example |
| 1616 | 1735 | string delim "\"" "\"" escape "\\" multiline |
| 1617 | 1736 | @end example |
| 1618 | 1737 | |
| 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に感謝します。}、次のような定義が使えます。 | |
| 1621 | 1743 | |
| 1622 | 1744 | @example |
| 1623 | 1745 | comment delim "/*" "*/" multiline nested |
| 1624 | 1746 | @end example |
| 1625 | 1747 | |
| 1626 | -@code{nested}が使われなかったとしたら、以下に示すネストされたコメントの閉じる@code{*/}がこのコメントを終了させてしまうだろう(そして2番目の@code{*}はコメントとしてはハイライトされないだろう): | |
| 1748 | +@code{nested}が使われなかったとしたら、以下に示すネストされたコメントの閉じる@code{*/}によって、このコメントは終了してしまうでしょう(そして、2番目の@code{*}はコメントとしてはハイライトされません)。 | |
| 1627 | 1749 | |
| 1628 | 1750 | @example |
| 1629 | 1751 | /* |
| @@ -1631,67 +1753,73 @@ comment delim "/*" "*/" multiline nested | ||
| 1631 | 1753 | */ |
| 1632 | 1754 | @end example |
| 1633 | 1755 | |
| 1634 | -区切り子で区切られた言語のエレメントがネストできるようにするには、その開始と終了のエレメントが異なっていなければならない。 | |
| 1635 | -なので、例えば以下の定義は正しくない: | |
| 1756 | +区切り子で区切られた言語のエレメントがネストできるようにするには、その開始・終了のエレメントが異なっていなければなりません。 | |
| 1757 | +ですから、例えば、以下の定義は正しくありません。 | |
| 1636 | 1758 | |
| 1637 | 1759 | @example |
| 1638 | 1760 | string delim "\"" "\"" nested # WRONG! |
| 1639 | 1761 | @end example |
| 1640 | 1762 | |
| 1641 | -上で述べたように、定義は累積的であり、そして文法的に異なった形式を使ったときですら累積的だ。 | |
| 1642 | -従って、例えば、C++スタイルのコメントの完全な定義は次のようになる(実際、Cスタイルのコメントの定義はもっとややこしい。@file{c_comment.lang}というファイルを見てほしい): | |
| 1763 | +上で述べたように、定義は累積的です。 | |
| 1764 | +文法的に異なった形式を使った時ですら累積的です。 | |
| 1765 | +従って、例えば、C++スタイルのコメントの完全な定義は次のようになります@footnote{実際、Cスタイルのコメントの定義はもっとややこしいものです。 | |
| 1766 | +@file{c_comment.lang}というファイルを見てください。}。 | |
| 1643 | 1767 | |
| 1644 | 1768 | @example |
| 1645 | 1769 | comment start "//" |
| 1646 | 1770 | comment delim "/*" "*/" multiline |
| 1647 | 1771 | @end example |
| 1648 | 1772 | |
| 1649 | -@node 変数定義, 動的後方参照, delim定義, 言語の定義 | |
| 1773 | + | |
| 1774 | +@node Variable definitions, Dynamic Backreferences, Delimited definitions, Language Definitions | |
| 1650 | 1775 | @section 変数定義 |
| 1651 | 1776 | @cindex variables |
| 1652 | 1777 | |
| 1653 | -言語定義ファイルの中の多くの場所で再利用されるように変数を定義することが可能だ。 | |
| 1654 | -変数は次のように定義される。 | |
| 1778 | +変数を定義すれば、言語定義ファイル中のあちこちの場所で再利用することが可能となります。 | |
| 1779 | +変数は次のように定義します。 | |
| 1655 | 1780 | |
| 1656 | 1781 | @code{vardef} <name of the variable> @code{=} <list of definitions> |
| 1657 | 1782 | |
| 1658 | -一度定義すると、その変数名の前に@code{$}というシンボルを付けることで使うことができる。 | |
| 1659 | -例えば次のようになる。 | |
| 1783 | +一度定義すると、その変数名の前に@code{$}というシンボルを付けることで使うことができます。 | |
| 1784 | +例えば、次のようになります。 | |
| 1660 | 1785 | |
| 1661 | 1786 | @example |
| 1662 | 1787 | vardef FUNCTION = '(?:[[:alpha:]]|_)[[:word:]]*(?=[[:blank:]]*\()' |
| 1663 | 1788 | function = $FUNCTION |
| 1664 | 1789 | @end example |
| 1665 | 1790 | |
| 1666 | -大文字にしたのは単に読み易さの為だけだ。 | |
| 1791 | +大文字にしたのは単に読み易さの為だけです。 | |
| 1667 | 1792 | |
| 1668 | -変数と式を連結することも可能で、さらなる変数の定義の内部で変数を再利用することもできる: | |
| 1793 | +変数と式を連結することも可能で、さらに別の変数定義の内部で変数を再利用することもできます。 | |
| 1669 | 1794 | |
| 1670 | 1795 | @example |
| 1671 | 1796 | vardef basic_time = '[[:digit:]]@{2@}:[[:digit:]]@{2@}:[[:digit:]]@{2@}' |
| 1672 | 1797 | vardef time = '\<' + $basic_time + '\>' |
| 1673 | 1798 | @end example |
| 1674 | 1799 | |
| 1675 | -@node 動的後方参照, ファイルのインクルード, 変数定義, 言語の定義 | |
| 1800 | + | |
| 1801 | +@node Dynamic Backreferences, File inclusion, Variable definitions, Language Definitions | |
| 1676 | 1802 | @section 動的後方参照 |
| 1677 | 1803 | @cindex dynamic backreference |
| 1678 | 1804 | |
| 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 | +従って、右側のエレメントの正規表現は、左側のエレメントに依存しています。 | |
| 1684 | 1812 | |
| 1685 | -動的後方参照は変数に似ている(@ref{変数定義})が、宣言は無く、次のような形をしている。 | |
| 1813 | +動的後方参照は変数に似ています(@pxref{Variable definitions})が、宣言は無く、次のような形をしています。 | |
| 1686 | 1814 | |
| 1687 | 1815 | @example |
| 1688 | 1816 | @@@{number@} |
| 1689 | 1817 | @end example |
| 1690 | 1818 | |
| 1691 | 1819 | @noindent |
| 1692 | -ここで、@code{number}は左側のデリミタにおけるマークされた部分表現の番号だ(source-highlightは、そういったマークされた部分表現が左側のデリミタに存在することを実際に確認する)。 | |
| 1820 | +@code{number}は、左側の区切り子におけるマークされた部分表現の番号です(source-highlightは、そういったマークされた部分表現が左側の区切り子に存在することを実際に確認します)。 | |
| 1693 | 1821 | |
| 1694 | -たとえば、これがLuaのコメントの定義だ(@file{lua.lang}も見よ): | |
| 1822 | +例えば、これがLuaのコメントの定義です(@file{lua.lang}も見てください)。 | |
| 1695 | 1823 | |
| 1696 | 1824 | @example |
| 1697 | 1825 | environment comment delim `--\[(=*)\[` "]" + @@@{1@} + "]" |
| @@ -1702,23 +1830,24 @@ end | ||
| 1702 | 1830 | @end example |
| 1703 | 1831 | |
| 1704 | 1832 | @noindent |
| 1705 | -左側のデリミタが、マークされた部分表現としてオプショナルな@code{=}とどのようにマッチして、右側のデリミタが@@@{1@}によってそれをどのように参照するかを注意してほしい。 | |
| 1833 | +左側の区切り子が、マークされた部分表現としてオプショナルな@code{=}とどのようにマッチするか、また、右側の区切り子が@@@{1@}によってどのように参照するかに注意してください。 | |
| 1706 | 1834 | |
| 1707 | -source-highlightは、動的後方参照の置き換えの際に、起こりうる特殊文字のエスケープの面倒を見る。 | |
| 1708 | -たとえば、次に示すようなdelimエレメントで、@code{[^[:alnum:]]}という部分表現が@code{|}とマッチしたために、@@@{1@}を@code{|}に置き換えなければならないとしよう: | |
| 1835 | +source-highlightは、動的後方参照の置き換えの際に、特殊文字のエスケープの面倒を見ます。 | |
| 1836 | +例えば、次に示すようなdelimエレメントの場合を考えます。 | |
| 1837 | +@code{[^[:alnum:]]}という部分表現が@code{|}とマッチしたために、@@@{1@}を@code{|}に置き換えなければならないとします。 | |
| 1709 | 1838 | |
| 1710 | 1839 | @example |
| 1711 | 1840 | comment delim `([^[:alnum:]])` @@@{1@} |
| 1712 | 1841 | @end example |
| 1713 | 1842 | |
| 1714 | 1843 | @noindent |
| 1715 | -@code{|}は正規表現のシンタックスにおいて特別な文字なので、source-highlightは、@code{@@@{1@}}を実際には@code{\|}と置き換える。 | |
| 1844 | +@code{|}は正規表現のシンタックスにおいて特別な文字ですので、source-highlightは、@code{@@@{1@}}を実際には@code{\|}と置き換えます。 | |
| 1716 | 1845 | |
| 1717 | -重要:右側のデリミタは、その左側のデリミタの部分表現を参照できるだけである。 | |
| 1718 | -そのため、ネストされたdelimエレメントの定義の場合(たとえばstateやenvironmentで。@ref{state/environment定義}を参照)、左側のデリミタはバインダとして振舞い、外側のdelimエレメントで定義されている起こりうる部分表現を隠す。 | |
| 1846 | +重要:右側の区切り子は、その左側の区切り子の部分表現を参照できるだけです。 | |
| 1847 | +そのため、ネストされたdelimエレメントの定義の場合(例えば、stateやenvironmentにおいてです。@pxref{State/Environment Definitions})、左側の区切り子はバインダとして振舞い、外側のdelimエレメントで定義されている部分表現を隠します。 | |
| 1719 | 1848 | |
| 1720 | -後方参照でネストしている区切り子で区切られたエレメントに正しくマッチすることは大変重要なことだ。 | |
| 1721 | -source-highlightはこのLuaのネストした(そして文法上は正しい)コメントを正しく認識する: | |
| 1849 | +ネストしている区切り子で区切られたエレメントに後方参照で正しくマッチすることは大変重要なことです。 | |
| 1850 | +source-highlightは、Luaのネストした(そして、文法上は正しい)コメントを正しく認識します。 | |
| 1722 | 1851 | |
| 1723 | 1852 | @example |
| 1724 | 1853 | --[[ |
| @@ -1732,16 +1861,17 @@ source-highlightはこのLuaのネストした(そして文法上は正しい | ||
| 1732 | 1861 | ]] |
| 1733 | 1862 | @end example |
| 1734 | 1863 | |
| 1735 | -@node ファイルのインクルード, state/environment定義, 動的後方参照, 言語の定義 | |
| 1864 | + | |
| 1865 | +@node File inclusion, State/Environment Definitions, Dynamic Backreferences, Language Definitions | |
| 1736 | 1866 | @section ファイルのインクルード |
| 1737 | 1867 | @cindex file inclusion |
| 1738 | 1868 | |
| 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の指示が含まれています。 | |
| 1745 | 1875 | |
| 1746 | 1876 | @example |
| 1747 | 1877 | include "c_comment.lang" |
| @@ -1753,16 +1883,18 @@ keywords ... | ||
| 1753 | 1883 | include "function.lang" |
| 1754 | 1884 | @end example |
| 1755 | 1885 | |
| 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}. | |
| 1758 | 1889 | |
| 1759 | -@node state/environment定義, 名前を使った明示的な部分表現, ファイルのインクルード, 言語の定義 | |
| 1890 | + | |
| 1891 | +@node State/Environment Definitions, Explicit subexpressions with names, File inclusion, Language Definitions | |
| 1760 | 1892 | @section state/environment定義 |
| 1761 | 1893 | @cindex states |
| 1762 | 1894 | @cindex environments |
| 1763 | 1895 | |
| 1764 | -他のエレメントに挟まれている場合にだけ、あるソースエレメントをハイライトしたいということが時折ある。 | |
| 1765 | -source-highlightedの言語定義では、この機能も用意している。 | |
| 1896 | +他のエレメントに挟まれている場合にだけ、あるソースエレメントをハイライトしたいという場合があります。 | |
| 1897 | +source-highlightの言語定義には、この機能も用意しています。 | |
| 1766 | 1898 | |
| 1767 | 1899 | @example |
| 1768 | 1900 | state|environment <standard definition> begin |
| @@ -1770,12 +1902,13 @@ state|environment <standard definition> begin | ||
| 1770 | 1902 | end |
| 1771 | 1903 | @end example |
| 1772 | 1904 | |
| 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を定義している定義のスタイルに応じてハイライトされるということにあります。 | |
| 1777 | 1909 | |
| 1778 | -例として次に示すのは、複数行のネスト可能なCのコメントで、コメントの内側にURLやメールアドレスが表われたときだけ、それらをハイライトする(ファイルのインクルードを使っているので注意してほしい): | |
| 1910 | +例として次に示すのは、複数行のネストが可能なCのコメントです。 | |
| 1911 | +コメントの内側にURLやメールアドレスが表われた時だけ、それらをハイライトします(ファイルのインクルードを使っていることに注意してください)。 | |
| 1779 | 1912 | |
| 1780 | 1913 | @example |
| 1781 | 1914 | environment comment delim "/*" "*/" multiline nested begin |
| @@ -1783,11 +1916,12 @@ environment comment delim "/*" "*/" multiline nested begin | ||
| 1783 | 1916 | end |
| 1784 | 1917 | @end example |
| 1785 | 1918 | |
| 1786 | -コメントの内側の他の部分は全部commentのスタイルでフォーマットされなければならないため@code{environment}を使用しているので留意してほしい。 | |
| 1919 | +コメント内の他の部分は全部commentのスタイルでフォーマットされなければなりません。 | |
| 1920 | +そのため、@code{environment}を使用していることに注意してください。 | |
| 1787 | 1921 | |
| 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を使っています。 | |
| 1791 | 1925 | |
| 1792 | 1926 | @example |
| 1793 | 1927 | 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 | ||
| 1796 | 1930 | end |
| 1797 | 1931 | @end example |
| 1798 | 1932 | |
| 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 | +例えば、以下に示す定義は、ウェブメソッドの後に続く空でない文字列をハイライトにします。 | |
| 1809 | 1942 | |
| 1810 | 1943 | @example |
| 1811 | 1944 | vardef non_empty = '[^[:blank:]]+' |
| @@ -1816,22 +1949,24 @@ state webmethod = "OPTIONS|GET|HEAD|POST|PUT|DELETE", | ||
| 1816 | 1949 | end |
| 1817 | 1950 | @end example |
| 1818 | 1951 | |
| 1819 | -このような進んだ機能が必要な場合にはいつでも、いくつかのログファイル(アクセスログ、Apacheのログなど)のハイライトを定義している@file{log.lang}定義ファイルを見てもらったらよい。 | |
| 1820 | -さらに、明示的な名前付きの部分式で十分なような場合、上述の例がその一つなのだが、そういう場合があるかもしれない。 | |
| 1952 | +このような高度な機能が必要な場合には、いつでも、ログファイル(アクセスログ、Apacheのログなど)のハイライトを定義している@file{log.lang}定義ファイルを参照すれば良いでしょう。 | |
| 1953 | +さらに、明示的な名前付きの部分式で十分間に合うような場合もあるかもしれません。 | |
| 1954 | +上述の例がその一つです。 | |
| 1955 | +@xref{Explicit subexpressions with names}. | |
| 1821 | 1956 | |
| 1822 | -このセクションを面白い例で締め括ろう。 | |
| 1823 | -M4ファイルにおけるコメントは、@code{dnl}というキーワードで始まる(行末まで)。 | |
| 1824 | -たとえば、次のようになる。 | |
| 1957 | +このセクションを面白い例で締め括ります。 | |
| 1958 | +M4ファイルにおけるコメントは、@code{dnl}というキーワードで始まります(行末までがコメンドです)。 | |
| 1959 | +例えば、次のようになります。 | |
| 1825 | 1960 | |
| 1826 | 1961 | @example |
| 1827 | 1962 | dnl @@synopsis AC_CTAGS_FLAGS |
| 1828 | 1963 | @end example |
| 1829 | 1964 | |
| 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}ファイルを参照してください)。 | |
| 1835 | 1970 | |
| 1836 | 1971 | @example |
| 1837 | 1972 | state keyword start "dnl" begin |
| @@ -1845,10 +1980,10 @@ state keyword start "dnl" begin | ||
| 1845 | 1980 | end |
| 1846 | 1981 | @end example |
| 1847 | 1982 | |
| 1848 | -一度このstateに入ると、単独の空白文字が全てコメントとしてハイライトされる。 | |
| 1849 | -次に、URLと@@エレメントに対するルールがあって、それから、他の全てがコメントとしてハイライトされる(@code{.+} )。 | |
| 1983 | +このstateに一度入ると、単独の空白文字は、全てコメントとしてハイライトされます。 | |
| 1984 | +次に、URLと@@エレメントに対するルールがあって、それから、他の全てがコメントとしてハイライトされます(@code{.+})。 | |
| 1850 | 1985 | |
| 1851 | -単に次に示す定義をするのが、よりスマートな方法ではないかと考える人もいるかもしれない(after all, why bothering highlighting spaces as comments)。 | |
| 1986 | +単に、次に示す定義の方が、よりスマートな方法ではないかと考える人もいるかもしれません(結局のところ、コメントとして空白をハイライトする必要があるのでしょうか)。 | |
| 1852 | 1987 | |
| 1853 | 1988 | @example |
| 1854 | 1989 | state keyword start "dnl" begin |
| @@ -1859,40 +1994,44 @@ state keyword start "dnl" begin | ||
| 1859 | 1994 | end |
| 1860 | 1995 | @end example |
| 1861 | 1996 | |
| 1862 | -さて、この定義によって、マッチしたURLや@@エレメントの前にある空白は、プリフィックスであると考えられて、normalとしてハイライトされるだろう。 | |
| 1863 | -これは、source-highlightがマッチするルールを探す方法に原因がある。 | |
| 1864 | -詳細については、@ref{source-highlightの仕組み}を参照する。 | |
| 1997 | +さて、この定義によって、マッチしたURLや@@エレメントの前にある空白は、プリフィックスであると考えられて、normalとしてハイライトされます。 | |
| 1998 | +これは、source-highlightがマッチするルールを探す方法に原因があります。 | |
| 1999 | +詳細については別節を参照してください。 | |
| 2000 | +@xref{How source-highlight works}. | |
| 2001 | + | |
| 1865 | 2002 | |
| 1866 | -@node 名前を使った明示的な部分表現, 再定義と置換, state/environment定義, 言語の定義 | |
| 2003 | +@node Explicit subexpressions with names, Redefinitions and Substitutions, State/Environment Definitions, Language Definitions | |
| 1867 | 2004 | @section 名前を使った明示的な部分表現 |
| 1868 | 2005 | |
| 1869 | -よく、同じ正規表現の中でプログラムの二つのエレメントを記述する必要がある。 | |
| 1870 | -それらが密接な関係があるからだが、それらを違うようにハイライトする必要がある場合もある。 | |
| 2006 | +プログラムの二つのエレメントのことを、同じ正規表現の中で記述しなければならないことがよくあります。 | |
| 2007 | +それらが密接な関係があるからなのですが、それらを別々にハイライトする必要がある場合もあります。 | |
| 1871 | 2008 | |
| 1872 | -たとえば、クラス(あるいはインターフェイス)の定義中のクラス名(あるいはインターフェイス名)をハイライトしたいことがあるかもしれない(たとえばJavaなど)。 | |
| 1873 | -従って、@code{class}キーワードが前置きされて、識別子がその後に続くことを利用することができる。 | |
| 2009 | +例えば、(Javaなど場合)クラス定義(あるいは、インターフェイス定義)の中にあるクラス名(あるいは、インターフェイス名)をハイライトしたいことがあるかもしれません。 | |
| 2010 | +それゆえ、前置きされる@code{class}キーワードを利用することができます。 | |
| 2011 | +このキーワードには識別子が続きます。 | |
| 1874 | 2012 | |
| 1875 | -一つ定義を示す。 | |
| 2013 | +一つ定義を示します。 | |
| 1876 | 2014 | |
| 1877 | 2015 | @example |
| 1878 | 2016 | keyword = '(\<(?:class|interface))([[:blank:]]+)([$[:alnum:]]+)' |
| 1879 | 2017 | @end example |
| 1880 | 2018 | |
| 1881 | 2019 | @noindent |
| 1882 | -このような定義は、良い結果をもたらさない。 | |
| 1883 | -というのも、クラスの名前がキーワードとしてハイライトされてしまうからだ。 | |
| 1884 | -これは望んでいたことではないかもしれない。 | |
| 1885 | -たとえば、クラス名は@code{type}としてハイライトされるべきなど。 | |
| 2020 | +このような定義だと、良い結果とはなりません。 | |
| 2021 | +というのも、クラスの名前がキーワードとしてハイライトされてしまうからです。 | |
| 2022 | +例えば、クラス名は@code{type}としてハイライトされるべきだったりなどのため、これは、希望することではないかもしれません。 | |
| 1886 | 2023 | |
| 1887 | -バージョン2.6までは、これを行なう方法はstateかenvironmentを使うことだけだった(@ref{state/environment定義})が、これを書くのはかなり難しくなりがちである。 | |
| 2024 | +バージョン2.6までは、これを行なう方法は、stateかenvironmentを使うことだけでした(@pxref{State/Environment Definitions})が、記述がかなり難しくなる傾向にありました。 | |
| 1888 | 2025 | |
| 1889 | -バージョン2.7から、マークされた部分表現を使って正規表現を記述し、それらをそれぞれ特定の言語エレメントにバインドすることができるようになった(正規表現は@code{`}で括られる必要がある。@ref{正規表現の指定方法}を参照)。 | |
| 2026 | +バージョン2.7からは、マークされた部分表現を使って正規表現を記述し、それらをそれぞれ特定の言語エレメントにバインドすることができるようになりました。 | |
| 2027 | +この場合、正規表現は@code{`}で括られる必要があります。 | |
| 2028 | +@xref{Ways of specifying regular expressions}. | |
| 1890 | 2029 | |
| 1891 | 2030 | @example |
| 1892 | 2031 | (elem1,...,elemn) = `(subexp1)(...)(subexpn)` |
| 1893 | 2032 | @end example |
| 1894 | 2033 | |
| 1895 | -さあ、このシンタックスを使えば、前出のゴールに辿り着ける。 | |
| 2034 | +さあ、このシンタックスを使えば、前出のゴールに辿り着けます。 | |
| 1896 | 2035 | |
| 1897 | 2036 | @example |
| 1898 | 2037 | (keyword,normal,type) = |
| @@ -1900,21 +2039,21 @@ keyword = '(\<(?:class|interface))([[:blank:]]+)([$[:alnum:]]+)' | ||
| 1900 | 2039 | @end example |
| 1901 | 2040 | |
| 1902 | 2041 | @noindent |
| 1903 | -このようにすれば、@code{class}(あるいは@code{interface})はキーワードとしてハイライトされ、間を分けるブランクの文字は@code{normal}としてフォーマットされ、そして、クラス名は@code{type}としてフォーマットされる。 | |
| 2042 | +このようにすれば、@code{class}(あるいは@code{interface})はキーワードとしてハイライトされ、間を分けるブランクの文字は@code{normal}としてフォーマットされ、そして、クラス名は@code{type}としてフォーマットされます。 | |
| 1904 | 2043 | |
| 1905 | -エレメントの名前の数は、正規表現中の部分表現の数と等しくなければならない。 | |
| 1906 | -さらに、少なくとも現在のバージョンでは、その正規表現の中にはマークされた部分表現だけしか入れられず(部分表現の外には文字が無い)、部分表現をネストすることもできない。 | |
| 2044 | +エレメント名の数は、正規表現中の部分表現の数と等しくなければなりませんので注意してください。 | |
| 2045 | +さらに、少なくとも現在のバージョンでは、その正規表現の中には、マークされた部分表現だけしか入れられず(部分表現の外には文字が入れられません)、部分表現をネストすることもできません。 | |
| 1907 | 2046 | |
| 1908 | -従って次のような記述は正しくない。 | |
| 2047 | +従って、次のような記述は間違いです。 | |
| 1909 | 2048 | |
| 1910 | 2049 | @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) = `...(...)...(...)` # 部分表現外の文字 | |
| 1914 | 2053 | @end example |
| 1915 | 2054 | |
| 1916 | -このメカニズムでは、ある状況において、正規表現をもっとコンパクトに、そして恐らくもっと読み易いやり方で表記することを許している。 | |
| 1917 | -たとえば、次に示すようなChangeLogの各部をハイライトする場合を考える(オプショナルな@code{*}はシンボルとして、オプショナルなファイル名とカッコ内に記述されたエレメントは@code{file}エレメントとして、そして残りの部分は@code{normal}でハイライトする)。 | |
| 2055 | +このメカニズムを使うと、ある状況において、正規表現をもっとコンパクトに、そして、恐らくもっと読み易いやり方で表記することが許されます。 | |
| 2056 | +例えば、次に示すようなChangeLogの各部をハイライトする場合を考えます(省略可能な@code{*}はシンボルとして、省略可能なファイル名とカッコ内に指定されたエレメントは@code{file}エレメントとして、そして、残りの部分は@code{normal}としてハイライトします)。 | |
| 1918 | 2057 | |
| 1919 | 2058 | @example |
| 1920 | 2059 | * src/Makefile.am (source_highlight_SOURCES): correctly include |
| @@ -1924,7 +2063,7 @@ keyword = '(\<(?:class|interface))([[:blank:]]+)([$[:alnum:]]+)' | ||
| 1924 | 2063 | @end example |
| 1925 | 2064 | |
| 1926 | 2065 | @noindent |
| 1927 | -バージョン2.6以前は、次の二つの言語定義を使っていた。 | |
| 2066 | +バージョン2.6以前は、次の二つの言語定義を使っていました。 | |
| 1928 | 2067 | |
| 1929 | 2068 | @example |
| 1930 | 2069 | state symbol start '^(?:[[:blank:]]+)\*[[:blank:]]+' begin |
| @@ -1941,8 +2080,8 @@ end | ||
| 1941 | 2080 | @end example |
| 1942 | 2081 | |
| 1943 | 2082 | @noindent |
| 1944 | -これを書いてしまった後に読むのは大変だ。 | |
| 1945 | -さて今は、もっと簡単に書くことができる(@file{changelog.lang}を見よ)。 | |
| 2083 | +これは、書いてしまった後に読むのは大変です。 | |
| 2084 | +今は、もっと簡単に書くことができます(@file{changelog.lang}を見てください)。 | |
| 1946 | 2085 | |
| 1947 | 2086 | @example |
| 1948 | 2087 | (normal,symbol,normal,file)= |
| @@ -1950,21 +2089,23 @@ end | ||
| 1950 | 2089 | (normal,file)= `(^[[:blank:]]+)((?:[^:]+\:)?)` |
| 1951 | 2090 | @end example |
| 1952 | 2091 | |
| 1953 | -名前の付きの明示的な部分表現を使った言語エレメントの定義は複数のエレメントからできていて、それゆえ複数のフォーマットスタイルから成っているので、environmentを開始するのに使うことはできない(デフォルトのエレメントは何なのだろう?)。 | |
| 1954 | -一方、上で見たように、stateを開始するのには使うことができる。 | |
| 2092 | +名前付きの明示的な部分表現を使った言語エレメントの定義は、複数のエレメントからできています。 | |
| 2093 | +それゆえ、複数のフォーマットスタイルから構成されますので、environmentを開始するのに使うことはできません(デフォルトのエレメントは何になるのでしょうか)。 | |
| 2094 | +一方、上で見たように、stateを開始するのには使うことができます。 | |
| 1955 | 2095 | |
| 1956 | -@node 再定義と置換, source-highlightの仕組み, 名前を使った明示的な部分表現, 言語の定義 | |
| 2096 | + | |
| 2097 | +@node Redefinitions and Substitutions, How source-highlight works, Explicit subexpressions with names, Language Definitions | |
| 1957 | 2098 | @section 再定義と置換 |
| 1958 | 2099 | |
| 1959 | -この二つの機能は、既存の言語定義にいくらかの変更加えて再利用することによって言語を定義したい場合に便利だ。 | |
| 1960 | -通常だと、他の言語定義ファイルを@code{include}して、いくつかの要素について再定義と置き換えを行なう。 | |
| 2100 | +この二つの機能は、既存の言語定義に何らかの変更加えて再利用することによって言語を定義したい場合に便利です。 | |
| 2101 | +通常は、他の言語定義ファイルを@code{include}して、いくつかの要素について再定義と置き換えを行うことになります。 | |
| 1961 | 2102 | |
| 1962 | 2103 | @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}の中身は次のように要約できます。 | |
| 1968 | 2109 | |
| 1969 | 2110 | @example |
| 1970 | 2111 | include "caml.lang" |
| @@ -1974,9 +2115,11 @@ redef keyword = "abstraction|abstype|and|andalso..." | ||
| 1974 | 2115 | redef type = "int|byte|boolean|char|long|float|double|short|void" |
| 1975 | 2116 | @end example |
| 1976 | 2117 | |
| 1977 | -この新しい言語エレメントの定義は、再定義されたちょうどその位置に現われるので、そのような正規表現は、それよりも前のもの(インクルードされるファイルにあるもの)がマッチしなかったときだけマッチするということを意味している。 | |
| 1978 | -これによって、望まない結果が生じるケースもある(@code{sml}のケースは違うけれども)。 | |
| 1979 | -言い換えてみよう。次のコードを見てほしい。 | |
| 2118 | +この新しい言語エレメントの定義は、再定義されたちょうどその位置に現われます。 | |
| 2119 | +そのため、その正規表現は、それ以前の正規表現(インクルードされるファイルにあるもの)がマッチしなかった時だけマッチするということを意味しています。 | |
| 2120 | +これによって、望まない結果が生じるケースもあります(@code{sml}のケースは違いますけれども)。 | |
| 2121 | +言い換えてみます。 | |
| 2122 | +次のコードを見てください。 | |
| 1980 | 2123 | |
| 1981 | 2124 | @example |
| 1982 | 2125 | keyword = "foo" |
| @@ -1986,7 +2129,7 @@ redef keyword = "myfoo" | ||
| 1986 | 2129 | @end example |
| 1987 | 2130 | |
| 1988 | 2131 | @noindent |
| 1989 | -このコードはさらに次のコードと等価である。 | |
| 2132 | +このコードは、次のコードと等価です。 | |
| 1990 | 2133 | |
| 1991 | 2134 | @example |
| 1992 | 2135 | type = "int" |
| @@ -1994,9 +2137,10 @@ keyword = "myfoo" | ||
| 1994 | 2137 | @end example |
| 1995 | 2138 | |
| 1996 | 2139 | @cindex subst |
| 1997 | -これが必要なものではないのなら、@code{subst}を使うことができる。 | |
| 1998 | -これは@code{redef}と似ているが、言語エレメントの前の最初の定義を、その最初の定義のちょうどその位置で置き換えてしまうということが異なる(他の可能な限りの定義は単に消去される)。 | |
| 1999 | -次のコードを見てほしい。 | |
| 2140 | +これが所望でなければ、@code{subst}を使うことができます。 | |
| 2141 | +これは、@code{redef}と似ています。 | |
| 2142 | +ただし、その言語エレメントの最初の定義を、その最初の定義のちょうどその位置で置き換えてしまいます(他の定義があった場合は単に消去されます)。 | |
| 2143 | +次のコードを見てください。 | |
| 2000 | 2144 | |
| 2001 | 2145 | @example |
| 2002 | 2146 | keyword = "foo" |
| @@ -2006,15 +2150,16 @@ subst keyword = "myfoo" | ||
| 2006 | 2150 | @end example |
| 2007 | 2151 | |
| 2008 | 2152 | @noindent |
| 2009 | -これはすなわち、さらに次のコードと等価である。 | |
| 2153 | +これは、次のコードと等価です。 | |
| 2010 | 2154 | |
| 2011 | 2155 | @example |
| 2012 | 2156 | keyword = "myfoo" |
| 2013 | 2157 | type = "int" |
| 2014 | 2158 | @end example |
| 2015 | 2159 | |
| 2016 | -要求にぴったりと合うのがどちらなのかを決めるのはあなた次第だ。 | |
| 2017 | -この機能で、@code{java}を元にして@code{javascript}を定義してもよい。 | |
| 2160 | +要求にぴったりと合うのがどちらなのかを判断するのはユーザです。 | |
| 2161 | +この機能を使って、@code{java}の用語を元にして@code{javascript}を定義することもできるでしょう。 | |
| 2162 | +例えば、次のようになります。 | |
| 2018 | 2163 | |
| 2019 | 2164 | @example |
| 2020 | 2165 | include "java.lang" |
| @@ -2023,125 +2168,128 @@ subst keyword = "abstract|break|case|catch|class|if..." | ||
| 2023 | 2168 | @end example |
| 2024 | 2169 | |
| 2025 | 2170 | @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 | + | |
| 2029 | 2176 | |
| 2030 | -@node source-highlightの仕組み, 正規表現に関する注意, 再定義と置換, 言語の定義 | |
| 2177 | +@node How source-highlight works, Notes on regular expressions, Redefinitions and Substitutions, Language Definitions | |
| 2031 | 2178 | @section source-highlightの仕組み |
| 2032 | 2179 | |
| 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においては、使用している戦略が完全に概念的に正しいものではなく、オーバーヘッドが多くありました。}。 | |
| 2035 | 2183 | |
| 2036 | -まず、各エレメントの定義ごとに、source-highlightがハイライトのためのルールを作る(同じ言語エレメントに該当するものでもそのようにする)。 | |
| 2037 | -従って、各言語エレメントのファイルはハイライトのためのルールのリストに対応する。 | |
| 2038 | -source-highlightは、入力ファイルの各行について、その行全体を(もっと正しく言うと、その行のまだハイライトされていない部分を)これらのルール全てに対してマッチしてみる。 | |
| 2039 | -ハイライトのためのルールが一つマッチしたらすぐに止めるわけではない。 | |
| 2040 | -「ベター」にマッチする別のルールがあるかもしれないからだ。 | |
| 2041 | -ここで、全てというのは基本的に@emph{ベターマッチ}という意味に帰着する。 | |
| 2184 | +まず、source-highlightは、各エレメントの定義ごとに、ハイライトのためのルールを作ります(同じ言語エレメントに該当するものでもそのようにします)。 | |
| 2185 | +従って、各言語エレメントのファイルは、ハイライトのためのルールのリストに対応することになります。 | |
| 2186 | +source-highlightは、入力ファイルの各行について、その行全体(もっと、正しく言うと、その行のまだハイライトされていない部分)を、これらのルール全てに対してマッチしてみます。 | |
| 2187 | +ハイライトのためのルールが一つマッチしたらすぐにマッチを止めるわけではありません。 | |
| 2188 | +「ベター」にマッチする別のルールがあるかもしれないからです。 | |
| 2189 | +ここで、全てのものが、基本的に、@emph{ベターマッチ}という意味に帰着します。 | |
| 2042 | 2190 | |
| 2043 | 2191 | @cindex matching strategy |
| 2044 | -source-highlightが使う戦略は、次の状態の最初にマッチしたルールを選択するということだ。 | |
| 2192 | +source-highlightが使う戦略は、次の状態のうち、最初にマッチしたルールを選択するということです。 | |
| 2045 | 2193 | |
| 2046 | 2194 | @itemize |
| 2047 | - | |
| 2048 | 2195 | @item |
| 2049 | -空のプリフィックス(あるいは空白の文字、すなわちスペースやタブだけを含むプリフィックス)を伴う | |
| 2196 | +空のプリフィックス(あるいは、空白文字だけ、すなわち、スペースやタブだけを含むプリフィックス)とマッチする。 | |
| 2050 | 2197 | |
| 2051 | 2198 | @item |
| 2052 | -最小のプリフィックスを伴う | |
| 2053 | - | |
| 2199 | +最小のプリフィックスとマッチする。 | |
| 2054 | 2200 | @end itemize |
| 2055 | 2201 | |
| 2056 | 2202 | @cindex prefix |
| 2057 | -ここでマッチしたルールにおける@emph{プリフィックス}というのは、検査済みの文字列の、マッチしなかった部分である@footnote{正規表現の用語よれば}。 | |
| 2058 | -従って、たとえば、次の文字列に対して@code{=}という簡単な正規表現をマッチさせてみる。 | |
| 2203 | +ここで、マッチしたルールにおける@emph{プリフィックス}というのは、調査済みの文字列のマッチしなかった部分のことです@footnote{正規表現の用語よれば。}。 | |
| 2204 | +従って、例えば、次の文字列に対して、@code{=}という簡単な正規表現をマッチさせてみます。 | |
| 2059 | 2205 | |
| 2060 | 2206 | @example |
| 2061 | 2207 | i = 10; |
| 2062 | 2208 | @end example |
| 2063 | 2209 | |
| 2064 | 2210 | @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 | +そして、これが、その行全体を処理するまで続きます。 | |
| 2069 | 2215 | |
| 2070 | -例を用いて、もう少し詳しくこの戦略を説明したい。 | |
| 2071 | -次に示す言語定義ファイルを考えてみよう。 | |
| 2216 | +例を用いて、もう少し詳しくこの戦略を説明します。 | |
| 2217 | +次に示す言語定義ファイルを考えてみてください。 | |
| 2072 | 2218 | |
| 2073 | 2219 | @include strategy_example.lang.texinfo |
| 2074 | 2220 | |
| 2075 | 2221 | @noindent |
| 2076 | -そして、次の行をハイライトさせる。 | |
| 2222 | +そして、次の行をハイライトさせます。 | |
| 2077 | 2223 | |
| 2078 | 2224 | @example |
| 2079 | 2225 | int i = null |
| 2080 | 2226 | @end example |
| 2081 | 2227 | |
| 2082 | -source-highlightは以下のステップを実行する。 | |
| 2228 | +source-highlightは以下のステップを実行します。 | |
| 2083 | 2229 | |
| 2084 | 2230 | @enumerate |
| 2085 | 2231 | |
| 2086 | 2232 | @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}となります。 | |
| 2091 | 2237 | |
| 2092 | 2238 | @item |
| 2093 | -最初にマッチするルールは@code{keyword}に対するものだ。 | |
| 2094 | -プリフィックスは@code{ i = }である。 | |
| 2095 | -このプリフィックスは空でない(あるいはスペースだけを含むわけではない)ので他のルールを検査する。 | |
| 2239 | +最初にマッチするルールは、@code{keyword}に対するものです。 | |
| 2240 | +プリフィックスは@code{ i = }です。 | |
| 2241 | +このプリフィックスは空でありません(あるいは、スペースだけを含むわけではありません)。 | |
| 2242 | +ですから、他のルールを検査します。 | |
| 2096 | 2243 | |
| 2097 | 2244 | @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}となります。 | |
| 2104 | 2251 | |
| 2105 | 2252 | @item |
| 2106 | -最初にマッチするルールは@code{keyword}に対するものだ。 | |
| 2107 | -プリフィックスは空白だけなので、これ以上見る必要はない。 | |
| 2108 | -@code{null}が@code{keyword}としてハイライトされる。 | |
| 2109 | - | |
| 2253 | +最初にマッチするルールは、@code{keyword}に対するものです。 | |
| 2254 | +プリフィックスは空白だけですので、これ以上見る必要はありません。 | |
| 2255 | +@code{null}が@code{keyword}としてハイライトされます。 | |
| 2110 | 2256 | @end enumerate |
| 2111 | 2257 | |
| 2112 | -以下の言語定義を示してこのセクションを終える。 | |
| 2113 | -この言語定義は、ハイライトの戦略について述べたことをまとめたものだ。 | |
| 2258 | +以下の言語定義を示してこのセクションを終えることにします。 | |
| 2259 | +この言語定義は、ハイライトの戦略について述べたことをまとめたものです。 | |
| 2114 | 2260 | |
| 2115 | 2261 | @include test_string_stop.lang.texinfo |
| 2116 | 2262 | |
| 2117 | 2263 | |
| 2118 | -@node 正規表現に関する注意, check-regexpプログラム, source-highlightの仕組み, 言語の定義 | |
| 2264 | +@node Notes on regular expressions, The program check-regexp, How source-highlight works, Language Definitions | |
| 2119 | 2265 | @section 正規表現に関する注意 |
| 2120 | 2266 | @cindex regular expressions |
| 2121 | 2267 | |
| 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 | +けれども、ここでは、あまり知られていないかもしれませんが、言語の定義に非常に便利な正規表現の形式についていくらか説明をしようと思います。 | |
| 2123 | 2270 | |
| 2124 | 2271 | @cindex non-marking parenthesis |
| 2125 | -カッコを使って正規表現の一部をグループ化する必要はあるが、マークされた部分表現を余分に吐き出させたくないようなときは、通常、@emph{マークしないカッコ}@code{(?:expression)}を使うことができる。 | |
| 2126 | -これは、言語定義のシンタックスには必要ではない。 | |
| 2127 | -たとえ普通のカッコを使ったとしても、source-highlightはマークしないカッコへそれを変形してしまう。 | |
| 2272 | +通常、カッコを使って正規表現の一部をグループ化する必要があるが、マークされた部分表現を余分に吐き出させたくないような時は、@emph{マークしないカッコ}@code{(?:expression)}を使うことができます。 | |
| 2273 | +これは、言語定義のシンタックスに必須のものではありません。 | |
| 2274 | +たとえ普通のカッコを使ったとしても、source-highlightは、マークしないカッコへそれを変形してしまいます。 | |
| 2128 | 2275 | |
| 2129 | 2276 | @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{条件}の時に便利です。 | |
| 2133 | 2280 | |
| 2134 | 2281 | @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 | +次のような場合を考えます。 | |
| 2139 | 2287 | |
| 2140 | 2288 | @example |
| 2141 | 2289 | regexp = `s([^[:alnum:][:blank:]]).*\1.*\1[ixsmogce]*` |
| 2142 | 2290 | @end example |
| 2143 | 2291 | |
| 2144 | -これは次の形式の全てにマッチする。 | |
| 2292 | +これは、次の形式の全てにマッチします。 | |
| 2145 | 2293 | |
| 2146 | 2294 | @example |
| 2147 | 2295 | s/foo/bar/g |
| @@ -2151,30 +2299,34 @@ s@@foo@@bar@@g | ||
| 2151 | 2299 | @end example |
| 2152 | 2300 | |
| 2153 | 2301 | @cindex lookahead asserts |
| 2154 | -正規表現の形式で便利なのが、@emph{前方先読み表明(Forward Lookahead Asserts)}だ。 | |
| 2155 | -これには二つの形式があって、一つは肯定的先読み表明そしてもう一つが否定的先読み表明である。 | |
| 2302 | +正規表現の形式で便利なのが、@emph{前方先読み表明(Forward Lookahead Asserts)}です。 | |
| 2303 | +前方先読み表明には二つの形式があります。 | |
| 2304 | +一つは、肯定的先読み表明、そして、もう一つが、否定的先読み表明です。 | |
| 2156 | 2305 | |
| 2157 | 2306 | @table @code |
| 2158 | 2307 | @item (?=abc) |
| 2159 | -``abc''という表現が後に続く場合にだけゼロ文字にマッチする。(訳注:ゼロ文字にマッチするというのは、要するに、この表現自体何らかの個別の文字にマッチしたり文字を捕捉したりすることはなく、ゼロの幅であるということです) | |
| 2308 | +``abc''という表現が後に続く場合にだけ、ゼロ文字にマッチします@footnote{訳注:ゼロ文字にマッチするというのは、要するに、この表現自体何らかの個別の文字にマッチしたり文字を捕捉したりすることはなく、ゼロの幅であるということです。}。 | |
| 2309 | + | |
| 2160 | 2310 | @item (?!abc) |
| 2161 | -``abc''という表現が後に続かない場合にだけゼロ文字にマッチする。 | |
| 2311 | +``abc''という表現が後に続かない場合にだけ、ゼロ文字にマッチします。 | |
| 2162 | 2312 | @end table |
| 2163 | 2313 | |
| 2164 | -たとえば、関数の定義(@file{function.lang})において、次のような正規表現を使う。 | |
| 2314 | +例えば、関数の定義(@file{function.lang})において、次のような正規表現を使います。 | |
| 2165 | 2315 | |
| 2166 | 2316 | @example |
| 2167 | 2317 | ([[:alpha:]]|_)[[:word:]]*(?=[[:blank:]]*\() |
| 2168 | 2318 | @end example |
| 2169 | 2319 | |
| 2170 | 2320 | @noindent |
| 2171 | -これによって、@code{(?=\()}という正規表現で、関数名の後開きカッコ@code{(}がマッチするかどうかをテストする。 | |
| 2172 | -しかし、それがマッチすることがあって、入力にその部分を残したままにしておく。 | |
| 2173 | -そうすると、そのカッコが関数名と同じようにフォーマットされることは無い(この言語定義の理解を深めるには@ref{source-highlightの仕組み}も参照してほしい)。 | |
| 2321 | +これによって、@code{(?=\()}という正規表現で、関数名の後に、開きカッコ@code{(}がマッチするかどうかをテストします。 | |
| 2322 | +しかし、それがマッチ可能な場合には、その部分を入力に残したままにしておきます。 | |
| 2323 | +そうすると、そのカッコは、関数名と同じようにフォーマットされることはありません。 | |
| 2324 | +この言語定義の理解を深めるには、別節も参照してください。 | |
| 2325 | +@xref{How source-highlight works}. | |
| 2174 | 2326 | |
| 2175 | -このような正規表現の形式を使う場合には注意してほしい。 | |
| 2176 | -入力の一部が実際には取り除かれないので、正規表現をきちんと書かなければ、いつも同じ入力部分をスキャンしてしまうことになるかもしれない(要するにループしている)。 | |
| 2177 | -たとえば、次のような言語定義を考えてみよ。 | |
| 2327 | +このような正規表現の形式を使う場合には注意してください。 | |
| 2328 | +入力の一部が実際に取り除かれませんので、正規表現をきちんと書かなければ、いつも同じ入力部分をスキャンしてしまうことになるかもしれません(要するにループしています)。 | |
| 2329 | +例えば、次のような言語定義を考えてみてください。 | |
| 2178 | 2330 | |
| 2179 | 2331 | @example |
| 2180 | 2332 | state foo = '(?=foo)' begin |
| @@ -2183,7 +2335,7 @@ end | ||
| 2183 | 2335 | @end example |
| 2184 | 2336 | |
| 2185 | 2337 | @noindent |
| 2186 | -そして次のものが入力ファイルである。 | |
| 2338 | +以下が入力ファイルです。 | |
| 2187 | 2339 | |
| 2188 | 2340 | @example |
| 2189 | 2341 | hello |
| @@ -2192,10 +2344,10 @@ bar | ||
| 2192 | 2344 | @end example |
| 2193 | 2345 | |
| 2194 | 2346 | @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 | +恐らく、次のような言語定義が書きたかったのではないでしょうか。 | |
| 2199 | 2351 | |
| 2200 | 2352 | @example |
| 2201 | 2353 | state foo = '(?=foo)' begin |
| @@ -2204,31 +2356,33 @@ end | ||
| 2204 | 2356 | @end example |
| 2205 | 2357 | |
| 2206 | 2358 | @noindent |
| 2207 | -しかし、カット・アンド・ペースト・エラーというのは勝手なものだった ;-) | |
| 2359 | +しかし、カット・アンド・ペーストのエラーというのは勝手なものでした。 ;-) | |
| 2208 | 2360 | |
| 2209 | 2361 | @cindex lookbehind asserts |
| 2210 | -@emph{戻り読み表明}というものも使うことができる。 | |
| 2362 | +@emph{戻り読み表明}も使うことができます。 | |
| 2211 | 2363 | |
| 2212 | 2364 | @table @code |
| 2213 | 2365 | @item (?<=pattern) |
| 2214 | - 現在の場所よりも前の文字に対してpatternがマッチするときだけゼロ文字消費する(patternは固定幅でなければならない)。 | |
| 2366 | + 現在の場所よりも前の文字に対してpatternがマッチする時だけゼロ文字消費します(patternは固定幅でなければなりません)。 | |
| 2215 | 2367 | @item (?<!pattern) |
| 2216 | - 現在の場所よりも前の文字に対してpatternがマッチしないときだけゼロ文字消費する(patternは固定幅でなければならない)。 | |
| 2368 | + 現在の場所よりも前の文字に対してpatternがマッチしない時だけゼロ文字消費します(patternは固定幅でなければなりません)。 | |
| 2217 | 2369 | @end table |
| 2218 | 2370 | |
| 2219 | 2371 | @cindex conditional expressions |
| 2220 | -もう一つ、進んだ正規表現のメカニズムなのが@emph{条件式}の一つである。 | |
| 2372 | +もう一つ、進んだ正規表現のメカニズムなのが@emph{条件式}の一つです。 | |
| 2221 | 2373 | |
| 2222 | 2374 | @table @code |
| 2223 | 2375 | @item (?(condition)yes-pattern|no-pattern) |
| 2224 | -conditionが真であればyes-patternのマッチを試み、そうでなければno-patternのマッチを試みる。 | |
| 2376 | +conditionが真であればyes-patternのマッチを試みます。 | |
| 2377 | +そうでなければno-patternのマッチを試みます。 | |
| 2225 | 2378 | @item (?(condition)yes-pattern) |
| 2226 | -conditionが真であればyes-patternのマッチを試み、そうでなければ失敗する。 | |
| 2379 | +conditionが真であればyes-patternのマッチを試みます。 | |
| 2380 | +そうでなければ失敗します。 | |
| 2227 | 2381 | @end table |
| 2228 | 2382 | |
| 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 | +これは、読み易くなるように、より行を使って書いたものです。 | |
| 2232 | 2386 | |
| 2233 | 2387 | @example |
| 2234 | 2388 | (?: |
| @@ -2246,23 +2400,25 @@ conditionは先読み表明か、あるいはマークされた部分表現の | ||
| 2246 | 2400 | ))))) |
| 2247 | 2401 | @end example |
| 2248 | 2402 | |
| 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 | + | |
| 2250 | 2405 | |
| 2251 | -@node check-regexpプログラム, 言語エレメントの一覧, 正規表現に関する注意, 言語の定義 | |
| 2406 | +@node The program check-regexp, Listing Language Elements, Notes on regular expressions, Language Definitions | |
| 2252 | 2407 | @section The program @command{check-regexp} |
| 2253 | 2408 | |
| 2254 | 2409 | @cindex @command{check-regexp} |
| 2255 | -バージョン2.7から、source-highlightのパッケージには、@command{check-regexp}という小さな追加プログラムが含まれている。 | |
| 2256 | -このプログラムは、コマンドラインで正規表現をテストできるようにするものだ。 | |
| 2410 | +バージョン2.7から、source-highlightのパッケージには、@command{check-regexp}という小さな追加プログラムが含まれています。 | |
| 2411 | +このプログラムは、コマンドラインで正規表現をテストできるようにするものです。 | |
| 2257 | 2412 | |
| 2258 | -単に、コマンドラインの1番目の引数として正規表現を書き、次にマッチしたい文字列を書いて渡す(実際にこのプログラムは指定された正規表現で文字列を探索するので、文字列全体にマッチする必要はない)。 | |
| 2259 | -シェルによる置換を避けるために、正規表現と文字列の両方を一重引用符で括ることは大事なことだ。 | |
| 2413 | +単に、コマンドラインの1番目の引数として正規表現を書き、次に、マッチしたい文字列を書いて渡します(実際に、このプログラムは、指定された正規表現で文字列を探索しますので、文字列全体にマッチする必要はありません)。 | |
| 2414 | +シェルによる置換を避けるために、正規表現と文字列の両方を一重引用符で括ることが大事なことです。 | |
| 2260 | 2415 | |
| 2261 | -プログラムは(成功裏するかもしれないマッチング)に関する情報を出力する。 | |
| 2262 | -@code{what[0]}の部分は、マッチ全体を表わしていて、@code{what[i]}の部分はマッチしたi番目のマークされた部分表現を表わしている。 | |
| 2263 | -このプログラムは、プリフィックスとサフィックスについても出力する。 | |
| 2416 | +プログラムは、(成功するマッチング)@footnote{何故かカッコ書き。}に関する情報を出力します。 | |
| 2417 | +@code{what[0]}の部分は、マッチ全体を表わしています。 | |
| 2418 | +@code{what[i]}の部分は、マッチした部分のうち、マークされた部分表現のi番目を表わしています。 | |
| 2419 | +このプログラムは、プリフィックスとサフィックスについても出力します。 | |
| 2264 | 2420 | |
| 2265 | -このプログラムの出力例である。 | |
| 2421 | +以下は、このプログラムの出力例です。 | |
| 2266 | 2422 | |
| 2267 | 2423 | @example |
| 2268 | 2424 | check-regexp '(a+)(.*)\1' 'aabcdaa' 'babbbacc' |
| @@ -2288,7 +2444,7 @@ suffix: cc | ||
| 2288 | 2444 | total number of matches: 1 |
| 2289 | 2445 | @end example |
| 2290 | 2446 | |
| 2291 | -そして、次は、@ref{正規表現に関する注意}で見た、カッコをマッチングする例である。 | |
| 2447 | +そして、次は、別の節(@pxref{Notes on regular expressions})で見た、カッコをマッチングする例です。 | |
| 2292 | 2448 | |
| 2293 | 2449 | @smallexample |
| 2294 | 2450 | check-regexp \ |
| @@ -2314,43 +2470,44 @@ what[0]: [hithere] | ||
| 2314 | 2470 | total number of matches: 1 |
| 2315 | 2471 | @end smallexample |
| 2316 | 2472 | |
| 2317 | -@node 言語エレメントの一覧, まとめの所見, check-regexpプログラム, 言語の定義 | |
| 2473 | + | |
| 2474 | +@node Listing Language Elements, Concluding Remarks, The program check-regexp, Language Definitions | |
| 2318 | 2475 | @section 言語エレメントの一覧 |
| 2319 | 2476 | |
| 2320 | -言語の定義を本当に役立つものとするためには、フォーマットするスタイルと正しく組み合わせて使わなければならい(@ref{出力フォーマットスタイル}を参照せよ)。 | |
| 2321 | -しかし、別々のこのファイルが同じ人物によって開発されるわけでないかもしれない。 | |
| 2322 | -あるいは、ただ単に、誰かがいずれかのファイルをカスタマイズしたいと考えるかもしれない。 | |
| 2323 | -出力フォーマットスタイルファイルをうまく定義するには、言語定義ファイルに定義されている各言語エレメントのことを知っておくべきだ。 | |
| 2324 | -言語定義ファイル自体の中身を見なければならない(そして再帰的にインクルードされているファイルをそれぞれ見なければならない)代わりに、コマンドラインオプションの | |
| 2477 | +言語の定義を本当に役立つものとするためには、フォーマットするスタイルと正しく組み合わせて使わなければなりません(@pxref{Output format style})。 | |
| 2478 | +しかし、この別々のファイルが、同じ人物によって開発されるわけでないかもしれません。 | |
| 2479 | +あるいは、ただ単に、いずれかのファイルをカスタマイズしようと考える人がいるかもしれません。 | |
| 2480 | +出力フォーマットスタイルファイルをうまく定義するには、言語定義ファイルに定義されている各言語エレメントのことを知っておく必要があります。 | |
| 2325 | 2481 | @cindex @code{--show-lang-elements} |
| 2326 | -@code{--show-lang-elements}を使ってもよい@footnote{バージョン2.4から}。 | |
| 2327 | -これは、指定された言語定義ファイルでハイラトされる言語エレメントを全て標準出力へ単に出力するものだ。 | |
| 2482 | +言語定義ファイル自体の中身を見なければならない(そして、再帰的にインクルードされているファイルをそれぞれ見なければならない)代わりに、コマンドラインオプションの@code{--show-lang-elements}を使うことができます@footnote{バージョン2.4からです。}。 | |
| 2483 | +これは、指定された言語定義ファイルでハイライトされる言語エレメントを標準出力へ単に全て出力します。 | |
| 2328 | 2484 | |
| 2329 | -たとえば、@code{cpp.lang}の場合次のようなものが得られる。 | |
| 2485 | +例えば、@code{cpp.lang}の場合、次のようなものが出力されます。 | |
| 2330 | 2486 | |
| 2331 | 2487 | @example |
| 2332 | 2488 | @include cpp.langelems.texinfo |
| 2333 | 2489 | @end example |
| 2334 | 2490 | |
| 2335 | -また、@code{log.lang}の場合ならば次のようなものが得られる。 | |
| 2491 | +また、@code{log.lang}の場合ならば、次のようなものが出力されます。 | |
| 2336 | 2492 | |
| 2337 | 2493 | @example |
| 2338 | 2494 | @include log.langelems.texinfo |
| 2339 | 2495 | @end example |
| 2340 | 2496 | |
| 2341 | -@node まとめの所見, デバッギング, 言語エレメントの一覧, 言語の定義 | |
| 2497 | + | |
| 2498 | +@node Concluding Remarks, Debugging, Listing Language Elements, Language Definitions | |
| 2342 | 2499 | @section まとめの所見 |
| 2343 | 2500 | |
| 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{$}が前に付いている変数は除きます)。 | |
| 2348 | 2505 | |
| 2349 | 2506 | @example |
| 2350 | 2507 | globaltags : options @{ if (...) @{ setTags( $1 ); @} @} |
| 2351 | 2508 | @end example |
| 2352 | 2509 | |
| 2353 | -これを行なうのは簡単だ(@file{flex.lang}から取ったもの)。 | |
| 2510 | +これを行なうのは簡単です(@file{flex.lang}から持って来たものです)。 | |
| 2354 | 2511 | |
| 2355 | 2512 | @example |
| 2356 | 2513 | state cbracket delim "@{" "@}" multiline nested begin |
| @@ -2359,25 +2516,26 @@ state cbracket delim "@{" "@}" multiline nested begin | ||
| 2359 | 2516 | end |
| 2360 | 2517 | @end example |
| 2361 | 2518 | |
| 2362 | -@code{nested}を使っているので、最後の閉じカッコ@code{@}}がマッチしたならばC++言語の定義はもうそれ以上は考慮されないということが確認できる。 | |
| 2519 | +@code{nested}を使っているので、最後の閉じカッコ@code{@}}がマッチしたならば、C++言語の定義はそれ以上はもう考慮されません。 | |
| 2520 | + | |
| 2363 | 2521 | |
| 2364 | -@node デバッギング, 言語定義のチュートリアル, まとめの所見, 言語の定義 | |
| 2522 | +@node Debugging, Tutorials on Language Definitions, Concluding Remarks, Language Definitions | |
| 2365 | 2523 | @section デバッギング |
| 2366 | 2524 | @cindex debug |
| 2367 | 2525 | |
| 2368 | -言語の定義ファイルを書くとき、デバッグできるとかなり便利だ(複雑な正規表現を使用することで、思いもよらない振舞に悩むかもしれない)。 | |
| 2369 | -バージョン2.1からは、@code{--debug-lang}というコマンドラインオプションが利用できる。 | |
| 2370 | -このオプションを使えば、追加的な情報が標準出力へ出力される。 | |
| 2526 | +言語の定義ファイルを書く時、デバッグができるとかなり便利です(複雑な正規表現を使用することで、思いもよらない振る舞いに悩むかもしれません)。 | |
| 2527 | +バージョン2.1からは、@code{--debug-lang}というコマンドラインオプションが利用できます。 | |
| 2528 | +このオプションを使えば、追加的な情報が標準出力へ出力されます。 | |
| 2371 | 2529 | |
| 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}というコマンドを使えば、出力ファイルに対する変更をオンザフライに見ることができます。 | |
| 2379 | 2537 | |
| 2380 | -このコマンドラインオプションを使用したときに生成される追加的な情報というのは次のフォーマットになっている。 | |
| 2538 | +このコマンドラインオプションを使用した時に生成される追加的な情報というのは次のフォーマットになっています。 | |
| 2381 | 2539 | |
| 2382 | 2540 | @example |
| 2383 | 2541 | <.lang filename>:<line number> |
| @@ -2387,16 +2545,19 @@ entering: <next state's id> | ||
| 2387 | 2545 | exiting state, level: <number of states> |
| 2388 | 2546 | @end example |
| 2389 | 2547 | |
| 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}のスタイルがその文字列をフォーマットするのに使われるということを意味しています。 | |
| 2393 | 2554 | |
| 2394 | -次に示す(簡単化された)Javaのソースファイルを考えてみる。 | |
| 2555 | +次に示す(簡単化された)Javaのソースファイルを考えてみてください。 | |
| 2395 | 2556 | |
| 2396 | 2557 | @include debug.java.texinfo |
| 2397 | 2558 | |
| 2398 | -さて、@code{--debug-lang}コマンドラインオプションを使って、@file{java.lang}をデバッグすることができる。 | |
| 2399 | -そしてその出力は次のようになる。 | |
| 2559 | +ここで、@code{--debug-lang}コマンドラインオプションを使って、@file{java.lang}をデバッグすることができます。 | |
| 2560 | +出力は次のようになります。 | |
| 2400 | 2561 | |
| 2401 | 2562 | @example |
| 2402 | 2563 | c_comment.lang:24 |
| @@ -2432,190 +2593,209 @@ exiting state, level: 1 | ||
| 2432 | 2593 | ... omissis ... |
| 2433 | 2594 | @end example |
| 2434 | 2595 | |
| 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"}と表示しているところですが、これは、行末にマッチしたということを示しています。 | |
| 2441 | 2602 | |
| 2442 | -デバッグに便利なもう一つの機能が、@code{--show-regex}オプションである。 | |
| 2443 | -これは、source-highlightが作成した正規表現オートマトンを標準出力に出力するものだ。 | |
| 2603 | +デバッグに便利なもう一つの機能が、@code{--show-regex}オプションです。 | |
| 2604 | +これは、source-highlightが作成した正規表現オートマトンを標準出力に出力するものです。 | |
| 2444 | 2605 | |
| 2445 | -例として次の言語定義(@file{comment-show.lang})を考えてみよう。 | |
| 2606 | +例として、次の言語定義(@file{comment-show.lang})を考えてみてください。 | |
| 2446 | 2607 | |
| 2447 | 2608 | @include comment-show.lang.texinfo |
| 2448 | 2609 | |
| 2449 | 2610 | @noindent |
| 2450 | -ここで次のコマンドを実行したとする。 | |
| 2611 | +ここで、次のコマンドを実行したとします。 | |
| 2451 | 2612 | |
| 2452 | 2613 | @example |
| 2453 | 2614 | source-highlight --show-regex=comment-show.lang |
| 2454 | 2615 | @end example |
| 2455 | 2616 | |
| 2456 | 2617 | @noindent |
| 2457 | -標準出力に次のような出力が得られる@footnote{バージョン2.9までは、@code{--show-regex}の出力は読むには少し複雑だった。今の出力がベターになっていることを望んでいる}。 | |
| 2618 | +標準出力には、次のような出力が得られます@footnote{バージョン2.9までは、@code{--show-regex}の出力は読むのが少し難しいものでした。 | |
| 2619 | +今の出力が良くなっていれば嬉しいです。}。 | |
| 2458 | 2620 | |
| 2459 | 2621 | @smallexample |
| 2460 | 2622 | @include comment-show.show.texinfo |
| 2623 | +@c | |
| 2461 | 2624 | @end smallexample |
| 2462 | 2625 | |
| 2463 | 2626 | @noindent |
| 2464 | -これは、stateと、source-highlightが作成した入力ソースのフォーマットに使われる正規表現オートマトンのハイライトルールを示している。 | |
| 2627 | +これは、source-highlightが作成し、入力ソースのフォーマットに使われる正規表現オートマトンのハイライトルールとstateを示しています。 | |
| 2465 | 2628 | |
| 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 | +以下で説明します。 | |
| 2472 | 2635 | |
| 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自身の新たなインスタンスに単に入ります。 | |
| 2485 | 2648 | |
| 2486 | -@code{string}と@code{string2}は、@code{multiline}オプションによって、暗黙のうちに示される違いというのもを表わしている。 | |
| 2487 | -source-highlightは入力行を別々に処理するために、最初のdelimを使った定義は一つの正規表現で処理できるが、複数行のバージョンはそれができない。 | |
| 2649 | +@code{string}と@code{string2}は、@code{multiline}オプションによって暗黙のうちに示される違いを表わしています。 | |
| 2650 | +source-highlightは入力行を別々に処理するために、最初のdelimを使った定義は一つの正規表現で処理できますが、複数行のバージョンはそれができません。 | |
| 2488 | 2651 | |
| 2489 | -state/environmentは、外側と内側の状態を理解するのが簡単になるようにするためのものだということに留意してほしい。 | |
| 2652 | +state/environmentは、外側と内側の状態を理解するのが簡単になるようにするためのものということに留意してください。 | |
| 2490 | 2653 | |
| 2491 | -さて、前の例のバリエーションを考えてみよう。 | |
| 2654 | +さて、前の例のバリエーションを考えてみましょう。 | |
| 2492 | 2655 | |
| 2493 | 2656 | @include comment-show2.lang.texinfo |
| 2494 | 2657 | |
| 2495 | -@code{--show-regex}の出力を見る。 | |
| 2658 | +@code{--show-regex}の出力を見ます。 | |
| 2496 | 2659 | |
| 2497 | 2660 | @smallexample |
| 2498 | 2661 | @include comment-show2.show.texinfo |
| 2662 | +@c | |
| 2499 | 2663 | @end smallexample |
| 2500 | 2664 | |
| 2501 | -@code{regexp}というルールで、@code{`}の正規表現(@ref{正規表現の指定方法})を使ったので、後方参照を正しく動作させるために部分表現は変換されない。 | |
| 2665 | +@code{regexp}というルールで、@code{`}の正規表現(@pxref{Ways of specifying regular expressions})を使いました。 | |
| 2666 | +そのため、後方参照を正しく動作させるため、部分表現は変換されません。 | |
| 2502 | 2667 | |
| 2503 | -最後のルールは、名前付きの明示的な部分表現を使っている(@ref{名前を使った明示的な部分表現})。 | |
| 2504 | -この式は、違うエレメントから構成されているけれども、全体としてマッチする。 | |
| 2668 | +最後のルールは、名前付きの明示的な部分表現を使っています(@pxref{Explicit subexpressions with names})。 | |
| 2669 | +この式は違うエレメントから構成されていますが、全体としてマッチします。 | |
| 2505 | 2670 | |
| 2506 | -@node 言語定義のチュートリアル, , デバッギング, 言語の定義 | |
| 2671 | + | |
| 2672 | +@node Tutorials on Language Definitions, , Debugging, Language Definitions | |
| 2507 | 2673 | @section 言語定義のチュートリアル |
| 2508 | 2674 | |
| 2509 | -ここで、言語定義の例をいくつか提供する。 | |
| 2510 | -前のセクションで既にコード片をいくつか紹介したが、ここでは、言語定義の完全な例を提供する。 | |
| 2511 | -これはsource-highlightの配布物自体に含まれているものだ。 | |
| 2675 | +ここで、言語定義の例をいくつか提供します。 | |
| 2676 | +前のセクションでコード片をいくつか既に紹介しました。 | |
| 2677 | +ここでは、言語定義の完全な例を示します。 | |
| 2678 | +これは、source-highlightの配布物自体に含まれているものです。 | |
| 2512 | 2679 | |
| 2513 | -特に、言語定義のシンタックス自体の言語定義をまず示す(@file{langdef.lang})。 | |
| 2514 | -これは、このセクションで示す言語定義の例をハイライトするのに使うものである(このマニュアルを@code{info}コマンドで見ているならばハイライトされているのはわからない)。 | |
| 2515 | -もちろん、この例はそれ自体ハイライトされている。 | |
| 2680 | +特に、言語定義のシンタックス自体の言語定義をまず示します(@file{langdef.lang})。 | |
| 2681 | +これは、このセクションで示す言語定義の例をハイライトするのに使うものです(このマニュアルを@code{info}コマンドで見ている場合は、ハイライトされていることはわかりません)。 | |
| 2682 | +もちろん、この例は、それ自体ハイライトされています。 | |
| 2516 | 2683 | |
| 2517 | 2684 | @include langdef.lang.texinfo |
| 2518 | 2685 | |
| 2519 | -これらの例をTexinfoでハイライトするスタイルは、@ref{出力フォーマットスタイル}で示されている@file{texinfo.style}だ。 | |
| 2520 | -このスタイルのシンタックスに対する言語定義(@file{style.lang}ファイル)はさらにシンプルだ。 | |
| 2686 | +これらの例をTexinfoでハイライトするスタイルは、別節(@pxref{Output format style})で示している@file{texinfo.style}です。 | |
| 2687 | +このスタイルのシンタックスに対する言語定義(@file{style.lang}ファイル)はさらにシンプルです。 | |
| 2521 | 2688 | |
| 2522 | 2689 | @include style.lang.texinfo |
| 2523 | 2690 | |
| 2524 | -この定義は、言語定義のシンタックスがシンプルなので、かなりシンプルになっているということに注意していほしい。 | |
| 2525 | -次の例では、さらに複雑な機能を使って、もっと複雑な言語のシンタックスをハイライトする方法を見ていく。 | |
| 2691 | +言語定義のシンタックスがシンプルですので、この定義がかなりシンプルになっていることに注意してください。 | |
| 2692 | +次の例では、さらに複雑な機能を使って、もっと複雑な言語のシンタックスをハイライトする方法を見ていきます。 | |
| 2526 | 2693 | |
| 2527 | 2694 | @menu |
| 2528 | -* C/C++とC#のハイライティング:: | |
| 2529 | -* Diffファイルのハイライティング:: | |
| 2530 | -* 擬似的な意味解析:: | |
| 2695 | +* Highlighting C/C++ and C#:: | |
| 2696 | +* Highlighting Diff files:: | |
| 2697 | +* Pseudo semantic analysis:: | |
| 2531 | 2698 | @end menu |
| 2532 | 2699 | |
| 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 | |
| 2534 | 2702 | @subsection C/C++とC#のハイライティング |
| 2535 | 2703 | |
| 2536 | -これは、Cの言語定義である。 | |
| 2537 | -@file{c.lang}というファイルでインクルードされている。 | |
| 2704 | +これは、C言語の言語定義です。 | |
| 2705 | +@file{c.lang}というファイルでインクルードされます。 | |
| 2538 | 2706 | |
| 2539 | 2707 | @include c.lang.texinfo |
| 2540 | 2708 | |
| 2541 | 2709 | @noindent |
| 2542 | -たくさんの@code{include}を利用していることに注目してほしい。 | |
| 2543 | -これらの部分で、他の言語定義を再利用している(例えば、JavaはC/C++と共通の部分が多数あるので、そういった部分は別のファイルとして書かれている)。 | |
| 2544 | -とくに、コメントの定義の部分である。 | |
| 2710 | +たくさんの@code{include}を利用していることに注目してください。 | |
| 2711 | +これらの部分は、他の言語定義を再利用されます(例えば、JavaはC/C++と共通の部分が多数ありますので、そういった部分は別のファイルとして書かれています)。 | |
| 2712 | +特に、コメントの定義の部分です。 | |
| 2545 | 2713 | |
| 2546 | 2714 | @include c_comment.lang.texinfo |
| 2547 | 2715 | |
| 2548 | 2716 | @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}ファイルで定義されていますが、ここには示されていません)を完全にハイライトします。 | |
| 2551 | 2719 | |
| 2552 | -@file{c.lang}に戻って、構造体名をハイライトするのに名前付きの部分表現(@ref{名前を使った明示的な部分表現}を見よ)を使っている(@code{struct}が前に付いているときにキーワードとしてハイライトされる)。 | |
| 2720 | +@file{c.lang}に戻って、構造体名をハイライトするのに名前付きの部分表現(@pxref{Explicit subexpressions with names})を使っています(@code{struct}が前に付いている時にキーワードとしてハイライトします)。 | |
| 2553 | 2721 | |
| 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}の定義があります。 | |
| 2557 | 2726 | |
| 2558 | -インクルードされている@file{number.lang}というファイルは、数値定数をキャッチするための正規表現を定義していて(ここには示されない)、次に、文字列を定義する@file{c_string.lang}ファイルをインクルードする(また、Javaで共有される)。 | |
| 2727 | +インクルードされている@file{number.lang}というファイルは、数値定数をキャッチするための正規表現を定義しています(ここには示していません)。 | |
| 2728 | +次に、文字列を定義する@file{c_string.lang}ファイルをインクルードします(また、Javaで共有されます)。 | |
| 2559 | 2729 | |
| 2560 | 2730 | @include c_string.lang.texinfo |
| 2561 | 2731 | |
| 2562 | 2732 | @noindent |
| 2563 | -文字列の内部では、特殊な文字(たとえば、@code{\n}や@code{\t}などのような)や、通常のエスケープされた文字を別の方法でハイライトしたい。 | |
| 2564 | -これらは、`@code{\\.}'という正規表現でマッチされる、 | |
| 2733 | +文字列の内部では、特殊な文字(例えば、@code{\n}や@code{\t}などのような文字)や、通常のエスケープされた文字を別の方法でハイライトしようと考えます。 | |
| 2734 | +こういった文字は、`@code{\\.}'という正規表現でマッチできます。 | |
| 2565 | 2735 | |
| 2566 | -インクルードされている@file{symbols.lang}というファイルでは、シンボルが全て定義されている(他の言語でも共有している)。 | |
| 2736 | +インクルードされている@file{symbols.lang}というファイルは、シンボルを全て定義しています(他の言語でも共有しています)。 | |
| 2567 | 2737 | |
| 2568 | 2738 | @include symbols.lang.texinfo |
| 2569 | 2739 | |
| 2570 | 2740 | @noindent |
| 2571 | -ここでは、@code{\}や@code{|}という文字をエスケープしなければならいということがわかる以外に面白いことは無い。 | |
| 2741 | +ここでは、@code{\}や@code{|}という文字をエスケープしなければならいということがわかる以外に面白いことはありません。 | |
| 2572 | 2742 | |
| 2573 | -インクルードされている@file{function.lang}というファイルでは、関数定義や関数呼び出しにマッチするための正規表現を定義している。 | |
| 2743 | +インクルードされている@file{function.lang}というファイルは、関数定義や関数呼び出しにマッチする次のような正規表現を定義しています。 | |
| 2574 | 2744 | |
| 2575 | 2745 | @include function.lang.texinfo |
| 2576 | 2746 | |
| 2577 | 2747 | @noindent |
| 2578 | -これは、開きカッコに対する前方先読み表明の例を示している(@ref{正規表現に関する注意}を参照)。 | |
| 2579 | -@ref{ファイルのインクルード}で記したように、キーワードの定義の後にこのファイルをインクルードするのは非常に大事なことだ。 | |
| 2748 | +これは、開きカッコに対する前方先読み表明の例を示しています(@pxref{Notes on regular expressions})。 | |
| 2749 | +別の節(@pxref{File inclusion})で記したように、キーワードの定義の後にこのファイルをインクルードするのが非常に重要なこととなります。 | |
| 2580 | 2750 | |
| 2581 | -最後に、@file{c.lang}は@file{clike_vardeclaration.lang}というファイルをインクルードする。 | |
| 2751 | +最後に、@file{c.lang}は、以下の@file{clike_vardeclaration.lang}というファイルをインクルードします。 | |
| 2582 | 2752 | |
| 2583 | 2753 | @include clike_vardeclaration.lang.texinfo |
| 2584 | 2754 | |
| 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}をわざとイタリックで強調しています)、正しいコンテキストでユーザ型を捕捉するはずです。 | |
| 2590 | 2764 | |
| 2591 | 2765 | @include test_vardecl.cc.texinfo |
| 2592 | 2766 | |
| 2593 | -注意してほしいが、3番目のグループに先読み表面を使っているので、マッチしたものは実際にフォーマットはされず、別のルールでフォーマットできるように入力ストリームに戻してしまう(たとえば、@code{*}や@code{=}に対する@code{symbol})。 | |
| 2767 | +3番目のグループに先読み表面を使っています。 | |
| 2768 | +そのため、マッチしたものは実際にフォーマットはされず、別のルールでフォーマットできるように入力ストリームに戻してしまいますので注意してください(例えば、@code{*}や@code{=}に対する@code{symbol})。 | |
| 2594 | 2769 | |
| 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では正しいことなのですが、そういった変数があると、実際には、キーワードとしてハイライトされてしまうことになり、正しい状況ではありませんでした。}。 | |
| 2596 | 2773 | |
| 2597 | 2774 | @include cpp.lang.texinfo |
| 2598 | 2775 | |
| 2599 | -具体的には、キーワードのセットを拡張する。 | |
| 2600 | -さらに、クラス(あるいは構造体)の名前をハイライトするのに名前付きの部分表現(@ref{名前を使った明示的な部分表現})を使っていることに注意してほしい(@code{class}や@code{struct}、あるいは@code{typename}が前に付いているときに、キーワードとしてハイライトされる)。 | |
| 2776 | +具体的には、キーワードのセットを拡張します。 | |
| 2777 | +さらに、クラス名(あるいは、構造体名)をハイライトするのに名前付きの部分表現(@pxref{Explicit subexpressions with names})を使っていることに注意してください(@code{class}、@code{struct}、あるいは、@code{typename}が前に付いている時に、キーワードとしてハイライトします)。 | |
| 2601 | 2778 | |
| 2602 | -さてこれで、C/C++に対する言語定義を書いたので、C#用のものを書くのは容易だ。 | |
| 2603 | -プリプロセッサのエレメントとして@code{using}キーワードを追加し、キーワードと型を再定義する(よりベターに言えば、「置き換える」。@ref{再定義と置換})必要があるだけだからである。 | |
| 2779 | +さて、これで、C/C++に対する言語定義は記述できました。 | |
| 2780 | +C#用のものを書くのは簡単です。 | |
| 2781 | +プリプロセッサのエレメントとして@code{using}キーワードを追加し、キーワードと型を再定義する@footnote{よりベターに言うならば、「置き換える」です。 | |
| 2782 | +@xref{Redefinitions and Substitutions}.}だけです。 | |
| 2604 | 2783 | |
| 2605 | 2784 | @include csharp.lang.texinfo |
| 2606 | 2785 | |
| 2607 | -@node Diffファイルのハイライティング, 擬似的な意味解析, C/C++とC#のハイライティング, 言語定義のチュートリアル | |
| 2786 | + | |
| 2787 | +@node Highlighting Diff files, Pseudo semantic analysis, Highlighting C/C++ and C#, Tutorials on Language Definitions | |
| 2608 | 2788 | @subsection Diffファイルのハイライティング |
| 2609 | 2789 | |
| 2610 | -さてここで、@code{diff}(普通はパッチを作成するのに使われる)が生成したファイルをハイライトしたい。 | |
| 2611 | -このプログラムは三つの異なったフォーマットで出力を生成することができる(少なくとも私の知る限り)。 | |
| 2790 | +さて、ここで、@code{diff}@footnote{普通はパッチを作成するのに使われます。}が生成したファイルをハイライトしようと思います。 | |
| 2791 | +diffプログラムは、少なくとも私の知る限り、三つの異なったフォーマットで出力を生成することができます。 | |
| 2612 | 2792 | |
| 2613 | -@code{-u|--unified}というオプションを使えば、ファイル間の差が同じコンテキストで表示される。 | |
| 2614 | -たとえば次のようになる(ここで示すdiffファイルの例は、ページの幅にフィットするように手で修正してある)。 | |
| 2793 | +@code{-u|--unified}というオプションを使えば、ファイル間の差が同じコンテキストで表示されます。 | |
| 2794 | +例えば、次のようになります(ここで示すdiffファイルの例は、ページの幅にフィットするように手で修正してあります)。 | |
| 2615 | 2795 | |
| 2616 | 2796 | @include example-u.diff.texinfo |
| 2617 | 2797 | |
| 2618 | -オプション@code{-c|--context}と使えば、差分は二つの別々の部分に示される。 | |
| 2798 | +オプション@code{-c|--context}を指定すれば、差分は、二つの別々の部分に分けて示されます。 | |
| 2619 | 2799 | |
| 2620 | 2800 | @include example-c.diff.texinfo |
| 2621 | 2801 |
| @@ -2623,169 +2803,180 @@ stateは、そのstateの外側の定義を消してしまうので、このコ | ||
| 2623 | 2803 | |
| 2624 | 2804 | @include example-n.diff.texinfo |
| 2625 | 2805 | |
| 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 | +しかし、全ての処理を同一ファイルで実現したかったのです。 | |
| 2632 | 2813 | |
| 2633 | -これがdiffファイルに対する言語定義である。 | |
| 2814 | +これが、diffファイルに対する言語定義です。 | |
| 2634 | 2815 | |
| 2635 | 2816 | @include diff.lang.texinfo |
| 2636 | 2817 | |
| 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 | |
| 2662 | 2846 | @subsection 擬似的な意味解析 |
| 2663 | 2847 | |
| 2664 | -source-highlightは、正規表現を用いて、入力ソースをレキシカルに解析することができるだけである。 | |
| 2665 | -とくに、入力ソースが、その入力言語の点から文法的に正しいということを前提としている。 | |
| 2666 | -しかし、言語定義のシンタックスを使い、また正しい正規表現を書くことで、入力ソースのある種の意味的な解析をシミュレートすることも可能だ。 | |
| 2848 | +source-highlightは、正規表現を用いて、入力ソースをレキシカルに解析することができるだけです。 | |
| 2849 | +特に、入力ソースが、その入力言語の点から文法的に正しいということを前提としています。 | |
| 2850 | +しかし、言語定義のシンタックスを使い、また、正しい正規表現を書くことで、入力ソースのある種の意味的な解析をシミュレートすることも可能です。 | |
| 2667 | 2851 | |
| 2668 | -例として、以下のC(あるいはC++)のソースファイルを考えてほしい。 | |
| 2852 | +例として、以下のC(あるいはC++)のソースファイルを考えてみてください。 | |
| 2669 | 2853 | |
| 2670 | 2854 | @include test_extreme_comment.cpp.texinfo |
| 2671 | 2855 | |
| 2672 | 2856 | @noindent |
| 2673 | -@code{#if 0}と@code{#else}にあるコードが決して実行されない(実際コンパイルすらされない)ことを検証するのは簡単だ。 | |
| 2674 | -なので、これをコメントとしてフォーマットしたくなるかもしれない。 | |
| 2857 | +@code{#if 0}と@code{#else}にあるコードは決して実行されないことを検証するのは簡単です(実際、コンパイルすらされません)。 | |
| 2858 | +ですから、これをコメントとしてフォーマットしたくなるかもしれません。 | |
| 2675 | 2859 | |
| 2676 | -従って、@file{cpp.lang}ファイルを基にして、別の言語定義を書く。 | |
| 2860 | +従って、@file{cpp.lang}ファイルを基にして、別の言語定義を記述します。 | |
| 2677 | 2861 | |
| 2678 | 2862 | @include extreme_comment.lang.texinfo |
| 2679 | 2863 | |
| 2680 | 2864 | @noindent |
| 2681 | -この最初のバージョンには故意に誤りを入れてある。 | |
| 2682 | -environmentを開始するのに@code{start}エレメントを使ったが、そのエレメントは一つの行のスコープを持つので、期待した動作にならない。 | |
| 2865 | +最初のこのバージョンには故意に誤りを入れてあります。 | |
| 2866 | +environmentを開始するのに@code{start}エレメントを使いましたが、そのエレメントは一つの行のスコープを持ちます。 | |
| 2867 | +そのため、期待した動作になりません。 | |
| 2683 | 2868 | |
| 2684 | 2869 | @include test_extreme_comment_wrong.texinfo |
| 2685 | 2870 | |
| 2686 | -ベターな解決方法は次のようなものだ。 | |
| 2871 | +ベターな解決方法は次のようなものです。 | |
| 2687 | 2872 | |
| 2688 | 2873 | @include extreme_comment2.lang.texinfo |
| 2689 | 2874 | |
| 2690 | 2875 | @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 | +これは動作するように思えます。 | |
| 2694 | 2879 | |
| 2695 | 2880 | @include test_extreme_comment_1.texinfo |
| 2696 | 2881 | |
| 2697 | -しかしながら、@code{#if...#else}がネストすることを考えた場合うまく動作しない。 | |
| 2698 | -例として次のコードを考える。 | |
| 2699 | -前述の言語定義でフォーマットされている。 | |
| 2882 | +しかしながら、@code{#if...#else}がネストすることを考えた場合うまく動作しません。 | |
| 2883 | +例として、次のコードを考えます。 | |
| 2884 | +前述の言語定義でフォーマットされています。 | |
| 2700 | 2885 | |
| 2701 | 2886 | @include test_extreme_comment_wrong2.texinfo |
| 2702 | 2887 | |
| 2703 | 2888 | @noindent |
| 2704 | -問題は、前述の言語定義が@code{#if}のネストを考慮していないために、@code{#else}か@code{#endif}にマッチする最初のタイミングで@code{comment} environmentから抜け出していることである。 | |
| 2889 | +問題は、前述の言語定義が@code{#if}のネストを考慮していないために、@code{#else}か@code{#endif}にマッチする最初のタイミングで@code{comment} environmentから抜け出していることにあります。 | |
| 2705 | 2890 | |
| 2706 | -ネストが起きることに配慮しなければならない。 | |
| 2707 | -これを実現するには、@code{nested}オプションを付けて区切られたエレメントを使用する(@ref{delim定義})。 | |
| 2891 | +ネストが起きることに配慮しなければなりません。 | |
| 2892 | +これを実現するには、@code{nested}オプションを付けて区切られたエレメントを使用します。 | |
| 2893 | +@xref{Delimited definitions}. | |
| 2708 | 2894 | |
| 2709 | 2895 | @include extreme_comment3.lang.texinfo |
| 2710 | 2896 | |
| 2711 | 2897 | @noindent |
| 2712 | -今度は、コードの期待通りのブロックがコメントとして正しくフォーマットされている。 | |
| 2898 | +今度は、期待通りのコードブロックがコメントとして正しくフォーマットされています。 | |
| 2713 | 2899 | |
| 2714 | 2900 | @include test_extreme_comment_2.texinfo |
| 2715 | 2901 | |
| 2716 | -(@code{#endif}だけでなく)@code{#else}にマッチするときにもenvironmentを脱出することが大事であることに注意してほしい。 | |
| 2717 | -このようにすれば、別の@code{#ifdef 0}に再度マッチすることができる。 | |
| 2718 | -例えば、次のようなコードを考えてみてほしい。 | |
| 2902 | +(@code{#endif}だけでなく)@code{#else}にマッチする時にも、environmentを脱出することが大事であることに注意してください。 | |
| 2903 | +このようにすれば、別の@code{#ifdef 0}に再度マッチすることができます。 | |
| 2904 | +例えば、次のようなコードを考えてみてください。 | |
| 2719 | 2905 | |
| 2720 | 2906 | @include test_extreme_comment_3.texinfo |
| 2721 | 2907 | |
| 2722 | -@node 出力言語の定義, リファレンスの生成, 言語の定義, Top | |
| 2908 | + | |
| 2909 | +@node Output Language Definitions, Generating References, Language Definitions, Top | |
| 2723 | 2910 | @chapter 出力言語の定義 |
| 2724 | 2911 | @cindex output language definition |
| 2725 | 2912 | |
| 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プログラムを丸ごと再コンパイルしなければならなかったからです。 | |
| 2730 | 2917 | |
| 2731 | -それに代わって、現在では、出力フォーマットは(願わくは)簡単なシンタックスでファイルで記述し、動的にロードされる。 | |
| 2732 | -そして、これらの定義がテキストフォーマッタをオンザフライに生成するために内部で使用される。 | |
| 2918 | +それに代わって、現在では、(願わくは)簡単なシンタックスで出力フォーマットをファイルに記述します。 | |
| 2919 | +そして、出力フォーマットは動的にロードされます。 | |
| 2920 | +これらの定義は、テキストフォーマッタをオンザフライに生成するために内部で使用されます。 | |
| 2733 | 2921 | |
| 2734 | -ここでは、多数の例に頼りながら、そのシンタックスを詳細に見ていく。 | |
| 2735 | -これによって、ユーザが既存の出力フォーマットを修正したり、新しいものを作成するのが簡単にできる。 | |
| 2736 | -こういったファイルは通常@file{.outlang}という拡張子を付ける。 | |
| 2922 | +ここでは、多数の例に頼りながら、そのシンタックスを詳細に見ていきます。 | |
| 2923 | +これによって、ユーザが既存の出力フォーマットを修正したり、新しいものを作成するのが簡単にできるようになります。 | |
| 2924 | +こういったファイルには、通常、@file{.outlang}という拡張子を付けます。 | |
| 2737 | 2925 | |
| 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})。 | |
| 2742 | 2931 | |
| 2743 | -特定のスタイル、たとえばボールドなどに定義が与えられていない場合には、フォーマット中にそのスタイルが要求されると、そのテキストはそのままフォーマットされる。 | |
| 2744 | -つまり、定義の無いスタイルは単に無視される。 | |
| 2932 | +特定のスタイル、例えば、ボールドなどに定義が与えられていない場合には、フォーマット中にそのスタイルが要求されると、テキストはそのままフォーマットされます。 | |
| 2933 | +つまり、定義の無いスタイルは単に無視されます。 | |
| 2745 | 2934 | |
| 2746 | -コメントは@code{#}を使って書くことができる。 | |
| 2747 | -その行のそれ以降の部分はコメントとして扱われる。 | |
| 2935 | +@code{#}を使ってコメントを記述できます。 | |
| 2936 | +その行のそれ以降の部分はコメントとして処理されます。 | |
| 2748 | 2937 | |
| 2749 | -ファイルは言語定義の場合と同様の方法でインクルードすることができる。 | |
| 2750 | -@ref{ファイルのインクルード} | |
| 2938 | +ファイルは言語定義の場合と同様の方法でインクルードすることができます。 | |
| 2939 | +@xref{File inclusion}. | |
| 2751 | 2940 | |
| 2752 | -どのような場合でも、スタイルに対する定義が複数回与えられた場合は、最後の定義が、その他の定義全てを置き換えてしまう。 | |
| 2941 | +どのような場合でも、スタイルに対する定義が複数回与えられた場合は、最後の定義が、その他の定義全てを置き換えてしまいます。 | |
| 2753 | 2942 | |
| 2754 | 2943 | @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:: | |
| 2765 | 2954 | @end menu |
| 2766 | 2955 | |
| 2767 | -@node ファイルの拡張子, テキストのスタイル, 出力言語の定義, 出力言語の定義 | |
| 2956 | + | |
| 2957 | +@node File extension, Text styles, Output Language Definitions, Output Language Definitions | |
| 2768 | 2958 | @section ファイルの拡張子 |
| 2769 | 2959 | |
| 2770 | -次の行を見てほしい。 | |
| 2960 | +次の行を見てください。 | |
| 2771 | 2961 | |
| 2772 | 2962 | @example |
| 2773 | 2963 | extension "<file extension>" |
| 2774 | 2964 | @end example |
| 2775 | 2965 | |
| 2776 | 2966 | @noindent |
| 2777 | -この行によって、デフォルトのファイル拡張子(@code{.}無し)を定義する。 | |
| 2778 | -これは、この出力フォーマットに応じてフォーマットされるファイルを生成するのに使う、 | |
| 2779 | -ファイル名が指定されていないときに使われる。 | |
| 2780 | -@code{.outlang}にインクルードされていないファイル拡張子が定義されていなくて(訳注:イマイチ意味不明)、出力ファイル名が指定されていない場合には、エラーが発生する。 | |
| 2967 | +この行によって、デフォルトのファイル拡張子(@code{.}無し)を定義します。 | |
| 2968 | +これは、出力フォーマットに応じてフォーマットされるファイルを生成する際に使用します。 | |
| 2969 | +ファイル名が指定されていない時に使われます。 | |
| 2970 | +@code{.outlang}にインクルードされていないファイル拡張子が定義されていなくて、出力ファイル名が指定されていない場合には、エラーが発生します。 | |
| 2781 | 2971 | |
| 2782 | -たとえば、次のものは@file{html_common.outlang}の中で使用されている。 | |
| 2972 | +例えば、以下は、@file{html_common.outlang}の中で使用されています。 | |
| 2783 | 2973 | |
| 2784 | 2974 | @example |
| 2785 | 2975 | extension "html" |
| 2786 | 2976 | @end example |
| 2787 | 2977 | |
| 2788 | -@node テキストのスタイル, 色, ファイルの拡張子, 出力言語の定義 | |
| 2978 | + | |
| 2979 | +@node Text styles, Colors, File extension, Output Language Definitions | |
| 2789 | 2980 | @section テキストのスタイル |
| 2790 | 2981 | @cindex bold |
| 2791 | 2982 | @cindex italics |
| @@ -2793,7 +2984,7 @@ extension "html" | ||
| 2793 | 2984 | @cindex fixed |
| 2794 | 2985 | @cindex notfixed |
| 2795 | 2986 | |
| 2796 | -次に挙げるものが定義可能なテキストスタイルである。 | |
| 2987 | +次に挙げるものは、定義可能なテキストスタイルです。 | |
| 2797 | 2988 | |
| 2798 | 2989 | @example |
| 2799 | 2990 | bold |
| @@ -2804,10 +2995,10 @@ fixed | ||
| 2804 | 2995 | @end example |
| 2805 | 2996 | |
| 2806 | 2997 | @noindent |
| 2807 | -もちろん、これらは、出力フォーマットのスタイルを指定するのに使われるものに対応している。 | |
| 2808 | -@ref{出力フォーマットスタイル} | |
| 2998 | +もちろん、これらは、出力フォーマットのスタイルを指定するのに使われるものに対応しています。 | |
| 2999 | +@xref{Output format style}. | |
| 2809 | 3000 | |
| 2810 | -たとえば、次の定義はHTMLフォーマットの定義のものである。 | |
| 3001 | +例えば、次の定義は、HTMLフォーマットの定義のものである。 | |
| 2811 | 3002 | |
| 2812 | 3003 | @example |
| 2813 | 3004 | bold "<b>$text</b>" |
| @@ -2817,18 +3008,19 @@ underline "<u>$text</u>" | ||
| 2817 | 3008 | |
| 2818 | 3009 | @cindex $text |
| 2819 | 3010 | @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>}が得られます。 | |
| 2825 | 3016 | |
| 2826 | -@node 色, アンカーとリファレンス, テキストのスタイル, 出力言語の定義 | |
| 3017 | + | |
| 3018 | +@node Colors, Anchors and References, Text styles, Output Language Definitions | |
| 2827 | 3019 | @section 色 |
| 2828 | 3020 | @cindex colors |
| 2829 | 3021 | @cindex $style |
| 2830 | 3022 | |
| 2831 | -フォーマッティングの際に色を使うための定義には、次の@code{color}スタイルの定義が必要である。 | |
| 3023 | +フォーマッティングの際に色を使うための定義には、次の@code{color}スタイルの定義が必要です。 | |
| 2832 | 3024 | |
| 2833 | 3025 | @example |
| 2834 | 3026 | color "..." |
| @@ -2836,39 +3028,39 @@ color "..." | ||
| 2836 | 3028 | |
| 2837 | 3029 | @cindex background color |
| 2838 | 3030 | @noindent |
| 2839 | -また、次の@code{bgcolor}スタイルの定義が必要である@footnote{バージョン2.6から}。 | |
| 3031 | +また、次の@code{bgcolor}スタイルの定義が必要です@footnote{バージョン2.6からです。}。 | |
| 2840 | 3032 | |
| 2841 | 3033 | @example |
| 2842 | 3034 | bgcolor "..." |
| 2843 | 3035 | @end example |
| 2844 | 3036 | |
| 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})。 | |
| 2849 | 3041 | |
| 2850 | -背景色は出力フォーマットの全てで利用できるわけではないことに注意してほしい。 | |
| 2851 | -たとえば、HTMLについては次のようなものがある。 | |
| 3042 | +背景色は、出力フォーマットの全てで利用できるわけではないので注意してください。 | |
| 3043 | +例えば、HTMLについては次のようなものがあります。 | |
| 2852 | 3044 | |
| 2853 | 3045 | @example |
| 2854 | 3046 | color "<font color=\"$style\">$text</font>" |
| 2855 | 3047 | @end example |
| 2856 | 3048 | |
| 2857 | 3049 | @noindent |
| 2858 | -他方XHTMLでは次のようなものがある。 | |
| 3050 | +他方、XHTMLでは次のようなものがあります。 | |
| 2859 | 3051 | |
| 2860 | 3052 | @example |
| 2861 | 3053 | color "<span style=\"color: $style\">$text</span>" |
| 2862 | 3054 | bgcolor "<span style=\"background-color: $style\">$text</span>" |
| 2863 | 3055 | @end example |
| 2864 | 3056 | |
| 2865 | -既に見た@code{$text}の他に、@code{$style}という変数もある。 | |
| 2866 | -これは、実際の色を置き換えるものだ。 | |
| 3057 | +既に見た@code{$text}の他に、@code{$style}という変数もあります。 | |
| 3058 | +これは、実際の色を置き換えるものです。 | |
| 2867 | 3059 | |
| 2868 | -source-highlightは色に関する定数を多数認識する。 | |
| 2869 | -@ref{出力フォーマットスタイル}を参照してほしい。 | |
| 3060 | +source-highlightは色に関する定数を多数認識します。 | |
| 3061 | +@xref{Output format style}. | |
| 2870 | 3062 | |
| 2871 | -出力フォーマットの中では、@code{colormap}の定義を使って、色の定数とその色の定義を関連付けなければならない。 | |
| 3063 | +出力フォーマットの中では、@code{colormap}の定義を使って、色の定数とその色の定義を関連付けなければなりません。 | |
| 2872 | 3064 | |
| 2873 | 3065 | @example |
| 2874 | 3066 | colormap |
| @@ -2879,9 +3071,9 @@ default "default color representation" | ||
| 2879 | 3071 | end |
| 2880 | 3072 | @end example |
| 2881 | 3073 | |
| 2882 | -@code{default}の行(@code{"}が無いことに注意)は、フォーマティングの際に色定数が使われたが、出力フォーマットには定義されていない場合に使われる色を定義するものだ。 | |
| 3074 | +@code{default}の行(@code{"}が無いことに注意)は、フォーマティングの際に色定数が使われたが、出力フォーマットには定義されていない場合に使われる色を定義するものです。 | |
| 2883 | 3075 | |
| 2884 | -例として、HTMLについては次のようになっている。 | |
| 3076 | +例として、HTMLについては次のようになっています。 | |
| 2885 | 3077 | |
| 2886 | 3078 | @example |
| 2887 | 3079 | colormap |
| @@ -2906,33 +3098,35 @@ default "#000000" | ||
| 2906 | 3098 | end |
| 2907 | 3099 | @end example |
| 2908 | 3100 | |
| 2909 | -出力フォーマットが色を取り扱わないのであれば、@code{color}と@code{colormap}の定義をただ単に避ければよい。 | |
| 2910 | -そうすれば、source-highlightは色をただ単に無視する。 | |
| 3101 | +出力フォーマットが色を取り扱わないのであれば、単に、@code{color}と@code{colormap}の定義をせずに済ますことができます。 | |
| 3102 | +そうすれば、source-highlightは色をただ単に無視します。 | |
| 2911 | 3103 | |
| 2912 | -色は、他のスタイル、たとえばボールドやイタリックなどが適用された後に適用される。 | |
| 3104 | +色は、他のスタイル、例えば、ボールドやイタリックなどが適用された後に適用されます。 | |
| 2913 | 3105 | |
| 2914 | -なので、前のセクションの例を続けて、keywordに関して以下の出力スタイルを定義したとしよう。 | |
| 3106 | +ですから、前のセクションの例を続けて、keywordに関して以下の出力スタイルを定義したとしましょう。 | |
| 2915 | 3107 | |
| 2916 | 3108 | @example |
| 2917 | 3109 | keyword blue i, b; |
| 2918 | 3110 | @end example |
| 2919 | 3111 | |
| 2920 | 3112 | @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}を置き換え、イタリックについてもいろいろ行われ、最終的に次のものが得られます。 | |
| 2923 | 3116 | |
| 2924 | 3117 | @code{<i><b><font color="#0000FF">class</font></b></i>} |
| 2925 | 3118 | |
| 2926 | -@node アンカーとリファレンス, ワンスタイル, 色, 出力言語の定義 | |
| 3119 | + | |
| 3120 | +@node Anchors and References, One style, Colors, Output Language Definitions | |
| 2927 | 3121 | @section アンカーとリファレンス |
| 2928 | 3122 | @cindex $linenum |
| 2929 | 3123 | |
| 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}変数が実際のテキストと置き換えられます。 | |
| 2934 | 3128 | |
| 2935 | -たとえば、HTMLでは次のようになっている。 | |
| 3129 | +例えば、HTMLでは次のようになっています。 | |
| 2936 | 3130 | |
| 2937 | 3131 | @example |
| 2938 | 3132 | anchor "<a name=\"$linenum\">$text</a>" |
| @@ -2941,22 +3135,23 @@ anchor "<a name=\"$linenum\">$text</a>" | ||
| 2941 | 3135 | @cindex $infile |
| 2942 | 3136 | @cindex $infilename |
| 2943 | 3137 | @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については次のようになっています。 | |
| 2951 | 3145 | |
| 2952 | 3146 | @example |
| 2953 | 3147 | reference "<a href=\"$outfile#$linenum\">$text</a>" |
| 2954 | 3148 | @end example |
| 2955 | 3149 | |
| 2956 | 3150 | @noindent |
| 2957 | -この場合、別の出力ファイル(あるいは同じ出力ファイルかもしれない)へのリンクを生成するので@code{$outfile}を使っていることに注意してほしい。 | |
| 3151 | +この場合、別の出力ファイル(あるいは、同じ出力ファイルかもしれない)へのリンクを生成しますので、@code{$outfile}を使っていることに注意してください。 | |
| 2958 | 3152 | |
| 2959 | -一方、@LaTeX{}の場合では、「クリッカブル」なリファレンスを生成しないので、元の入力ファイル名を参照している(@code{anchor}と@code{reference}の定義でともに、@code{$infilename}と@code{$linenum}の両方を使用している)。 | |
| 3153 | +一方、@LaTeX{}の場合では「クリッカブル」なリファレンスを生成しません。 | |
| 3154 | +そのため、元の入力ファイル名を参照しています(@code{anchor}と@code{reference}の定義で、ともに、@code{$infilename}と@code{$linenum}の両方を使用しています)。 | |
| 2960 | 3155 | |
| 2961 | 3156 | @example |
| 2962 | 3157 | anchor "\label@{$infilename:$linenum@}$text" |
| @@ -2965,13 +3160,14 @@ reference "@{\hfill $text $\rightarrow$ $infile:$linenum, \ | ||
| 2965 | 3160 | @end example |
| 2966 | 3161 | |
| 2967 | 3162 | @noindent |
| 2968 | -とくに、@code{\label}を生成するのに@code{$infile}ではなく、@code{$infilename}を使っている。 | |
| 2969 | -これは、パスのシンボルが@LaTeX{}の「邪魔をする」からだ(その一方で、リファレンスのテキスト情報ではファイルの完全なパスを使用している)。 | |
| 3163 | +特に、@code{\label}を生成するのに、@code{$infile}ではなく、@code{$infilename}を使っています。 | |
| 3164 | +これは、パスのシンボルが、@LaTeX{}の「邪魔をする」からです(その一方で、リファレンスのテキスト情報ではファイルの完全なパスを使用しています)。 | |
| 2970 | 3165 | |
| 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}. | |
| 2973 | 3169 | |
| 2974 | -さらに、Texinfoについては次のようになる。 | |
| 3170 | +さらに、Texinfoについては次のようになります。 | |
| 2975 | 3171 | |
| 2976 | 3172 | @example |
| 2977 | 3173 | anchor "@@anchor@{$infilename:$linenum@}$text" |
| @@ -2981,20 +3177,20 @@ reference "@@flushright | ||
| 2981 | 3177 | @end example |
| 2982 | 3178 | |
| 2983 | 3179 | @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})。 | |
| 2989 | 3185 | |
| 2990 | 3186 | @cindex inline_reference |
| 2991 | 3187 | @cindex postline_reference |
| 2992 | 3188 | @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リファレンスも使われる場合、インラインリファレンスについて同じスタイルだと、かなり不恰好です。 | |
| 2998 | 3194 | |
| 2999 | 3195 | @smallexample |
| 3000 | 3196 | postline_reference "<a href=\"$outfile#$linenum\">$text -> $infile:$linenum</a>" |
| @@ -3002,50 +3198,51 @@ postdoc_reference "<a href=\"$outfile#$linenum\">$text -> $infile:$linenum</a>" | ||
| 3002 | 3198 | reference "<a href=\"$outfile#$linenum\">$text</a>" |
| 3003 | 3199 | @end smallexample |
| 3004 | 3200 | |
| 3005 | -@node ワンスタイル, スタイルテンプレート, アンカーとリファレンス, 出力言語の定義 | |
| 3201 | + | |
| 3202 | +@node One style, Style template, Anchors and References, Output Language Definitions | |
| 3006 | 3203 | @section ワンスタイル |
| 3007 | 3204 | @cindex one style |
| 3008 | 3205 | |
| 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}など)。 | |
| 3016 | 3212 | |
| 3017 | -たとえば、HTML CSSでは単純に次のようになる。 | |
| 3213 | +例えば、HTML CSSでは単純に次のようになります。 | |
| 3018 | 3214 | |
| 3019 | 3215 | @example |
| 3020 | 3216 | onestyle "<span class=\"$style\">$text</span>" |
| 3021 | 3217 | @end example |
| 3022 | 3218 | |
| 3023 | 3219 | @noindent |
| 3024 | -事実、HTML CSSは、別のファイル(要するに@file{.css}ファイル)で用意されるスタイル定義に依存する。 | |
| 3025 | -なので、@code{keyword}の、たとえば@code{abstract}をフォーマットする場合には、次のようになる。 | |
| 3220 | +実際、HTML CSSは、別のファイル(要するに@file{.css}ファイル)で用意されるスタイル定義に依存します。 | |
| 3221 | +ですから、@code{keyword}、例えば、@code{abstract}をフォーマットする場合には、次のようになります。 | |
| 3026 | 3222 | |
| 3027 | 3223 | @example |
| 3028 | 3224 | <span class="keyword">abstract</span> |
| 3029 | 3225 | @end example |
| 3030 | 3226 | |
| 3031 | 3227 | @noindent |
| 3032 | -もちろん、@code{keyword}に対するスタイルが@file{.css}ファイルで定義されていなくはならない。 | |
| 3228 | +もちろん、@code{keyword}に対するスタイルが@file{.css}ファイルで定義されていなくはなりません。 | |
| 3229 | + | |
| 3033 | 3230 | |
| 3034 | -@node スタイルテンプレート, 行プリフィックス, ワンスタイル, 出力言語の定義 | |
| 3231 | +@node Style template, Line prefix, One style, Output Language Definitions | |
| 3035 | 3232 | @section スタイルテンプレート |
| 3036 | 3233 | @cindex style template |
| 3037 | 3234 | @cindex style separator |
| 3038 | 3235 | |
| 3039 | -出力フォーマットによっては、独自のテンプレートに基づくものもある。 | |
| 3040 | -そのテンプレートで他のスタイルが組み立てられる。 | |
| 3041 | -組み立ての際、スタイルは指定のセパレータでセパレートされる。 | |
| 3236 | +出力フォーマットによっては、独自のテンプレートに基づくものもあります。 | |
| 3237 | +そのテンプレートで他のスタイルが組み立てられます。 | |
| 3238 | +組み立ての際、スタイルは、指定のセパレータでセパレートされます。 | |
| 3042 | 3239 | |
| 3043 | 3240 | @example |
| 3044 | 3241 | styletemplate "..." |
| 3045 | 3242 | styleseparator "..." |
| 3046 | 3243 | @end example |
| 3047 | 3244 | |
| 3048 | -たとえば、これは、ANSIカラーエスケープシーケンスの出力フォーマット(@file{esc.outlang})で使われる。 | |
| 3245 | +例えば、以下は、ANSIカラーエスケープシーケンスの出力フォーマット(@file{esc.outlang})で使われるものです。 | |
| 3049 | 3246 | |
| 3050 | 3247 | @example |
| 3051 | 3248 | styletemplate "\x1b[$stylem$text\x1b[m" |
| @@ -3058,31 +3255,36 @@ color "$style" | ||
| 3058 | 3255 | @end example |
| 3059 | 3256 | |
| 3060 | 3257 | @noindent |
| 3061 | -複数のスタイルをスタイルテンプレートに混ぜて入れてもよいので、@code{bold}、@code{underline}、…は@code{$style}変数を明示的に使用している。 | |
| 3258 | +複数のスタイルをスタイルテンプレートに混ぜて入れてもよいので、@code{bold}、@code{underline}、@dots{}は@code{$style}変数を明示的に使用しています。 | |
| 3062 | 3259 | |
| 3063 | -@node 行プリフィックス, 文字列変換, スタイルテンプレート, 出力言語の定義 | |
| 3260 | + | |
| 3261 | +@node Line prefix, String translation, Style template, Output Language Definitions | |
| 3064 | 3262 | @section 行プリフィックス |
| 3065 | 3263 | |
| 3066 | -この機能を使えば、入力行に対応して生成される各行のプリフィックスとして文字列を生成することができる(つまり、このプリフィックスは生成された他の出力エレメント、たとえば、ヘッダやフッタなどの行に対して生成されるものではない)。 | |
| 3264 | +この機能を使えば、入力行に対応して生成される各行のプリフィックスとして文字列を生成することができます(つまり、このプリフィックスは生成された他の出力エレメント、例えば、ヘッダやフッタなどの行に対して生成されるものではありません)。 | |
| 3067 | 3265 | |
| 3068 | -この機能は@LaTeX{}出力で使っている(@ref{LaTeXの出力})。 | |
| 3266 | +この機能は@LaTeX{}出力で使っています。 | |
| 3267 | +@xref{LaTeX output}. | |
| 3069 | 3268 | |
| 3070 | 3269 | @example |
| 3071 | 3270 | lineprefix "\mbox@{@}" |
| 3072 | 3271 | @end example |
| 3073 | 3272 | |
| 3074 | 3273 | @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}. | |
| 3076 | 3280 | |
| 3077 | -@code{lineprefix}を使う別の興味深い例がjavadocの出力である。 | |
| 3078 | -@ref{HTML出力の生成}を見てほしい。 | |
| 3079 | 3281 | |
| 3080 | -@node 文字列変換, ドキュメントテンプレート, 行プリフィックス, 出力言語の定義 | |
| 3282 | +@node String translation, Document template, Line prefix, Output Language Definitions | |
| 3081 | 3283 | @section 文字列変換 |
| 3082 | 3284 | |
| 3083 | -ソースファイルにある文字の並びが出力フォーマットでは特別な意味を持つことがある。 | |
| 3084 | -なので、そういったものは前処理が必要となる(たとえば、エスケープする)。 | |
| 3085 | -その変換テーブルを次のように記述することができる。 | |
| 3285 | +ソースファイルにある文字の並びが出力フォーマットでは特別な意味を持つことがあります。 | |
| 3286 | +ですから、そういったものは前処理が必要となります(例えば、エスケープします)。 | |
| 3287 | +変換テーブルは、次のように記述できます。 | |
| 3086 | 3288 | |
| 3087 | 3289 | @example |
| 3088 | 3290 | translations |
| @@ -3093,10 +3295,12 @@ end | ||
| 3093 | 3295 | @end example |
| 3094 | 3296 | |
| 3095 | 3297 | @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}. | |
| 3098 | 3302 | |
| 3099 | -たとえば、HTMLについて言うと、次のような変換テーブルがある。 | |
| 3303 | +例えば、HTMLについて言うと、次のような変換テーブルがあります。 | |
| 3100 | 3304 | |
| 3101 | 3305 | @example |
| 3102 | 3306 | translations |
| @@ -3106,9 +3310,9 @@ translations | ||
| 3106 | 3310 | end |
| 3107 | 3311 | @end example |
| 3108 | 3312 | |
| 3109 | -@LaTeX{}の場合だと変換テーブルは少しだけ大きい。 | |
| 3110 | -ここでは少しだけ示す。 | |
| 3111 | -これは、特殊文字をエスケープする方法(たとえば@code{\}など)、改行やタブ文字を変換する方法を示している。 | |
| 3313 | +@LaTeX{}の場合だと変換テーブルは少しだけ大きくなります。 | |
| 3314 | +ここでは少しだけ示します。 | |
| 3315 | +これは、特殊文字をエスケープする方法(例えば、@code{\}など)、改行やタブ文字を変換する方法を示しています。 | |
| 3112 | 3316 | |
| 3113 | 3317 | @example |
| 3114 | 3318 | translations |
| @@ -3123,12 +3327,15 @@ end | ||
| 3123 | 3327 | @end example |
| 3124 | 3328 | |
| 3125 | 3329 | @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: | |
| 3128 | 3335 | |
| 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 | +従って、次のようになります。 | |
| 3132 | 3339 | |
| 3133 | 3340 | @example |
| 3134 | 3341 | translations |
| @@ -3139,10 +3346,11 @@ translations | ||
| 3139 | 3346 | end |
| 3140 | 3347 | @end example |
| 3141 | 3348 | |
| 3142 | -@node ドキュメントテンプレート, HTML出力の生成, 文字列変換, 出力言語の定義 | |
| 3349 | + | |
| 3350 | +@node Document template, Generating HTML output, String translation, Output Language Definitions | |
| 3143 | 3351 | @section ドキュメントテンプレート |
| 3144 | 3352 | |
| 3145 | -出力ファイルの始めと終わりを次のように定義することができる。 | |
| 3353 | +出力ファイルの始めと終わりは次のように定義できます。 | |
| 3146 | 3354 | |
| 3147 | 3355 | @cindex doctemplate |
| 3148 | 3356 | @example |
| @@ -3160,10 +3368,12 @@ nodoctemplate | ||
| 3160 | 3368 | end |
| 3161 | 3369 | @end example |
| 3162 | 3370 | |
| 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 | +私は、現在のソリューションのほうが良くて、ファイルの数も減らせると考えています。}。 | |
| 3165 | 3375 | |
| 3166 | -例として、HTMLでは次のようになる。 | |
| 3376 | +例として、HTMLでは次のようになります。 | |
| 3167 | 3377 | |
| 3168 | 3378 | @example |
| 3169 | 3379 | nodoctemplate |
| @@ -3175,27 +3385,34 @@ end | ||
| 3175 | 3385 | @end example |
| 3176 | 3386 | |
| 3177 | 3387 | @noindent |
| 3178 | -終わりに対する部分には明示的な改行があることに注意してほしい。 | |
| 3388 | +終わりの部分に明示的な改行があることに注意してください。 | |
| 3179 | 3389 | |
| 3180 | -@code{doctemplate}と@code{nodoctemplate}の定義では、次の変数が使用でき、出力が生成される際に置き換えられる。 | |
| 3390 | +@code{doctemplate}と@code{nodoctemplate}の定義では、次の変数が使用できます。 | |
| 3391 | +出力が生成される際に置き換えられます。 | |
| 3181 | 3392 | |
| 3182 | 3393 | @table @code |
| 3183 | 3394 | @item $title |
| 3184 | -出力ファイルのタイトルの値(たとえば、@code{--title}というコマンドラインオプションで渡されたもの) | |
| 3395 | +出力ファイルのタイトルの値(例えば、@code{--title}というコマンドラインオプションで渡されたもの)です。 | |
| 3396 | + | |
| 3185 | 3397 | @item $header |
| 3186 | -コマンドラインオプション@code{--header}で指定されたファイルの内容 | |
| 3398 | +コマンドラインオプション@code{--header}で指定されたファイルの内容です。 | |
| 3399 | + | |
| 3187 | 3400 | @item $footer |
| 3188 | -コマンドラインオプション@code{--footer}で指定されたファイルの内容 | |
| 3401 | +コマンドラインオプション@code{--footer}で指定されたファイルの内容です。 | |
| 3402 | + | |
| 3189 | 3403 | @item $css |
| 3190 | -コマンドラインオプション@code{--css}で渡された値 | |
| 3404 | +コマンドラインオプション@code{--css}で渡された値です。 | |
| 3405 | + | |
| 3191 | 3406 | @item $additional |
| 3192 | -その他の追加的な情報。source-highlightはこれをその名前とそのバージョンで置き換える。 | |
| 3407 | +その他の追加的な情報です。 | |
| 3408 | +source-highlightは、名前とバージョンでこれを置き換えます。 | |
| 3409 | + | |
| 3193 | 3410 | @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})に置き換えます。 | |
| 3196 | 3413 | @end table |
| 3197 | 3414 | |
| 3198 | -例えば、cssを使ったHTMLドキュメント(@file{htmlcss.outlang}ファイル)の場合は次のようになる。 | |
| 3415 | +例えば、cssを使ったHTMLドキュメント(@file{htmlcss.outlang}ファイル)の場合は、次のようになります。 | |
| 3199 | 3416 | |
| 3200 | 3417 | @example |
| 3201 | 3418 | doctemplate |
| @@ -3218,7 +3435,8 @@ $footer</body> | ||
| 3218 | 3435 | end |
| 3219 | 3436 | @end example |
| 3220 | 3437 | |
| 3221 | -ヘッダとフッタの付いたHTMLドキュメント(@file{html.outlnag})の場合は次のようになる(@code{$docbgcolor}の使用に注意)。 | |
| 3438 | +ヘッダとフッタの付いたHTMLドキュメント(@file{html.outlnag})の場合は次のようになります。 | |
| 3439 | +@code{$docbgcolor}の使用に注意してください。 | |
| 3222 | 3440 | |
| 3223 | 3441 | @example |
| 3224 | 3442 | doctemplate |
| @@ -3238,7 +3456,7 @@ $footer</body> | ||
| 3238 | 3456 | end |
| 3239 | 3457 | @end example |
| 3240 | 3458 | |
| 3241 | -そしてHTMLテーブルの出力に対するものである(@file{htmltable.outlang}ファイル)。 | |
| 3459 | +そして、HTMLテーブルの出力に対するものです(@file{htmltable.outlang}ファイル)。 | |
| 3242 | 3460 | |
| 3243 | 3461 | @example |
| 3244 | 3462 | doctemplate |
| @@ -3254,22 +3472,23 @@ doctemplate | ||
| 3254 | 3472 | end |
| 3255 | 3473 | @end example |
| 3256 | 3474 | |
| 3257 | -@node HTML出力の生成, , ドキュメントテンプレート, 出力言語の定義 | |
| 3475 | + | |
| 3476 | +@node Generating HTML output, , Document template, Output Language Definitions | |
| 3258 | 3477 | @section HTML出力の生成 |
| 3259 | 3478 | |
| 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}など)に対する共通定義が含まれています。 | |
| 3262 | 3481 | |
| 3263 | 3482 | @include html_common.outlang.texinfo |
| 3264 | 3483 | |
| 3265 | -さらに、このファイルは、javadocの出力を生成するのにも使われる。 | |
| 3484 | +さらに、このファイルは、javadocの出力を生成するのにも使われます。 | |
| 3266 | 3485 | |
| 3267 | 3486 | @include javadoc.outlang.texinfo |
| 3268 | 3487 | |
| 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 | +例えば、次のコードを書いたとします。 | |
| 3273 | 3492 | |
| 3274 | 3493 | @example |
| 3275 | 3494 | /** |
| @@ -3282,125 +3501,138 @@ javadocの出力フォーマットは、コード片を、別のJavaファイル | ||
| 3282 | 3501 | @end example |
| 3283 | 3502 | |
| 3284 | 3503 | @noindent |
| 3285 | -結果のJavaコードはシンタックスエラーを含んでいる。 | |
| 3286 | -source-highlightを使って、javadocコメントに挿入するコードをフォーマットするならば、これらの問題は回避されるだろう。 | |
| 3504 | +結果のJavaコードはシンタックスエラーがあります。 | |
| 3505 | +source-highlightを使って、javadocコメントに挿入するコードをフォーマットするならば、これらの問題は回避されるでしょう。 | |
| 3506 | + | |
| 3507 | +source-highlightによってフォーマットされたコード片を含む、javadocが生成したHTMLページの例は、ドキュメントディレクトリの@file{SimpleClass-doc.html}というファイルで見つけられます。 | |
| 3287 | 3508 | |
| 3288 | -source-highlightによってフォーマットされたコード片を含む、javadocが生成したHTMLページの例はドキュメンテーションディレクトリの@file{SimpleClass-doc.html}というファイルで見つけられる。 | |
| 3289 | 3509 | |
| 3290 | -@node リファレンスの生成, 例, 出力言語の定義, Top | |
| 3510 | +@node Generating References, Examples, Output Language Definitions, Top | |
| 3291 | 3511 | @chapter リファレンスの生成 |
| 3292 | 3512 | @cindex reference |
| 3293 | 3513 | @cindex anchor |
| 3294 | 3514 | @cindex ctags |
| 3295 | 3515 | |
| 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でこの機能を使う場合には、このプログラムをインストールしなければなりません。 | |
| 3300 | 3520 | |
| 3301 | -@code{ctags}プログラムは、ファイル中に見つかる言語の様々なオブジェクトについて、インデックスファイル(あるいは「タグ」ファイル)を生成する。 | |
| 3302 | -こうすることで、テキストエディタやその他のユーティリティ(ここでのsource-highlightのようなもの)によって、それらのアイテムの位置を素早く簡単に特定できるようになる。 | |
| 3303 | -「タグ」は、インデックスエントリが利用可能な言語のオブジェクト(あるいは、そのオブジェクトに対して生成されたインデックスエントリ)を表わすものである@footnote{この説明はctagsのmanページから持って来たものだ}。 | |
| 3521 | +@code{ctags}プログラムは、ファイル中に見つかる言語の様々なオブジェクトについてインデックスファイル(あるいは、「タグ」ファイル)を生成します。 | |
| 3522 | +こうすることで、テキストエディタやその他のユーティリティ(ここでのsource-highlightのようなもの)によって、それらのアイテムの位置を素早く簡単に特定できるようになります。 | |
| 3523 | +「タグ」は、インデックスエントリが利用可能な言語のオブジェクト(あるいは、そのオブジェクトに対して生成されたインデックスエントリ)を表わすものです@footnote{この説明はctagsのmanページから持って来たものです}。 | |
| 3304 | 3524 | |
| 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}を参照します。 | |
| 3307 | 3527 | |
| 3308 | -リファレンスの生成は、コマンドラインオプションの@code{--gen-references}を使って有効にする(@ref{source-highlightの起動})。 | |
| 3309 | -このオプションは、リファレンスの生成方法を決める引数を一つ取る。 | |
| 3528 | +リファレンスの生成は、コマンドラインオプションの@code{--gen-references}を使って有効にします(@pxref{Invoking source-highlight})。 | |
| 3529 | +このオプションは、リファレンスの生成方法を決める以下のような引数を一つ取ります。 | |
| 3310 | 3530 | |
| 3311 | 3531 | @table @code |
| 3312 | 3532 | @item inline |
| 3313 | -リファレンスポインタをそのエレメントとちょうど同じ場所に生成する。 | |
| 3314 | -これは、HTMLのようにもともとリンクをサポートしているような出力フォーマットで役に立つ。 | |
| 3315 | -一方、@LaTeX{}のようなインラインリンクをサポートしない出力フォーマットでは役に立たない。 | |
| 3533 | +リファレンスポインタを、そのエレメントとちょうど同じ場所に生成します。 | |
| 3534 | +これは、HTMLのようにもともとリンクをサポートしているような出力フォーマットで役に立ちます。 | |
| 3535 | +一方、@LaTeX{}のようなインラインリンクをサポートしない出力フォーマットでは役に立ちません。 | |
| 3536 | + | |
| 3316 | 3537 | @item postline |
| 3317 | -入力ソースのある行が、リファレンスのあるエレメントを含む場合、リファレンスのリストがその行の直後に生成される(@ref{例}を参照してほしい)。 | |
| 3538 | +入力ソースのある行が、リファレンスのあるエレメントを含む場合、リファレンスのリストがその行の直後に生成されます。 | |
| 3539 | +@xref{Examples}. | |
| 3540 | + | |
| 3318 | 3541 | @item postdoc |
| 3319 | -入力ファイル全体が生成された後、リファレンスが全て生成される。 | |
| 3542 | +入力ファイル全体が生成された後、リファレンスが全て生成されます。 | |
| 3320 | 3543 | @end table |
| 3321 | 3544 | |
| 3322 | -例外がある。 | |
| 3323 | -エレメントが複数のリファレンスを持つとき(変数が複数のソースで定義されたり、メソッドがオーバーロードされたり)、@code{inline}が指定されていれば、その発生についてリファレンスの生成が@code{postline}に切り替わる。 | |
| 3545 | +例外があります。 | |
| 3546 | +(変数が複数のソースで定義されたり、メソッドがオーバーロードされたりするため)エレメントが複数のリファレンスを持つ場合、@code{inline}が指定されていれば、その箇所について、リファレンスの生成が@code{postline}に切り替わります。 | |
| 3324 | 3547 | |
| 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}コマンドラインオプションを使って正確なタグファイルを指定しなければなりません。 | |
| 3329 | 3552 | |
| 3330 | -一度タグファイルが生成されると、source-highlightは、@code{ctags}配布物に用意されていて、source-highlightのソースに含まれている@file{readtags}ライブラリに頼ることになる。 | |
| 3553 | +タグファイルが一度生成されると、source-highlightは、@code{ctags}配布物に用意されていて、また、source-highlightのソースに含まれる@file{readtags}ライブラリを当てにします。 | |
| 3331 | 3554 | |
| 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}. | |
| 3334 | 3558 | |
| 3335 | -@node 例, バグ報告, リファレンスの生成, Top | |
| 3559 | + | |
| 3560 | +@node Examples, Problems, Generating References, Top | |
| 3336 | 3561 | @chapter 例 |
| 3337 | 3562 | |
| 3338 | -ここでは、@code{-f texinfo}というコマンドラインオプションを付けてsource-highlightでフォーマットされたソースの例をいくつか示す。 | |
| 3339 | -Infoファイルではハイライティングは見えないが、印刷されたマニュアルやHTML出力でだけは見えるということを覚えていてほしい(えーと、少なくとも行番号はどこでも見える:-))。 | |
| 3563 | +ここでは、@code{-f texinfo}というコマンドラインオプションを付けてsource-highlightでフォーマットされたソースの例をいくつか示します。 | |
| 3564 | +Infoファイルではハイライティングは見えません。 | |
| 3565 | +印刷マニュアルやHTML出力でだけ見えるということを覚えていてください(えーと、少なくとも行番号はどこでも見えます:-))。 | |
| 3340 | 3566 | |
| 3341 | 3567 | @menu |
| 3342 | -* 簡単な例:: | |
| 3343 | -* リファレンス:: | |
| 3344 | -* 行による範囲指定:: | |
| 3345 | -* 行による範囲指定(コンテキスト付き):: | |
| 3346 | -* 正規表現による範囲指定:: | |
| 3568 | +* Simple example:: | |
| 3569 | +* References:: | |
| 3570 | +* Line ranges:: | |
| 3571 | +* Line ranges (with context):: | |
| 3572 | +* Regex ranges:: | |
| 3347 | 3573 | @end menu |
| 3348 | 3574 | |
| 3349 | -@node 簡単な例, リファレンス, 例, 例 | |
| 3575 | + | |
| 3576 | +@node Simple example, References, Examples, Examples | |
| 3350 | 3577 | @section 簡単な例 |
| 3351 | 3578 | |
| 3352 | -最初の例は、次のコマンドを使って生成されたものだ。 | |
| 3579 | +最初の例は、次のコマンドを使って生成されたものです。 | |
| 3353 | 3580 | |
| 3354 | 3581 | @example |
| 3355 | 3582 | source-highlight -f texinfo -i test.java -o test.java.texinfo -n |
| 3356 | 3583 | @end example |
| 3357 | 3584 | |
| 3358 | -そして、これが結果。 | |
| 3585 | +そして、これが結果です。 | |
| 3359 | 3586 | |
| 3360 | 3587 | @include test.java.texinfo |
| 3361 | 3588 | |
| 3362 | -@node リファレンス, 行による範囲指定, 簡単な例, 例 | |
| 3589 | + | |
| 3590 | +@node References, Line ranges, Simple example, Examples | |
| 3363 | 3591 | @section リファレンス |
| 3364 | 3592 | |
| 3365 | -この例は、@code{--gen-references}機能の利用について示すものだ。 | |
| 3366 | -具体的には、次のコマンドで以下のような出力が生成される。 | |
| 3593 | +この例は、@code{--gen-references}機能の使い方を示すものです。 | |
| 3594 | +具体的には、次のコマンドで以下のような出力が生成されます。 | |
| 3367 | 3595 | |
| 3368 | 3596 | @example |
| 3369 | 3597 | source-highlight -f texinfo -i test.h -o test_ref.h.texinfo -n \ |
| 3370 | 3598 | --gen-references=postline |
| 3371 | 3599 | @end example |
| 3372 | 3600 | |
| 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}というコメントにも当て嵌ります。 | |
| 3376 | 3606 | |
| 3377 | 3607 | @include test_ref.h.texinfo |
| 3378 | 3608 | |
| 3379 | -@node 行による範囲指定, 行による範囲指定(コンテキスト付き), リファレンス, 例 | |
| 3609 | + | |
| 3610 | +@node Line ranges, Line ranges (with context), References, Examples | |
| 3380 | 3611 | @section 行による範囲指定 |
| 3381 | 3612 | |
| 3382 | 3613 | @cindex line ranges |
| 3383 | -これは、@xref{簡単な例}にある入力ファイルについて、@code{--line-range}というコマンドラインオプションを使った例である。 | |
| 3614 | +これは、別の節(@pxref{Simple example})にある入力ファイルについて、コマンドラインオプション@code{--line-range}を使った例です。 | |
| 3384 | 3615 | |
| 3385 | 3616 | @example |
| 3386 | 3617 | source-highlight -f texinfo -i test.java -n \ |
| 3387 | 3618 | --line-range="12-18","29-34" |
| 3388 | 3619 | @end example |
| 3389 | 3620 | |
| 3390 | -これによって以下の出力が生成される。 | |
| 3621 | +これによって以下の出力が生成されます。 | |
| 3391 | 3622 | |
| 3392 | 3623 | @include test_lineranges1.java.texinfo |
| 3393 | 3624 | |
| 3394 | -指定された行の範囲は、コメント環境まで及んでいるが、ハイライティングは配慮されている。 | |
| 3395 | -コメントの開始は表示されていないが、コメントの残りの部分は正しくコメントとしてハイライトされている。 | |
| 3625 | +指定された行の範囲はコメント環境まで及んでいますが、ハイライティングは配慮されています。 | |
| 3626 | +コメントの開始は表示されていませんが、コメントの残りの部分は正しくコメントとしてハイライトされています。 | |
| 3627 | + | |
| 3396 | 3628 | |
| 3397 | -@node 行による範囲指定(コンテキスト付き), 正規表現による範囲指定, 行による範囲指定, 例 | |
| 3629 | +@node Line ranges (with context), Regex ranges, Line ranges, Examples | |
| 3398 | 3630 | @section 行による範囲指定(コンテキスト付き) |
| 3399 | 3631 | |
| 3400 | 3632 | @cindex line ranges |
| 3401 | 3633 | @cindex range context |
| 3402 | 3634 | @cindex range separator |
| 3403 | -これは、@code{--line-range}オプションと一緒に@code{--range-context}と@code{--range-separator}を使った例である。 | |
| 3635 | +これは、@code{--line-range}オプションと一緒に@code{--range-context}と@code{--range-separator}を使った例です。 | |
| 3404 | 3636 | |
| 3405 | 3637 | @example |
| 3406 | 3638 | source-highlight -f texinfo -i test.java -n \ |
| @@ -3409,49 +3641,52 @@ source-highlight -f texinfo -i test.java -n \ | ||
| 3409 | 3641 | --range-separator="@{... not in range ...@}" |
| 3410 | 3642 | @end example |
| 3411 | 3643 | |
| 3412 | -これによって以下の出力が得られる。 | |
| 3644 | +これによって以下の出力が得られます。 | |
| 3413 | 3645 | |
| 3414 | 3646 | @include test_lineranges2.java.texinfo |
| 3415 | 3647 | |
| 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 | + | |
| 3419 | 3654 | |
| 3420 | -@node 正規表現による範囲指定, , 行による範囲指定(コンテキスト付き), 例 | |
| 3655 | +@node Regex ranges, , Line ranges (with context), Examples | |
| 3421 | 3656 | @section 正規表現による範囲指定 |
| 3422 | 3657 | |
| 3423 | 3658 | @cindex regex ranges |
| 3424 | -範囲の指定は、正規表現を使って表記することもできる。 | |
| 3425 | -これには、@code{--regex-range}というコマンドラインオプションを使う。 | |
| 3426 | -この場合、指定範囲の開始は、指定された正規表現にマッチする文字列を(任意の位置で)含む行によって検出される。 | |
| 3427 | -また、範囲の終了は、範囲を開始する正規表現と同じものにマッチする文字列を含む行によって検出される。 | |
| 3428 | -この機能は、ソースコードにおいてアドホックに区切られた(たとえば、特定のコメントのパターンなどで)特定の部分だけを示すようにして、コードをドキュメントにしたい(たとえば、ちょうどこのマニュアルでやっているように)ときに非常に役に立つ。 | |
| 3659 | +範囲の指定は、正規表現を使って表記できます。 | |
| 3660 | +これには、コマンドラインオプション@code{--regex-range}を使います。 | |
| 3661 | +この場合、指定範囲の開始は、指定された正規表現にマッチする文字列を(任意の位置で)含む行によって検出されます。 | |
| 3662 | +また、範囲の終了は、範囲を開始する正規表現と同じものにマッチする文字列を含む行によって検出されます。 | |
| 3663 | +この機能は、(例えば、特定のコメントのパターンなどで、)ソースコードにおいてアドホックに区切られた特定の部分だけを示すようにして、(例えば、ちょうどこのマニュアルでやっているように、)コードをドキュメントにしたい時に非常に役に立ちます。 | |
| 3429 | 3664 | |
| 3430 | -例として、次の指定をすることで、@xref{簡単な例}に示されているソースから、下の出力が生成された。 | |
| 3665 | +例として、次の指定をすることで、別節(@pxref{Simple example})に示されているソースから、下の出力が生成されました。 | |
| 3431 | 3666 | |
| 3432 | 3667 | @example |
| 3433 | 3668 | --regex-range="/// [[:alpha:]]+" |
| 3434 | 3669 | @end example |
| 3435 | 3670 | |
| 3436 | 3671 | @noindent |
| 3437 | -@code{/// class}という文字列を含む行は、範囲を指定するものだが、出力の中には示されない。 | |
| 3672 | +@code{/// class}という文字列を含む行は範囲を指定するものですが、出力の中には示されません。 | |
| 3438 | 3673 | |
| 3439 | 3674 | @include test_regexrange1.java.texinfo |
| 3440 | 3675 | |
| 3441 | -それに加えて、行番号は元のファイルの行と一致している。 | |
| 3676 | +それに加えて、行番号は、元のファイルの行と一致しています。 | |
| 3442 | 3677 | |
| 3443 | -@code{/* main */}の間にインクルードされているものだけを出力したい場合には、次のように指定する(@code{*}という特殊な正規表現の文字はエスケープしなければならないので注意)。 | |
| 3678 | +@code{/* main */}の間にインクルードされているものだけを出力したい場合には、次のように指定します(@code{*}という正規表現の特殊文字はエスケープしなければならないので注意してください)。 | |
| 3444 | 3679 | |
| 3445 | 3680 | @example |
| 3446 | 3681 | --regex-range="/\* main \*/" |
| 3447 | 3682 | @end example |
| 3448 | 3683 | |
| 3449 | 3684 | @noindent |
| 3450 | -そして次のものが得られる。 | |
| 3685 | +そして次のものが得られます。 | |
| 3451 | 3686 | |
| 3452 | 3687 | @include test_regexrange_main.java.texinfo |
| 3453 | 3688 | |
| 3454 | -このソースファイルの中の、メソッド名を含むコメント行によって区切られたメソッドだけを出力したい場合には、次のように指定することができる。 | |
| 3689 | +このソースファイル中、メソッド名を含むコメント行によって区切られたメソッドだけを出力したい場合には、次のように指定することができます。 | |
| 3455 | 3690 | |
| 3456 | 3691 | @example |
| 3457 | 3692 | --regex-range="/\* [[:alpha:]]+ \*/" |
| @@ -3459,59 +3694,61 @@ source-highlight -f texinfo -i test.java -n \ | ||
| 3459 | 3694 | |
| 3460 | 3695 | @include test_regexrange_methods.java.texinfo |
| 3461 | 3696 | |
| 3462 | -この場合は、次のようにも指定できる。 | |
| 3697 | +この場合は、次のようにも指定できます。 | |
| 3463 | 3698 | |
| 3464 | 3699 | @example |
| 3465 | 3700 | --regex-range="/\* main \*/","/\* mymethod \*/" |
| 3466 | 3701 | @end example |
| 3467 | 3702 | |
| 3468 | 3703 | @noindent |
| 3469 | -@code{--regex-range}は複数の正規表現を受け付けるからだ。 | |
| 3704 | +@code{--regex-range}は、複数の正規表現を受け付けるからです。 | |
| 3470 | 3705 | |
| 3471 | -重要:コマンドラインで指定された正規表現は、その指定された順序でテストされるので非常に重要だ。 | |
| 3706 | +重要:コマンドラインで指定された正規表現は、その指定された順序でテストされますので非常に重要です。 | |
| 3472 | 3707 | |
| 3473 | -@node バグ報告, メーリングリスト, 例, Top | |
| 3708 | + | |
| 3709 | +@node Problems, Mailing Lists, Examples, Top | |
| 3474 | 3710 | @chapter バグ報告 |
| 3475 | 3711 | @cindex bugs |
| 3476 | 3712 | @cindex problems |
| 3477 | 3713 | |
| 3478 | -@command{source-highlight}にバグを見つけた場合には、次のアドレスにメールを送ってほしい。 | |
| 3714 | +@command{source-highlight}にバグを見つけた場合には、次のアドレスにメールを送ってください。 | |
| 3479 | 3715 | |
| 3480 | 3716 | @code{bug-source-highlight at gnu dot org} |
| 3481 | 3717 | |
| 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 | +作者は、その問題を解決する時間が無いかもしれませんが、ユーザを支援するつもりはあります。 | |
| 3486 | 3724 | |
| 3487 | -その他の@command{source-highlight}についての質問、コメント、提案がある場合には、メールで作者に連絡してほしい(メールアドレスは@value{myhomepage}で見つけられる)。 | |
| 3488 | -作者は、その問題を解決する時間が無いかもしれないけれども、あなたを助けようとはするつもりだ。 | |
| 3489 | 3725 | |
| 3490 | -@node メーリングリスト, Concept Index, バグ報告, Top | |
| 3726 | +@node Mailing Lists, Concept Index, Problems, Top | |
| 3491 | 3727 | @chapter メーリングリスト |
| 3492 | 3728 | @cindex mailing list |
| 3493 | 3729 | |
| 3494 | -以下の複数のメーリングリストが利用可能だ。 | |
| 3730 | +以下のように、複数のメーリングリストが利用できます。 | |
| 3495 | 3731 | |
| 3496 | 3732 | @code{help-source-highlight at gnu dot org} |
| 3497 | 3733 | |
| 3498 | -これは、このプログラムについての一般的な議論や、助けを頼む場合のメーリングリストである(オープンなメーリングリスト)。 | |
| 3734 | +これは、このプログラムについての一般的な議論をする場合や、支援を頼む場合のメーリングリストです(オープンなメーリングリスト)。 | |
| 3499 | 3735 | @uref{http://mail.gnu.org/mailman/listinfo/help-source-highlight} |
| 3500 | 3736 | |
| 3501 | 3737 | @code{info-source-highlight at gnu dot org} |
| 3502 | 3738 | |
| 3503 | -これは、新規リリースや新機能に関する情報を受け取るためのメーリングリストだ(リードオンリーのメーリングリスト)。 | |
| 3739 | +これは、新規リリースや新機能に関する情報を受け取るためのメーリングリストです(リードオンリーのメーリングリスト)。 | |
| 3504 | 3740 | @uref{http://mail.gnu.org/mailman/listinfo/info-source-highlight}. |
| 3505 | 3741 | |
| 3506 | -メーリングリストを購読したい場合には、示したURLへ行って、指示に従ってほしい。 | |
| 3507 | -もしくは私にメールを送ってもらえば、登録して差し上げる。 | |
| 3742 | +メーリングリストを購読したい場合には、示したURLへ行って、指示に従ってください。 | |
| 3743 | +もしくは、メールを私に送ってもらえば、登録して差し上げます。 | |
| 3508 | 3744 | |
| 3509 | -新規リリースにおける新機能については私のブログでも説明するつもりだ。 | |
| 3510 | -ブログのURLは次の通り。 | |
| 3745 | +新規リリースにおける新機能については私のブログでも説明するつもりです。 | |
| 3746 | +ブログのURLは次の通りです。 | |
| 3511 | 3747 | |
| 3512 | 3748 | @uref{http://tronprog.blogspot.com/search/label/source-highlight} |
| 3513 | 3749 | |
| 3514 | -@node Concept Index, , メーリングリスト, Top | |
| 3750 | + | |
| 3751 | +@node Concept Index, , Mailing Lists, Top | |
| 3515 | 3752 | @unnumbered Concept Index |
| 3516 | 3753 | |
| 3517 | 3754 | @cindex tail recursion |