Tiger语言参考手册(1)

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

那么,让我们开始吧

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

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

###1.词法
标识符是一个由字母、数字以及下划线组成的序列,必须由字母开头。同时,Tiger语言的标识符是大小写敏感的。

注释可以出现在任意两个标记之间,以/*开头,*/结尾。注释可以嵌套。空白字符将会被忽略。

整形常量是由一个或多个十进制数字(即0123456789)组成的序列。没有负整形常量,如果需要负整形常量,可以通过在整形常量前添加一元操作符-获得。

字符串是一个有零个或多个可打印的字符、空格字符(空格、tab、换行、回车、换页符)或由双引号"包围的转义序列。每个转义序列都是由一个反斜杠\开头的,并且代表一些字符序列。这些转义序列是

  • \n 换行
  • \t Tab
  • \" 双引号
  • \\ 反斜杠
  • \^c Control-c, c是@A…Z[]^_.中的任意一个
  • \ddd 表示由ddd(三位十进制数字)表示的ASCII码
  • \…\\包围的任意空白字符(空格、tab、换行、回车、换页符)将会被忽略,这使得一个以反斜杠结尾并开头的字符串可以跨行。

Tiger语言中有一些标识符是保留的,这些标识符是:
array berak do else end for function if in let nil of then to type var while

Tiger语言中使用的标点符号有:
, : ; ( ) [ ] { } . + - * / = <> < <= > >= & | :=

第一部分词法到此结束。

###To be continued