タグ

ブックマーク / qiita.com/k5n (2)

  • Rustのマクロを覚える - Qiita

    はじめに Rust のドキュメントを読んだり実際に動かしたりして理解したことをまとめていたら1、マクロの説明だけでもかなり長くなりそうなので、1つの記事にしてみました。 マクロには以下のデメリットがあるため、一般的にはあまり利用しない方がいいと言われます。 コードが理解しづらい 良いマクロを書くのは難しい コンパイルエラーは展開後のコードで起こるので、原因が分かり難い C/C++ のマクロはコンパイラとは別に用意されたプリプロセッサにより、構文を解釈しない単純な文字列置換が行われます。そのため注意して利用しないと意図しない動作を起こすことがあります2。一方、Rust のマクロはそのような問題が起こらない仕組みになっています。 なお「“物のマクロ”でCのコード行数を半分に!」という記事によれば、「Programming Clojure」(Stuart Halloway著)に以下の警告が書い

    Rustのマクロを覚える - Qiita
  • Rustのパーサコンビネータnomを使ってみよう - Qiita

    はじめに 使い方を学ぶのに、プロジェクトトップページの説明 と "Introduction to nom: a parsing framework written in Rust" という英語記事が参考になりました。 ここでは上記英語記事に倣って Hello, world! から始めつつ、簡単な計算機の例を解説します。 執筆時点では Rust は 1.13 で、nom は 1.2.4 です。 nom では楽に記述できるようにするためにマクロが多用されており、ソースコードを読むことでマクロの勉強になります。Rust のマクロの記述方法については「Rustのマクロを覚える」という記事を書きましたので参考にしてください。 特徴 lex & yacc (flex & bison) などと違い、書式ファイルを別に用意することなく、Rust のソースコードの中にルールを記述してパーサ関数を生成します。

    Rustのパーサコンビネータnomを使ってみよう - Qiita
  • 1