問題タブ [stringtemplate-4]
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.
stringtemplate - StringTemplate 空の文字列を null に変換する方法はありますか?
書式設定のあるオブジェクト属性のリストで、ラッピングおよびアンカー機能を利用する必要がある状況があります。
文字列テンプレートでリストを作成し、直接プロパティにアクセスするだけの場合は null 値を取り除くことができます。ただし、一部の属性を条件付きでフォーマットできるようにしたいと考えています。たとえば、テンプレートが与えられます。
および値を持つオブジェクト
生み出すだろう
同じオブジェクトを渡したが、Value に null 値を指定すると、生成されます
ストリップはヌルを削除するためです。ただし、Vat に null 値を持つ最初のオブジェクトを渡すと、
テンプレートは常に空の文字列に解決されるためです。空の文字列を null に変換する回避策はありますか?
ここでの明らかな回避策 StringTemplate 3: how to filter a list? テンプレートでコンパイル例外をスローするため、機能しません。具体的には、マップの値として「何もない」ことは好きではありません。その投稿のように値を明示的に null にマップできれば、必要なものが得られます。
java - ANTLR 4 および StringTemplate 4 - テンプレートでのツリー ウォーカーの使用
免責事項: 私は先月まで Java を使用したことがなく、ANTLR や StringTemplate についてもそれまで聞いたことがありませんでした。この夏のインターンシップで、社内で誰も使ったことのないツールを使用するプロジェクトを与えられました。誰もが「私を信じて」おり、私は「それを理解する」と信じています。したがって、私の理解には大きなギャップがあります。私はこのプロジェクトが大好きで、たくさんのことを学んできたので、これを不平だと思わないでください。私はそれを機能させたいだけです。
現在、私は古いドメイン固有言語のかなりのプリンターの概念実証に取り組んでいます。私の ANTLR 文法は優れた構文木を生成しており、導入部のような単純な StringTemplate の例を出力できます。
ファイルに単純なテンプレートがあるとし.stg
ます。
add()
Java では、各テンプレート引数の値を設定するために使用できます。
ANTLR と ST でテキスト ファイルを読み込んで、きれいに印刷された出力を生成するにはどうすればよいですか?
なるはず
例えば。(すべての出力をこのようにフォーマットするつもりはありませんが、心配しないでください。それよりもかなりきれいに印刷されます。)
この回答で、ANTLR 4 が自動的にウォーカーを生成することを知りました。ANTLR 文法が正しい/適切に記述されていると仮定すると、入力テキスト ファイルから出力を生成するために、ANTLR ルール/トークンをテンプレート引数に一致させるにはどうすればよいですか?
どこかのドキュメントでそれを見逃した場合はお知らせください。ANTLR 4 および ST 4 の例は、以前のバージョンよりもはるかに少なくなっています。
java - ANTLR ベース リスナーからの文字列テンプレート ルール名へのアクセス
かわいいプリンターで作業しています。これまでの ANTLR と StringTemplate の理解に基づいて、すべての文法規則をテンプレートに一致させ、文法規則が呼び出されるたびにテンプレートを適用する場合は、文法規則に一致する名前でテンプレートを作成できます。
[副次的な質問: これは私がそれに取り組むべき方法ですか? 解析されたテキストを出力テンプレートに一致させる作業を ANTLR が行う必要があるようです。私の仕事は、パーサーのルールとテンプレートが完全で正しいことを確認することです。]
ANTLR 3 では ANTLR 文法内でテンプレートを直接設定することができたと思いますが、ANTLR 4 ではそこから離れたようです。
上記の仮定に基づいて、ANTLR が生成する MyGrammarBaseListener クラスがすべての作業を行うように見えます。
この例を ANTLR 4 に変換することで、テキスト入力の解析中に呼び出されたルールの名前を収集できましたenterEveryRule()
。
リンクされた例では、変更を適用してテキスト出力を作成しているexitEveryRule()
ため、テンプレート マッチング アルゴリズムを実際に実装する場所がわかりません。enter
両方を試して、exit
何が最適かを確認します。
私の主な質問は、MyTemplates.stg のテンプレート名にアクセスするにはどうすればよいですか? 何をインポートする必要がありますか?
(おそらく、別の質問で、ルールの子をテンプレート パラメーターに一致させることについて質問するために戻ってきます...)
stringtemplate - StringTemplate のプロパティ値を比較する必要があります
C のようなブール式を出力する必要があるタプルのリストがあります。
私のテンプレート:
これは以下を出力します:
この場合、出力$it.0$
と同じかどうかを確認したいと思います(私の例では、これは最後のタプルに対して生成されます)。これは可能ですか?$it.1$
c==='$it.0$'
c==='_'
stringtemplate - String Template 4 Map のキーと値を反復するにはどうすればよいですか?
StringTemplate 4 では、反復のデフォルトの動作は、バージョン 3 での動作であったのkeys
代わりにを反復することです。values
keys
バージョン 4 でと values
を同時に反復処理する方法の構文が見つかりません。
誰かが構文の例を投稿できますか?
java - stringtemplate4 出力として「Anonymous()」を取得する
ここで私が間違っていることを理解しようとしています。
その後、次のように呼び出します。
挿入の代わりに「anonymous()」の出力を提供します。ここで何が間違っていますか?
java - テンプレートに渡されたモデル オブジェクトのプロパティのレンダリングに関する問題
私は本当に基本的な StringTemplate の初心者です。これを利用して自動メールを送信しようとしています。そこにあるものを消化するために、私はできる限り多くを読みました。簡単なテスト ケースから始めて、レンダリングするオブジェクトのプロパティを取得するのに問題があります。テスト ケースとして、テンプレート ファイル email.stg に次のものがあります。
Person オブジェクトを渡して、テンプレートに personFirstName プロパティをレンダリングさせようとしています。これは、パブリックな getter Person.personFirstName() を呼び出します。
私のJavaコードは次のようになります:
私の出力は、personFirstName プロパティが Java 経由で利用可能であることを反映していますが、私のテンプレートはそれをレンダリングしません。
アクティベート テンプレートをこれに制限すると、次のようになります。
person オブジェクトが _thePerson.toString() としてレンダリングされる次の結果が得られます。
取得しようとしているより複雑なテンプレートに進むことができるように、どんな助けも大歓迎です。
java - ANTLR version4 で AST を構築する
私はコンパイラを開発しており、ANTLR4 を使用してレクサー、パーサー、セマンティック アナライザー (リスナーとビジターを使用) を既に実装しています。コード生成のために、StringTemplate(ST) を使用して LLVM IR を生成する予定です。そのためには、まず AST を構築してからコードを生成することを考えています。
ここでの私の質問は、AST を作成する必要がありますか?? または、解析ツリーを使用できますか? AST を使用する必要がある場合、ビジターまたはリスナーを使用して AST を手動で構築する例を見つけることができません。小さな文法例でも非常に役立ちます。
ありがとうございました。