关键词:
函数式语言
编译原理
形式语言
面向对象
摘要:
Leaf语言的目标是设计一种简洁易用的函数式语言。这种编程语言是采用静态类型,可以进行类型推导的编译型语言。函数式语言具有较好的数学性质及高度的抽象性,因此具备了更强的生产力,更清晰的抽象模块能力和良好的可读性。Leaf语言采用接近脚本语言的语法,使其可容易扩展为游戏脚本引擎,浏览器脚本引擎,也可以作为一种通用的编程语言。其静态类型的安全可靠性可为浏览器和游戏脚本实现提供新的可行方案。本文分析了λ演算理论,讨论了程序语言实现的几种模式。通过分析程序语言和编译原理相关理论,设计了一种函数式语言,给出了其标准的文法定义,并通过编写编译器程序给出了实现方式,并进行了 一定的优化。本文首先设计了编程语言的核心语法,设计了文法产生式和中间语言格式,然后进行了软件整体结构设计,实现了编程语言的编译器,最后对所设计的编程语言的各种功能进行了测试。本文设计的编译器分为六个模块,分别是词法分析,语法分析,符号表,语义分析,中间代码生成和字节码解释模块。编译器的实现使用了 C#语言,给出了设计思路和部分数据结构代码。编译优化部分主要使用了与机器无关的优化对编译器进行优化。本文实现了带类型修正功能的自动类型推断的类型检查器,通过Hindley-Milner类型推断算法的推断错误会进一步在类型检查中完善,修正,进一步提高了类型推断能力。本文实现了 Leaf语言交互执行环境,用于解释代码字符串,实现了编译到字节码。