プロトコル記述のsource

人間にプロトコル記述をしてもらう以外に、既存のソースコードからプロトコル記述を抽出する方法を考えることもできる。

ASN.1

ASN.1は、SSLで使われる秘密鍵といった各種PKIで利用されるフォーマットやSMNPなどのネットワークプロトコルの記述に使用されている。
ASNのソースコードはskySchemeと同様に構造化されたプロトコル記述であるが、ASN.1では既存のプロトコルを記述できないという点がskySchemeと異なる。

ABNF

RFCで定義されるようなテキストプロトコルはABNFという形で表記される。IETFRFC中のABNFを検索するサービスも提供している。

C言語のstruct

C言語のstructもプロトコル記述の一種とみなすことができる。しかし、プロトコル記述言語としての不完全性が、skySchemeのようなプロトコル記述言語をデザインする動機となっている。

例えばFFIGENはcpp(Cプリプロセッサ)を用いてヘッダファイルを展開し、適当に変換することでFFIのためのコードを生成する。
現実的なFFIのためにはこのようなアプローチが不十分なケースも考えられるが、skySchemeとしての主なスコープはデバイスドライバソースコードからレジスタの構造を抽出するといった用途なので十分に動作するように思う。