浏览模式: 普通 | 列表
1 | 2 | >

从coco/r 迁移到 antlr 心得体会

[ 2007-03-28 21:18:47 | 作者: progame ]
终于将sql broker从coco/r迁移到antlr了,并且把单元测试都跑得通过了,总结下来,转换工作量不是太大,我加起来用了2个工作日左右,语法文件大小从原来的1200多行到现在的1500多行,首先看一个例子的不同语法定义

coco/r :
InsertValue<out InsertValue node>  =
    (. node = new InsertValue(); .)
    ("DEFAULT" (. ExceptLevel(2); node.usedefault = true; .)
    | Expression<out node.expression> )
.

antlr:
insertvalue
  returns [InsertValue node]
  { node = new InsertValue(); }
  :
  (DEFAULT { ExceptLevel(2); node.usedefault = true; }
  | {Expression exp = null;} exp = expression {node.expression = exp;} )
;

一些区别:
1、antlr中keyword必须定义在lexer中,而且不能发生LL冲突,否则需要放入tokens节,这点coco/r要方便很多
2、因为antlr的[]是参数定义,所以coco/r中的表示zero or one的 '[]'就不能用了,必须'()?'
3、{}在antlr中为代码段,等同coco/r的(..),所以不能再用它表示zero or more,而应该使用'()*'
4、coco/r 可以用t.val得到最后一个token的value,而antlr中可以使用LT(0),依此类推,还可以使用LT(1), LT(-1)...,另外就是可通过定义符号来取值
5、antlr的buildast应该比较有用,我可以通过它构建初步的AST,再根据这个AST生成我自己的AST,但因为原来coco/r是直接通过嵌入代码构造好了最终的AST,所以就没有用antlr的这个功能,况且要重复在TreeParser中定义一次类似的语法也挺烦人的

我坐在天桥上看风景...

[ 2007-03-25 23:04:00 | 作者: progame ]
今天去地铁站等人,百无聊赖下又逛到去南广场的天桥上
http://lh6.google.com/coader/Rrxud-yWYvI/AAAAAAAAADM/lWECWya386s/s288/20070325264.jpg


