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