質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.90%

物理行と論理行とは

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,342

aaaaaaaa

score 481

たとえば、継続行にマッチさせる方法について考えてみよう。データの仕様においては、複数の物理行が使われていても、改行文字の直前がバックスラッシュになっていれば、それら全体を一つの論理行とみなすようなものがよくある。
たとえば、次のようなものだ。
SFC=array.c builtin.c eval.c field.c gawkmisc.c io.c main.c /
missing.c msg.c node.c re.c version.c

詳説正規表現172pより

この変数?らしき英文の中に物理行継続行論理行があるみたいですが、具体的にどの部分のことを言っているのでしょうか。
また論理行や物理行について調べてみると、8~12年前の情報ではありますが、論理行が、改行コードを使って改行すれば、行が一個作れて、物理行は、改行コードを使わずにエンターキーなどで改行すれば一行作れる、という風な記述がありました。
一方で定義が曖昧であると記述してあるところもあり、質問することにしました。

物理行継続行論理行とはいったい何なのでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+5

「論理行と物理行」は様々な文脈でそれぞれ意味が異なるので、違う文脈での説明文を見ても無意味です。

文脈1:
質問でお書きのような、「(プログラミング言語などで)文法上1行で書かないといけないものを、2行に分けて書きたい」ケース。
改行文字で区切られた物が物理行で、その物理行を行継続記号で繋いだ物が、論理行です。
行継続記号は言語により色々。質問文だとバックスラッシュとのことですね。
もちろん、行継続記号が無い場合は、物理行=論理行です。
論理行が複数物理行からなるときに、2物理行目以降の物理行を、継続行と言います。

バックスラッシュを行継続記号とすると、

A=0           ・・・・1物理行目、1論理行目
B=1+ \        ・・・・2物理行目、2論理行目
2             ・・・・3物理行目、2論理行目で継続行


( ・・・以降は説明文です。実際にはバックスラッシュは行末にある。)

Cのような改行が文法上の区切りの意味を持たない言語だと、物理行・論理行・継続行という概念は無いです。

文脈2:
エディタ画面で、画面サイズ/ウィンドウサイズより長い行を折り返して表示するケース。
改行文字で区切られた物が論理行で、画面上の行が物理行です。

ウィンドウサイズが幅20文字の場合:

one two three.


このウィンドウサイズを幅10文字に変更すると、10文字で折り返されるが、改行文字がテキストに挿入されるわけでは無い。

one two th
ree.


単純に幅で折り返すエディタもあるし、折り返している事が目で見えるようになっているエディタもあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

正確・厳密な定義かはわかりませんが、プログラミングに関する話題ですとテキストの行を論理的な単位と考えるプログラミング言語の場合によく出てくると思います。

物理行という用語をあまり耳にしない気がしますがそのいわんとするところは「改行文字」で区切られた行といえると思います。見た目そのままの「行」のことですね。

一方論理行は「行に文法的な意味があるような言語」で「継続行」と同時に用いられ「論理的に1行と見做せる範囲」のことをいうと思います。例えばLinuxのシェルスクリプトは1行がコマンドの区切りとなりますが、

echo a b c

とかけば、この物理行1行が論理行1行でもあり、コマンドの単位と見做して実行されるわけです。しかし行が長すぎるとき複数の物理行に対して「あたかもそれを1行に書いたように」解釈させたい場合があります。そんなときに継続行の書き方が用意されていたりします。例えばLinuxのシェルでいえば

echo a \
b \
c

とかくと物理行3行で論理的には1行と見做してecho a b cと書かれているかのように実行されます。
上の例でいえば物理行3行で論理行1行分、そして物理行3行分の各行を継続行というかと思います。(継続行の定義はあやしいです。最初の2行あるいは、後ろの2行のことをいう場合もあるかも知れません)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.90%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る