問題タブ [gold-parser]

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

c# - GOLDからのキーワードの抽出-パーサーCGT-ファイル

多くのキーワードを使用する多くのルールで文法を定義しました。このように想像してみてください(これらのルールとキーワードを増やしてください):

gold-parser-systemは、コンパイルされた文法テーブル(CGT)ファイルを生成しています。このファイルは、いくつかのエンジン(私の場合はc#のcalitha-engine)で使用されます。

解析したいソースコードの構文強調表示を実現するために、さまざまなルールのすべてのキーワードを取得したいと思います。それらを抽出するにはどうすればよいですか?

0 投票する
6 に答える
3829 参照

c++ - C ++で多くの小さなテキストを解析するための最良のパーサジェネレータ?

私は、パフォーマンス上の理由から、C#ライブラリをC++に移植しています。通常の操作では、このライブラリは、とりわけ、平均長が150文字未満の約150,000の数式(Excelの数式を考えてください)を解析する必要があります。

C#バージョンでは、GOLDパーサーを使用して解析コードを生成しました。1秒以内にすべての150,000式を解析できます。

言語の拡張を考えていたので、C++への移行はANTLRに変更する良いチャンスかもしれないと思いました。(単純な)文法をANTLRに移植し、そこからCコードを生成しました。150,000の式の解析には、12秒以上かかります。これは、式ごとに、新しいANTL3_INPUT_STREAM、トークンストリーム、レクサー、およびパーサーを作成する必要があるためです。少なくともバージョン3.4では、それらを再利用する方法はありません。

誰かが代わりに何を使用するかを私に勧めてくれるとありがたいです-C++またはCコードの生成はC#の種類よりもはるかに複雑に見えますが、GOLDはもちろんオプションです。私の文法はLALRとLL(1)と互換性があります。最も重要な懸念は、小さな入力でのパフォーマンスの解析です。

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

d - Piepkorn GOLD エンジンを Tango 0.99.9 で動作させる

私のボックス (DMD 1.056/Tango 0.99.9/Windows 7) でPiepkorn GOLD エンジン(2007 年にリリース) を動作させることができません。

私が使用しているTangoバージョンにはもう存在しないモジュールtango.io.MemoryConduitをインポートします。

抜粋:

tango.io.Conduitがtango.io.device.Conduitに置き換えられたと思います。


私の質問:

tango.io.MemoryConduitの代わりにどのモジュールをインポートする必要があり、その結果、 auto mem = new MemoryConduitの代わりにどの構造を使用する必要がありますか?

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

grammar - GOLD パーサーのコメント文法

文法のコメント ブロックに問題があります。構文は問題ありませんが、ステップ 3 DFA スキャナーは、私が行っている方法について不平を言っています。

解析しようとしている言語は次のようになります。

{ステートメント}{ステートメント} など

各ステートメント内には、いくつかの異なるタイプのコメントを含めることができます。

これは、私が直面している問題を表示する単純化された文法です。

ステップ 3 は、<Statements> の } と字句グループの End の } について不平を言っています。

必要なことを達成する方法を知っている人はいますか?

[編集]
REM 部分を次のように動作させました。

Remarks は私にとって必ずしもノイズではないので、これは実際には理想的です。

コメント字句グループにはまだ問題があります。同じように解いていきます。

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

context-free-grammar - GOLD パーサー作成者と端末

C# で出力したいので、GOLD パーサー ビルダーを使用してスクリプト言語の文法を作成しようとしています。ただし、パーサーは明らかに端末が一意であることを望んでいます。しかし、端末の意味は状況依存である可能性があります?! 記号「-」を考えてみましょう。-xとの両方x-yが有効であり、次のように文法を書くことができます。

ただし、シンボル '-' は 2 回定義されています。1 回目は の 2 番目の生成規則で暗黙的に (!) 定義されたシンボルによって、<Expression>もう 1 回はターミナル (Opers によって定義されます) として定義されています。

さらに、文字列には - 記号も含めることができ、'-' !? の 3 番目の定義が追加されます。これをどのように回避しますか?これに関する情報は、GOLD のドキュメントや Web のどこにもありません。私が知らないパーサービルダーを扱ういくつかの主要な方法があると思います。

これがテーブルベースのパーサーで解決できない問題である場合、C# 出力が必要なため、どのような代替手段がありますか?

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

php - 重量に基づいてmagentoで動的計算価格を実装する方法は?

こんにちは、Magento でジュエリー ビジネス用の e コマース サイトを開発していますが、価格ではなく「重量」に基づいています。これは、ゴールド レートが日ごと、または 1 日に 3 回以上変化しているためです。したがって、変更することはできません。ゴールドレートに応じて毎回商品価格。では、このシナリオで価格を管理するにはどうすればよいでしょうか。

例: 今日、サイトに 10gm の 18K ゴールド リングを追加しました。現在のゴールド レートは 10gm あたり Rs30,000 であるため、このリングの今日の価格は Rs30,000 ですが、翌日レートが変更されます (Rs32, 10gm あたり 000) では、私の製品価格を Rs30,000 から Rs32,000 に変更する必要があります。

これにより、すべての製品の価格を毎回更新することはできません。Magento プラットフォームを使用しています。この状況に関するあなたの考えを共有してください。

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

parsing - 永続的なシフト - Goldparser で競合を減らす

Goldparser で Shift-Reduce の競合が発生して困っています。

理論的には、次のスクリプトを解析できる PHP のような文法を作成しました。

一番上にグローバル変数を割り当て、その後に関数定義を配置します。

問題を絞り込むために、エラーを再現できる次の行に大きな文法を減らしました。明らかにこれは不完全です。関数にはパラメーターも戻り値もステートメントもありません...

LALR テーブルを構築するとき、Goldparser は次のように教えてくれます。

「Shift-Reduce Conflict が修正されました。'private'、'protected'、'public' は完全なルールに従い、シフトすることもできます。この競合は、'reduce' よりも 'shift' アクションを選択することで解決されました。注意してください。一部の文法にアクセスできない可能性があります。すべての競合を削除することをお勧めします。"

しかし、適用される修正により、文法が正しく機能しなくなります。上記の例では、オプションとして宣言したにもかかわらず、' '、' '、または ' ' が必要function Main()な場所で構文エラーが発生します。privateprotectedpublic

定義または定義<ModifierOpt>からを削除すると、エラーは消えます。<FuncDef><GlbAssignVar>

これを解決する方法がわかりません。助けてください!

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

vbscript - GoldParser: 空行で終わらないプログラムを受け入れる

VBScript の GoldParser 文法を書き直しています。VBScript では、ステートメントは改行または':'. したがって、次の端末を使用します。

すべてのステートメントはNewline端末で終了する必要があるため、空行で終了するプログラムのみが受け入れられます。空行で終わらないプログラムも受け入れるように改行ターミナルを拡張するにはどうすればよいですか? 私は次のことを試しました:

{EOF}(End of File) グループが存在しないため、これは機能しません。