03 字句解析器(Lexer) の実装完了 [オリジナル言語インタプリタを作る]
字句解析器の実装続き 続けて新たなテストを作成し、プログラムのソースコードに似た入力からトークン列を得られるようにしていきましょう。テストする入力データは以下の通り。 let five = 5; let ten = 10; let add = fn(x, y) { x + y; }; let result = add(five, ten); 早速テストコードを書きます。 LexerTest.cs […]
字句解析器の実装続き 続けて新たなテストを作成し、プログラムのソースコードに似た入力からトークン列を得られるようにしていきましょう。テストする入力データは以下の通り。 let five = 5; let ten = 10; let add = fn(x, y) { x + y; }; let result = add(five, ten); 早速テストコードを書きます。 LexerTest.cs […]
トークンと字句解析器の役割と実装 ここではトークンと字句解析器の実装を行います。 インタプリタがソースコードを実行するまでの流れ インタプリタはソースコードを入力として受け取り、それを実行します。コンパイラと違い実行形式のファイルを生成したりはせず、すぐにコードを実行します。 入力から実行までの大まかな流れは以下の通りです。 ソースコード(文字列)を入力として受け取る 字句解析によりトークン列を取 […]
オリジナルのプログラミング言語を開発してみる プログラミング言語を自分で開発するということは、プログラマなら一度は興味を持つことではないでしょうか。 興味を持ったが吉日ということで、よさげな書籍を参考にして、自分で1からプログラミング言語を開発してみます。 Go言語でつくるインタプリタ | Thorsten Ball, 設樂 洋爾 |本 | 通販 | Amazon 参考にするのは上記の書籍です。タ […]
まとめ 先に本記事の内容をまとめます。 ポリシー違反でアプリがいきなり削除されたとメール通知 Admob(Firebase) が広告IDを収集しているため規約違反 プライバシーポリシーを作成し、アプリ内とストア掲載情報にリンクを追加 APKを再度アップロードすると数時間で再び公開された Android 広告 ID の使用ポリシー及び Google Play デベロッパー販売 / 配布契約 4.8 […]
Rust で Trait を使った継承のような実装 Rust は、Trait を使って struct に関数の実装を強制することができます。Trait はオブジェクト指向のプログラミング言語でいうところの、インターフェースや抽象クラスのような役割を果たします。 Trait 含め、struct に関数を実装する方法を忘れないようにメモします。 struct は関数をメンバに持たない Rust の s […]
Rust で Brainfuck Brainfuck – Wikipedia Brainfuck は、インタプリタのサイズが小さくなるように設計されたプログラミング言語です。実装するのがとてもお手軽な一方、Brainfuckで書かれたコードは非常に読みにくくなります。 Rust で Brainfuck のインタプリタを実装してみます。以前、C# で実装してみたことがあるのでそれをRus […]
[20190201_RustでWebAssembly入門のためのまとめ Rust で WebAssembly に入門する Introduction – Rust and WebAssembly 上記ページが Rust + WebAssembly のためのチュートリアル & リファレンスのページになります。このページを参考に、Rust のコードから WebAssembly を生成 […]
20190130_[Javascript] Webページ印刷時のTips Webページ印刷時の JS, CSS の備忘録 Webページを印刷する際に役立つメモを残します。システムで帳票印刷を手軽に行う際に必要になります。 Javascript で印刷ダイアログを表示する print() を使うことで、印刷ダイアログを表示することができます。 右クリックから印刷メニューをクリックしたり、ブラウザのメ […]
Rust を使ってソートアルゴリズムを実装してみる Rust を使ってソートアルゴリズムを実装してみます。バブルソート、洗濯ソート、挿入ソートをそれぞれ実装します。 Rust はクセが強いので、結構苦労しましたが以下を学びました。 配列要素の交換は swap() を使う Clone を実装する型は clone() を使える Copy を実装すると型は配列の要素をそのまま交換できる 10..1 みた […]
Cargo とは Cargo はRustのビルドシステムおよびパッケージマネージャです。Cargoは、コードの構築、コードが依存するライブラリのダウンロード、それらのライブラリの構築など、多くのタスクをユーザーに代わって処理します。 .NET でいうところの nuget や Javascript でいうところの npm みたいなパッケージ管理機能 + ビルド時のもろもろの便利機能を提供してくれます […]