2011-10-27 8 views
3

S式の妥当性/スキーマをチェックするツールを探しています。S式の妥当性/スキーマ

あなたはそのようなツールを知っていますか?

私が正確に探しているのは、ポール・ネイサンが精緻化したように、sexpのスキーマバリデータです。

+1

これは、sexpベースのデータ表現のチェックを有効にするためのスキーマが存在しないということは少し驚くべきことです。 – JCLL

+0

私が数年前に書いたツールは、あなたが必要としているすべてについての括約のバランスをチェックしました。 XMLスキーマに関して考えているなら、何がポイントですか?文法は簡単ではありません。 –

+1

@Paul:あなたはsexpの具体的な文法について話していますが、私はsexpで表される「言語」の抽象文法について話しています。私は、専用のキーワードでタグ付けされたS-exprに基づいて新しいフォーマットを定義したとします。実際のs-exprがこのフォーマットを尊重する方法を教えてください。 – JCLL

答えて

2

私は、OPの疑問は、XML技術スタックをS式とLispに置き換えることだと思っています。

S式による慣用的アプローチは、特定のデータ形式に合わせて特別なバリデーターとトランスフォーマーを実装することです。 Lispsはほとんど宣言的なので(しかも、それらの上に数え切れないほどの宣言的言語を定義できる)、XMLスキーマやDTDのような特殊な共通ソリューションは必要ありません。

あなたが使用しているLispの味に応じて、あなたのニーズに合ったパターンマッチングライブラリを選ぶことができます。 Schelogのような組み込みPrologの実装も役に立ちます。

+0

スキーマのポイントは、コードよりも読みやすいということです.foo.barはオプションではなく、3から9までの整数でなければなりません。アドホックバリデータでは、この情報は理解できません。非リスパーズ。 – fadedbee

0

S式には実際にスキーマはありません。通常の文法記述に近づいて何かでよく形成されるS-式は、(非常に大まか)に準拠:

、あるS-expは、単一の原子またはゼロ個以上のS-式のリストのいずれかである
atom := <character>+ 
sexp := atom | '(' sexp* ')' 

。バリデーターを書くことはそれほど難しくありません。

+0

誰かがこれを落札した人が理由を示すコメントを残すことができればよいでしょう。 – Vatine

+0

xmlタグが<とend>で始まると言ったのと同等の表現をしていますが、これはXMLのDTDとまったく同じではありません。 –

+0

@AlexBrown S式はスキーマを持っていません。 S式は、括弧でくくられた均等な式のシーケンスです。 – Vatine