让你用C语言实现简单的编译器,从头开始写

本文探讨了学习编译原理的重要性,并通过一个简单的C语言编译器实例,展示了如何从头开始编写编译器。作者强调,尽管编译原理可能抽象,但它能帮助理解编程语言的本质,涉及的算法和思想对程序员的成长大有裨益。文中提供了编译器源代码,能够将特定输入转换为“你好世界”的输出。
摘要由CSDN通过智能技术生成

    在当下的时代,'脚本语言/编程语言'数不胜数,很多人都认为自己学习编译原理是闭门造车,不应该去浪费时间学这个,却不知学习编译原理可以更好的理解编译器的运行过程。

    就比如f1比赛,其实现在所有的车队可选的轮胎都是一样的,但不同车队根据自己车的情况和战术等做出的选择就会截然不同。如果你对轮胎的理解只是它可以转,那么你根本无法把它的能力发挥到极限。

下面这段我是在知乎找到的:

你现在觉得枯燥,我想既跟编译原理本身比较抽象的知识有关,也跟讲述者有关。一个好的讲述者会试着化抽象为形象,以丰富生动的例子来为你解释。而编译原理是否有用?我认为这门课是一门真正与代码做斗争的课程,对于一个有至于追求技术的人是不容错过的课程,而且编译原理可以说是一个计算机科学的缩影。你学习它更多的是去追寻程序设计语言的本质,如它在寄存器分配中将会使用到贪心算法,死代码消除中将会使用到图论算法,数据流分析中使用到的Fixed-Point Algorithm,词法分析与语法分析中使用到有限状态机与递归下降这样的重要思想等等,也许你以后不会成为一个编译器开发工作者,但是编译原理的学习中所获,所思的东西足以让你终生获益。同时,学完这门课程,对于一个有Geek精神的开发者,他会开始运用自己的所学开发享受“上帝”的感觉,去尝试创造一门语言,我想这种感觉不是每门课程都能带给你的。我相信,当你真正完成这个过程后,你对你所写的程序、程序语言都会有更深的本质认识,这样的认识也会让你站的高度完全不同,如果你真的学的好,我想别人看到的是语法,你看到的是背后的实现,这样的感觉真的很好的,不信你试试。有了这么多好处,无论如何都有足够的理由支撑你好好学习了。

本人也只是个渣渣,大神勿喷

好了,废话不多说了,上代码:

//引入头文件 
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <stdbool.h>
#include <conio.h>


//variable在英语中是变量的意思 
//定义结构体variable 
struct variable{
	//计数变量 
	signed int i;
	//字符串长度变量 
	signed int Len;
	//技术变量 
	signed int j;
	//寄存器下标
	signed int r;
	//字符串接收变量 
	char*String
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值