問題タブ [interpreter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Ruby / PythonにOpenSourceBASICインタープリターはありますか?
実験/ハッキングするために何か簡単なものが欲しいです。私はc用のインタープリター/コンパイラーをたくさん作成しましたが、単純なものが欲しいだけです。基本的な基本:D
あなたが何も知らないなら(私は私のグーグル検索をしました...)、yacc / bisonが唯一の方法ですか?
どうも
interpreter - OK インストール不要の USB スティックからのプログラミング言語
Linux または Windows のメモリスティックから直接実行できる、基本的な数学のサポートとファイル IO を備えた言語のコンパイラまたはインタプリタを探しています。基本的なデータ構造と並べ替え/検索の機能が組み込まれているとプラスになります。
(私は移動可能な python について読んだことがありますが、それは windows のみをサポートしています)
ありがとうございました
macos - Emacs 内でスキーム インタープリターを動作させるにはどうすればよいですか?
私は SICP を使用していますが、インタラクティブな Python インタープリターに似たインタープリターを使用して、講義を見たり本を読んだりしているときに遊んでみたいと思っています。さらに、このインタープリターを Emacs 内で実行して、スキーム コードのファイルと対話型インタープリターなどの間を行き来できるようにしたいと考えています。
ただし、私は Emacs にかなり慣れていないため、これを機能させることも、機能させるために使用する明確な手順を見つけることもまだできていません。
M-x run-scheme
少なくとも私が望むものとまったく同じように聞こえるインタラクティブなインタープリターを開くようにセットアップできるはずですが、現時点ではこれが戻っSearching for program: no such file or directory, scheme
てきて、どのファイルを正確に把握することができませんでしたこれを修正する場所を配置する必要があります。
GNU Emacs 22.1.1 (mac-apple-darwin, Carbon Version 1.6.0)
OS X 10.5 インストール DVD からインストールした状態で実行しています。
operators - プリミティブな Forth 演算子とは?
Forth システムの実装に興味があります。単純な VM とランタイムを構築する経験を積むためです。
Forth を開始する場合、通常、最初にスタックとその演算子 (DROP、DUP、SWAP など) について学習するため、これらを基本的な演算子の 1 つと考えるのが自然です。しかし、そうではありません。それらのそれぞれは、メモリとスタック ポインターを直接操作する演算子に分解できます。後で、DUP や SWAP などの実装に使用できるストア (!) とフェッチ (@) について学びます (ha!)。
では、プリミティブ演算子とは何でしょう? 他のすべてをビルドできるランタイム環境に直接実装する必要があるのはどれですか? 高性能には興味がありません。私 (そして他の人) が学べる何かが欲しいのです。オペレーターの最適化は後で行うことができます。
(はい、私はチューリング マシンから始めて、そこから行くことができることを認識しています。それは少し極端です。)
編集: 私が目指しているのは、オペレーティング システムまたは新しいコンパイラのブートストラップに似ています。これらの基本的な構成要素からシステムの残りの部分を構築できるようにするには、少なくとも何を実装する必要がありますか? これをベア ハードウェアに実装するつもりはありません。教育的な演習として、私は独自の最小限の VM を作成します。
java - JVM 上で C を実行/解釈していますか?
JVM 上でプレーンな C コードを実行する方法はありますか?
JRuby 経由で Ruby コードを実行したり、Rhino 経由で JavaScript を実行したりできるように、JNI 経由で接続せずに実行します。
現在の解決策がない場合、何をすべきかお勧めしますか?
明らかに、それを実現するために、できるだけ多くのパーシャル ソリューションを使用したいと考えています。
ANTLR は、完全な "ANSI C" 文法実装を備えているため、開始するのに適しているようです...
ANTLR で生成されたコードを使用して、JVM 上に "おもちゃの" VM を構築する必要がありますか?
python - Python インタープリターを静かに再起動する
アプリケーション内に Python インタープリターが埋め込まれています。アプリケーションの起動に時間がかかり、アプリケーション全体を再起動しないとインタープリターを再起動できません。私がやりたいことは、本質的にインタープリターの状態を保存し、その状態に簡単に戻ることです。
まず、Python インタープリターが開始した sys.modules にすべてのモジュールの名前を格納し、要求されたときに sys.modules からすべての新しいモジュールを削除しました。これにより、インタープリターは同じモジュールを以前にインポートしたことがあるにもかかわらず、それらを再インポートする準備ができているように見えます。ただし、シングルトン クラスや静的メソッドの使用など、すべての状況でこれが機能するとは限りません。
アプリケーション API の使いやすさが失われるため、回避できる場合は、このインタープリター内に別のインタープリターを埋め込みたくありません (また、わずかな速度低下も含まれると思います)。
それで、インタープリターの状態を保存してからこれに戻って、すべての状況に対処できる方法を知っている人はいますか?
ありがとう、
ダン
ruby-on-rails - 実際のRubyEnterpriseEditionの使用に関するデータに関する優れたリソースはありますか?
社内のPhusionスタック(PassengerおよびRuby Enterprise Edition)で素晴らしい結果が得られていますが、実際のデータ、特にREEでの使用に関するデータをあまり見つけることができませんでした。Railsを使用しているWWRの知名度の高い組織やColdFusionを使用しているBenFortaのWho'sに似たものが欲しいですか?リスト。
これにはいくつかのグーグルグループの活動がありますが、PHBにやさしい、より良い言葉がないため、もっと何かを探しています。
assembly - アセンブリコードの解釈
そこにアセンブリ通訳はありますか?
私が探しているもの:
- 実行したいアセンブリファームウェアコードがありますが、実際のハードウェアにはありません。
- コードを実行して、それが何をしているのかを確認したいと思います。
それで、そこにある種の無料で使いやすいアセンブリシミュレータがありますか?
あなたが考えることができる他のポインタはありますか?
compiler-construction - プログラミング言語を書くための提案はありますか?
プログラミング言語やスクリプト言語を書こうとしている人に、どのようなヒントを与えることができますか? コンパイラのプログラミング方法や設計方法については心配していませんが、ツールとコード ジェネレータを使用してコンパイラをすばやく開発する方法については心配していません。
前回試したときは、C++ でコーディングしましたが、状態と構文は、実際のロジックを記述するのとほぼ同じくらいの時間がかかりました。次のツールが役立つことはわかっています。
私は、C++ コードを生成し、gcc でコンパイルできると考えていました。上記のツールを使用して、プログラムまたはスクリプト言語を記述するのにどれくらいの時間がかかると見積もられますか?
この質問のバリエーションは、 Learning to write a compilerまでさかのぼって繰り返し尋ねられてきました。これは、このトピックに関するSO リソースの不完全なリストです。
compiler-construction - コンパイラーとインタープリターの実装の違いは何ですか?
私は最近、Dragon Book を全部読みました (ただの楽しみで、実際のコンパイラを実際に実装するつもりはありません) が、この大きな疑問が頭の中にぶら下がっていました。
コンパイラーとインタープリターの実装の違いは何ですか?
私にとって、コンパイラは次のもので構成されています。
- レクサー
- パーサー (構文ツリーを構築する)
- 中間コードの生成 (3 アドレス コードなど)
- 必要に応じて、これらすべてのクレイジーなことを最適化してください:-)
- 3つのアドレスコードから「アセンブリ」または「ネイティブコード」を生成します。
さて、明らかに、インタープリターにもコンパイラーと同じレクサーとパーサーがあります。
しかし、それはその後何をしますか?
構文ツリーを「読み取り」、直接実行しますか? (ツリー内の現在のノードを指し示す命令ポインタを持つようなもので、実行は 1 つの大きなツリー トラバーサルとコール スタックのメモリ管理です) (もしそうなら、どのようにそれを行うのですか?実行は、ノードのタイプをチェックする巨大な switch ステートメントよりも優れています)
3 つのアドレス コードを生成し、それを解釈しますか? (もしそうなら、それはどのように行うのですか? 繰り返しますが、1 マイルの長い switch ステートメントよりもエレガントなものを探しています)
- 実際のネイティブ コードを生成し、メモリにロードして実行しますか? (その時点で、それはもはやインタープリターではなく、JITコンパイラーに似ていると思います)
また、「仮想マシン」の概念はどの時点で割り込まれますか? 言語で仮想マシンを何に使用しますか? (私の無知のレベルについて明確にするために、私にとって仮想マシンはVMWareです。VMの概念がプログラミング言語/プログラムの実行にどのように適用されるかわかりません)。
ご覧のとおり、私の質問は非常に広範囲です。私は主に、どの方法が使用されているかだけでなく、最初に大きな概念を理解し、次にそれがどのように機能するかを詳細に理解するために探しています. 私は醜い生の詳細が欲しい. 明らかに、これは、ここでこれらすべての詳細に回答することを期待するのではなく、読むべきものへの参照の探求です.
ありがとう!
ダニエル
編集:これまでにご回答いただきありがとうございます。しかし、私のタイトルが誤解を招くことに気づきました。コンパイラとインタープリタの「機能的な」違いを理解しています。
私が探しているのは、インタープリターとコンパイラーの実装方法の違いです。
コンパイラがどのように実装されているかを理解しました。問題は、インタプリタがそれとどのように異なるかです。
例: VB6 は明らかにコンパイラとインタプリタの両方です。コンパイラの部分がわかりました。しかし、IDE 内で実行しているときに、任意の時点でプログラムを停止し、コードを変更して、新しいコードで実行を再開する方法を理解できません。これはほんの一例であり、私が探している答えではありません。以下で説明するように、私が理解しようとしているのは、解析ツリーを作成した後に何が起こるかです。コンパイラは、「ターゲット」言語でそれから新しいコードを生成します。通訳者は何をしますか?
ご協力ありがとうございました!