编译器
文章平均质量分 74
shada
资源C++开发,GNU/Linux爱好者。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mini-dog-c编译器开发 - 00-目录与架构
mini-dog-c是一款小型C语言编译器。该编译器采用标准编译架构,包含词法分析器(将源代码转为Token流)、语法分析器(生成抽象语法树AST)和语义分析/代码生成模块。项目已完成全部6个开发阶段,目录结构清晰,包含源代码、头文件和测试用例。支持的语法特性包括各类字面量、操作符、分隔符和关键词。这个项目旨在帮助开发者理解编译器的工作原理,代码组织规范,测试覆盖全面,是一个教学性质的编译器实现范例。原创 2026-06-30 20:42:49 · 50 阅读 · 0 评论 -
mini-dog-c编译器开发 - 01 功能需求与设计
本文介绍了mini-dog-c编译器的开发设计,重点阐述了其功能需求和架构设计。该编译器支持多种Token类型,包括标识符、字面量和运算符等,并定义了详细的语法规则(BNF表示)。编译器采用三阶段处理流程:词法分析将源代码转为Token流,语法分析构建AST树,解释器执行AST操作。架构设计包含词法分析器、语法分析器、AST定义和解释器等模块,采用递归下降解析方法。项目将分五个阶段开发,首先实现词法分析器功能。该编译器选择解释执行而非代码生成,旨在简化教学展示过程。原创 2026-05-04 20:05:52 · 415 阅读 · 0 评论 -
mini-dog-c编译器开发 - 02 词法分析器实现
本文详细介绍了mini-dog-c编译器中词法分析器的实现原理。词法分析器负责将源代码字符序列转换为Token序列,包含标识符、关键词、数字、字符串等各类Token。文章阐述了核心数据结构Lexer和Token的定义,重点讲解了标识符/关键词识别、数字解析、字符串处理(含转义字符)、双字符操作符识别等关键算法实现。同时介绍了注释与空白处理、错误处理机制,并通过测试用例验证了词法分析器的正确性。最后总结了开发过程中遇到的典型Bug及修复方案,为后续抽象语法树的实现奠定了基础。原创 2026-05-04 20:07:14 · 374 阅读 · 0 评论 -
mini-dog-c编译器开发 - 03 抽象语法树(AST)
本文介绍了mini-dog-c编译器中AST的设计与实现。AST通过树形结构表达代码的层次关系和运算优先级,采用枚举+联合体的方式组织不同类型的节点(如变量声明、函数声明、表达式等),既节省内存又便于操作。文章详细说明了AST节点的数据结构设计、创建函数、打印调试方法以及内存管理机制,并展示了语法规则与AST节点的对应关系。该设计为后续语法分析器将Token流转换为AST奠定了基础。原创 2026-05-04 20:08:41 · 381 阅读 · 0 评论 -
mini-dog-c编译器开发 - 04 递归下降解析器
本文介绍了递归下降解析器的原理与实现方法。递归下降解析器通过将每个语法规则对应为一个函数来构建AST节点,相比传统解析器生成工具更直观简单。文章详细讲解了表达式解析的优先级处理机制(9级优先级)、赋值表达式的链式处理、主表达式的匹配逻辑,以及各种语句(let声明、函数声明、if语句等)的解析实现。同时介绍了错误恢复的恐慌模式策略和测试方法。递归下降解析器的核心特点是代码即语法,通过函数分层处理优先级,while循环处理左结合,递归处理右结合,为后续解释器的实现奠定了基础。原创 2026-05-04 20:09:48 · 180 阅读 · 0 评论 -
mini-dog-c编译器开发 - 05 解释器与代码生成
本文介绍了mini-dog-c解释器的实现细节。解释器通过遍历AST直接执行代码,核心包括:1) 值系统(Value)用联合体表示不同类型数据;2) 环境管理(Env)实现作用域链和变量查找;3) 表达式求值处理各种运算符;4) 函数调用通过创建局部环境和参数绑定实现。特别强调了内存管理机制,规定调用者负责释放返回值,操作数由操作函数释放。解释器执行流程包括词法分析、语法分析生成AST,再遍历AST进行求值。该实现展示了如何在不生成中间代码的情况下直接解释执行程序。原创 2026-05-04 20:11:16 · 341 阅读 · 0 评论 -
mini-dog-c编译器开发 - 06 测试与总结
本文介绍了mini-dog-c编译器的测试框架设计与实现。测试分为词法分析、语法分析和解释器三个模块,采用轻量级测试框架实现。词法分析测试验证了基础Token识别能力;语法分析测试确保AST结构正确构建;解释器测试则覆盖了表达式运算、变量赋值、条件分支、函数调用等核心功能。文章还指出了当前实现的局限性(如不支持负数字面量、错误报告不完善等),并提出了后续优化方向。最后回顾了编译器整体架构,从源代码到Token流再到AST的完整处理流程,为读者提供了进一步学习编译器开发的建议路径。原创 2026-06-30 20:45:07 · 246 阅读 · 0 评论
分享