単語と記号の違いは何ですか?


7

メジャーモードの構文テーブルを定義するときに、単語構成要素と記号構成要素の両方を定義できます。

それぞれいつ使用すればよいですか?たとえば、ヘビの場合foo_barに変数を書き込むプログラミング言語を考える_と、単語または記号の一部である必要がありますか?


1
c-modeemacsに付属するデフォルトでは_、シンボル構成要素として使用されますが、ワード構成要素としては使用されません。ですから、それには十分な理由があると思います。予想通りに機能する多数のナビゲーションコマンドは言うまでもありません。最小の驚きの原則とそのすべて。
Vamsi 2014年

回答:


4

単語構成要素:「w」

人間の言語の単語の一部。これらは通常、プログラムの変数名とコマンド名で使用されます。すべての大文字と小文字、および数字は通常、単語の構成要素です。

シンボル構成要素: '_'

変数およびコマンド名で使用される追加の文字と単語構成要素。例には、Lispモードの文字「$&* + -_ <>」が含まれます。これは、英語の単語の一部ではない場合でも、シンボル名の一部になる場合があります。標準Cでは、記号で有効な唯一の非単語構成文字はアンダースコア「_」です。

礼儀gnu.org

それぞれいつ使用すればよいですか?たとえば、ヘビの場合foo_barで変数を書き込むプログラミング言語を考えると、_は単語または記号の一部である必要がありますか?

それはあなたが達成したいものに依存します。「_」は単語の一部である必要があります。このように、foo_barは1つの単語として扱われます。

その質問に目を向けてください、スーパーワードモードとサブワードモードについて話している興味深い答えがあります


2
c-modeは_記号構成要素として扱うので、なぜそれを単語構成要素として扱うことを提案するのですか
Wilfred Hughes

@WilfredHughes申し訳ありませんが、ここでは誰もCモードについて話していませんでした。確かに、彼はモードが動作していることに注意する必要があります。そして、私の返答で述べたように、それは彼がfoo_barを1つの単語として扱いたい場合にのみ当てはまります。その質問を
Nsukami _ 2014

6
のような文字には単語構文を使用しないでください。これは_、単語と記号の区別を完全に無効にするためです。あなたが好きならM-fM-b識別子ではなく言葉で移動すると、友人を、その後、むしろ変化よりメジャーモードの構文テーブルあなたが使用する必要がありますsuperword-mode
Stefan

5
メジャーモードを書くとき、記号と単語を同じものにしないください。多くの人々この区別を使用し、あなたは彼らの人生をより困難にしているでしょう。区別を好まない人はすでにオプションがありますsuperword-mode
Malabarba、2014年

3
@WilfredHughes:実際、単語の定義はほとんど変更されるべきではありません。
Stefan

5

この回答は、質問のタイトル「単語と記号の違いは何ですか」に対処します。これは、@ Nsukamiによって適切に回答されたシンボル構文に関する質問の本文だけを話すわけではありません。

Emacsでのシンボルという言葉は2つの非常に異なる意味があります:

  1. 記号構文単語構成文字 記号構成文字が含まれます。これは、任意のモード、特に任意のプログラミングモード/言語に適用できます。@Nsukamiはこの意味をかなりよく説明しました。

  2. Emacs-Lispシンボル。これは構文カテゴリではありません。Lispシンボルは、名前plist(プロパティリスト)、場合によって関数の定義などの特定の特性を持つLispエンティティまたはオブジェクトです。

    デフォルトでは、値セルと関数セルは空であり、plistは空のリストです(nil)。Lisp関数はsymbol-namesymbol-valuesymbol-function、およびsymbol-plistコンポーネントを返します。

ちなみに、Emacsのマニュアルではこれらのことについては触れられていません。Elispマニュアルでのみ説明されています。そしてもっと重要なことは、おそらく:最初の意味(構文)の" 記号 "に一致するインデックスエントリないことです。 「シンボル」という用語を含むすべてのインデックスエントリは、2番目の意味(Lispシンボル)を指します。特に、「シンボル」と「構文」の両方を含むエントリはありません。そのようなインデックスエントリがあるべきかどうか、私は(おそらく)知りません。しかし、これは、LispオブジェクトとしてのシンボルのLispに対する重要性のいくつかの考えをあなたに与えることができます

詳細については、以下を参照してください。


単語の記号の2つの異なる意味を説明してくれてありがとう。
Nsukami _ 2014

2

これはELispマニュアルで説明されています

EmacsはLispの用語を使用しています。LispとEmacsがシンボルと呼ぶものは、他の多くのプログラミング言語が*識別子と呼ぶものです。これは、変数や関数などの名前です。

言葉はなし介在赤点斑と文字や数字の実行です。

ほとんどのプログラミング言語では、_文字と数字に加えて、識別子にアンダースコア文字を使用できます。Lispなどの一部の言語では、さらに多くのことが可能です。プログラミング言語では、_識別子に現れるような文字には、クラス「シンボル構成要素」があり_ます。文字と数字のクラスは「単語構成要素」wです。

単語に作用するコマンドは、単語構成要素のシーケンスを単語として扱います。式(たとえばforward-sexp)に作用するコマンドは、識別子全体を一度に移動します。構文の強調表示は通常、すべてのシンボル構成要素を同じように扱います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.