摘要: 四则运算编译器,虽然说功能很简单,只能编译四则运算表达式。但是编译原理前端部分几乎都有涉及,词法分析,语法分析,还有代码生成。 再复杂的编译器、再简单的编译器,功能上是差不多的,只是复杂的编译器实现上会更困难。 这个系列的文章是为了帮助你入门,在这个基础上再去看编译原理相关书籍,不至于打瞌睡。 如果 阅读全文
posted @ 2019-06-30 18:09 谭光志 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 现在来模拟一下 CPU 执行机器指令的情况,由于汇编代码和机器指令一一对应,所以我们可以创建一个直接执行汇编代码的模拟器。 在创建模拟器前,先来讲解一下相关指令的操作。 栈 在内存中,栈的特点是只能在同一端进行插入和删除的操作,即只有 push 和 pop 两种操作。 push push 指令的作用 阅读全文
posted @ 2019-06-30 18:06 谭光志 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 四则运算的语法规则(语法规则是分层的) 1. x 表示 x 出现零次或多次 2. x | y 表示 x 或 y 将出现 3. ( ) 圆括号,用于语言构词的分组 以下规则从左往右看,表示左边的表达式还能继续往下细分成右边的表达式,一直细分到不可再分为止。 expression : addExpres 阅读全文
posted @ 2019-06-30 17:34 谭光志 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 编译器 编译器是一个程序,作用是将一门语言翻译成另一门语言。 一般的程序,CPU 是无法直接执行的,因为 CPU 只能识别机器指令。所以要想执行一个程序,首先要将高级语言编写的程序翻译为汇编代码,再将汇编代码翻译为机器指令,这样 CPU 才能识别并执行。 示例: 学会编译原理有什么好处? 对编译过程 阅读全文
posted @ 2019-06-30 17:30 谭光志 阅读(397) 评论(0) 推荐(0) 编辑