3種類の括弧の対応をチェックするC言語プログラム

先日勉強会でこの辺のテーマを取り上げたので、字句解析や構文解析(の一部)とスタックの復習も兼ねて作成(required for 1h+)。

実装のポイント

  • 閉じ括弧の有無の判定は、ファイルの終端が読み終わった後。
  • 開き括弧の判定は、閉じ括弧を読み込んだ際に行い、スタックの最上位に対応する開き括弧があるか否かで。
  • 入れ子の(または再帰的な)構造で、どの深さにスレッドがいるか調べるにはスタックを用いる。

ソースコード(C言語) valid_pare.c

使用したText

実行結果

改良するなら

  • 関数を他のファイルに分けて、main側でインクルードする。
  • スタック領域を動的に割り当てる。(Brackets *)emalloc(sizeof(Brackets))かな。
  • スタック配列を伸縮性のある構造・操作関数で実装する。
  • 結果の表示をコンパイラのエラー出力っぽくする。該当箇所に「^」をマーク。
  • 他の言語で実装してみる(OOPを用いて等等)。
  • 字句・構文解析のオープンソースを参考にする。

こういった小さなものを作りつつ、OOPのパターンに基づいて拡張性を考慮する今日この頃。