問題タブ [forward-reference]
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の前方参照とは何ですか?
私は例を得ることができますか?
forward-declaration - 前方参照と前方宣言
少し混乱しています。前方宣言と前方参照の違いは何ですか? 前方宣言とは、私の頭では、まだ実装されていない関数を宣言することですが、これは間違っていますか? ケースを「前方参照」または「前方宣言」を宣言するために、指定された状況を見る必要がありますか?
parsing - コンパイラで前方参照を実装するにはどうすればよいですか?
Lex と YACC (実際には Flex と Bison) でコンパイラを作成しています。この言語では、任意のシンボル (C# など) への無制限の前方参照が可能です。問題は、識別子が何であるかを知らずに言語を解析できないことです。
私が知っている唯一の解決策は、ソース全体を lex してから「幅優先」解析を行うことです。これにより、クラス宣言や関数宣言などのより高いレベルのものは、それらを使用する関数の前に解析されます。ただし、これは大きなファイルの場合に大量のメモリを必要とし、YACC で処理するのは困難です (宣言/本文の種類ごとに個別の文法を作成する必要があります)。また、レクサーを手書きする必要があります (これはそれほど問題ではありません)。
効率についてはあまり気にしません (それでも重要ですが)。これは、完了したらコンパイラ自体を書き直すためですが、そのバージョンを高速にしたいと考えています (高速な一般的なLex/YACC では実行できないが、手動で実行できる手法については、それらも提案してください)。したがって、現時点では、開発の容易さが最も重要な要素です。
この問題に対する良い解決策はありますか? これは通常、C# や Java などの言語のコンパイラでどのように行われますか?
c# - C# のコンパイラ設計 - 前方参照
c# などの前方参照言語では、コンパイラはこれをどのように処理しますか? コンパイラが動作する手順は何ですか?
scala - 前方参照は、値の問題の定義にまで及びます
私は暗黙の値を解決するためにscalaでいくつかの問題を抱えています、そして私はnetbeansで不可解なエラーメッセージを持っています:
「エラー:前方参照が値の定義を超えています...」
またはscalaコンソールで他のエラーメッセージが表示されます
"タイプmistmatch:29:エラー:タイプの不一致;見つかった:Factory.type(基になるタイプオブジェクトFactoryを含む)が必要:GenericFactory"
私のクラスと主な機能のいくつかの説明:
1)クラスAの引数でオブジェクトを渡すことができるので、この抽象クラスを渡すために抽象クラスを定義しますが、ここでは機能しません:/ 2)その後、クラスAに定義された暗黙の値は認識されず、エラーメッセージで失敗します。
この問題を解決するためのアイデアや答えはありますか?
編集1
私はagisteelの助けを借りてコードを更新します、それは大丈夫です、コードは実行されています:)
xml - 非整列化中に JAXB XmlAdapter で XML IDREF の前方参照を処理するにはどうすればよいですか?
非整列化プロセス中に JAXBで XMLIDREF
要素の前方参照を処理することは可能XmlAdapter
ですか? たとえば、次の XML がありますcomplexType
。
guardian
フィールドは、ドキュメント内の他の場所にある別の -type 要素を参照できますPerson
。私は現在、マーシャリング時に XmlAdapter を使用しているため、オブジェクトが最初にマーシャリングされたときにコンテインメントによってマーシャリングされ、その後このオブジェクトが出現すると参照によってマーシャリングされます。私の以前の質問を参照してください。ただし、XML インスタンス ドキュメントの作成方法が原因で、Person
要素の最初の出現は、to が発生した後IDREF
に発生する可能性があります。
これは可能なことですか?それとも、これとは異なる方法でアプローチする必要がありますか? ありがとう!
assembly - A86 - 定義が前方参照と矛盾しています
A86 を使用して 8086 用のコードを組み立てようとしています。問題を 4 行のコードに絞り込みました。
このコードのどこが間違っていると思いますか? アドレス自体を BX レジスタに移動し、testz アドレスのバイト値を AL に追加しています。
より大きなプログラムでは、#ERROR 13: Byte/Word Combination Not Allowed
.
しかし、はバイトlabel
の単語です。[label]
コンパイラがそれらを区別できないのはなぜですか?
バイト/ワードの競合が見られないためです。
私のコンパイラはオフセット testz と testz を同等に解釈します。バイトコードを調べましたが、違いはわかりませんでした。
上記のコードは機能しますが、これを 1 行で実行できる他の方法はありますか?
[] にラベル名を入れると、コンパイラ a86 では受け入れられません。しかし、私はそれらが言語で許可されていると感じています。
scala - Scalaで初期化されていない変数の使用が許可されているのはなぜですか?
が割り当てられたときと同じように、これは4 を出力します。とは値であるため、ある瞬間と次の瞬間であってはなりません。Scala では、それらはimmutableであるべきですよね?c
0
b
a
c
0
5
少なくとも何らかの警告を受け取るべきではありませんか? もちろん、上記の例では、それを見逃すにはばかである必要がありますが、より複雑なケースでは、どの順序で配置するかを判断するのが難しい場合があります.
もちろん、使用できることは承知していますが、実際には使用していないのに、正しい順序で配置したと思っlazy val b = ...
たらどうなるでしょうか。これについてまったく警告を受けていないのは危険ではありませんか?これで問題なく動く!? これはどのようにしてScala IDEとコンパイラの両方に渡されるのでしょうか? わざとですか?それとも直せないバグですか?:/
:)
scala - Scalaでメモ化する一般的な方法はありますか?
これをメモしたかった:
だから私はこれを書きました、そしてこれは驚くほどコンパイルして動作します(fib
宣言でそれ自体を参照しているので驚いています):
しかし、 a 内で fib を宣言しようとするとdef
、コンパイラ エラーが発生します。
上記はコンパイルに失敗しますerror: forward reference extends over definition of value fib
case n => fib(n-1) + fib(n-2)
val fib
def の内側の宣言が失敗するのに、クラス/オブジェクト スコープの外側で宣言が機能するのはなぜですか?
明確にするために、def スコープで再帰的なメモ化された関数を宣言する理由を明確にするために、サブセットの合計の問題に対する私の解決策を次に示します。