DSL / Wider Language Processing


DSL

Wider Language Processing(幅広い言語処理)

一言要約

言語処理をしているからと言ってDSLであるとは限らないが、そのテクニックは有用である。

要約

  • ドメイン固有言語についての本だが、ここでは言語処理の技術について述べている
  • 2つの例を上げて説明
  • COBOLコピーブック*1で定義されているのが誰のデータかを、メッセージで別システムに送信する例
    • COBOLコピーブック構文のパーサを作って解決した
    • COBOLコピーブックのパーサを以前にも作ったことがあり、コードを読まずにパーサを作れた
    • COBOLコピーブックをDSLと呼んでしまう拡大解釈だが、外部DSLを使うためのよくある基本テクニック
  • ジョエル(Joel Spolsky)が書いたWasabiの例
    • VBScriptで作られたバグトラッキング製品FogBugz?を、UNIX対応する為にPHPで動かす必要が出たが、アプリを書き直したくはなかった
    • Wasabiという独自言語を作り、VBScriptとPHPへのコードジェネレータを用意した
    • かなりの人はこれをDSLと思っているが、WasabiはVBScript用のパーサ(?)で書かれているのでDSLでなく汎用言語

ファウラーへのフィードバック

担当者のつぶやき

  • VBScript用のパーサで書かれているってのが良く分からんですが、WasabiはVBScriptの拡張??「WasabiはVBScriptと100%後方互換性がある」ってあるからそういう事なのかな?
  • 独自言語と言いつつ、基本はVBScriptだからDSLではなく汎用言語ということか。
  • ジョエル本読んでないorz
  • 全訳難しい。。

みんなの突っ込み



*1 COBOLの記録用データ構造フォーマット