弱弱地问一句,这位兄台在哪个公司工作?2008/10/9 Eric Miao <eric....@gmail.com>同感,一定要行动起来~~
2008/10/9 yangjunpro: Target locked-->Ruby++ <yangj...@gmail.com>:
--> 记得去年8月份就曾经想自己动手设计一门语言,一开始的想法是先实现一门跟自己的目标语言特征有相似性
>
> 的现存语言的编译器,在实现中积累对语言设计和实现的理解.记得当时选定了Ruby以后,就把C Ruby的源码
>
> 下载下来,打印出其语法BNF范式. 后来就是一直在研读Ruby的源码,零零星星也花了些时间,因为总是感觉对
>
> C Ruby本身的实现理解的还不够通透,就一直没有真正开始自己的实作,在我的想象中,真正动手去实现一门
>
> 编程语言(仅指实现,不包括设计层面的工作)并不是一件容易的事情,潜在的这种假想就这样让自己一直处于
>
> 储备阶段.
>
> 及至到了新公司这边,自己的第一个任务就是实现一门语言(已经有相应的IEEE标准)的编译器. 这门语言已
>
> 经比较成熟,市面上支持它的编译器很多,也不乏一些开源的实现.自己一开始当然也是下载了语言的IEEE标准
>
> 和相应的开源实现研读了一番.不过公司里的工作不像个人任务那样,总是在你感觉达到一个好整以暇的状态
>
> 以后才开始进行,项目的schedule,release的deadline往往会驱使个人在达到相对准备就绪的状态以后就需要
>
> 开始实际工作的推进了(在我的理解中,对于预研型的项目来说,可能还可以有更多的储备时间,但对于工程性
>
> 较强的项目来说,储备时间往往并不会给很长).
>
> 于是在阅读了语言的BNF描述,并对相应开源实现作了一些研究以后,自己就开始上马了.到现在为止,过去了大
>
> 概有两个月时间,回头看来,自己也基本上实现了这个语言的词法,语法部分,支持80%的核心语法,可以成功地
>
> 读入该语言的源文件,并生成内存语法树.现在自己已经开始着手作一些语意层面的事情了.这个进度还是有些
>
> 出乎自己意料之外的.在刚着手作这件工作的时候,自己其实还多少是有些忐忑不安的,因为毕竟感觉还有太多
>
> 的东西不完全处于自己的掌控中,没有那种充沛的成竹在胸的感觉. 但真的推进起来,才发现,有很多东西,很多
>
> 理解,都是在实际的工作中强化,获得的.
>
> 想想去年的8月份,自己就开始蕴酿设计一门语言,也一直在作储备工作.过了一年时间,还是停留在储备阶段,没
>
> 有开始多少实质工作. 而真的被工作驱使,却在不到两个月的时间就已经大致实现了一门以前自己并不太熟悉
>
> 的语言的parser前端. 这里面固然有部分原因是因为近一年来工作的积累让自己可以更快速的完成相应工作,
>
> 但也真切的感受到 一个问题,如果不实际动手作,仅仅是从外面看,往往会被一些表面上的困难阻塞住,产生不
>
> 可逾越的感觉,及至真的动手作了,才会发现未必然.如果不是在新公司有工作需要,自己可能还是感觉没有作
>
> 好自主实现编译器的积累. 虽然自己现在在编译器设计实现方面仍存在大量的知识薄弱项需要补充,但这并不
>
> 意味着自己不可以开始着手作一些实际的工作.总是期待达到一个完美的积累状态再去动手实际作,结果可能
>
> 就是一直陷入积累的状态不能拔出.
苗健
Eric.Miao
http://home.ustc.edu.cn/~ericm/blog/
LL或是LR 的方法是不能直接处理上下文相关的文法,
所以这种情况下需要加状态,比如
else
:else 定义一个symbol,
在lexer里头,如果是正常的lex start,碰见else就返回
else关键字,如果在:后面,就返回任意的id(这时候else
就相当于id了),这样在parser的时候,就不会有冲突。
使用lex_state大量区别不同情况.另外有些情况的处理,
在我以前的blog就写了一些。
rsmw开始写startGame部分了,估计过几周就有个样子
出来,欢迎有兴趣的朋友们加入。不过现在的代码,对于
有兴趣的朋友已经值得研究了,可以从svn上checkout出来。
On 10/13/08, Jun Yang <yangj...@gmail.com> wrote:
> 呵呵,听上去是蛮有趣的.
>
> 我看了那副截图,很cool.
>
> 对你作的ruby编译器,我有个疑问,你提到 ruby的文法中有不少上下文相关的文法规则,
>
> 我不知道你是不是指ruby的文法规则的BNF描述中包含较多的二义性冲突,需要手动调整
>
> 规则来规避这些冲突呢?
>
> 因为在我的理解中用LL或是LR 的方法是不能直接处理上下文相关的文法的。
>
> 你提到的method调用可以不加括号,在有些场景下无法跟变量区分,这样的问题我想是可以
>
> 在语意层面解决的.
>
> 比如
> 遇到了method_or_var这个id,先让parser将其作为id读入,在语法层面不区分到底是method
>
> 调用还是变量访问,在语意代码里再检索当前上下文的变量及method定义,结合语言本身的规则来确
>
> 定这个id到底是一个什么东东。不知道你最终是怎样觪决这类问题的?
>
>
> 2008/10/12 femto gary <femt...@gmail.com>
>
> > 主要是编译器部分,上面说的编译器
> > 就是ruby的编译器哈哈,ruby的文法比
> > 一般的文法(比如java的文法)复杂多了,
> > 一般来说是上下文有关文法,因为ruby的
> > 大量程序员友好特性,
> > 比如可以method调用不加括号,这样
> > 很多就跟lvar情况一样了,后面再跟一堆就
> > 是语法冲突了呵呵,还有
> > def self.else等等,都是,
> > 所以做起来比较有意思.不过runtime也很清楚,
> > 做这个项目ruby源代码研究了不少哈哈.
> > 另外最近在做的这个开源项目就是rsmw,
> > 把原来C++ 写的smw(super mario war) port
> > 到ruby上来,目前已经写好菜单跳转部分,以及
> > 菜单的动画, http://code.google.com/p/rsmw/,
> > 可以看downloads里头的截图.
> > (菜单的ui跳转等于就是一个完全的ui控件框架,
> > 因为directx的ui渲染完全是自己做的),另外动画
> > 效果就等于已经实现了帧动画的效果,所以主程序
> > 其实就剩下一个碰撞检测要做.
> >
> >
> >
> >
> > On 10/12/08, Jun Yang <yangj...@gmail.com> wrote:
> > >
> > > femtowin是xruby的开发者吧?
> > >
> > > 开发过哪些模块啊?
> > >
> > >
> > >
> > > 2008/10/10 femto gary <femt...@gmail.com>
> > >
> > > > 是的,编译器的话我也写过,
> > > > 开始的时候没有什么把握,极致写多了
> > > > 才发现其实也不难.
> > > > 另外现在就是游戏,写了才知道也不是很难,
> > > > 这里,发布了一个开源项目,http://code.google.com/p/rsmw/,
> > > > 目前写到预览中有平台的部分,平台在预览中也是可以动画
> > > > 效果的,其实基本主要逻辑已经实现了.大家可以看一下截图
> > > >
> > > >
> > > >
> > > >
> > > > On 10/10/08, Kenny Yuan <yuank...@gmail.com> wrote:
> > > > >
> 如果milestone设置不合理,会导致恶性循环。比如开发经理会想:人就像水中的海绵,挤兑成啥样就啥样……
> > > > >
> > > > > 2008/10/10 王莆中 <wangp...@gmail.com>
> > > > > > 中学的时候,暑假作业总是开学前几天做完的
> > > > > >
> > > > > > 大学的时候,课程设计总是验收前几天写完的
> > > > > > 上班的时候,项目总是在里程碑前几天搞定的
> > > > > >
> > > > > > "天下事,有所激有所逼而成者居其半"
> > > > > >
> > > > > >
> > > > > > On 10月10日, 上午9时30分, "Jun Yang" <yangjun...@gmail.com> wrote:
> > > > > > > 现在在一家小公司,刚创立还没多长时间,也没啥名气,呵呵。
> > > > > > >
> > > > > > > 2008/10/9 Jay True <glac...@gmail.com>
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > 弱弱地问一句,这位兄台在哪个公司工作?
> > > > > > >
> > > > > > > > 2008/10/9 Eric Miao <eric.mj...@gmail.com>
> > > > > > >
> > > > > > > > 同感,一定要行动起来~~
> > > > > > >
> > > > > > > >> 2008/10/9 yangjunpro: Target locked-->Ruby++
> > > <yangjun...@gmail.com>:
--> >>http://home.ustc.edu.cn/~ericm/blog/<http://home.ustc.edu.cn/%7Eericm/blog/>
> > > > > > >
> > > > > > > --
> > > > > > > yangjun...@gmail.comhttp://hi.baidu.com/yjpro
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Kenny Yuan
> > > > > C++, UI, LISP, MMA, Psychology and Automobile.
> > > > > BLOG: CS巴别塔(Computer Science Babel)
> > > > > URL: http://blog.csdn.net/yuankaining/
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Best Regards
> > > > XRuby http://xruby.com
> > > > femto http://hi.baidu.com/femto
> > > >
> > >
> > >
> > >
> > > --
> > > yangj...@gmail.com
> > > http://hi.baidu.com/yjpro
> > >
> > >
> >
> >
> > --
> >
> >
> >
> > Best Regards
> > XRuby http://xruby.com
> > femto http://hi.baidu.com/femto
> >
>
>
>
> --
> yangj...@gmail.com
> http://hi.baidu.com/yjpro
>
>
Best Regards
rsmw http://code.google.com/p/rsmw