問題タブ [xbase]

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 に答える
114 参照

java - xBaseJ で IDX インデックスを使用できますか

IDX インデックス ファイルを含む DBF があります。xbase自体は扱えるようですが、xbasejでクラスが書かれているようには見えません。xbasejでIDXファイルを使用した人はいますか?

xbase への参照: http://www.clicketyclick.dk/databases/xbase/format/idx_comp.html

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

java - ScopeProvider で参照されたオブジェクトを呼び出す際のエラー「循環リンクが検出されました」

現在、Xtext DSL の相互参照を実装しています。dsl ファイルには複数の XImportSection を含めることができ、特殊なケースでは XImportSection にすべての import ステートメントが含まれているとは限りません。これは、正しい XimportSection を見つけてビルドするには、「XImportSectionNamespaceScopeProvider」をカスタマイズする必要があることを意味します。実装中に、エディターや検証の予期しない動作を見つけました。

実装をテストするために切り取った次の DSL コードを使用しました。

DSL ソース コードは、次の文法規則によって記述されます (完全ではありません!)。

より優れたツール サポートを提供するために、aModifiesUnitは変更されたクラスを参照します。この Xtext 固有の実装により、クラスへのハイパーリンクが可能になります。

現在、のすべての名前空間スコープを提供するカスタマイズされた XImportSectionScopeProvider に取り組んでいModifiesUnitます デフォルトの実装はメソッドを含みprotected List<ImportNormalizer> internalGetImportedNamespaceResolvers(EObject context, boolean ignoreCase)、ソース ファイルにクラスのような要素が 1 つしかないことを前提としています。しかし、私の言語では、複数存在する可能性があります。このため、カスタマイズする必要があります。

私の考えは、次の実装です (Xtend プログラミング言語を使用):

この作業を開始する前に、参照は正常に機能し、予期しないことは何も起こりませんでした。ModifiesUnit私の目標は、JVM タイプへの参照を解決するために Xbase によって使用される、カスタマイズされた XImportSection を構築することです。そのためには、参照先の XImportSection のコピーが必要ですClassOrInterface。XImportSection にアクセスするには、まず を呼び出しますModifiesUnit.getUnit()。この呼び出しが実行された直後に、エディターは予期しない動作を示します。エラーにつながる最小限の実装は次のようになります。

ここで、私は内部で何が起こっているのかわかりません!しかし、それは誤差を計算します。エディターは、(1) の修飾名に次のエラーを表示します: 「Cyclic linking detected : ModifiesUnit.unit->ModifiesUnit.unit」。

私の質問は次のとおりです。それはどういう意味ですか? Xtext でこのエラーが表示されるのはなぜですか? 参照されたオブジェクトにアクセスすると表示されるのはなぜですか?

私はそこで奇妙なことも考え出しました: 私の最初のアプローチでは、私のコードはNullPointerException. わかりました、オブジェクトを印刷して理由を理解しようとしましたci。結果は次のとおりです。

このメソッドは 2 回実行され、Xtext は 1 回目と 2 回目の実行の間でプロキシを解決しているようです。一度受け取ったオブジェクトが正しいものであれば、私にとっては問題ありません。if-instanceof ステートメントで処理します。

しかし、なぜそこに 2 つの参照があるのでしょうか。ClassDeclaration (2b) の抽象的なスーパールールのみである ParserRule ClassOrInterface (2a) に依存していますか? しかし、Xtext が ClassOrInterface の参照を解決できないのはなぜですか?

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

lambda-calculus - ブロック内の外部変数と Y コンビネータにアクセスする

皆さんが元気であることを願っています。Harbor で固定小数点Y コンビネータを実装していますが、問題が発生しています。Y コンビネータは、ラムダ計算によって次のように定義できます。

Y = (λh.λF.F(λ x.((h(h))(F))(x))) (λh.λF.F(λ x.((h(h))(F))(x)))

パフォーマンスの質問で、Y-combinator を使用してメモ化を適用しようとしています。私の現在の実装は次のとおりです。

基本的に、ブロック内でステートメントを使用することはできませんが、式を使用することはでき、問題なく動作します。私は無限再帰と、0から無限までの制限を回避しています。

ここまでは問題なくコンパイルできますが、外側のブロックの変数にアクセスしようとすると、Harbor に顔を蹴られてしまいます。

Y コンビネーターの実装をテストするために、フィボナッチ数列の単純な実装を適用しようとしましたが、パラメーターを受け取るGブロックを返し、パラメーターを受け取るブロックを暗黙的に返すと、使用できなくなりNGコンパイラーは「外側のコードブロック変数に到達できません。」

これにより、ブロックをカリー化することもできます。私の質問は、ハーバーでブロック内の外部変数にアクセスするにはどうすればよいですか?

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

abstract-syntax-tree - Xbase XExpressions をプログラムでインスタンス化する

Xbase 文法の一部を使用する Xtext プロジェクトに取り組んでいます。私のコードでは、Java コードを生成するために DSL プログラムを分析しています。XExpressionを使用して既存のものを Java コードに変換するのは簡単ですXbaseCompilerが、それは私が必要としているものではありません。代わりに、別のプログラムを生成する必要があります。

現在、私は単純に Java コードを生成しています (つまり、文字列を構築しています)。私がやりたいのは、新しい を構築しXExpression、おそらく元の の一部を使用して、それを Java にコンパイルすることです。

さまざまなXExpressions にはゼロ引数のコンストラクターがあるため、1 つをインスタンス化し、いくつかのプロパティを設定することさえ試みました。ただし、コンパイラがクラッシュし、欠落しているプロパティを特定できません。

0 投票する
0 に答える
240 参照

oop - OOP - ビジュアル オブジェクト: VO は C#/Java インターフェイス (戦略設計パターン用) などのインターフェイスをサポートしていますか?

私は C#/Java 開発者で、新しい仕事で Visual Objects (VO、Computer Associates のラフ モード: VO = OO-Clipper) で開発されたレガシー システムがあり、いくつかのモジュールを修正して実装する必要があります。ここにいくつかのパターン (すなわち: 戦略パターン) (VO はオブジェクト指向言語です)。ただし、VO 2.5 リファレンス マニュアルがありますが、C# や Java のような「インターフェイス クラス」への参照が見つかりませんでした。

VO リファレンス マニュアルでは、ポリモーフィズムと継承をサポートしていると書かれていますが、インターフェイス、ジェネリックなどについては言及されていません。

この言語がかなり古いことは知っていますが、このレガシー システムはまだ本番環境にあり、日常的にこれを使用するクライアントがいくつかあります。新しいバージョンは C# で開発されていますが、従来のバージョンを維持する必要があります。

VOがインターフェイスをサポートしているかどうか、またはサポートしていない場合は、そのようなもの(インターフェイスとこれらのインターフェイスを実装するクラス)を開発する方法を知っている人はいますか?

前もって感謝します。

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

python - dbf モジュールでレコードを更新する方法

dbfモジュールを使用してdbfのレコードを更新するにはどうすればよいですか: https://pypi.python.org/pypi/dbf

これが私が試したものです:

しかし、私は得る:

データの読み取りと追加はできましたが、変更はできませんでした。どうすればよいですか?