# 编译 **Repository Path**: kekefeng/compile ## Basic Information - **Project Name**: 编译 - **Description**: 编译原理、《七周七语言》笔记和习题答案 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-09 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 编译 #### 介绍 1. tiny 《编译原理及实践》的源代码 2. pytiny 自己用python重写的Tiny编译器 3. flex_bison 一个简单计算器。flex和bison的简单使用 4. sevenLanguages 《七周七语言》第一版笔记和习题解答,尚未整理完毕,haskell读了一半的趣学指南 #### 使用说明 1.tiny 《编译原理及实践》的源代码 https://github.com/bigconvience/BooksCode/tree/master/loucomp sample.tny是源代码文件 运行方法: ``` make all //生成tiny程序 和虚拟机tm output/tiny sample.tny //生成字节码文件sample.tm output/tm sample.tm // 运行虚拟机执行字节码 g 运行 h 查看帮助 ``` 改了一下Makefile,自动将所有生成的二进制文件移动到output文件夹下,并执行 lex文件夹:用flex生成scan程序,已修改makefile,直接make运行 yacc文件夹:暂时无法顺利运行 2.pytiny 自己用python重写的Tiny编译器 ```python3 python3 codegen.py python3 pysim4.py new.asm ``` 后续有时间会继续优化 3.flex_bison 一个简单计算器,实现简单的加减,不支持括号。flex和bison的简单使用 ``` bison -y -d parser.l flex scanner.l gcc -c y.tab.c lex.yy.c gcc y.tab.o lex.yy.o -o plusmins -lfl ./plusmins //输入3+4 回车得到7 ```