编译器开发与Lindenmayer系统详解
编译器开发经典方法
经典的编译器开发方法会使用一些已知的模型,如下:
- 正则表达式
- 有限自动机
- 形式文法
- 下推自动机
- 递归解析器
编译器的关键部分,如扫描器和解析器,可基于特殊的高级描述自动生成。扫描器的高级描述基于正则表达式风格的工具,用于定义一组编程语言的标记,自动生成的扫描器通常基于确定性有限自动机的思想。而解析器的高级描述功能由形式文法实现,生成的解析器以下推自动机或递归下降解析器为基础模型。将解析器转变为翻译器、解释器或编译器的算法操作通常用通用编程语言编写,经典的编译器开发工具通常基于C语言,而Coco/R项目使用C#。
TinyCode编译器练习
以下是针对TinyCode编译器的一些扩展练习:
1. 扩展TinyCode编译器
- 添加 switch...endswitch 结构 :类似于C#的 switch-case ,实现如下简单语法:
switch(variable)
case value-1: goto label-1;
case value-2: goto label-2;
...
case value-N: goto label-N;
default: goto default-label;
endswitch
- **实现两个
超级会员免费看
订阅专栏 解锁全文
1680

被折叠的 条评论
为什么被折叠?



