[perldocjp-cvs 187] CVS update: docs/perl/5.6.1

Back to archive index

Kentaro Shirakata argra****@users*****
2007年 8月 6日 (月) 02:40:26 JST


Index: docs/perl/5.6.1/perlop.pod
diff -u docs/perl/5.6.1/perlop.pod:1.10 docs/perl/5.6.1/perlop.pod:1.11
--- docs/perl/5.6.1/perlop.pod:1.10	Thu Nov  2 19:14:23 2006
+++ docs/perl/5.6.1/perlop.pod	Mon Aug  6 02:40:26 2007
@@ -3055,7 +3055,7 @@
 
 =head2 Gory details of parsing quoted constructs
 
-(クォートされた構造のパーズに関する詳細)
+(クォートされた構造のパースに関する詳細)
 
 =begin original
 
@@ -3087,7 +3087,7 @@
 この章では Perl がどのようにクォートされた構造を扱うかを
 明確にしようと思います。
 これを学ぼうとする最もよくある理由は正規表現の迷宮をほぐすためですが、
-パーズの初期ステップは全てのクォート演算子で同じなので、全て同時に扱います。
+パースの初期ステップは全てのクォート演算子で同じなので、全て同時に扱います。
 
 =begin original
 
@@ -3100,7 +3100,7 @@
 
 =end original
 
-Perl のパーズに関するルールで最も重要なものは以下で述べているうち
+Perl のパースに関するルールで最も重要なものは以下で述べているうち
 最初のものです。
 つまり、クォートされた構造を処理するときは、Perl はまずその構造の
 最後を探して、それから中身を解釈します。
@@ -3241,7 +3241,7 @@
 
 =end original
 
-このステップの開始から、デリミタに関する情報は一切パーズには
+このステップの開始から、デリミタに関する情報は一切パースには
 使われません。
 
 =item Interpolation
@@ -3297,6 +3297,8 @@
 C<$foo . (quotemeta("baz" . $bar))> に変換されます。
 その他の組み合わせは適切な拡張に置換されます。
 
+=begin original
+
 Let it be stressed that I<whatever falls between C<\Q> and C<\E>>
 is interpolated in the usual way.  Something like C<"\Q\\E"> has
 no C<\E> inside.  instead, it has C<\Q>, C<\\>, and C<E>, so the
@@ -3305,42 +3307,102 @@
 C<"\Q\t\E"> is converted to C<quotemeta("\t")>, which is the same
 as C<"\\\t"> (since TAB is not alphanumeric).  Note also that:
 
