前回の記事で、正規表現(の抽象構文木)からLLVMの中間表現(LLVM IR)1へコンパイルするという試みを行ったところ、Twitterで次のような投稿をいただいた2。 @_yyu_ https://t.co/UPV535fqbB とかを使うと、Mokkosuから動的コード生成ができてきっと楽しいです。 — ラムダ太郎 (@lambdataro) 2015, 5月 11 つまり、プログラムの実行時に正規表現に対応するバイトコードを生成して、それを実行すれば速度が早くなったりするかもしれないということである。これは一般的にJust in Time(JIT)コンパイルと呼ばれているもので、正規表現技術入門という本でも紹介されている。Mokkosuで実装してもよかったが、たぶんMokkosuのプログラマはそれほど多くないだろうということで、今回もScalaを使って実装することにする。 正規表現の
![正規表現のJITコンパイラを実装する - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/1ee14f1efa432061301ff6d0b66f7b0c5297c25a/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU2JUFEJUEzJUU4JUE2JThGJUU4JUExJUE4JUU3JThGJUJFJUUzJTgxJUFFSklUJUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgzJTkxJUUzJTgyJUE0JUUzJTgzJUE5JUUzJTgyJTkyJUU1JUFFJTlGJUU4JUEzJTg1JUUzJTgxJTk5JUUzJTgyJThCJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1iOThiMzY5MGEzNGE5MDU1ZmUyN2VlNzZhYzhmZGJjZQ%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQweXl1JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hM2FjOWY1MzAzNzlkN2Q3NjYxNjRkNjdkNmFlMjljZA%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D6f92990b418cc0cc7b5eb630777820e7)