论坛首页 Java版 企业应用

ajoo JRC

浏览 16916 次
锁定老贴子 主题: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);
   
最后更新时间:2006-08-18
buaawhl 写道

JRC的使用过程:

Relation r = parser.parse(sql);

Relation r1 = r.top(n).where(...);

String sql = oracleVisitor.visit(r1);


good!明天开始强迫自己学jaskell
   
0 请登录后投票
最后更新时间: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的语法。
   
0 请登录后投票
最后更新时间:2006-08-18
buaawhl 写道

这个项目主要用到的是JParsec。 Parser Combinator。
学会了JParsec,就对Parsec有了解,对Monad有了解,这些都是Haskell的经典,从而对学习Haskell就有帮助。
Jaskell基本就是Haskell的语法。


刚下载JParsec源码,studying...

还有,Monad到底是什么,看过些资料和ajoo的讲解,感觉晕晕的。

Parser bind(ToParser tp);

这个就是monad?
   
0 请登录后投票
最后更新时间: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语法(尤其是如何定义和使用类型的语法)不熟悉,所以看不懂。
   
0 请登录后投票
最后更新时间: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的语法。


体验下这个传说中臭名昭著的东东让人发狂的指数级别
   
0 请登录后投票
最后更新时间: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自然也不需要懂。
   
0 请登录后投票
最后更新时间:2006-08-19
了解OO,熟悉SQL。
想试试,java.net帐号:liuyxit

问:没加入前,是不是还下载不了CVS上的东西?没试壶java.net的cvs,用户就是网站上的用户吗?
   
0 请登录后投票
最后更新时间:2006-08-19
已下了源码,文档,计划,安排如何进行?

另是从Branch上拿,还是Head上拿?
先查查资料先...
   
0 请登录后投票
最后更新时间:2006-08-30
访问dev.java.net的速度真慢,而且,我早先的帐号都不记得密码了
新申请一个帐号:zcjl_516,请ajoo加入一下,想看看JRC的实现情况

ps:能不能在国内网站(比如JE, RedSaga, jscud)上建一个镜像啊?
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