問題タブ [antlr]
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.
java - 問題文に必要な文法定義
こんにちは、今のところこの文法がありますが、サービス後にメモがあります。Antlr はそれがサービスではないことを認識したくありませんが、注意してください。また、サービスとノートは構造が異なります。これはどうやって書くの?
これを解析しようとしています。ただし、bla bla に注意してください。サービス中です
java - ANTLR あいまいな文法?
それらを機能させる方法がわからないANTLRルールがいくつかあります
最初のルールは次のとおりです。
2 番目のルールは次のとおりです。
式は通常の C のような式です
構文の例
count は文字列、array[3] は式です。
私の問題は、レクサーが常に「count」と「array[3]」の両方を文字列として返し、パーサーが式を認識できないことです。
私はJavaターゲットを使用しています。
編集:「変数名」を「カウント」に変更しました。
EDIT2:以下の2回目の試みについて説明しました:
「= "」で式の開始を検出できますが、レクサーで式の終了を検出できず、「,」で区切られた 2 つの要素がある場合に文字列の誤検出が発生します。
'= "' を START_EXPRESSION として使用した場合、レクサーは最初の式を終了する引用符を検出し、2 番目の文字列を開始する引用符を文字列 ",\n" として検出しましたが、これは明らかに正しくありません。
編集 3: 構文述語を試す
STRING_LITERAL のルールを次のように変更しました
それでも機能しません。また、要素ラベルなどを割り当てて、ルール自体で ~('=') を生成する方法も知りませんでした
antlr - Antlr 文字列テンプレートの条件
Antlr StringTemplates を使用して、エンティティの名前の出力方法を制御します。
基本的な文字列テンプレートは
$FirstName$ $Initial$ $LastName$, $Suffix$, $Degree$
そのテンプレートにいくつかのスマートを追加して、必要な場合にのみコンマが出力されるようにします。つまり、最初のコンマはサフィックスまたは学位がある場合にのみ出力され、2 番目のコンマはサフィックスがある場合にのみ出力されます。
次のテンプレート文字列ビットを試してみましたが、うまくいきません。誤解していると思います
$FirstName$ $Initial$ $LastName$ <if(Suffix|Degree)>,<endif>, $Suffix$ <if(Suffix)>,<endif> $Degree$
この C# を使用してテンプレートを処理するのに役立つ場合
antlr - ANTLRWorksでツリー文法をデバッグする方法を知っている人はいますか
ANTLRの使用に推奨されるパターンは、パーサーに抽象構文ツリーを構築させてから、それらを処理するためのツリーウォーカー(別名ツリー文法)を構築することです。
ツリーの文法が機能しない理由を突き止めようとしています。パーサー自体に使用したのと同じ方法でANTLRWorksのデバッガーを使用したいと考えています。パーサーへの入力は「ソースコード」ですが、ツリーパーサーへの入力はパーサーのAST結果です。ツリーの文法をテストするための入力としてそれを利用できるようにする方法がわかりません。
ANTLRWorksでツリー文法をテストする方法があるかどうかは明らかではありません。それができれば、正しい方向へのポインタをいただければ幸いです。
c# - C#3.0の文法はどこにありますか?
C#でC#3.0コンパイラを作成することを計画しています。パーサー生成の文法はどこで入手できますか?
できれば、変更なしでANTLRv3で動作するもの。
antlr - C++ 生成のための Antlr @header 宣言
ANTLR バージョン 2.X では、以下のコードを使用して、ANTLR インクルードの前後に何かを指定することができました。
ANTLR v3.X では、これが 1 つの @header ブロックに置き換えられたようです。
以前に ANTLR v2 で行ったことを行う方法はありますか?
antlr - antlr3 を使用してユーザー定義のエラー メッセージを取得する
上記の ANTLR コードを遵守してください。これで、のようなユーザーフレンドリーなエラーメッセージをスローしたいと思います"from value should be less than to value in BETWEEN clause"
。私はこのように期待していますがRecognitionException("from value should be less than to value in BETWEEN clause");
、antlrは上記のように受け入れませんでした.
Antlrによって生成されたJavaクラスを呼び出しているJavaクラス。以下のように扱っています。
どんな助けでも感謝します。
antlr - Antlr には、レクサーが特定のルールの間だけトークンを照合できるようにするメカニズムはありますか?
私の言語にキーワードを追加したいと思います。
このキーワードは、1 つの特定のパーサー文法規則でのみ一致する必要があります。
下位互換性のため、このキーワードを引き続き変数名として使用できるようにしたいと思います。つまり、トークンが変数名に適しているかどうかを判断するレクサー規則に一致させることができます。
レクサーは、新しいルールがファイル内で見つかるたびに一致させます。
IDENT または新しい KEYWORD トークンのいずれかに一致するように var_declaration ルールを変更するために、これを回避する適切な方法はありますか?
関連するルールは次のとおりです。
変数を作成するためのパーサー規則は次のとおりです。
antlr - ANTLR 1.3/ANTLRWorksでコードを生成する際の問題
ANTLR 1.3とANTLRWorksをダウンロードしましたが、ルールとシンタックスダイアグラムを生成できます。java org.antlr.Tool Temp.g
コードを生成しようとすると(たとえば、ANTLRWorksのGenerateCodeによって、または
私はWindows7ベータ版、Java1.6を使用しています。ディストロが暗示するANTLRWorksがそのまま機能するため、クラスパスを具体的に設定していません。
編集 これは(ANTLRWorksの例で生成された)簡単な文法であり、はい、ファイルは存在し、内容は次のとおりです。
java - ANTLRでオプションの空白を管理するにはどうすればよいですか?
ANTLRでデータファイルを解析しようとしています-オプションの空白があります。
以下に、行の開始位置と終了位置を示します。最後に改行があり、タブはありません。
私の文法は次のとおりです。
これは
(つまり、先頭のWSが認識されておらず、最後の行が欠落しています)。
次のように、空白なしで始まる行を解析したいと思います。
しかし、次のようなエラーが発生します。
ANTLRでWSを解析する一般的な説明をいただければ幸いです。
EDIT @jitterには有用な答えがあります-{ignore=WS}
私が取り組んでいる「DefinitiveANTLRreference」の本には載っていないので、明らかにトリッキーな領域です。
ヘルプがまだ必要です これを次のように変更しました:
しかし、エラーが発生します:
編集これはV3から削除されたようです: http ://www.antlr.org/pipermail/antlr-interest/2007-February/019423.html