正規表現や構文解析器の仮想マシンをいじって遊びたいとき、 簡易アセンブリを使えるようにしておきたくなります。 例えば、 Russ Cox の RE1 仮想マシン相当のアセンブリで、 命令列を直打ちするには次のようにするとしましょう。 ラベルと命令コードを Symbol インスタンスとして、 split や jmp 命令のオペランドになるアドレスをラベルで指定できるようにしておきます。 program = asm [ # (a+)(b+) :save, 2, :L1, :char, 'a', :split, :L1, :L2, :L2, :save, 3, :save, 4, :L3, :char, 'b', :split, :L3, :L4, :L4, :save, 5, :match, ] #=> [[:save, 2], # [:char, "a"], # [:split, 1, 3]
![Tociyuki::Diary](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)