首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计一个类似C语言的编译器

设计一个类似C语言的编译器
EN

Stack Overflow用户
提问于 2012-12-29 01:04:25
回答 4查看 625关注 0票数 0

我正在开发一个类似C的编译器,我想知道编译器是如何与系统一起工作的。

编译器读取整个代码,并将找到的所有包含存储在一个列表中,并在读取完当前代码后解析这些包含。

代码语言:javascript
复制
// file main.c
#include <stdio.h> // store in one list

// continue the parse ...
int main()
{
    return 0;
}
// now, read the includes
// after finish the includes parse, gen code of sources

// just a sample
// file stdio.h
#include <types.h> // store in list
#include <bios.h>  // store in list

void printf(...)
{
}

void scanf(...)
{
}

顺便说一句,我已经开发了一个系统(仅测试)来读取包含,并停止解析,以读取包含...(这是一个令人厌恶的代码,但是,工作...)(示例链接) -> https://gist.github.com/4399601

顺便说一句,阅读收录的最好方法是什么?并使用包含文件??

EN

回答 4

Stack Overflow用户

发布于 2012-12-29 01:11:13

#include#define#ifdef等由称为preprocessor的单独过程进行处理。它用包含的文件替换带有#include的行。然后,将生成的临时源文本提供给tokenizerparser等后续传递。

票数 5
EN

Stack Overflow用户

发布于 2012-12-29 01:09:07

C中任何以#开头的代码行都是由预处理器处理的,而不是编译器。预处理器生成一个文件,然后编译器对其进行编译。文件的内容取决于开发人员和SDK定义的内容。

票数 1
EN

Stack Overflow用户

发布于 2012-12-29 01:17:46

任何以#开头的都是预处理器指令..相应的代码在编译时被替换。编译的第一阶段是这个预处理器编译。

然后,预处理器(.i文件)的输出被提供给编译的后期阶段。

编译的后期阶段包括词法分析器、解析器、优化器和代码生成器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14073031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档