斯坦福编译原理笔记-2 要实现的语言介绍

182 阅读1分钟

课程专用语言概述

这门语言叫cool语言,是一门面向对象的语言,cool语言设计初衷是为了学习编译器,因此它应该可以被快速实现,但如果实际应用则会带来诸多不便。

应该包含的设计要素:

1.抽象,静态类型、复用(继承)、内存管理等等。

image.png

2.完整的编译器

可以编译为 MIPS assembly language, MIPS是真正的指令集,针对于1980年代设计的机器。

3. 5个编程任务

-写一个很酷的程序
--文本分析
--解析
--语义分析
--代码生成

语法尝试

class Main {
  i : IO <- new IO;
  main(): IO {
    i.out_string("hello world"); 
  };
};
class Main inherits IO {
  main(): IO {
    self.out_string("hello world"); 
  };
};

这儿实际写了一个阶乘程序,大家可以去看视频,

class Main {
  main(): Int {
    (new IO).out_string((new IO).in_string().concat("\n\"));
  };
};

赋值符号 <-

后面实现了一个字符串的连接,扁平化函数,不太好描述,看视频更清楚一点