迷你海湾合作委员会 C语言子集的基本编译器。 使用Flex和Bison制成。
2021-05-28 15:18:07 226KB C
1
在《算法+数据结构=程序》一书中,Niklaus Wirth 设计的 PL/0 语言编译器分成两部分,把源语言翻译成中间语言的编译器和中间语言解释器,编译器用的是递归下降的预测分析方法中间语言是一种栈机器代码,其指令集是根据 PL/0 语言的需要来设计的。编译器源码及测试程序可从。一条指令由三个域组成: (1)操作码 f:上面已经列出了所有 8 种操作码。 (2)层次差 l:这里的层次差就是 5.3.2 节介绍嵌套深度时的 n p − n a 。该域仅用于存取指令和调用指令。 (3)多用途 a:在运算指令中,a 的值用来区分不同的运算;在其他情况,a 或是一个数(lit,int),或是一个程序地址(jmp,jpc,cal),或是一个数据地址(lod,sto)。 编译器对 PL/0 源程序进行一遍扫描,并逐行输出源程序。在源程序无错的情况下,编译器每编译完一个分程序,就列出该分程序的代码,这由编译器的 listcode 过程完成。每个分程序的第一条指令是 jmp 指令,其作用是绕过该分程序声明部分产生的代码(即绕过内嵌过程的代码)。listcode 过程没有列出这条代码。 解释器是编译器中的一个过程,若源程序无错,则编译结束时调用解释过程 interpret。由于 PL/0 语言没有输出语句,解释器按执行次序,每遇到对变量赋值时就输出该值。 由于 PL/0 语言是过程嵌套语言,因此程序运行时,活动记录栈中每个活动记录需要包含控制链和访问。活动记录栈的栈顶以外的存储空间作为代码执行过程中所需要的计算栈,无需另外设立计算栈。
2021-05-19 15:34:19 5KB PL/0 编译器
1
系统 使用LLVM框架的Sysy2020语言编译器 LLVM框架语言:LLVM 12.0.0 编译环境:cmake 3.13 + Deepin 20.1 Beta 编译时若出错请注意LLVM版本号 目前支持程度 函数定义参数 二元表达式 &&,|| +,-,*,/,%,!= 函数调用 传参基础类型,矩阵,多维矩阵传参 条件分支关键字如果 循环关键字 为了 尽管 休息继续 函数返回return保持单入单出特性 全局,局部变量 斑点 尺寸,局部尺寸/多维尺寸 公布定义时初始化 生成AST语法树 生成对应系统架构的目标代码 ...(比较懒,不想写)
2021-05-11 18:29:55 175KB C++
1
c-to-mips-compiler:C至MIPS汇编编译器
2021-05-10 16:07:19 1.58MB compiler mips-assembly c-to-mips-compiler CompilerC
1
一个很小的C编译器的实现,用C语言编写,可以供对编译器感兴趣的同学学习
2021-05-06 19:17:32 68KB c编译器 源码 c语言
1
基础综合练习,适合于学习。
2021-04-15 09:01:14 20.35MB qt
1
PyBrainFuck——Python编写的BrainFuck语言编译器 什么是BrainFuck BrainFuck是一个神奇的语言,仅仅使用几种符号、简洁的语法即可与复杂的高级语言实现一样的目的——因为他是的。但是简洁的外表下,让人又对其的行为表现难以理解,也许正印了那句话吧:Simple But Not Easy. 介绍BrainFuck的一些文章: 关于PyBrainFuck的用法 python PyBrainFuck.py [file_name] 如: >>>python PyBrainFuck.py iloveyouwatson.bf [PyBrainFuck@1.0] output>>>I love you,Watson!
2021-04-13 09:59:09 4KB Python
1
VC写的PLC梯形图编译器,再次感谢原创作者,具有很好的参考意义。
2021-04-06 15:39:59 210KB 梯形图 源码
1
toy_compiler 目录 概述 toy_compiler是我在大学的COMP 442: Compiler Design类的项目编译COMP 442: Compiler Design 。 要求 C ++ 20(gcc-10 / clang-10) Linux 第三方图书馆
2021-03-31 10:06:05 551KB C++
1
善意的谎言 自托管的空白编译器。 它适用于64位Linux 用法 $ whitelie output $ chmod +x output $ ./output 确认它是自托管的 $ whitelie whitelie2 $ md5sum whitelie whitelie2 c8263aa952aa6230f28012dcfe0dceed whitelie c8263aa952aa6230f28012dcfe0dceed whitelie2 诀窍 这是愚人节的玩笑。 我没有写空格。 我写了一个空白汇编器,并在其中编写了代码。 可从该要旨中获得本项目使用的代码。
2021-03-15 16:11:06 14KB
1