摘要:
在最开始的例子程序里,程序是由一些单词和符号组成的。其实程序就是一串长长的字符串,这些字符串是按一定的规则编写的,那么就需要检查这些单词和符号是否符合定义的规则。在C语言里,就是定义了C语法和语义。在最开始的例子里,C编译器最先进行词法分析的语句是下面这句:typedef unsigned int size_t;那么C编译器是怎么样把上面的字符串识别出来的呢?其实词法分析就是把上面的字符串识别为下面的单词:typedefunsignedintsize_t;为了简单和比较方便,词法分析里会把这些单词用一个数字进行标识的,这样就容易存储和分析了。目标已经很明确,现在就来分析一下LCC的词法分析代码 阅读全文
摘要:
上面已经介绍打开文件输入,并且分析了读取到缓冲区里的代码,接着下来就是分析行号同步的处理,还有类型初始化。先来看看生成中间文件hello.i中的源程序,在它的第1行和第2行如下:#001#line 1 "hello.c"#002#line 1 "include/stdio.h"#003#004#005#006#007typedef unsigned int size_t;这样的源程序是怎么样被处理的呢?像#line参数就是用来识别文件的行号同步和文件名称的。现在就来分析函数nextline,它就会处理这样的源程序,让行号同步和源程序的文件名称也同步更新, 阅读全文