作者: 機械伯爵
日時: 2010/5/21(21:28)
 Bruce.さんとこのネタ

・「演算子」がわからない
 ときどきの雑記帖 めぐりあい電脳空間編
 http://www.kt.rim.or.jp/%7ekbk/zakkicho/10/zakkicho1005b.html#D20100520

 他言語の「演算子」という定義は知らないですが、Pythonではhelp('+')とか
インタープリタで打ち込むと以下のようなモノが出ます(ちょっと編集しまし
た)

Operator	: Description
``lambda``	: Lambda expression
``or``		: Boolean OR
``and``		: Boolean AND
``not`` *x*	: Boolean NOT
``in``, ``not`` ``in``, ``is``, ``is not``,
``<``, ``<=``, ``>``, ``>=``, ``!=``, ``==``
		: Comparisons, including membership
		  tests and identity tests,
``|``		: Bitwise OR
``^``		: Bitwise XOR
``&``		: Bitwise AND
``<<``, ``>>``	: Shifts
``+``, ``-``	: Addition and subtraction
``*``, ``/``, ``//``, ``%``
		: Multiplication, division, remainder
``+x``, ``-x``, ``~x``
		: Positive, negative, bitwise NOT
``**``		: Exponentiation
``x[index]``, ``x[index:index]``,
``x(arguments...)``, ``x.attribute``
``(expressions...)``, ``[expressions...]``,
``{key:datum...}``,
		: Subscription, slicing, call,
		  attribute reference
		  Binding or tuple display, list
		  display, dictionary display,

 andやorのように、記号を使用していないだけで基本的に演算子である
ようなものや、lambdaのようなキーワード、さらにはカッコのようなも
のまで全部"operator"みたいですね。

 私も文法書を書く上で、純粋に演算子と表現するものは、公式とは違う
分類をして演算子を減らして(例えばlambdaやカッコは外す)いますが、
andやorを演算子扱いしないのはどう考えてもおかしいですし、逆に上の
例には無い「if-else」は演算子扱いしたほうがわかりやすいと思います。
 ちなみに私は「リテラル以外で、そのシンボルを使用して非式文(式に
ならない文)にならないものを狭義の演算子」としました。
 よって、上の例でも除外されている"="(代入の記号)は、演算子とはし
ません。
 なお「広義の演算子」は「使用することによって非式文になるシンボル」
全てを指しています(広義の演算子は、演算子の優先度の比較のために
使用するだけですが……)

 /機械伯爵/