S表达式的良好形式/模式

时间:2011-10-27 12:17:57

标签: lisp schema

我正在寻找检查S表达式的良好形式/模式的工具。

你知道这些工具吗?

正如Paul Nathan所预知的那样,我正在寻找的是针对sexp的Schema验证器。

2 个答案:

答案 0 :(得分:2)

我怀疑OP问题是用S表达式和Lisp替换XML技术堆栈。

使用S表达式的惯用方法是实现针对特定数据格式定制的临时验证器和变换器。由于Lisps几乎是声明性的(并且它们允许在它们之上定义无数可能的声明性语言),因此不需要像XML Schema或DTD这样的专用通用解决方案。

根据您使用的Lisp风格,您可以选择适合您需求的模式匹配库。嵌入式Prolog实现(如Schelog)也可以提供帮助。

答案 1 :(得分:0)

S表达式实际上没有模式。接近正常语法描述的格式良好的S表达式符合(非常粗略地):

atom := <character>+
sexp := atom | '(' sexp* ')'

也就是说,S-exp是单个原子或零个或多个S表达式的列表。为此编写验证器应该不会太难。