問題タブ [rust-proc-macros]

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

rust - crate syn を使用した "=>" トークンの先読み

私は proc-macros と syn を使用して小さなドメイン固有言語に取り組んでおり、フォーム上の一連の演算子を解析したいと考えています。

また

など。

私はsynクレートを使用してこれを行っておりParser、必要なさまざまな構造を実装しています。私の考えでは、最初の 3 つのトークンの後に先読みを使用して、これらを次のように解析できると考えました。

問題は、 whilesyn::token::FatArrowが を呼び出すときのトークンであり=>、 を呼び出すときparseではないように見えることpeekです。

解析は正常に機能しますが、先を見通すことができなければ、2 つのケースを区別できません。(まあ、入力ストリームをフォークして両方のルールを試してから、ストリームを機能するものに置き換えることでできますが、次のトークンのピークが問題を解決する方法を知っていれば、それは少し劇的に思えます)。

ここで何が間違っていますか?peekトークンを一致させるために、他の引数を指定して呼び出す必要があります=>か?

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

rust - syn::Field が錆の proc_macro で構造体かどうかを確認する方法

構造体のメンバー変数を解析するテレメトリ関数を生成する proc_macro があり、ネストされていない構造体に最適です。構造体である syn::Field で handle_named_field 関数を再帰的に呼び出す必要があることがわかりました。問題は、フィールドが構造体であるかどうかを判断する方法がわからないことです。syn::Data 変数があれば、handle_data のように簡単です。フィールドが構造体かどうか、handle_named_fields(fields: &syn::FieldsNamed) の内部を確認するにはどうすればよいですか?