問題タブ [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++ - シンボルテーブルとは
C および C++ のコンテキスト内でシンボル テーブルとは何かを誰か説明できますか?
perl - オブジェクトはどのようにして現在のパッケージのシンボルテーブルにアクセスしますか?
オブジェクトがインスタンス化された現在のパッケージのシンボルテーブルにアクセスするにはどうすればよいですか?たとえば、私は次のようなものを持っています:
do_your_job
私が使用する実装では、パッケージ__PACKAGE__
内を検索します。MyModule
どうすれば適切なパッケージで表示できますか?
編集:私はこれをより明確にしようとします。次のコードがあるとします。
さて、$x
どういうわけかそれが現在のパッケージであることに気づき、main
それのシンボルテーブルを検索する必要があります。's blessedを使ってみScalar::Util
ましたが、それでも。MyModule
の代わりに私に与えてくれましたmain
。うまくいけば、これはもう少し明確になりました。
perl - 名前が変数に含まれている Perl の定数にアクセスするにはどうすればよいですか?
Perl で宣言された一連の定数があります。
$which_constant
に基づいて、この変数の値で名前が付けられた定数の値を導出する Perl 式を作成するにはどうすればよいですか。たとえば、「222」です。
上記の条件のいずれも変更できないことに注意してください。これらは実際のシナリオを単純化したものです。これらの定数をインポートするモジュール (制御できない) があります。定数の 1 つの名前は、ユーザーがコマンド ラインから指定します。適切な定数の値にアクセスする必要があります。
私は壁に頭をぶつけてきましたが(ほとんどはあらゆる種類の奇妙なグロブ構造の周りにあります)、どれも機能しません。
PSソリューションがネイティブモジュール内の定数にアクセスする場合-たとえばMy::Constants::C2
(それらをインポートする必要なしに)、さらに良いが、必須ではありません-正しい定数をmain::
簡単に使用してインポートできMy::Constants->import($which_constant)
ます. さらに、定数はデフォルトではエクスポートされないため、明示的な import() 呼び出しが必要です。
私が試したことのいくつか:
main::$which_constant
- 構文エラーmain::${which_constant}
- 構文エラー${*$which_constant}
- 空の値を返します*$which_constant
- "*main::C2" を返します${*${*which_constant}}
- 空の
php - Zend APIを使用せずにphpでphp抽出関数を実装できますか
PHP の Extract 関数は、呼び出し元の関数のローカル スコープに変数を追加します。同じことを行う独自のphp関数抽出をどのように書くことができますか?
c++ - スタティック C++ ライブラリをリンクすると、Objective-C でシンボル テーブルが破損する
C++ で記述された options というクラスがあります。ヘッダー情報は次のとおりです。
};
Objective-C セクションでは、次のように Options を初期化します。
ここで何が起こるかというと、別の C++ メソッドにポインターを渡すと正常に動作しますが、実際に目的の c 側で何かにアクセスしようとすると、たとえば、
opts->bits または opts->getBits()
常に印刷の整数値を返します
Objective-C 側と C++ 側の間でシンボル テーブルが混乱しているように見えますが、これを引き起こすために何ができたのかわかりません。
Mac用にコンパイルすると、コードはObjective-C ++でも機能し、C ++がC ++を呼び出している限り、機能しているように見えるので、メモリが破損しているわけではなく、シンボルテーブルの問題のように見えます。
どんな洞察も大歓迎です。
perl - シンボル テーブル: エントリの削除
それぞれのシンボル テーブル エントリを削除した後、"$n" と "$m" から値を取得するのはなぜですか?
c - コンパイラのシンボル テーブルとセマンティック解析
私は、C のような言語 (より単純な言語) 用のコンパイラ (lex や bison などのツールを使用せずに) の構築に取り組んでおり、lexer と parser を通過しました。パーサーの実行方法が正しいかどうかはわかりません。これまでのところ、構文が正しいかどうかを確認するなどの構文解析を行うために、リンクされたリストをまったく使用していません。基本的に、私のパーサーは次のようになります。
私のプログラムは次のようになります。
私は基本的にすべての非端末用の関数を持っており、適切なタイミングでそれらを呼び出し、「strcmp」でキーワードをチェックしています。この方法は大丈夫ですか?
この時点から、意味解析を行うにはどうすればよいでしょうか? シンボル テーブルの作成はどこから始めればよいですか?
考えるための提案や指針は素晴らしいです! どうもありがとうございました
c - SQL パーサーの Makefile... 依存関係の書き込み
私は lex と yacc で sql パーサーを実装しています。別の .h ファイル (sql.h) に保存されているシンボル テーブルを使用し、このヘッダー ファイルにはいくつかの関数宣言があります。これらの関数の定義は、.c ファイル (sql.c) に保持されます。これで、sql.c に sql.h を含めました。lex ファイル (1.l) と yacc ファイル (1.y) の両方で、sql.h のシンボルと関数を参照します。
問題は、このための適切なメイクファイルを作成できないことです。複数の宣言などのエラーが発生します。どのファイルをどこにインクルードし、依存関係をどのように記述するか? 助けてください。解決策を検索しましたが、わかりません.....
アップデート:
次のようにコードをコンパイルします。
gcc の 3 番目のコマンドの後に、次のエラーが表示されます。
sql.h:
sql.c:
そして、sql.h で宣言された関数の定義
1.l ファイル:
..... およびその他の lex ファイル
1.y
.... およびその他の yacc ファイル データ
これを回避する別の方法を教えてもらえますか?
objective-c - GDB Objective-c のデバッグ (シンボル テーブルなし)
実行可能ファイルがあり、gdb を使用してデバッグしています。gdb を使用するのはこれが初めてなので、ご容赦ください。
関数にブレークポイントを設定したいのですが、クラス ダンプを使用して関数の名前を知っています。シンボルテーブルがないと言っているので、その関数にブレークポイントを追加することはできません。シンボル テーブルを追加しようとしましたが、まだシンボル テーブルが読み込まれていないというエラーが表示されます。
では、このメソッドにブレークポイントを設定できる方法はありますか? それは客観的なcメソッドであり、cではありません(それが違いを生む場合)。あとは、このメソッドの引数を調べるだけです。
oop - オブジェクト指向言語のコンパイラでのシンボル テーブル スコープ
C++ のサブセットのコンパイラ用にシンボル テーブルを作成しています。
ここでの私の質問は、オブジェクトのスコープを処理する方法です。つまり、Pascal などの通常の言語では、スコープごとにシンボル テーブルを作成する必要があります。しかし、C++ では、オブジェクトのメソッドと属性の場合に別のアプローチを検討する必要がありますか?
よろしく。