問題タブ [compiler-theory]
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 に似た言語用のコンパイラを構築している最中です。レクサーとパーサーの使用はある程度完了しました。現在、セマンティック分析を行おうとしており、シンボル テーブルを構築しようとしています。現在、仕様によれば、同じレキシカル レベルでの重複宣言は許可されていません。これには、レキシカル レベルごとに異なるシンボル テーブルを作成する必要がありますね。どうすればこれを行うことができますか?現在、私が持っている 1 つのシンボル テーブルは、各ノードが次のように見えるバイナリ ツリーの形式になっています。
特定のノードを別のツリーの「ルート」ノードにポイントするにはどうすればよいですか?
どんな助けでも素晴らしいでしょう!どうもありがとう。
cpu-architecture - マイクロプロセッサの進化は、コンパイラと言語標準の進化を正当化しますか?
チップ メーカーが新しい機能や命令などを新しいチップに追加するとき、それらの新しい命令やチップの機能を使用するには、それに応じて新しいバージョンのコンパイラが必要ですか? また、チップの新しい機能を使用するには、プログラミング言語にも新しいオペコードや構文などが必要になるということですか?
compiler-construction - 解析ツリーと抽象構文ツリー (AST) の違いは何ですか?
それらはコンパイル プロセスのさまざまな段階で生成されますか? それとも同じものの名前が違うだけですか?
c++ - コンパイル後も C と C++ が異なるのはなぜですか?
私はそれを推測しましたが、C と C++ で書かれたこれら 2 つのプログラムをコンパイルしたときの出力が非常に異なっていることに驚きました。そう考えると、オブジェクトの概念は最低レベルでも存在していると思います。これによりオーバーヘッドが追加されますか? もしそうなら、オブジェクト指向コードを手続き型スタイルに変換することは現在不可能な最適化ですか、それとも非常に難しいですか?
helloworld.c
helloworld.cpp
次のようにコンパイルされます。
このコードを生成しました:
C アセンブリ
C++ アセンブリ
compiler-theory - 低水準言語を高水準言語に変換することは可能ですか?
コンパイラは、C をアセンブリに変換するように、高水準言語を低水準言語に変換できることを知っています。
しかし、その逆は可能ですか?
c++ - C ++をCコードにコンパイルする方法はありますか?
ユーザーがC++クラスを使用して構成するプログラムがあります。同じクラスを使用して、C99(Open CL言語)のサブセットのみを使用できるプログラムを構成する必要があります。
だから私の質問は:C ++をCコードにコンパイルする方法はありますか?
オープンソースは素晴らしいでしょう!
compiler-construction - Compiler Design: "op_Minus number" と "negativeNumber" をどのように区別しますか?
トークン シーケンス "op_Minus" "number" と単純な負の数をどのように区別しますか?
parsing - LR(1)パーサー、テーブル生成の理解に役立ちますか?他のリソースはありますか?
私は現在コンパイラクラスを受講していますが、action / gotoテーブルを使用したLR(1)解析アルゴリズムと、これらのテーブルを手動で生成する方法を理解するのに苦労しています。現在、クラスの教科書としてCooperとTorczonによるEngineering aCompilerを使用しています。テーブル生成に関するウィキペディアのページも読んだことがありますが、まだ概念を理解していません。可能であれば、構文解析をうまく説明している他の本やオンラインリソースを誰かが推薦できますか?多くの大学がこのテーマに関する優れたオンラインリソース/スライドを持っていると思いますが、どこから始めればよいのかわかりません。ありがとう!
compiler-theory - コンパイラのフェーズ?
コンパイルのどの段階で、プログラミング言語のキーワードが認識されますか?
私はちょっと混乱しています
- 字句解析。
- プログラムの解析。
正規表現を使用して C で字句解析器を作成したことがありますが、main()
inint main(void)
もキーワードとして認識されました。
これらの行では、キーワードを認識するために解析ツリーを構築する必要があると思います。
c++ - 文字列内の次の文字を識別するのは大文字かどうか
私はC++プログラムを書いています。char配列trans[20][100]の配列があります。実際、transの各文字列は、文法(プログラミング言語トランスレータ)の遷移です。トランスの各文字列で、「。」の後に非終端記号があるかどうかを確認したいと思います。つまり、文字列に「。」があるかどうかを確認したいのです。大文字が続きます。誰か教えてもらえますか?
-前もって感謝します