Yellow for Silverlight

n7shiさんが、Cyanに引き続きYellowもSilverlightへ移植してくださいました。

Yellow for Silverlight - 七誌の開発日記

「Cyanよりも更に洗練されている」というお言葉を頂いたので、Yellowの処理系を書くにあたって留意した点を書き留めておきます。

  • 他への依存が少ない部分から書き始める
    • YellObject -> YellSymbol -> YellPackage -> Lexer -> Parser
  • 拡張を定型作業として行えるような仕組みを作る
    • YellOperatorにおける継承関係
    • YellParent
  • C#の機能を最大限に生かす
    • 継承の有効な利用
      • 抽象クラス、インターフェース
    • リフレクションよりもデリゲート
    • ラムダ式LINQ、拡張メソッド

今後の課題としては、GlobalPackagesクラスによって生じた問題が挙げられます。

  • public staticなプロパティは、実質グローバル変数
    • 複数の状態を持てない
  • 静的フィールドは、初期化のタイミングが分かりにくい
    • ParentNameという苦肉の策

もっと他人の書いたコードを読むことで、さらに洗練されたコードを書けるようになろうと思います。
その意味でも、セキュリティ&プログラミングキャンプは楽しみです。