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」は演算子扱いしたほうがわかりやすいと思います。
ちなみに私は「リテラル以外で、そのシンボルを使用して非式文(式に
ならない文)にならないものを狭義の演算子」としました。
よって、上の例でも除外されている"="(代入の記号)は、演算子とはし
ません。
なお「広義の演算子」は「使用することによって非式文になるシンボル」
全てを指しています(広義の演算子は、演算子の優先度の比較のために
使用するだけですが……)
/機械伯爵/