我们组的编译原理实验将要实现的是《Modern Compiler Implementation in ML》中描述的Tiger语言,但是现在对该语言还不是太了解。以下是阅读书的512~521页的《Tiger Language Reference Manual》以及这篇文档后的一些笔记。这将会是一个系列。

那么,让我们开始吧

这篇文档是Tiger语言的参考手册,该语言是在Andrew Appel的《Modern Compiler Implementation in ML》一书中定义的。

Tiger语言是一个很简单的命令式语言,它有integer以及string类型的变量,以及数组、记录和嵌套函数。它的语法类似于一些函数式语言。

阅读全文 »

###语言的名字:
Tig

一个Tiger语言的实现

###语言可能包含的设施

  1. 词法分析
  2. 语法分析
  3. 抽象语法树
  4. 语义分析
  5. 中间代码生成
  6. 生成完整的程序

###可能存在的与众不同、亮点
可能存在的最大亮点是我们准备利用函数式语言ML(使用standard ML实现)来完成整个编译器。

使用函数式语言ML编写编译器有以下几个优点

  • ML语言有垃圾回收机制,在编写类似于编译器这样复杂的程序时,垃圾收集将很大程度上提升效率,并且减少我们编程过程中的失误。
  • ML使用尾递归,这将减少堆栈空间的使用。
  • ML语言中的数据类型与编译过程中的相匹配
  • ML语言的类型构造可以相当美妙的描述语法树
  • ML语言足够安全
  • ML语言有ML-Lex、ML-Yacc等编写编译器时需要的资源

###已知的完成该项目可以利用的资源
目前已知的有《Modern Compiler Implementation in ML》一书,以及对应的Tiger语言手册

暂时没有找到用ML语言实现的Tiger编译器,可以使用C语言或Java语言的实现进行参考。

###其他设想
在《Modern Compiler》一书的第二部分,包含了对原有编译器的面向对象支持、函数式语言支持,如果时间允许的话,希望能够尝试给Tig增加函数式语言的支持。

Favicon是favorites icon的缩写,亦被称为website icon(网页图标)、page icon(页面图标)或urlicon(URL图标)。Favicon是与某个网站或网页相关联的图标。网站设计者可以多种方式创建这种图标,而目前也有很多网页浏览器支持此功能。浏览器可以将favicon显示于浏览器的地址栏中,也可置于书签列表的网站名前,还可以放在标签式浏览界面中的页标题前。

比较直观的就是看图,比如我这个博客的favicon就可以在下面两个地方看到。

地址栏

书签栏

W3C对于Favicon有这样的建议,有兴趣的可以去参考一下。

今天我想谈的主要是Hexo这个轻博客如何添加Favicon的问题。

阅读全文 »

首先,题目的“LOL”绝对不是英雄联盟的意思。

今天去驾校考完路考和文明驾驶,拿了驾照回校之后,本来想去hack一下RogerLee放在中央大道的鼎的,结果碰上了一个也玩ingress的学长,顺便交流了一下技巧(基本上是他在教我)。

点开有吐槽。

阅读全文 »

最近听歌的时候突然想把NowPlaying通过微博等方式分享给别人,但是搜了一下,发现没有OS X的NowPlaying App,只有一个Alfred插件帽子微博,但是好像已经失效了,无法分享,所以就想自己动手写一个。

于是就有了这个App。

阅读全文 »

Hexo是个很好的博客,但是由于作者是台湾人,所以评论使用的是disqus,分享的相关代码的位置在使用的是addthis。很可惜,评论、分享时使用的
资本主义的那一套社交网络都无法使用(Just you know why~~~)

所以,拿起铁锹,让我们来对Hexo进行社会主义大改造!

阅读全文 »