|
锁定老贴子 主题:ajoo JRC
该帖已经被评为精华帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-09-11
http://jrc.dev.java.net
ajoo项目批准了。 想参与的去java.net上申请一个账号吧。告诉ajoo,可以把你加进去。 cvs: host: cvs.dev.java.net repository: /cvs module: /jrc 项目的缘起可以看这里。 http://forum.javaeye.com/viewtopic.php?p=132021#132021 项目总共分3部分。 1. jrc的组合子部分,可以生成AST。 checked out code。看到这部分ajoo已经做了。Relation, 这部分就是SQL的语法元素组合子。ajoo称之为AST。 2. 写parser,把ansi sql翻译成ast。准备用jparsec来写。 这部分是我的任务。要写一个Parser,根据SQL的解析结果产生AST。 jparsec的基本思想参见 Java Functional In Action http://forum.javaeye.com/viewtopic.php?t=7951 jparsec项目参见 http://jparsec.codehaus.org/ 3. Visitor 通过实现ast的visitor接口来针对具体dbms生成sql代码。(这里面应该还是有一些设计的技巧可用,来尽量在不同dbms之间重用代码。) DB Dialect, native SQL. --------------- JRC的使用过程: Relation r = parser.parse(sql); Relation r1 = r.top(n).where(...); String sql = oracleVisitor.visit(r1); 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-08-18
buaawhl 写道 JRC的使用过程: Relation r = parser.parse(sql); Relation r1 = r.top(n).where(...); String sql = oracleVisitor.visit(r1); good!明天开始强迫自己学jaskell |
|
| 返回顶楼 | |
|
最后更新时间:2006-08-18
balaschen 写道 buaawhl 写道 JRC的使用过程: Relation r = parser.parse(sql); Relation r1 = r.top(n).where(...); String sql = oracleVisitor.visit(r1); good!明天开始强迫自己学jaskell :lol: 自虐?:D 这个项目主要用到的是JParsec。 Parser Combinator。 学会了JParsec,就对Parsec有了解,对Monad有了解,这些都是Haskell的经典,从而对学习Haskell就有帮助。 Jaskell基本就是Haskell的语法。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-08-18
buaawhl 写道 这个项目主要用到的是JParsec。 Parser Combinator。 学会了JParsec,就对Parsec有了解,对Monad有了解,这些都是Haskell的经典,从而对学习Haskell就有帮助。 Jaskell基本就是Haskell的语法。 刚下载JParsec源码,studying... 还有,Monad到底是什么,看过些资料和ajoo的讲解,感觉晕晕的。 Parser bind(ToParser tp); 这个就是monad? |
|
| 返回顶楼 | |
|
最后更新时间:2006-08-18
intolong 写道 buaawhl 写道 这个项目主要用到的是JParsec。 Parser Combinator。 学会了JParsec,就对Parsec有了解,对Monad有了解,这些都是Haskell的经典,从而对学习Haskell就有帮助。 Jaskell基本就是Haskell的语法。 刚下载JParsec源码,studying... 还有,Monad到底是什么,看过些资料和ajoo的讲解,感觉晕晕的。 Parser bind(ToParser tp); 这个就是monad? 啥叫monad,我也不懂。 monad是Haskell里面的一个臭名昭著的超级难懂的蹩脚概念。 ajoo牛的这个贴子里面给出了一个dolly羊的概念。(ajoo牛 vs dolly羊?) Java Functional In Action http://forum.javaeye.com/viewtopic.php?t=7951 解释了一下,啥叫Monad。但俺愣是没看懂。 Monad的缘起大致是这样。这haskell力求FP纯粹性,不愿意引入任何副作用,也就是说不持有任何状态。 对于IO,异常处理等需要中间状态的需求来说,就要引入Monad来解决。 Monad是一个Wrapper Class 包装类型。(Haskell里面是可以定义类型的) Monad Wrapper Class的作用类似于一个Proxy,注入AOP Interceptor,截获你的每一步方法调用,并把状态记录下来。 具体为啥能够做到这个,我对haskell语法(尤其是如何定义和使用类型的语法)不熟悉,所以看不懂。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-08-18
buaawhl 写道 balaschen 写道 buaawhl 写道 JRC的使用过程: Relation r = parser.parse(sql); Relation r1 = r.top(n).where(...); String sql = oracleVisitor.visit(r1); good!明天开始强迫自己学jaskell :lol: 自虐?:D 这个项目主要用到的是JParsec。 Parser Combinator。 学会了JParsec,就对Parsec有了解,对Monad有了解,这些都是Haskell的经典,从而对学习Haskell就有帮助。 Jaskell基本就是Haskell的语法。 体验下这个传说中臭名昭著的东东让人发狂的指数级别 |
|
| 返回顶楼 | |
|
最后更新时间:2006-08-18
jaskell不至于这么难吧?还自虐?
很多haskell里面比较难懂的东西我都剔除掉了。没有了type class,没有了类型,jaskell的难度最多是haskell的五分之一。 基本上你只要熟悉了函数调用语法——"f a b c"和"f(a,b,c)"等价,熟悉了curry的概念——"f a b c"等价于"f(a)(b)(c)"剩下的就是java的内容了阿。 不过,jrc项目用不到jaskell,写visitor的这个人也不需要知道jparsec,甚至不需要理解组合子编程,只要熟悉oo,熟悉目标sql语言就算ok。monad自然也不需要懂。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-08-19
了解OO,熟悉SQL。
想试试,java.net帐号:liuyxit 问:没加入前,是不是还下载不了CVS上的东西?没试壶java.net的cvs,用户就是网站上的用户吗? |
|
| 返回顶楼 | |
|
最后更新时间:2006-08-19
已下了源码,文档,计划,安排如何进行?
另是从Branch上拿,还是Head上拿? 先查查资料先... |
|
| 返回顶楼 | |
|
最后更新时间:2006-08-30
访问dev.java.net的速度真慢,而且,我早先的帐号都不记得密码了
新申请一个帐号:zcjl_516,请ajoo加入一下,想看看JRC的实现情况 ps:能不能在国内网站(比如JE, RedSaga, jscud)上建一个镜像啊? |
|
| 返回顶楼 | |












