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

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 文字列をプログラムとして実行

ごめんなさい

by 初心者 » 2006年12月22日(金) 04:38

解決しました。

かなり遅くなりました

by 初心者 » 2006年12月22日(金) 04:22

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

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

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

by MML » 2006年12月14日(木) 16:24

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

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

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

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

by イグトランス » 2006年12月13日(水) 23:27

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

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

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

#インタプリタなら必ずEvalを備えているわけではありませんし、コンパイラ型でもEvalを使える言語だってありますけど。

by konisi » 2006年12月13日(水) 22:30

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

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

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

#と言っておきながらも、僕も一番最初の時はあまり良く調べず、お礼も言わない単発スレだった事を思い出しました。
http://www.activebasic.com/forum/viewtopic.php?t=231

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

by 初心者 » 2006年12月13日(水) 22:26

はじめましてActiveBasic初心者です。
ActiveBasicではJavaScriptでいうEVALは無いのですが?
もし、なければEVALができる方法を教えてください

ページトップ