opnames.h
opnames.hには、オペレーションコードが記述されています。
/* opname.h */
typedef enum opcode {
OP_NULL = 0,
OP_STUB = 1,
OP_SCALAR = 2,
OP_PUSHMARK = 3,
OP_WANTARRAY = 4,
OP_CONST = 5,
OP_GVSV = 6,
...
};
Perlは、構文解析が行われた後に、コードが、構文木として表現されるのですが、構文木のひとつひとつのノードは、オペレーションと呼ばれます。これは「OP型」として表現されます。たとえば「pushする」とか「ハッシュのキーの存在を確かめる」とか「サブルーチンを実行する」とか「スカラを表現する」とか、そういうPerlのプログラミング上での操作が、オペレーションによって表現されます。
オペレーションの種類を表すのが、オペレーションコードです。これは、列挙型です。
「opnames.h」には、オペレーションコードが書かれていますが、それが、何を表すのかという解説がありません。解説を見たい場合は、「opcode.h」の「PL_op_desc」を参照するのがよいでしょう。
/* opcode.h */
EXTCONST char* const PL_op_desc[] = {
"null operation",
"stub",
"scalar",
"pushmark",
"wantarray",
"constant item",
"glob value",
...
};
Perlゼミ

