《自己手动写一个编译器、连接器》二(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 0
原创粉丝点击