02年的8月初,我来到了上海,寄宿在老梦的公司宿舍,口袋里揣着上海地图和简历,每天赶场似地参加各种人才交流会,有时一天要参加3场之多,从地铁走回住的地方要半个多小时,每天花费的就是固定的两餐饭钱,每次5元,上海快餐店里最常见的2荤3素,有时也会4元,1荤3素,再就是买人才报,参加招聘会,地铁公交的路费,其它就不敢乱花了,可即使这样,包里的钱还是一天天少下去,心里开始焦急起来:(

那时,如果当天没有招聘会,一整天我就会无处可去,因为坐地铁对我来说也是一笔颇大的开销(只有刚到上海时我才去南京路和外滩逛了一下,没有大的感觉,唯一的感觉就是想便便,于是找了新世界还是哪个大商场去解决了一下),在无处可处无钱可花的情况下我会走到莘庄地铁站,买一份报纸,坐在这个天桥的侧面,读一读报纸,看一看过往的人群,以打发时间,这样耗掉三两个小时后,再走回去吃中饭或晚饭,因为长时间坐一个地方太显眼,所以我会换着地方坐着,偶尔起来走一走,四处溜达一下...

我忘了具体的日期了,大概这种情况维持了3个星期吧,在我带来的1000元还剩下600元左右的时候,终于找到一份工作了,其实当时真的挺无知的,而且简历写得又不能吸引人,但终究是有吃饭的钱了

时间过去近5年了,但这段艰苦的日子无法忘怀,我坐在天桥上看风景,而这也成了我记忆里的一道永远的风景...

剪得断,理还乱

[ 2007-03-18 14:56:25 | 作者: progame ]
今天,一个没有阳光的日子,阴沉的天气似乎在预示着什么,对了,今天是个理发的好日子啊,我对自己说,你不要以为自己是个诗人就可以一直留长头发,冬天已经过去了,天气慢慢地热起来,我留天不留啊,还是把这三千烦恼丝弄弄短吧

想不到理发还要等,于是坐了会,轮到我了,说后面剪短,前面按原来的一半长度好了,不能再盖到耳朵遮住眼睛,于是开剪,过程中因为要弄湿头发,不停地喷水,因为头发太多了,估计一瓶水给喷没了。我问理发师猜一猜我头发多长时间没理了,他说8,9个月吧,我告诉他有十几个月了,我上一次剪还是五一的时候,我也没记得,还是小马告诉我的

开始理的时候并不是动剪,而是用刀在打头发,我担心会不会弄得头发以后分叉,因为这样横切面不平整可能,但他说没事。理好后,我跟理发师说,你这梳子齿好尖啊,弄得头好痛,他说这个是最钝的一个了,比这尖得多的我还没用呢。我说哦,对了,因为我从来不用梳子也从来不梳头的,一下子受不了这个刺激

弄好回来,把衣服上的头发整干净,再洗个头,现在头发干起来快了,不像以前起码得3小时才能完全干掉,然后去了趟超市,在超市无处不在的镜子里,悲哀地发现我的头发还是偏黄的,看来营养不良啊,得想办法补补了。。。

最近返朴归真了,风格越来越接近小学生作文,所以说伟大的诗人之所以伟大,就在于他保留了这份童真

(转)巴比伦富翁的理财课--第三部分 [私人]

[ 2007-03-14 11:00:30 | 作者: progame ]
第三部分 巴比伦放债人的忠告第16节 一头驴子的教训(1)

Characters主要人物
●罗丹(Rodan)———一位年轻的矛头设计和制造工匠,技艺精湛。
●马松(Mathon)———钱庄老板,著名的黄金借贷人,巴比伦富翁之一。
●阿拉曼(Araman)———一个普通人,罗丹的姐夫。
罗丹是巴比伦一位出色的矛头工匠,他现在正开心无比地走在国王宫殿外宽大的马路上。他的确值得开心,因为他的皮囊里装满了足足50块黄金!50块黄金啊!这是他从未拥有过的黄金数量,他高兴得恨不得跳起来。随着他昂首阔步地向前迈步,每一个步伐都弄得皮囊里的金子叮当作响,这也许是罗丹从来都没有听过的最美妙的音乐。
50块黄金!完全属于自己的黄金!他简直无法理解这竟然是真的,甚至无法相信自己有如此的幸运。这些金子到底意味着什么?蕴含着怎样的力量呢?至少,它们可以用来购买罗丹想要的许多东西,一幢豪宅、一片土地、一群牛、骆驼、马或者华丽的战车———任何他想要的东西也许都能买到!
他应该怎样使用这些黄金呢?当天晚上,当他转进他姐姐家的街角时,他满脑子全是这些熠熠闪发光、沉甸甸的黄金,似乎除此之外,全世界其他东西都不屑存在了。
但仅仅是几天之后的一个黄昏,一脸困惑的罗丹却再也高兴不起来了,他心事重重地走进了马松的钱庄店铺。马松是一个经营黄金借贷业务和买卖珠宝、丝织品的生意人。罗丹瞧也不瞧店里左右两边摆得琳琅满目的货品,径直越过待客处,笔直地往里头走。他一眼就暼见优雅的马松斜倚在毯子上,正享受着黑奴端上来的食物。
罗丹两脚微微张开,半敞着的皮外套微露出胸毛,一头雾水的样子,站在马松面前,嗫嚅着说:“我,我想找你商量一件事,因为,我实在不知道该怎么办才好。”
马松消瘦、泛黄的脸庞立刻露出友善的笑意,向罗丹打了一个招呼,问道:“你到底做了什么后悔莫及的事,这下子居然需要找到钱庄来了?是不是在赌桌上运气不好?或者有什么丰满而美丽的女子令你迷惑?我认识你这么多年以来,你从未找过我替你解决什么困难。”
“不!不!不是那样的。我不是来借金子的,我只是希望你能给我一些明智的忠告。”
“听啊!你听!这个人在说些什么呀?从来就没有人会找出借黄金的人寻求忠告,我的耳朵一定是出毛病了吧。”
...

阅读全文...

(转)巴比伦富翁的理财课--第二部分 [私人]

[ 2007-03-14 10:58:33 | 作者: progame ]
第二部分 奴隶和自由人的灵魂第5节 放纵自己终结苦果

主要人物(Characters)
●塔卡德(Tarkad)———欠债不还,无所事事的年轻人。阿祖尔的儿子。
●达巴希尔(Dabasir)———巴比伦富翁之一,骆驼交易商,曾经沦为叙利亚奴隶。
●考斯柯(Kauskor)———一家客栈和餐厅的掌柜。
●希拉(Sira)———叙利亚某沙漠部落首领的正妻,达巴希尔曾经的女主人。

是你自己的软弱使你沦落到今天的这种地步,你又怎能配得上称自己是自由人呢?我告诉你,假如一个人自己内心里面就藏着奴隶的灵魂,无论他的出身如何,他终究将沦为奴隶,仿佛水自然就会往低处流一样,不是吗?假如一个人自己内心里具有自由人的灵魂,无论他再怎么遭遇不幸,他仍然能在自己的城市里获得荣誉并受人尊敬,不是吗?
其实,你的债务就是你最大的敌人!是它们逼得你被迫逃离巴比伦。你若放任它们不予理会,它们就会变得比你更加强大。当你把它们看作是你的敌人,并与它们进行殊死的战斗,你最终就将制服它们,重新成为城里受敬重的人。
——希拉,一位智慧的女人
当一个人越饿的时候,他的神志也许就越清醒,也就越容易嗅出食物的味道。
阿祖尔(Azure)的儿子塔卡德现在肯定就这么认为。因为他已经整整两天没有吃什么东西了,只吃了两颗从别人花园里偷偷摘下来的小无花果。他还来不及再多摘一颗,就被气急败坏冲上来的妇人追赶到了街上。当塔卡德逃跑着穿过集贸市场时,耳边还依然萦绕着那位妇人刺耳谩骂的尖叫声。这尖叫声令他对市场里商贩们的水果不敢再有丝毫的轻举妄动,尽管这时任何能够果腹的东西都会让他垂涎欲滴。
塔卡德从来就不知道这些东西究竟是如何被送进巴比伦各个集市的,也从未发觉食物的味道竟然会如此这般地诱人。他匆匆离开市场,穿过街头,来到一家客栈前。他来来回回地踱着方步,心里想着也许能在客栈里遇到一位他认识的人,可以借点钱,好让不友善的老板带着笑容欢迎他。若能如此,可就真是帮了他的大忙,因为他知道要是没有钱,没有哪位老板会欢迎他,就连跑堂的也都是认钱不认人的。
他正出神地想着想着,忽地与一个他最不情愿见到的人撞了个正着,此人正是高大消瘦的...

阅读全文...

(转)巴比伦富翁的理财课--第一部分 [私人]

[ 2007-03-14 10:56:56 | 作者: progame ]
第一部分 来自诺丁汉大学的两封信第1节 发现巴比伦的繁荣与荣耀

今天的人们如果能够穿越时空隧道,去追溯人类最为遥远的文明,那么令人叹为观止的“巴比伦(Babylon)王国”就会赫然跃入你的眼帘,给人无穷的悸羡和遐想……
历史上的巴比伦的确是一座令人神往的古城,它位于幼发拉底河(Euphrate)和底格里斯河(Tigris)的交汇处。早在公元前1890年左右,阿摩利人就以巴比伦为都城,建立了古巴比伦王国。在古巴比伦最出色的国王汉谟拉比(Hammurabi)死后,巴比伦不断受到外族的进攻,历经了500多年的战乱,直到公元前7世纪末,才在尼布甲尼撒(Nebuchadnezzar)的领导下,建立了新巴比伦王国。然而,88年后,新巴比伦王国又被波斯人(Persian)彻底毁灭。随着巴比伦王朝的倾覆,显赫一时的古城巴比伦,也日渐消失在尘土荒草之中,隐去了许多神秘的奇观和历史。
在巴比伦王国时期,巴比伦无疑是古代两河流域地区最壮丽最繁华的都城,它继承了苏美尔人和阿卡德人的文明成果并发扬光大,从而把美索不达米亚(Mesopotamia)文明推到了一个璀璨的顶峰。巴比伦古城有内外两道城墙,城里最壮观的建筑物,就是尼布甲尼撒王宫和著名的空中花园,以及那座据说让上帝都感到又惊又怒的巴别通天塔(Babel)。
据《圣经·旧约》记载,人类最早的祖先在两河流域定居下来后,日子越过越好。于是他们决定修一座可以通到天上去的高塔。他们用砖和河泥作为建筑材料,直到有一天,高高的塔项已冲入云霄。上帝耶和华得知此事,认为这是人类虚荣心的象征。他心想,人们因为讲同样的语言才能建起这样的巨塔,所以他决定让人世间的语言发生混乱。后来人们就把巴比伦叫做“冒犯上帝的城市。”
巴别通天塔可以从《圣经·旧约》中找到不少珍贵的踪迹,空中花园的再现就得感谢公元前三世纪腓尼基(Phoenicia)的旅行家昂蒂帕克,他最早提出的“世界七大奇迹”之一就是巴比伦的空中花园。
据说尼布甲尼撒当政时,有一位美丽的王妃叫阿密斯提,她来自一个多山的国家———米底(Media),那里有着郁郁葱葱的原始森林和满山遍野的鲜花青草。但干燥的美索不达米亚平原上连树都少见,更没有森林花草。于是王妃“思乡成疾”,整日里闷闷不乐。为治愈心上人的“思乡病”,于是尼布甲尼撒下令建造空中花园。
...

阅读全文...

(转)巴比伦富翁的理财课--前言 [私人]

[ 2007-03-14 10:55:30 | 作者: progame ]
前言中文版序

大约12年前,伯父从美国回来时送给了我这本英文书,并一本正经地嘱我Read it over and over(翻来覆去地反复读),还唾沫四溅地大声号称会Change my life(改变我的人生)。看着他红脖子涨脸,又碍于情面,便装模作样地保证遵命。私底下草草地翻阅了不到一半,才第一次明白了什么叫做大失所望。于是,果断而明智地盖棺定论:死板老调,滑稽可笑!因为我当时研究生刚毕业两年,正踌躇满志,还稍微有点儿春风得意,如此这般的一本“小儿科”,与我的雄心大略相比,简直是笑死人了。
就在两年多前,我偶然开始关心亚马逊网站的图书排行榜。咦?……奇怪呀?没有搞错吧?这本“小破书”居然不时高居榜首,在一百多万册图书中经常Rank(排在)前50名之内(顺便提及,写这篇序时是2004年10月18日,Rank 35位)。而且五花八门的好评如那个潮啊,把钱塘江大潮都比得没了影。难道,难道全世界人民都傻了吗?开什么国际玩笑?!
就这样断断续续地过了一年多,这本书好像偏偏要与我作对,就跟患了高血压似的,很少看见它降下来。不行!我得找来看看。今年暑期,终于付诸行动,从头到尾读了一遍,这叫做不看不知道,一看还真的吓了一大跳:太棒啦!棒极了!简直完美之极!当我认真地Read it over and over,这才第一次明白了什么叫做追悔莫及!如果,我是说如果,我当初真的好好地读了,那么……那么现在我的积蓄单上至少……至少会多出来 ╳ ╳ ╳ 万元(不好意思,属个人隐私)。有了这 ╳ ╳ ╳ 万元,我还翻什么书译啊,白天黑夜里头晕眼胀地敲键盘我容易吗(况且,我还只会微软双拼)?
但话说回来,本人有时候的确深具爱国之心,强烈感觉时下国人同胞每个人都应该必读此书!苦了我一个,幸福10亿人嘛!便夜以继日乐此不疲地进行翻译工作,甚至到了兴致盎然忘乎所以的地步,竟然时不常会产生给最高领导同志写封信的冲动,呼吁政府有关部门买下此书赠给每一位老百姓,那可就真是功比天大啊。如果咱黎民百姓都能深谙理财致富之道,那咱国家不就更能兴旺发达了吗?
另一方面,稍微冷静时我又开始有些担心,该不会因我自己一时主观冲动,浪费精力翻译俗品而蹉跎贵重光阴了吧?为了稳妥可靠起见,我煞有介事地列了一个提纲,前前后后找了大约50余位亲朋好友,与他们详...

阅读全文...

Sql Server数据同步之推拉式

[ 2007-03-13 22:49:46 | 作者: progame ]
推是Push,拉是Pull,两个长得倒是挺像的,别搞混了,为什么我们要分清推式订阅和拉式订阅呢?因为我们要解决在Internet动态IP的问题。

当我们的发布端是固定IP而订阅端为动态IP时,怎么办?那么只能是拉式订阅,因为订阅端主动到有固定IP的发布服务器去取数据,或者把自己的更新提交到发布服务器;当我们的发布端为动态IP时,那么只能是由发布端推给订阅端了,因为发布端知道订阅端的IP嘛,有目的地就可以直达了。

那么有人问了,如果两边都是动态IP怎么办?那么我们只好把它们变成静态了,怎么变?比如说通过VPN,那么相当于两个有固定IP的局域网内的Server,同步是完全没有问题的,而且还多了那么一点安全性,毕竟Sql Server不用暴露在外网上。

另外多说一句,Sql Server2005的集成界面真是不好用,完成一个任务得东点一下西点一下,要集成你就都集成吧,结果Replicaiton monitor还得单独启一个exe,不知怎么搞的。

通天塔 塔通天 通天宝塔共七层

[ 2007-03-10 22:18:58 | 作者: progame ]
金球奖大捷,奥斯卡提名,当然最后奥斯卡大败而归,但不可否认这片子一下子变得很热了,很想看呢,那天偶尔听到电视上在介绍<<火线交错>>,心想这个破片我都下载起码有一个月了,几次提起精神来看没看下去,有什么好介绍的。谁知电视上说这破片子其实就是<<通天塔>>(也叫 Babel -- 巴别塔),啊,原来放电脑上好几个星期的就是那块被石头包着的和氏璧啊,看来名声这东西有总比没有要好。

那么就看吧,好长的片子啊,两个多小时,讲了几个可以串在一起的故事,查了下大家的评论,说这片子在讲沟通的重要性,我倒是没多少感觉,只是感到很多时候事情不恶化到一定程度时,人们是不知道忏悔的。现在的导演为什么总喜欢赤裸裸地表现自己的看法呢,日本女高中生一定要赤裸裸地来表达自己的孤独么?我们要矜持,要含蓄,要隐忍,要宽容。。。要的东西太多了,不如先学会不要吧,比如说不要看完这么颇受赞誉的片子却只憋出这么几个烂字来。

等车的烦恼

[ 2007-03-08 22:13:02 | 作者: progame ]
今天晚上去老梦处拿书,结果因为遵守交规没有乱穿马路,眼睁睁地看着上海春城的班车从马路对面开过去,然后因此等了20分钟才坐下一班车到莲花路地铁。到地铁后有两种方案,一种是10分钟地铁+20分钟走路,另一种是10分钟公交+不定时的等车,结果我盘算了一下,后面一种在取平均值(假设704三十分钟一趟)的情况下还是有点优势的,于是我选择了等......

有一个著名的理论,人们永远觉得自己排的队伍是行进得最慢的,等车也一样,其它的车次都过去好几班了,依然没有704的踪影出现,时间慢慢地流逝,如果换第一种方案,感觉刚才等的时间又不值,如果直接打的,恐怕下一分钟704就来了,就是因为不舍,所以才失去更多,世事大抵如是......

等了30分钟左右,车总算来了,也就是说,我正处于一种最坏情况,可能在我等车前一分钟刚刚开走一班704,这事情,上哪说理去?按照鱼市理论,在等车时,既然着急是于事无补的,那我们可以欢天喜地地等,在等的时候买两串烧烤,玩一玩手机游戏,看一看身边的美女......
1 | 2 | >