問題タブ [irony]

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 投票する
2 に答える
2125 参照

r - R 用の既存の ANTLR または IRONY 文法はありますか?

R用の既存の既存のANTLRまたはIRONY文法があるかどうかは誰にもわかりませんか?

どうもありがとう。

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

c# - Ironyでの定数と演算子の定義

私はIronyと言語実装全体のシバンに慣れていないので、 Ironyソースに付属しているExpressionEvaluatorサンプルで遊んでいます。これは、私が取り組んでいるプロジェクトのニーズに(ほぼ)適合しているようです。

ただし、ブール値もサポートしたいので、二項演算子のリストに比較演算子を追加しました。

これが私が達成しようとしていることの例です:

二項演算子が追加されているため、上記の解析に成功します。ただし、コードをコンパイルして実行すると、最後の2行で失敗します。

  1. 行は次のbool = trueメッセージで失敗します:エラー:変数trueが定義されていません。(5:8)に。truefalseを定数として定義するにはどうすればよいですか?
  2. 行は次のbool2 = (eval == eval2)メッセージで失敗します:エラー:演算子'=='はタイプSystem.BooleanおよびSystem.Booleanに対して定義されていません。(6:15)に。

編集:両方の問題を解決しました。以下の回答を参照してください。

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

c# - Irony で C# ソースを分析する

これが、私のチームと私が学校のプロジェクトで選択したことです。実は、C# ソース ファイルを解析する方法はまだ決まっていません。

私たちが目指しているのは、C# ソース ファイルに対して完全な分析を実行し、レポートを作成することです。レポートには、コードで起こっていることが含まれます。

レポートには次のもののみを含める必要があります。

  • 文字列リテラル
  • メソッド名
  • 変数名
  • フィールド名

私はこの Irony ライブラリの調査を担当しています。正直なところ、データを整理して読みやすいレポートにする最善の方法がわかりません。zip で圧縮された C# 文法クラスを使用しています。

各ノードの子を正しく識別する手順はありますか? (例: ディレクティブ、名前空間宣言、クラス宣言など、メソッド本体の使用)

ヘルプやアドバイスをいただければ幸いです。ありがとう。

編集:申し訳ありませんが、メソッド呼び出しも分析する必要があると言うのを忘れていました。

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

c# - Irony Language Toolkit - FreeTextLiteral の使用法

一般的なパッケージ (T4、NVelocity、StringTemplate など) では解決できないテキスト テンプレートに関する特別な要件がいくつかあります。そのため、Irony を使用して独自の試みを行うことにしました。

<%%> タグ内のすべてが式であり、それ以外の場合は単なるテキスト リテラルである単純な形式を考えると、次のようになります。

私はこれから始めました:

問題は、上記の抽出を解析した後にルート ノードを確認すると、2 つの子ノードがあり、どちらもfreetextliteralノードであるということです。

Freetextliteral がすべての入力を消費しないようにするにはどうすればよいですか?

ありがとう!

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

c# - 特殊文字を含む全文検索はできますか?

私は正常に動作するC#アプリケーションで全文検索に皮肉を使用しています。[、]、;、~、'、\、/、<、>、、などの特殊文字を含むテキストを検索する必要があります。上記の特殊文字を使用して検索すると、「構文エラー、予期される: - & ( ) Phrase StringLiteral Term | ~ < and not or (parser state: S5)」というエラーが表示されます。

特殊文字を含む全文検索を行う方法はありますか?

これは、この呼び出し中にエラーが発生した私のコードです:_compiler.Parse(_compilerContext, source);

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

c# - 複雑な条件式を持つ ast をトラバースして linq 式を生成する

ソースから解析ツリーを生成するために Irony.net を使用しています。基本的に、バイナリ式 (算術式、関係式、および論理/条件式) のグラマーのような ExpressionEvaluatorGrammer を使用しています。結果の解析ツリーをトラバースして Linq 式に変換したい。ただし、ツリーにはlinqの条件式に直接変換できる形式はないようです。そのような式の仮説的な例:

生成します(簡潔にするために疑似xmlツリー):

上記のツリーでは、算術式 (4 - 1) が && 論理演算の正しい式になり、親ノードが後に閉じます。理想の世界では、「== 3」を表すノードの左式だったはずです。

このようなツリーをどのようにトラバースして、適切な操作を生成しますか? または、私が望む形でツリーを生成する方法はありますか?

編集:これが文法(部分)定義です。Irony.interpreter に付属している ExpressionEvaluatorGrammer から取得しました。

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

c# - Irony は、Irony が提供する C# 文法を使用して C# を解析しません。

そこで、単純な C# コードを解析して、Irony の使用方法を学ぼうとしています。私は、Irony サンプルに含まれている C# 文法を使用し、そこからコードをロードするサンプル アセンブリも使用しています。Irony に関するドキュメントは、あったとしてもほとんどないようです。解析しようとしている完全なソースは次のとおりです。

そして解析コード:

...ここで、g は Irony の C# 文法です。Irony の文法を使用して C# を解析する際に、このような問題を経験した人はいますか? 申し訳ありませんが、これ以上の情報を提供することはできません。例外はありません

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

c# - Visual Studio MEF&Irony:構文の強調表示なし

タグを生成していますが、 VisualStudioITagger<IClassificationTag>に構文の色が表示されていません。のコードは次のITagger<IClassificationTag>とおりです。

文法:

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

c# - Using Irony for custom language design in .Net 2.0

Just as the question says, I'm stuck with .Net 2.0 here in my company and there is no chance of upgrading. Is there a way to make Irony work in .NET 2.0.

I'll briefly try to explain what I'm trying to achieve. We at our company have a payroll system where we let customer define there own formulas for payslip items. These formulas must use some keywords/functions which we check through Regex(very unreliable). Then we create a Microsoft script control object and use its eval function to parse the snippet. These snippets in turn call keywords/functions defined in class to get the output.

But to say this system has drawback is being very polite. Sometimes the it just overflows with error.

A very silly e.g. -

Obviously there the tow stages this formula passes through.

First the validation stage where we do the following -

  • Check through regex whether there are any keywords used which are not present in predefined arrayList of keywords

  • Then check whether there are any variables(in this case - A, B, C are the ones) used which are not present in an arraylist of variable.

  • If all validation passes then we pass the formula string to a ScriptControlClass object's eval function and also add a static class with all functions defined in it(in this case consider FVAL()) and this function returns boolean true if the variable is a valid one to use in this context(like adding a date and number would return false)

Now after evaluating this expression the result is - DivideByZeroException, why because eval typecasts all boolean true to 1 and performs normal arithmetic to it.

The second phase is almost similar but without any validation check, like without returning true we actually return the value of the variable from a DataTable which consists of values for each variables.

The system is antiquated and its seriously getting on my nerves and I really need help. Please suggest.

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

abstract-syntax-tree - 皮肉なことに、どうして AST を生成するものと生成しないものがあるのか

トークン ツリーを生成するだけの SQL サンプル

しかし、皮肉を使用する方法に関するほとんどのサンプルは、すべて「解析」してから「生成された ast をトラバース」します。