【发布时间】:2010-09-17 01:57:51
【问题描述】:
我有一个系统,我可以在其中查询 REST / Atom 服务器以获取文档。查询受到 GData 的启发,看起来像:
http://server/base/feeds/documents?bq=[type in {'news'}]
我必须解析“bq”参数才能知道将返回哪种类型的文档而无需实际执行查询。比如,
bq=[type = 'news'] -> return ["news"]
bq=[type in {'news'}] -> return ["news"]
bq=[type in {'news', 'article'}] -> return ["news", "article"]
bq=[type = 'news']|[type = 'article'] -> return ["news", "article"]
bq=[type = 'news']|[title = 'My Title'] -> return ["news"]
基本上,查询语言是可以与 OR(“|”)或 AND(无分隔符)组合的谓词列表。每个谓词都是对一个字段的约束。约束可以是 =、、=、in 等...在任何有意义的地方都可以有空格。
我在 Regexp、StringTokenizer、StreamTokenizer 等之间有点迷茫……我被 Java 1.4 困住了,所以没有 Parser……
谁能给我指出正确的方向?
谢谢!
【问题讨论】: