ありえんHip-Hopスマートフォン用の表示で見るありえんHip-Hopこの広告は、90日以上更新していないブログに表示しています。はじめに今回作ったのはDesel言語を扱うためのコマンドラインツールです。expression本記事では、その実装方法などを解説します。Desel言語自体についてはこの記事では特に触れないので、そちらに興味のある方はryo33/desel-langを参照していただけると幸いです。コマンドラインツール部分Elixirでコマンドラインツールを作るのは結構簡単です。endとして、YourCLIModule内でmain/1を定義するだけです。desel-cliでYourCLIModuleに該当するのはlib/desel/cli.exです。ファイルや標準入力から読み込んだあと、パーサなどの他モジュールにそれを渡してその結果を出力しています。ここのコードは、重要な処理は特にしていないうえに、かなり雑に書かれてあるのであんまり見る価値はないです。用いて字句解析と構文解析を同時に行っています。コードはlib/desel/parser.exです。BNFと対比させてみると何をやっているかはわかりやすくなると思います。ここも雑なので合っているか保証できないです。token'みたいな感じに置き換えるexpect/2などが色々頑張ってます。パース結果の処理この処理がこのコマンドラインツールのメインの処理です。コードはlib/desel/data.exにあります。ここでやっている処理は主に2つで、パース結果の変換(from_ast/1)と式の評価(elements_by/2)です。いい感じの再帰にしたりして結構頑張っています。パーサコンビネータに興味を持っていたため作ったものです。Elixir初心者だったからと言い訳できないようなところもあったので、この機会に色々書き換えました。pick(1)とできるようになりました。これからCLIモジュールのテストは面倒くさくて書いていなかったのでそれと、近いうちにREADMEを書きます。あと、適切でないパース時のエラー表示がまだ多いので、それを直していくつもりです。escript.installでhexやgithubからコマンドをインストールできるのが最高です。入れた10万のラップトップに乗りかえたけど快適すぎる。一時停止リマインダーをやるためにグッズを作った。月別アーカイブ参加グループプログラミングはてなブログをはじめよう!ryo12redstoneさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。