問題タブ [language-implementation]

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.

0 投票する
1 に答える
596 参照

interpreter - Nimrod の Brainfuck 通訳

私は言語で Brainfuck インタープリターを作成することにより、 nim (執筆時点ではまだ nimrod と呼ばれています) をいじっています。ループを実装しないと、次のようになります。

正常にコンパイルされますが、次のような入力をスローすると:

「N」を返す文字「A」を出力する必要があります。何か案は?

0 投票する
2 に答える
1998 参照

lua - Lua: テーブル配列部分とハッシュ部分を理解する

The Implementation of Lua 5.0のセクション 4 の Tables には、次の例があります。
local t = {100, 200, 300, x = 9.3}

だから私たちは持っていt[4] == nilます。と書くとハッシュ部分t[0] = 0に行きます。 書いたらどこに行くの?配列部分またはハッシュ部分? 違いがある場合は、Lua 5.1、Lua 5.2、LuaJIT 2 の実装について回答をお待ちしています。
t[5] = 500

0 投票する
1 に答える
328 参照

eval - バイトコードコンパイル言語での REPL/eval の実装

私は、バイトコードにコンパイルされ、カスタム VM で実行される小さな言語を作成中です。そのアーキテクチャは、Python と Lua について読んだことの影響を大きく受けています。関数の引数、ローカル変数、および一時的な値を格納するデータ スタックと、アクティブな関数呼び出しごとに 1 つのエントリを含むフレーム スタックの 2 つのスタックがあります。フレーム スタックの各エントリには、現在の関数、命令ポインター (現在の関数のバイトコード配列へのインデックス)、ベース ポインター (データ スタックへのインデックス - 関数の args/locals の開始位置を示すマーク) などの情報が含まれます。

私が動けなくなったのは、REPL の実装、またはより具体的には の実装ですeval()。これまでのアイデアは、同じスタック フレーム内でユーザー入力を継続的に評価することでしたが、内部で新しいローカル変数を作成できるようにするきれいな方法がわかりませんeval()。一時データは常にスタックのローカルより上にある (スタックは上に成長する) ため、私が考えることができた唯一のアプローチは、新しいローカルが作成されたことにeval()何らかの方法で気づき、ハッカーを使用してスタックを再配置することですが、これは一般的なケースで問題を引き起こします。たとえば、条件付きで使用される再帰関数がある場合eval()、フレーム スタックを調べて、場合によってはフレームごとにデータ スタックを調整する必要があります。

私の VM は の適切な実装をサポートできeval()ますか? はいの場合、上記のアプローチは賢明ですか? いいえの場合、どのようなアーキテクチャの変更が必要ですか?

0 投票する
2 に答える
1799 参照

c - memcpy() の実装を理解する

memcpy.c の実装を探していたところ、別の memcpy コードが見つかりました。なぜ彼らが (((ADDRESS) s) | ((ADDRESS) d) | c) & (sizeof(UINT) - 1) を行うのか理解できませんでした

0 投票する
4 に答える
140 参照

python - CPython Dicts が負の 1 と負の 2 のハッシュ値の影響を受けないのはなぜですか?

ハッシュ テーブルは高パフォーマンスのマッピングであると想定されており、Python dict はハッシュ テーブルで実装されているため、高パフォーマンスでもあります。しかし、負の整数のハッシュ値を見ると、奇妙な結果に遭遇しました。

しかし、これは明らかに辞書には影響しません:

なぜこれが起こるのですか? また、辞書を使用しても影響を受けないのはなぜですか?

0 投票する
3 に答える
230 参照

haskell - Haskell の実装に関する質問

Haskell は本当に素晴らしい言語です。大好きです。しかし、C++ プログラマーとして、コンピューター アーキテクチャーに関する基本的な知識を持っているので、Haskell の実装の詳細を知りたいと思っています。

たとえば、map関数を意味します。私は文法、結果を知っています。ただし、この機能が実際にRAMでどのように機能するかを知りたいです。C ファミリー言語は、文法とコンピューターの動作の間のマッピングが非常に明確だからです。

では、関数型プログラミングの文法の背後にあるコンピューターの動作についてアイデアを持っている人はいますか? または、「C++ オブジェクト モデルの内部」など、これに関する本はありますか?

0 投票する
1 に答える
143 参照

c - EOF は -1 であることが保証されていますか?

Cでコードを書くとき、それは良いスタイルで-1あり、EOF互換性がありますか? 標準はそれを保証しEOFます-1か? または、値の実装が定義されていますか?

たとえば、EOF特定のケースで関数が返される場合、関数が返されたかどうかをテストするのは良いスタイル-1ですか?

関数が特定のケースで戻る-1場合、関数が戻ったかどうかをテストするのは良いスタイルEOFですか?

0 投票する
2 に答える
248 参照

python - self 引数は魔法のようにインスタンス メソッドにどのように渡されるのでしょうか?

私はコード アカデミー ストリームを行っており、Ruby の経験が少しあります。関数にパラメーターcheck_angles(self)が必要な理由がわかりません。self

私が混乱している理由は、呼び出されたときに self パラメータを関数に渡す理由がわからないからです。関数呼び出し (コード ブロックの最後の行) は暗黙的に self を渡しているようですが、関数は self をパラメータとして明示的に定義する必要があります。

どうしてこれなの?