問題タブ [symbol-table]
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.
c - 適切なヘッダーを含めてコンパイルすると、シンボルがサフィックス「$UNIX2003」で破損する
私のコードが「システム」機能を実行するときにどのシンボルが呼び出されるかを知りたいです。
私のサンプル コードでは、ヘッダー stdlib.h が明確に含まれている場合、シンボルは _system$UNIX2003 と呼ばれ、ヘッダーが含まれていない場合、(おそらく) _system という名前の既定のシンボルがあります (サフィックス $UNIX2003 なし)。
次の図は、私の実験結果を示してい
ます。実行時に正しいシンボルを検出する方法はありますか (dlsym で試しましたが、動的ライブラリを格納するためのハンドルが必要ですが、dlopen でロードする必要があるライブラリではわかりませんでした) ?
EDIT : この奇妙なシンボルマングリングは、32 ビットアーキテクチャでコンパイルする場合にのみ発生します。
EDIT2: 暗黙の関数ポインタを使用して、正しいシンボルのアドレスを取得するよう提案されました。しかし、コードでその関数を具体的に呼び出さない限り、機能しません。そうしないと、宣言されていない識別子 'system' を使用しているというコンパイル エラーが発生します。
linux - OS X でオブジェクトファイルから単一の名前を削除する方法
OS X でいくつかの Linux の指示に従っていますが、1 行で行き詰っています。
の OS X バージョンにはオプションstrip
がなく-N
、man ページを 2 回読みましたが、これを行う方法がわかりません。
では、OS X のシンボル テーブルから単一の名前を削除するにはどうすればよいでしょうか。
c - シンボル テーブルを使用する C プログラムの間違った出力
私は現時点でこのコードを持っており、理解できない出力を得ています。
これは私の symTable モジュールで、シンボル テーブルを操作するために必要なすべての機能を備えています。
プログラムを実行するためのヘッダーとCクライアント ファイルがあります。
主なクライアント ファイルは次のとおりです。
ヘッダー ファイルには、構造体として次のものが含まれます。
私の現在の出力はこれです。ご覧のとおり、値は完全に間違っており、その理由はわかりません。問題はメモリに関する挿入機能にあると思いますが、よくわかりません:
私の出力:
正しい出力は次のようになります。
どんな助けでも大歓迎です。
compiler-construction - コード生成のためのセマンティック解析フェーズからのシンボル テーブルの再利用
私は現在、グローバル変数とネストされたサブルーチン機能を持つ言語用のコンパイラを構築しています。以前は、ネストされたサブルーチンのないローカル変数のみを持つ言語用のコンパイラしか構築していませんでした。
コード生成フェーズのセマンティック解析フェーズで埋められたシンボル テーブルを再利用する方法に問題があります。リンク リストのスタックとしてシンボル テーブルを作成します。各リンク リストは、特定のスコープで宣言された識別子を表します。スコープに入るたびに、新しいリストが作成されてスタックにプッシュされ、現在のスコープになります。同様に、スコープを離れるたびに、スタックの一番上のリストがポップされます。最終的に、意味解析が終了すると、開始時と同じように、実質的に空のシンボル テーブルができます。ただし、コード ジェネレーターは、コードを正しく生成するために、完全に埋められたシンボル テーブルを必要とします。意味解析中に行われたこと (つまり、記号テーブルへの識別子の入力) をやり直すことなく、これを行うにはどうすればよいでしょうか?
php - PHP 7でsymbol_tableからの検索が失敗する
いくつか質問があります。このようなテストケースを書きました。
for ループから、各行を反復処理して実行を呼び出しています。bind_param はすべての値を記憶し、実行時に変数名「name」と「picture」を使用して、symbol_table から値を取得しようとします。しかし、その失敗。コードを php 5 から php 7 に変更しました。php5 ではこのテスト ケースに合格しますが、php7 では失敗します。
1) 私は何か不足していますか?
2)PHP5ではactive_symbol_tableを使用していましたが、ここ(php7)ではそれをsymbol_tableに変更しました(Googleのどこかでactive_symbol_tableをsymbol_tableに変更することがわかりました)。それが正しいか?
java - Java でシンボル テーブルを作成するときに、コンパイル時に未知の変数値を考慮する
大学の学期プロジェクトとして、Minecraft でボットを作成するための独自のプログラミング言語のコンパイラを作成しています。これまでのところ、ANTLR を使用してパーサーを作成し、独自の抽象構文ツリー構造を作成し、ANTLR ビジターを使用して AST を作成することに成功しました。現在、コンテキスト分析フェーズにあり、現在シンボル テーブルを作成しており、構造を管理しています。私の SymbolTable クラスは次のようになります。
変数と関数をシンボル テーブルに入れることは問題ありません。そのために、次のようにビジター メソッドを使用します。
ただし、私が理解している限りでは、シンボル テーブル内のシンボルの値 (変数の値や関数の戻り値など) もシンボル テーブルに存在する必要があります。これも問題ありません。これは私がすでにできることです。
ただし、私の問題は次のとおりです。
プログラマーが使用する可能性のある値の一部は、コンパイル時には不明です。それらは、特定のプログラムの実行時にのみ認識されます。例: プレーヤーの現在の位置、インベントリ スロット内の特定のアイテムなど。私の言語にはイベントがあるため、たとえば、プログラマーが特定のブロックが検出されるまでボットにマイニングさせたい場合、次のように記述できます。
この特定のイベントであるブロック イベントには、ブロックの位置などの変数が含まれています。ただし、これはコンパイル時にはわかりません。シンボル テーブルに値を挿入するときに、このようなことをどのように考慮すればよいでしょうか?
java - 実行時にファイル データを置き換える
次のデータを含むテキストファイルがあります
ここで、a、b、c は変数です。ユーザー入力に応じて、任意のアルファベット (az) になる場合があります。ファイルの保存操作で、変数名 c=_x+y を c=a+b に、 d=_x+_y+_z を d= z+y+x..... に変更したいと思います。
実行時に値を変更するにはどうすればよいですか? シンボルテーブルの使い方
java - 記号表のランク
指定されたキーよりも少ないキーの数を返すにはどうすればよいですか? どこから始めたらいいのかわからない。私は基本的なスタートを持っていますが、それ以外はどこから始めるべきかわかりません
編集:これは私がこれまでに持っているものですが、私の for ループが間違っていて、エラーが発生しています