文字列をプログラムとして実行

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
初心者

文字列をプログラムとして実行

#1 投稿記事 by 初心者 »

はじめましてActiveBasic初心者です。
ActiveBasicではJavaScriptでいうEVALは無いのですが?
もし、なければEVALができる方法を教えてください
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

事前に良く調べましたか?

http://www.activebasic.com/forum/viewtopic.php?t=1650

ここ等にヒントがあります。
ちなみに、僕の知る限りでは言語としては提供されていません。

#と言っておきながらも、僕も一番最初の時はあまり良く調べず、お礼も言わない単発スレだった事を思い出しました。
http://www.activebasic.com/forum/viewtopic.php?t=231
最後に編集したユーザー konisi [ 2006年12月14日(木) 06:53 ], 累計 1 回
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#3 投稿記事 by イグトランス »

最終的にプログラムは機械語に変換されて実行されます。

JavaScriptはインタプリタと呼ばれるプログラムの下で実行されます。
インタプリタがその場でソースファイルを機械語に変換しながらプログラムは実行されていくのです。
そしてEvalは、その動作に介入し、一時的に(ソースファイルからではなく)メモリ上の文字列から読み込むようにしているのです。
ファイルからだろうとメモリからだろうと、ソースコードをどこから読み込んだか構うことなくインタプリタは処理します。

一方、現在のActiveBasicは、コンパイラによってソースファイルは予め機械語のプログラムに翻訳され、EXE/DLLの形になります。
そのためEXE/DLLになったプログラムの実行にインタプリタは不要ですが、
逆に言うとメモリ上の文字列としてソースコードがあったとしても、それを機械語へ変換するインタプリタが実行時には存在しないため、Evalを実装することはできないのです。
やるとしたら、konisiさんが示したURLでのトピックのように、自分でインタプリタもどきを作ることになります。

#インタプリタなら必ずEvalを備えているわけではありませんし、コンパイラ型でもEvalを使える言語だってありますけど。
MML
記事: 154
登録日時: 2006年5月02日(火) 16:27

#4 投稿記事 by MML »

自分はインタプリタを作ったことがある(現在開発/公開中)なんですが、
ソースは大変汚いため見せることができません。(恥ずかしくて)

基本としては「自分で”EVAL”を実装してみる。」
という方法が一番楽な方法ではありますが....

JavaScriptはEvalをすると、命令まで実行してもらえますね。
(ひまわり、なでしこもだけど。)
これはインタプリタだけの機能です。
計算なら関数として作れば夢ではないんですが....

マシン語に翻訳して実行するなんてことはないでしょうが....
初心者

かなり遅くなりました

#5 投稿記事 by 初心者 »

すみません、返信するのがかなりおくれました。本当にすみませんでした
イグトランス (egtra)さんの言ったとうりにkonisiさんに教えてもらった

http://www.activebasic.com/forum/viewtopic.php?t=1650

ヒントでインタプリタもどきを作ろうと思ったのですが、動きません。
古いせいかな?
初心者

ごめんなさい

#6 投稿記事 by 初心者 »

解決しました。
返信する