《自己手动写一个编译器、连接器》二(1)
来源:互联网 发布:存在主义心理治疗 知乎 编辑:程序博客网 时间:2024/06/11 03:53
一:概括
SC编译器是一个C89版本的简化版,同时简化了一些几乎用不到的部分,其字符集分为源码字符集和执行字符集。
2:
基本字符集:
这个字符集包括了转义符,0x0,0x20~0x7E的所有字符。
关键字:
< char>::=”char”
后面还有:short, int ,void ,struct ,if ,else ,for ,continue ,break ,return ,sizeof ,__cdecl ,__stdcalll ,__align
其中1~5是数据类型关键字,6~11是控制语句关键字,12是sizeof运算符,13~14是函数调用惯例,最后一个是强制内存对齐的。
标识符:
<标识符>::=<非数字>{<数字><非数字>}
<非数字>::=”_”|”a-z”|”A-Z”|
<数字>::=”0-9”
我们都知道合法的标识符是要以非数字开头的并且分大小写,不能和关键字重复。
整数常量:
< 整数常量>::=<数字>{<数字>}
<数字>::=”0-9”
字符常量:
<字符常量>::=’< C-字符>’
< C-字符>::=<转义字符>|除了’ \ 新行字符以外的字符
<转义字符>::=’\”|’\”’|’\’|’\a’|’\b’|’\f’|’\n’|’\r’|’\t’|’\v’|’\0’
字符串常量:
<字符串常量>::=”{<串字符>}”
<串字符>::=<转义字符>|除了’ \ 新行字符以外的字符\
运算符,分隔符等:
<加号>::=”+”
还有:
- ,*,/,%,==,!=,<,<=,>,>=,=,->,.,&,(,),{,},[,],;,,,…
这几个
其中(,),{,},[,]成对出现并且不能({)}这种出现。
还有注释/* */
其实这里记那么多也就是对C语言的一些了解。
- 《自己手动写一个编译器、连接器》二(1)
- 《自己手动写一个编译器、连接器》二(2)
- 《自己手动写一个编译器、连接器》二(3)
- 《自己手动写一个编译器、连接器》一(1)
- 《自己手动写一个编译器、连接器》一(2)
- 《自己手动写一个编译器、连接器》一(3)
- 《自己手动写一个编译器、连接器》一(4)
- 编译器、连接器学习笔记--(二)--编译
- 不知不觉,写了一个编译器(二)
- 自己写一个MVC框架(二)
- 设计模式: 自己手动写一个装饰者模式
- 设计模式: 自己手动写一个命令模式
- 设计模式: 自己手动写一个代理模式
- 设计模式: 自己手动写一个状态模式
- c++编译器和连接器介绍(转)
- 编译器、连接器学习笔记--(一)--综述
- 如何写一个给自己的框架写一个优雅的Java Config模块(二)
- 自己写一个Web服务器(1)
- IOC/DI的总结
- Android多线程篇(上)-安卓基础知识整理
- Longest Palindromic Substring(leetcode5)
- Python:把字符串转换成整数
- PAT程序设计考题——甲级1086( The best rank ) C++实现
- 《自己手动写一个编译器、连接器》二(1)
- Problem 1001Duplicate Pair
- java的内部类-----更优雅的设计程序结构
- python 数字类型和字符串类型的相互转换
- 条件编译
- 关于js原型的经典面试题解析
- photoshop cs 安装及使用
- 线性表(List)---队列的顺序存储
- Python:数字在排序数组中出现的次数