c4 README

The project's README from github.com/rswier/c4. As one markdown file: README.md.

c4 - C in four functions

An exercise in minimalism.

Try the following:

gcc -o c4 c4.c
./c4 hello.c
./c4 -s hello.c

./c4 c4.c hello.c
./c4 c4.c c4.c hello.c

c4 (rswier/c4)

Searching Database…

10.8K ·GitHub
这是什么?C4 是一个针对 C 语言小子集的微型自举编译器和解释器,只用四个函数写成,是一次极致极简主义的练习。
它是编译器还是解释器?两者都是:c4 解析 C 源代码,然后通过自己内置的虚拟机直接执行,而不是生成单独的二进制文件。它甚至能编译并运行自己的源代码。
怎么让它跑起来?用 “gcc -o c4 c4.c” 编译这个唯一的源文件,然后对某个 C 文件运行它,例如 “./c4 hello.c”。
除了 C 编译器还需要别的吗?不需要,只需要 gcc 这样的标准 C 编译器来编译 c4.c 这一个文件,没有其他依赖。
它支持完整的 C 语言吗?不支持,c4 只实现了编译自身所需的 C 小子集(char、int、指针、基本控制流),并非完整的 C 标准。
它在 Linux、macOS 和 Windows 上都能运行吗?由于它只是用 gcc 编译的标准 C 源文件,任何有 C 编译器的地方都能运行,包括 Linux、macOS 和 Windows。
这四个函数分别做什么?整个编译器由一个分词器(tokenizer)、一个表达式解析器、一个语句解析器和一个主驱动函数组成,共同完成词法分析、解析、代码生成和执行。
“-s” 标志有什么用?运行 “./c4 -s hello.c” 会在源代码旁边打印生成的虚拟机指令,让你确切看到 c4 是如何翻译你的代码的。
为什么要运行 “./c4 c4.c c4.c hello.c”?这条命令层层嵌套:让 c4 解释自己、再由它解释自己去运行程序,证明 c4 是自举的,能够编译并执行自己的源代码。
这个项目面向谁?它面向好奇编译器和解释器内部工作原理的人,不适合用来编写实际生产环境的 C 程序。
Creator
rswier
Size
<0.1 MB
Stars
10.8K
Updated
CommitMar 14
Age
11y
Commits · 90 Days