Files
scc/README.md
zzy 4e2176b7f0 feat(compiler): 添加对裸机环境的支持并改进构建配置
- 更新README描述为C语言裸机环境的自举编译器
- 修改justfile中的构建命令,添加--dev参数并将输出文件名从scc.exe改为scc
- 在AST定义中添加SCC_AST_UNKNOWN节点类型
- 修复位置日志格式化中的类型错误
- 实现标准输出流支持,当输出文件为'-'时输出到控制台
- 支持基于环境变量LANG的语言本地化选择

fix(lexer): 改进标记打印功能

- 修复换行符的显示,将实际换行符显示为"\n"
- 改进文件输出逻辑,支持标准输出流

refactor(build): 更新cbuild工具的包含路径

- 将包含路径从"scc_libs"更改为"scc_include"

test: 添加简单的包含测试用例

- 新增测试文件tests/simple/12_include.c用于测试头文件包含功能
2026-02-26 16:07:19 +08:00

36 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Simple C Compiler
> `scc`
这是一个简单的C语言裸机环境的自举编译器可以从C99子集编程语言生成可执行代码。该语言支持基本操作如算术运算、逻辑运算、条件语句(if/else)、循环语句(while/for)、分支语句(switch/case)、函数调用以及内联汇编调用(asm)。
## Builder
该编译器使用`cbuild` 构建,设计思路来源于`rust`的构建工具`cargo`,以默认行为代替掉`make``cmake`等构建工具。
> 由于整个项目除了测试代码,完全没有任何依赖,真正做到`0依赖`,所以无需复杂的依赖管理
TODO 未来构建工具本身也会使用c或者lua等可轻松自举的系统重构
### [cbuild](./tools/cbuild/cbuild.py)
常用命令:
- 构建项目: `cbuild build`
- 运行程序: `cbuild run`
- 运行测试: `cbuild test`
- 清理构建产物: `cbuild clean`
- 查看依赖树: `cbuild tree`
## 标准C语言文档链接
- [open-std](https://www.open-std.org/)
- [C - Project status and milestones](https://www.open-std.org/JTC1/SC22/WG14/www/projects#9899)
- [ISO/IEC 9899:1999](https://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf)
## 项目特点
- **隔离标准库**: 不直接依赖标准库实现,提高可移植性
- **轻量化**: 专注于核心功能,减少冗余组件
- **模块化**: 采用模块化设计,易于扩展和维护
- **自举构建**: 支持通过自身编译器构建项目