Category: 未分类

  • 让人郁闷的CUP调试

    首先定义了一种词法描述格式,并按照它写了某语言的词法规范。 为处理这种词法描述,用JFlex配合CUP为它生成了一个语法分析器,它分析前述的词法描述,产生一个抽象语法树(AST),这样就方便处理词法描述了。 有一个NFA产生器,它遍历那个AST并输出一个NFA。 最后又有一个NFA模拟器,它以从某语言的词法规范得来的NFA和一份该语言源代码为输入,输出词法分析的结果。 真是一个复杂的过程,说清楚可不容易,尤其是我用Java语言实现,所测试的”某语言”又与Java语言相似,期间很多时候都把自己搞得很糊涂。 今天写CUP文件时有个非终结符的产生式全部没有加action。那是一个Statement类的产生式,导致最后语句块的statements()元素全部都是null。CUP生成的文件好大好复杂,跟踪了很久才发现这个弱智的错误,本来想11点就睡觉的,结果拖到现在,都两点了,不过还好找出来了,不然睡觉也不安生。之后又除去一些稍容易定位的bug,目前已经能输出词法分析的结果了,不过还不完善,就等明天了。 似乎又有以前那种找出深藏程序中的bug后喜悦的感觉了。兴奋之余,不禁对那些开发编译器的人肃然起敬,那是多么复杂的脑力劳动!Compiler, lexer generator, parser generator,它们发展的过程中有多少鸡生蛋,蛋生鸡的循环反复呢?我总是很惊奇,看似毫无头绪的技术竟然能总结成一个完整的理论体系,竟然能写出一本不是太难懂的书(Dragon book)。自动机理论、语法分析的体系化方法,多是数学家、计算机专家的杰作。像我这样的人,只能冥思苦想怎么使用它们,也许是天赋,但主要是对待工作的态度所致。 告诫自己,无论如何,学习是最有用的,绝不能在没用的事情上,尤其是游戏,耽误过多的时间。 Del.icio.us : CUP, compiler

  • 还是Babylon好用

    翻译软件我以前一直都在用金山词霸。在论坛里别人常常谈Babylon,最近刚出了版本6,昨天安装了一个试了一下,确实不错。其实从功能上来讲词霸也差不多,不过我现在对于软件的看法,除了功能性外,易用、友好性和厂家(或者作者)的品质也很重要,不是我崇洋媚外,国内许多软件厂商的态度实在不欣赏。 安装文件上来说,词霸有安装盘,600多M吧大概,具体忘了,而Babylon只有两位数而已。其实词霸光翻译软件也很小,不过它带了太多的垃圾东西(似乎是有试用的毒霸、影霸?)。Babylon直接从网站上下载即可,即使你网络很差。 Babylon还支持在线词典,词霸我不太清楚,好像没有吧。Babylon添加词典也很方便,到它官方网站下就可以了,有许多免费的,一般大小在几个M,不是很大,不过wikipedia可是很大的,呵呵,差不多一个G了。有很多优秀的词典如Oxford、Merriam-Webster等,不过要收费。 最关键的还是取词方式。好多人说Babylon只能鼠标点击取词不方便,不能像词霸那样方便地鼠标悬停取词。我原来也是这样认为而不想换用Babylon,不过越来越觉得鼠标移上去就翻译实在很影响工作或阅读。尤其是有时候使用软件的菜单,词霸会不识时务地用它的浮动窗口把子菜单盖住,弄得很郁闷。当然它有选项可以加辅助键取词。但金山词霸这种取词方式还是不大好,似乎是用了Windows编程中的钩子技术(不知道Babylon有没有使用)吧,有时候会让程序崩溃。比如你用Visual Studio写程序的时候千万别开词霸自动取词,你未保存的程序随时可能丢失。至少还没听说Babylon有这样的问题。另外金山词霸在某些程序中无法取词,比如Eclipse的编辑器,Babylon不受这个限制。 当然了,如果你所阅读的东西满篇都是生词,金山词霸的词方式还是首选。对于有一定英语阅读能力的人,Babylon更好一些。想起来Linux里用的那个StarDict,选中取词的方法是真的不方便,可能是受限于X Window的API吧,不知道它的Windows版本怎么样? 许多用户对Babylon的评价是"优秀的软件"。最后,附一张Babylon 6的截图,很清爽: Del.icio.us : babylon, 翻译软件

  • 不打游戏了

    上学期末开始打魔兽,打到现在,浪费了太多的时间。 最近是CS、魔兽轮着玩,晚上睡觉时想着第二天要做点事情,不过一起床就又想玩了。现在做论文是有点费劲、无聊,每次做得郁闷的时候,或者做得有点成果的时候,就想打游戏了,呵呵。 今天WEG终于结束了,我也想着打游戏要停一下了,先把论文做好了再说。 也不是没有其它的事情,每次跟家里联系,总感觉自己应该挣点钱,总感觉很对不起家里。可是过几天就又忘记了,真是惭愧。爸爸现在身体不太好,想着找个时间得让他找个好医院检查一下。忽然觉得自己太没有责任心了。 以前有事情了总是心里惦记着,想尽早地完成,现在学会往后拖了,正在做的论文就是这样,面对比较烦的问题时就不想努力做下去。 这些天上网多一些,发现许多全新的东西,感觉自己还是要多关注学习,不只是学业中所必需的任务,多关心那些IT界的新事物也很有益处。魔兽删了,CS也删了。学习累了就睡觉吧,或者写写BLOG,也比玩游戏强多了。 Del.icio.us : 游戏

  • 又到一年劳动节

    五一节就来了。 想那些旅游胜地肯定又是人满为患,即使是合肥的野生动物园,路上也走不通了,所以我们就算想去游玩,也不会选择在五一期间的。就待在校园吧,安安静静,跟平常一样。 前几年到这个时候就有点兴奋,不过现在这似乎对我们没有什么意义了。晚饭去一家自助吃了个大饱,然后回来CS,这就算我们庆祝劳动节了,哈哈。去和回来都从安徽大学经过,感觉气氛就是跟科大不一样,适合生活。科大,不管适合不适合学习,反正适合变态。 现在也没什么心情,这周的任务没怎么做,周报没什么可以写的,这几天要加油干了,五一过后就是中期检查。虽然检查不检查无所谓,还是想把这个项目完成,给本科划一个句号。说实在的,到这个时候,心也不好静下来,做的东西又复杂,一层套一层的,真的很乱。 劳动光荣。^_^ Del.icio.us : 劳动节

  • 配置Blog

    又给Blog的侧栏加了一个计数器,是从amazingcounters申请的。使用的时候有一个sponsor link,必须放在页面可见地方,否则计数器不可用,我就直接弄了一个空链接,呵呵,主要是那个广告比较影响市容:) 以前从来没弄过Google AdSense,今天试着申请了一下,竟然通过了。看了一下,税务方面似乎对美国以外的没有什么要求。其实也就是玩个新鲜,呵呵,本来访问这个Blog的人就没几个,谁会去点它。 今天用IE打开Blog,发现右边的侧栏挤到网页的最下面,和左边的文章页面一点都不搭界了,Firefox下好好的。很奇怪,小强和我使用一个主题,他的就显示很好。用FrontPage打开比较了半天,最后终于发现是文章里那个猴子骑斑马的图片太宽了,IE不会自动把它缩放到适合那个层的大小。现在把所有大一些的图片都重新调整了一下,IE可以正常显示了,希望以后别再出现这样的情形。 把原来有WordPress链接的栏禁用,换了与自己有关的一些链接,以后还会继续补充。 No IE那个logo去掉了,主要是看着它太和网页的本色太不协调了,呵呵,加了Firefox with Google Toolbar 和Google AdSense的推广链接,虽然颜色亮,给人感觉还是比较温和的。 DoNews的WP还是配置空间不大,大概BSP提供的都这样吧,不太可能把index.php之类的拿来让我们修改。以后有了条件还是自己找个空间,申请个域名,想怎么搞就怎么搞。 Technorati : Blog配置

  • Spread Firefox!

    用Firefox已经很习惯了,IE反倒不舒服。Tabbed browsing,只打开一个实例就可以了。舒服的增量搜索,让我现在很不习惯大多数文本编辑或查看工具的搜索方式。还有一堆好用的插件,数不过来。 我现在安装的插件不多: Tab Mix Plus–标签浏览 FlashGot–曾经因为Firefox缺乏多线程工具而痛苦,现在它已经做得很好了。 Google Toolbar for Firefox–搜索关键字提示,充分应用Firefox功能的页面关键字搜索,还有关键的一点,可以在网页上取词翻译,这可没有for IE Gmail Manager–Gmail的管理、通知程序 FoxyTunes–在Firefox里控制你喜欢的音乐播放器,foobar2000/iTunes/WinAmp等等,一般的都支持。 索性今天就在Blog的侧栏加了一栏”No IE”和”Spread Firefox”的宣传图片,呵呵。希望更多的人开始认识Firefox,使用Firefox,并喜欢它。 Technorati : Firefox, No IE

  • 猴子倒骑斑马

    合肥野生动物园我去过两次,当时还没有现在的熊猫和白虎。让人觉得不错的是那个野兽园的观光大桥,听说现在上面卖鸡了,买了马上扔下去喂野兽,就几十块钱,呵呵。 园里的孔雀和鹿是到处跑的,小鹿看见人伸手就以为是人要喂它,就跑过来了。还有海狮馆的表演也很好。 有一次去的时候在猴园看,它跟斑马园是挨着的,猴子可以去斑马那边逛。当时一只斑马在中间的栏杆旁边散步,一个猴子看见了,就在栏杆上跟着它跑,跑着跑着瞅准了就跳到斑马背上去了。又一只猴子看见了,就抓着马尾巴也爬上去了。斑马大概已经习惯了,若无其事地继续走。前几天在论坛上看同学发的动物园照片,竟然又有这样的情景,保留下来,呵呵,这个挺像故事"张果老倒骑毛驴"的吧?如下:

  • 合肥的怪异天气

    昨晚睡觉没关阳台的门,早上还不知道8点就被雷声吵醒了。 中午的时候, 往外面一看,大吃一惊,天黑得跟晚上一样,以为是日食了呢,赶紧跑出去看。可是日食应该会有预报的,原来是云层太厚了。各大网站上都报道了这个现象,呵呵。在合肥最讨厌它的天气了,不过今天让我长了见识:) 下面是两张网上复制的图片(新华网): 还有几张是同学在东区理化大楼拍的:

  • 代码生成器的弱智错误

    中缀表达式计算的翻译存在严重问题,以前的想法是,右操作数计算结果放在%ebx中,左操作数结果放%eax,再根据运算符计算即可。但仔细想想便知道,计算左操作数时,仍可能用到%ebx,所以是不可行的。 现在是把左操作数的结果放在栈上,维护一个临时空间的表,表的大小根据需要的最多临时变量确定。 目前可以翻译了,递归函数也没问题。以上问题是由于用一个binary Euclid’s algorithm求最大公约数的算法做测试而发现的,呵呵。这个算法比较有个性,不同于常见的辗转相除法。具体见 http://www.cut-the-knot.org/blue/binary.shtml

  • 开始设计实验了

    Berkeley的实验已经做到可以接受函数参数及返回值、局部变量了,不准备再继续做面向对象特性了,而开始做计算机系实验的设计。 感觉这个难度更大了,要考虑的事情更多。现在应该把玩的心收一收,集中精力完成毕业设计。如果做完得早,说不定还可以出去做兼职赚点小钱,哈哈。