パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

FreeBSDでのifconfigリファクタリング作業」記事へのコメント

  • by Anonymous Coward
    kameをハックしてた時、yaccとかlexが全くわからなくて
    途方に暮れたことがあります。

    gdbで追っていくと、confファイルを読んで
    プログラム内のtmpリストに追加しているように読める。
    そして、ちょうどメンバ数2までの制限が
    かかってることまではわかったが、改造出来ない・・・。

    そしてまわりを見回しても、C+スクリプト言語(sed,awk,per
    • by Anonymous Coward
      yaccは設定ファイルの構文解釈に便利なので良く使ってます。
      BNFさえ理解できれば、後はそれ程難しくないですね。お約束レベルの事をいくつか憶えればおしまい。
      BNFわからなければRFCも読めませんから当然みんな判っ
      • Re:yaccは便利 (スコア:2, 参考になる)

        by Sune (7520) on 2003年12月03日 16時57分 (#447036)
        BNFつながりなんですが、まだだれも上げてなかったので書いときます。

        最近C++のboost::spirit [boost.org]という構文パーサにはまっております。
        非常に良く出来た(変態的な)ライブラリで、yaccや組み込みSQLのような別の処理系や
        プリプロセッサを使わず、生のC++コードにEBNFもどきの文法とアクションを直接埋め込んで
        構文・字句解析ができるようになっています。

        yaccとは一味違うEBNFを採用していること、無理やり感のある独特な構文表記、
        Javaに押されぎみでマイナー感が出てきたC++と、いろいろ絡み合って、正にアレゲな感じです。

        複雑な構文を処理するならyacc/flex、そうでないならspiritと使い分けたいのですが、
        もともと少ないC++プログラマで、さらにEBNFが理解できる人があまりいないのが玉に傷。
        興味ある方は選択肢のひとつとして調べてみると良いことがあるかもないかも。
        #yacc++とかはおいかけてないので、よく分かりません
        親コメント
        • Re:yaccは便利 (スコア:2, 参考になる)

          by N'gatt (9815) on 2003年12月04日 1時58分 (#447436) 日記
          参考:ドキュメントの日本語訳 [cppll.jp]

          #まだ途中みたいですが…
          親コメント
        • by Anonymous Coward
          spiritって実用的な時間でコンパイルできますか?
          使ってみてもよさそうだけどGCCと組み合わせたときがどうなるか…
          • Re:yaccは便利 (スコア:2, 参考になる)

            by Sune (7520) on 2003年12月03日 21時51分 (#447207)
            時間はなんともいえませんが、生成処理は yacc + Cより遅そうです。
            C++ + templateなんで、かなりCPUを消費します。

            まだ小規模なとこにしか使っておりませんが、数十~百行程度
            のEBNF構文定義であれば最近のPCでストレスなくコンパイル
            できます、が、それ以上の規模になるとどうなるかわかりません。

            #VC7.1+P4 3GHzなんで、gccを使う場合参考にならないかも

            シンボルテーブルを食い尽くすらしく、デバッグ用のオプションを
            少し弱めに変更しないとうまくリンクできませんでした。

            他に気づいた点で言うと、yaccで生成したものと比べて実行時に
            スタックを消費する傾向があるので、その辺も注意したほうがよいでしょう。

            等価な文法を食わせて統計を取ってみると面白そうですね。
            親コメント

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

処理中...