如何构建特定于域的查询语言?

Der*_*unk 11 database dsl

我有一个生物数据库,我想查询.还有一个我可以访问的术语库,它具有可形式化的谓词.我想使用提到的谓词为这个DB构建一个查询语言.你会怎么做?我的解决方案如下:

  1. 形式化谓词
  2. 翻译成查询语言(sql,sparql,depends)
  3. 使用ANTLR或其他此类工具构建特定语言
  4. 从3翻译为2.

这是一种有效的方法吗?还有更好的吗?任何指针都将非常感激.

t0m*_*13b 4

使用 BNF 抢占语言语义的先机。GoldParser 将帮助您研究语义和语法(链接在此: http: //www.devincook.com/)。一旦你理清了 BNF 语义,你就可以根据输入构建动作,例如,处理提取肢体基因构成分类组成的 bnf 语法部分(我不知道这是否存在,抽象这里的例子,但你得到了要点)对于一个特定的查询...“获取肢体的统计信息,其中肢体是腿”,然后在幕后,您将在预定义表中的列别名或名称上发出 SQL 选择...我方法可能是错误的...希望有帮助吗?