問題タブ [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.
rust - crate syn を使用した "=>" トークンの先読み
私は proc-macros と syn を使用して小さなドメイン固有言語に取り組んでおり、フォーム上の一連の演算子を解析したいと考えています。
また
など。
私はsyn
クレートを使用してこれを行っておりParser
、必要なさまざまな構造を実装しています。私の考えでは、最初の 3 つのトークンの後に先読みを使用して、これらを次のように解析できると考えました。
問題は、 whilesyn::token::FatArrow
が を呼び出すときのトークンであり=>
、 を呼び出すときparse
ではないように見えることpeek
です。
解析は正常に機能しますが、先を見通すことができなければ、2 つのケースを区別できません。(まあ、入力ストリームをフォークして両方のルールを試してから、ストリームを機能するものに置き換えることでできますが、次のトークンのピークが問題を解決する方法を知っていれば、それは少し劇的に思えます)。
ここで何が間違っていますか?peek
トークンを一致させるために、他の引数を指定して呼び出す必要があります=>
か?
rust - syn::Field が錆の proc_macro で構造体かどうかを確認する方法
構造体のメンバー変数を解析するテレメトリ関数を生成する proc_macro があり、ネストされていない構造体に最適です。構造体である syn::Field で handle_named_field 関数を再帰的に呼び出す必要があることがわかりました。問題は、フィールドが構造体であるかどうかを判断する方法がわからないことです。syn::Data 変数があれば、handle_data のように簡単です。フィールドが構造体かどうか、handle_named_fields(fields: &syn::FieldsNamed) の内部を確認するにはどうすればよいですか?