Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 言語実装
  3. here

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言語研究