Hoes of Tech

Conceptualization of Technology

  • Build Compiler with LALR(1) Parser Generator(I)

    其实从几年前开始就一直想着自己写个编译器, 不管是用LLVM编译成native code还是基于自己写的VM。起因不仅仅是因为写个编译器很“酷”, 它还是很多东西的基础——比如游戏引擎,Machine Learning时的配置文件(因为很多Parameters是需要动态改变的)。之前已经试过数次,但都因为各种各样的原因放弃了。几年过去,现在又萌生了这个想法,反正都要从头来, 干脆把这些都记录下来,就算再扔掉也不会从零开始。

    之前曾经用过flex+yacc,也手写过LL(1)的Parser,但我并不喜欢C语言,也不打算折腾个底朝天,因为最近一直在用D语言,恰好DLang里有LALR(1)的Parser Generator - dunnart.于是以此为基础来试一试。

    如果你不了解D语言,也不需要担心,它的语法很像C/C++,比如一个最简单的Hello,World:

    import std.stdio;
    void main(string[] args){ 
        writeln("Hello, World!"); 
        return; 
    }
    

    如果后面遇到特殊的语法 …

    Read more...

  • A New Blog

    之前已经好多次想过建个博客, 把自己的想法写下来。之前用过现有的博客服务, 包括国内的博客圆, CSDN,还有LiveDoor和Tumblr, 感觉并不符合我的需求, 大部分博客网站都不支持LaTex,并且没有好的Code Highlighting,最终决定用Static Site Generator, 一个是可以自己自由的修改模板, 另外还可以用Pygments的实现漂亮的高亮。 折腾了两三天,最终选择了Pelican, 有MathJax插件,并且配合已经有的Bootstrap3 Theme看起来很简洁,基本满足了要求。

    Hosting在最初并没有过多去想,本来以为HTML无非就是提供一个小容量的httpd server,应该很容易找到服务商。实际找起来才发现并不多,能够考虑的似乎只有fc2, ninja和github。其中fc2已经取得了网络防火长城的认证,在国内不管怎么登录永远是链接被重置。最终用了ninja,看起来在国内也能正常访问,并且速度很快--比fc2稍微快一点:

    • Ninja: 0.029s
    • FC2: 0.317s
    • Github: 1.249s

    唯一的遗憾是会在页面末尾追加广告, 并且很长,不过如果我能坚持把博客写下去的话,也并不会在意每年花一千多去掉广告--当然,能坚持下去的话。

    毕竟1000块(日元 …

    Read more...