boost::spirit で質問

解決


しょしんしゃ  2005-04-22 03:34:36  No: 57143

boost::spirit を使ってみようと思ったのですが、難しいですね。
知恵を貸してください。

グローバル変数の値(フラグとして使用)によって
有効にする rule を変更したいと思っているのですが、
そもそも、そんなことが可能なのかすらわかりません。

template<typename S> struct definition {
  rule<S> declaration;
  rule<S> assignment;
  rule<S> expression;      //式
  rule<S> sentence;

  definition(const sentence_analyzer& self){
    sentence
      =  declaration   //
      |  assignment    //
      |  expression
      ;
    }
}

以下の様に切り替わるようにできるのでしょうか?
(1)
sentence
  =  declaration   //
  |  assignment    //
  |  expression
  ;

(2)
sentence
  =  assignment    //
  |  expression
  ;

(3)
sentence
  =  expression
  ;

など。。。

よろしくお願いします


しょしんしゃ  2005-04-22 19:32:52  No: 57144

自己解決です。
definition の中でも、if文が使用できるのですね。
気づきませんでした(T-T)

if(self.bAssignment){
  assignment = /* 代入のルール */ ;
} else {
  assignment = nothing_p; //常に失敗
}


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加