TL; DR Vim scriptをパースしてASTを作り、高速化を図ります。リポジトリはこちら→wholekeik/vim 追記: ベンチマーク追加しました AST化 Vim script は実行のたびにコマンドをパースしているので非常に遅い言語です。コマンドをパースしておいてASTとし、それを実行すれば高速化が見込めます。しかし、Vim scriptでは引数の解釈が各コマンドによって全く異なるため、共通のパーサーを書くのは不可能です。したがって事前にパースするのではなく実際に実行しながら並行してASTを作っていきます。なおVim scriptの実行はユーザーの入力(コマンドモード)やオートコマンド、関数などがありますが、ASTとなるのは関数内のみです。また、AST化は行単位で行われます。 大まかな流れ 関数を定義する 通常通り呼ばれる 呼ばれたExコマンドのうち、ASTにできるものがあ
![Vim scriptを処理系レベルから高速化しようとしている話 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/e694dd9ee40e6f00129028dc9fbea81aaa024b42/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-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9VmltJTIwc2NyaXB0JUUzJTgyJTkyJUU1JTg3JUE2JUU3JTkwJTg2JUU3JUIzJUJCJUUzJTgzJUFDJUUzJTgzJTk5JUUzJTgzJUFCJUUzJTgxJThCJUUzJTgyJTg5JUU5JUFCJTk4JUU5JTgwJTlGJUU1JThDJTk2JUUzJTgxJTk3JUUzJTgyJTg4JUUzJTgxJTg2JUUzJTgxJUE4JUUzJTgxJTk3JUUzJTgxJUE2JUUzJTgxJTg0JUUzJTgyJThCJUU4JUE5JUIxJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1kOTRmOWU1OTVkM2UyZDYyYTJhNTZhNGVhMzI3OGUxMg%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwd2hvbGVrZWlrJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1mNTk2ZGYxNzUwYWEzYWM1YjhkMGUyODZiNjM4NTNhNg%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dafd2f4b526b5deaa0e7fe015552ba1cd)