徒然なる日々を送るソフトウェアデベロッパーの記録(2)

技術上思ったことや感じたことを気ままに記録していくブログです。さくらから移設しました。

その他言語

「基礎からわかるElm」を読んで

基礎からわかる Elm作者:鳥居 陽介発売日: 2019/02/27メディア: 単行本(ソフトカバー)関数型言語に分類される Elm を基礎から解説した本です。 Amazon の書評を見ると点数が高い本なのですが、読みやすさの工夫が随所にあり、秀逸な一冊だと思います。対象…

minosys script を作ろう (11)

関数の実装 関数にはパッケージ関数とメンバー関数がありますが、 パッケージ関数の実装から考えてみます。パッケージにはバイナリパッケージと minosys script パッケージが 定義されているのでした。 minosys.hateblo.jp両者を統一的に扱うために PackageB…

minosys script を作ろう (10)

アーカイブの構成 ここで言うアーカイブとは、複数のファイルを1つのファイルにまとめて 管理することを指します。 UNIX 標準の tar や Windows の zip などがありますが、minosys script では独自のアーカイブファイル構造が定義されています。 オフセット…

minosys script を作ろう (9)

Minosys script における実行エンジン 参考にした本によれば、実行エンジンの実装には2種類あるそうです。まつもとゆきひろ 言語のしくみ作者: まつもとゆきひろ出版社/メーカー: 日経BP社発売日: 2016/12/22メディア: 単行本この商品を含むブログ (5件) を…

minosys script を作ろう (7)

左辺値と右辺値の違い 前回、左辺値は変数を指し、右辺値は値を指すと言いました。 左辺値は変数を代入するための情報なので、最終的には変数のアドレス にブレイクダウンされます。つまり、実行エンジンの観点で見ると(仮に変数のクラスを Var として)右…

minosys script を作ろう (6)

Content クラスの全貌 前回、Content クラスを導入すると言いつつ、その内容については 断片的にしか記述しませんでしたので、ここで全体を俯瞰しておきます。 class Content { public: LexBase::LexTag tag; std::string op; std::string label; int inum; …

minosys script を作ろう (5)

lex の追加 大事なことを忘れていました。C 言語などでは改行コードを \n のように 表現できますが、minosys script でも同じことができるようにします。 ただし、\n, \r, \\ の3つのみをサポートすることにしました。 構文解析 構文解析では lex によって…

minosys script を作ろう (4)

ここからは実装に入るので、言語実装にお決まりのパターンに入ります。 現在の実装はhttps://github.com/minosys-jp/minosys-script.gitに置いてあります。(作成途中なので、まだコンパイルできません!) Token の切り出し まず、token をどういう単位にす…

minosys script を作ろう (3)

おあずけになっていたサーバの仕様です。 拡張子 .minosys という拡張子のファイルを見つけたら minosys script ファイルだと思うことにします。 パッケージを import している場合もサーチパス上に指定されたファイルが存在していれば minosys script だと…

minosys script を作ろう (2)

新作 script に取り入れたい言語定義は以下の通りです。 分かりやすい制御構造 別に C がいいという訳ではないのですが、悲しいかな C 以上に 単純な制御構造+式構造が思いつかないので、C から 借りてくることにします。ただし、do while とか後回しにしま…

minosys script を作ろう(1)

はじめに 最近、まつもとゆきひろさんの「言語のしくみ」という本を買いました。まつもとゆきひろ 言語のしくみ作者: まつもとゆきひろ出版社/メーカー: 日経BP社発売日: 2016/12/22メディア: 単行本この商品を含むブログ (5件) を見るこの本によると、言語…

Pi3でインターネットラジオ選局機能を作る(2)

昨日はプレイヤーを作成したので、ここに情報を流すための web サーバを作成します。 今回も折角なので perl と HTTP::Daemon を使うことにします。 そのため、libwww-perl パッケージをインストールしておく必要があります。 仕様 ポート 8066 で listen す…

Pi3でインターネットラジオ選局機能を作る

出しつくされた感があるインターネットラジオ選局ソフトですが、 せっかく Pi3 に無線 LAN と Bluetooth が標準装備された ので、簡単なものを作ってみます。今日は選局機能を持つサーバプログラムを作ります。 (後日スマホからアクセス可能な web サーバを…