+=end original
+
+I<C<\Q> と C<\E> の間にある全てのもの> が通常の方法で展開されます。
+C<"\Q\\E"> のようなものは内部にあるのは C<\E> ではなく、
+C<\Q>, C<\\>, C<E> であるので、結果は C<"\\\\E"> と同じになります。
+一般的なルールとして、C<\Q> と C<\E> の間にあるバックスラッシュは
+直感に反した結果になります。
+それで、C<"\Q\t\E"> は C<quotemeta("\t")> に変換され、これは(TAB は
+英数字ではないので C<"\\\t"> と同じです。
+以下のようなことにも注意してください:
+
   $str = '\t';
   return "\Q$str";
 
+=begin original
+
 may be closer to the conjectural I<intention> of the writer of C<"\Q\t\E">.
 
+=end original
+
+これは C<"\Q\t\E"> を書いた人の憶測上の I<意図> により近いです。
+
+=begin original
+
 Interpolated scalars and arrays are converted internally to the C<join> and
 C<.> catenation operations.  Thus, C<"$foo XXX '@arr'"> becomes:
 
+=end original
+
+展開されたスカラと配列は内部で C<join> と C<.> の結合操作に変換されます。
+従って、C<"$foo XXX '@arr'"> は以下のようになります:
+
   $foo . " XXX '" . (join $", @arr) . "'";
 
+=begin original
+
 All operations above are performed simultaneously, left to right.
 
+=end original
+
+上記の全ての操作は、左から右に同時に行われます。
+
+=begin original
+
 Because the result of C<"\Q STRING \E"> has all metacharacters
 quoted, there is no way to insert a literal C<$> or C<@> inside a
 C<\Q\E> pair.  If protected by C<\>, C<$> will be quoted to became
 C<"\\\$">; if not, it is interpreted as the start of an interpolated
 scalar.
 
+=end original
+
+C<"\Q STRING \E"> の結果は全てのメタ文字がクォートされているので、
+C<\Q\E> の組の内側にリテラルの C<$> や C<@> を挿入する方法はありません。
+C<\> によって守られている場合、C<$> はクォートされて C<"\\\$"> と
+なります。
+そうでない場合、これは展開されるスカラ変数の開始として解釈されます。
+
+=begin original
+
 Note also that the interpolation code needs to make a decision on
 where the interpolated scalar ends.  For instance, whether 
 C<< "a $b -> {c}" >> really means:
 
+=end original
+
+展開コードは、展開するスカラ変数がどこで終わるかを決定する必要が
+あることにも注意してください。
+例えば、C<< "a $b -> {c}" >> が実際には以下のようになるか:
+
   "a " . $b . " -> {c}";
 
-or:
+以下のようになるかです:
 
   "a " . $b -> {c};
 
+=begin original
+
 Most of the time, the longest possible text that does not include
 spaces between components and which contains matching braces or
 brackets.  because the outcome may be determined by voting based
 on heuristic estimators, the result is not strictly predictable.
 Fortunately, it's usually correct for ambiguous cases.
 
+=end original
+
+ほとんどの場合、要素と、マッチする中かっこや大かっこの間に空白を含まない、
+最も長いテキストになります。
+出力は発見的な推定器をよる投票によって決定されるので、結果は厳密には
+予測できません。
+幸い、紛らわしい場合でも普通は正しいです。
+
 =item C<?RE?>, C</RE/>, C<m/RE/>, C<s/RE/foo/>, 
 
+=begin original
+
 Processing of C<\Q>, C<\U>, C<\u>, C<\L>, C<\l>, and interpolation
 happens (almost) as with C<qq//> constructs, but the substitution
 of C<\> followed by RE-special chars (including C<\>) is not
@@ -3349,6 +3411,17 @@
 performed whatsoever.  This is the first step at which the presence
 of the C<//x> modifier is relevant.
 
+=end original
+
+C<\Q>, C<\U>, C<\u>, C<\L>, C<\l> の処理と展開が C<qq//> 構造と(ほとんど)
+同じように起こりますが, C<\> の後に正規表現の特殊文字(C<\> を含みます)が
+続く場合の置換は行われません。
+さらに、C<(?{BLOCK})>, C<(?# comment )>, C<//x> 正規表現での C<#> の
+コメントの中では、どのような処理も行われません。
+これは C<//x> 修飾子が影響を与える最初のステップです。
+
+=begin original
+
 Interpolation has several quirks: C<$|>, C<$(>, and C<$)> are not
 interpolated, and constructs C<$var[SOMETHING]> are voted (by several
 different estimators) to be either an array element or C<$var>
@@ -3359,12 +3432,34 @@
 C</$arr[0-9]/>.  Since voting among different estimators may occur,
 the result is not predictable.
 
+=end original
+
+展開ではいくつか特殊な動作をします: C<$|>, C<$(>, C<$)> は展開されず、
+C<$var[SOMETHING]> は(いくつかの異なる推定器によって)配列の要素か
+C<$var> の後に正規表現が続いているのかが投票されます。
+これは C<${arr[$bar]}> が便利になるところです: C</${arr[0-9]}/> は
+配列要素 C<-9> として解釈され、C</$arr[0-9]/> の場合のように C<$arr> の後に
+数値が続いているような正規表現としては解釈されません。
+異なった推定器によって投票されることがあるので、結果は予測できません。
+
+=begin original
+
 It is at this step that C<\1> is begrudgingly converted to C<$1> in
 the replacement text of C<s///> to correct the incorrigible
 I<sed> hackers who haven't picked up the saner idiom yet.  A warning
 is emitted if the C<use warnings> pragma or the B<-w> command-line flag
 (that is, the C<$^W> variable) was set.
 
+=end original
+
+このステップでは、より健全な文法をまだ導入していない、手に負えない I<sed>
+ハッカーのために、C<s///> の置換テキストの中にある C<\1> を、しぶしぶながら
+C<$1> に変換します。
+C<use warnings> プラグマやコマンドラインオプション B<-w> (これは C<$^W>
+変数です) がセットされていると警告が生成されます。
+
+=begin original
+
 The lack of processing of C<\\> creates specific restrictions on
 the post-processed text.  If the delimiter is C</>, one cannot get
 the combination C<\/> into the result of this step.  C</> will
@@ -3375,14 +3470,35 @@
 RE engine, such as in C<s*foo*bar*>, C<m[foo]>, or C<?foo?>; or an
 alphanumeric char, as in:
 
+=end original
+
+C<\\> を処理しないことにより、後処理したテキストに特定の制限があります。
+デリミタが C</> の場合、このステップの結果として C<\/> を得ることは
+できません。
+C</> は正規表現を終わらせ、C<\/> は前のステップで C</> に展開され、
+C<\\/> はそのまま残されます。
+C</> は正規表現の中では C<\/> と等価なので、これはたまたまデリミタが
+正規検索エンジンにとって特別な文字の場合、つまり C<s*foo*bar*>,
+C<m[foo]>, C<?foo?> のような場合、あるいは以下のように英数字でなければ、
+問題にはなりません:
+
   m m ^ a \s* b mmx;
 
+=begin original
+
 In the RE above, which is intentionally obfuscated for illustration, the
 delimiter is C<m>, the modifier is C<mx>, and after backslash-removal the
 RE is the same as for C<m/ ^ a s* b /mx>).  There's more than one 
 reason you're encouraged to restrict your delimiters to non-alphanumeric,
 non-whitespace choices.
 
+=end original
+
+上記の正規表現では、説明のために意図的にわかりにくくしていますが、
+デリミタは C<m> で、修飾子は C<mx> で、バックスラッシュを取り除いた後の
+正規表現は C<m/ ^ a s* b /mx>) と同じです。
+デリミタを英数字や空白でないものに制限するべきである理由は複数あります。
+
 =back
 
 =begin original
@@ -3399,6 +3515,8 @@
 
 (正規表現の文字変換)
 
+=begin original
+
 Previous steps were performed during the compilation of Perl code,
 but this one happens at run time--although it may be optimized to
 be calculated at compile time if appropriate.  After preprocessing
@@ -3406,13 +3524,39 @@
 joining, casing translation, or metaquoting are involved, the
 resulting I<string> is passed to the RE engine for compilation.
 
+=end original
+
+以前のステップは Perl コードのコンパイル中に実行されますが、
+これは実行時に起こります -- しかし、もし適切ならコンパイル時に
+計算できるように最適化されることもあります。
+上記の前処理の後、そして必要なら連結、結合、大文字小文字変換、
+メタクォート化が行われた後、結果の I<文字列> がコンパイルのために
+正規表現エンジンに渡されます。
+
+=begin original
+
 Whatever happens in the RE engine might be better discussed in L<perlre>,
 but for the sake of continuity, we shall do so here.
 
+=end original
+
+正規表現エンジンで起こることについては L<perlre> で議論した方が
+よいでしょうが、継続性のために、ここでそれを行います。
+
+=begin original
+
 This is another step where the presence of the C<//x> modifier is
 relevant.  The RE engine scans the string from left to right and
 converts it to a finite automaton.
 
+=end original
+
+これも C<//x> 修飾子の存在が関連するステップの一つです。
+正規表現エンジンは文字列を左から右にスキャンして、有限状態オートマトンに
+変換します。
+
+=begin original
+
 Backslashed characters are either replaced with corresponding
 literal strings (as with C<\{>), or else they generate special nodes
 in the finite automaton (as with C<\b>).  Characters special to the
@@ -3421,6 +3565,19 @@
 converted to literal strings to match, or else is ignored (as is
 whitespace and C<#>-style comments if C<//x> is present).
 
+=end original
+
+バックスラッシュ付きの文字は(C<\{> のように)対応するリテラル文字列に
+置換されるか、あるいは(C<\b> のように)有限状態オートマトンの特別な
+ノードを生成します。
+(C<|> のような)正規表現エンジンにとって特別な文字は対応するノードか
+ノードのグループを生成します。
+残りの全てはマッチするリテラル文字列に変換されるか、そうでなければ
+(C<//x> が指定された時の空白と C<#> スタイルのコメントと同様に)
+無視されます。
+
+=begin original
+
 Parsing of the bracketed character class construct, C<[...]>, is
 rather different than the rule used for the rest of the pattern.
 The terminator of this construct is found using the same rules as
@@ -3430,11 +3587,30 @@
 C<(?{...})> is found using the same rules as for finding the
 terminator of a C<{}>-delimited construct.
 
+=end original
+
+文字クラス構造 C<[...]> のパースは他のパターンとはルールが異なります。
+この構造の終端は C<{}> でデリミタされた構造の終端を検索するのと同じルールで
+検索されます; 唯一の例外は、C<[> の直後の C<]> はバックスラッシュが
+先行しているものとして扱われます。
+同様に、C<(?{...})> の終端は C<{}> でデリミタされた構造の終端を
+検索されるのと同じルールで検索されます。
+
+=begin original
+
 It is possible to inspect both the string given to RE engine and the
 resulting finite automaton.  See the arguments C<debug>/C<debugcolor>
 in the C<use L<re>> pragma, as well as Perl's B<-Dr> command-line
 switch documented in L<perlrun/"Command Switches">.
 
+=end original
+
+正規表現に与えられる文字列と、結果としての有限状態オートマトンの両方を
+検査できます。
+C<use L<re>> プラグマの C<debug>/C<debugcolor> 引数と、
+L<perlrun/"Command Switches"> に記述されている B<-Dr> コマンドライン
+オプションを参照してください。
+
 =item Optimization of regular expressions
 
 (正規表現の最適化)
@@ -3461,8 +3637,7 @@
 
 =end original
 
-C<split()> で C</^/> を暗黙に C</^/m> に最適化されるのも
-このステップです。
+C<split()> で C</^/> を暗黙に C</^/m> に最適化するのもこのステップです。
 
 =back
 


perldocjp-cvs メーリングリストの案内
Back to archive index