diary主にVBAネタを扱っているブログです。VBAインタープリターの作成の元になる、四則計算電卓を作った。C++のソースを見ながらVBAのコードを書いたので、C++初心者にはそれだけで一苦労だった。再帰的下向き構文解析というアルゴリズムらしい。Stackは以前に公開したものを流用している。インタプリタ開発」を買ってきた。この本は、ある計算式をプログラムにどう解釈させるかという問題について、明瞭に答えが示されている。VBA全然コードが書けていないが、モチベーション維持のために完成イメージだけ作ってみた。ミニシートはちょっと欲張りすぎたか。VBAその6で作ったEvalVariableプロシージャのうち、変数かどうかを判別する部分をつかいまわしたかったので、そこだけ関数にした。VBAさて、いよいよ命令を解釈して実行してみる。VBAの命令を文字列として呼び出すために、Wrapperを作る。次に、その6で作ったGlobalDefinitionの最後の行にVBAFunctionの中身を変更するコードを記述。VBAそろそろ評価した値をくっつけたいが、書籍によると、スタックが必要らしい。VBAにそんなものは無いので、Stackクラスを実装することにした。自己流ではあるが、とりあえず、PushとPop、CountとTopは出来る。変数を評価できるようにしたいので、メモリの内容を変数で置き換えるプロシージャを作成。これは、その5で作成したM2_Subモジュールに作成。予約語の評価を回避するために、General領域にDictionary型の変数を準備。VBAその4で、要素ごとに配列に格納するところまでできたので、これをTextToElemArray関数としてまとめた。テキストを与えると、要素に分かれた配列を返してくれる関数だ。VBAその2で公開したFindString関数の以下の部分は、もっとスマートに書けるということに気づいた。VBAとりあえず昨日は文字列とそれ以外を切り分けたが、今日はそのつづき。文字列以外の要素はさらにスペースで分割して配列に入れてみる。VBAJavaScriptでVBAもどきを作ろうという話のつづき。簡単なところでMsgBox命令から実装しようと思ったが、これが実は結構むずかしかった。VBA私のサイトでVBAの入門教材を配布しているが、家にExcelを持ってない人も使えるように、VBSを使った学習の進め方もWebに掲載した。人間やっぱり面倒くさいことはやりたがらないもので、Webに来てもらってそのままWebで実行できたらスマートかなと思う。はてなブログPro弓道と英語が趣味のVBAプログラマーです。大阪でシステム運用の仕事をしています。このブログに掲載しているコードは利用規約の範囲で自由にお使いください。VBAの無料入門教材を配布していますので、VBAを初めてみたい方、ぜひお立ち寄りください。Amazonアソシエイト・プログラムの参加者です。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。