精华内容
下载资源
问答
  • c语言实现编译器

    2013-03-09 19:33:51
    c语言实现编译器,涉及了现代编译器的特点而且介绍了垃圾处理机制。
  • 编译原理课程设计--C语言编译器实现甘肃政法学院编译原理课程设计题 目 C语言编译器实现计算机科学学院计算机科学与技术专业10 级 计本 班学 号: 201081010137姓 名: 杨青虎指导教师: 李 霞完成时间: 2013 年 6 ...

    编译原理课程设计--C语言编译器实现

    甘肃政法学院

    编译原理课程设计

    题 目 C语言编译器实现

    计算机科学学院计算机科学与技术专业10 级 计本 班

    学 号: 201081010137

    姓 名: 杨青虎

    指导教师: 李 霞

    完成时间: 2013 年 6 月

    目 录

    一、 原理1

    1、简介1

    2、单词符号及种别表示1

    3、语法结构定义如下:2

    二、运行环境3

    三、 算法设计思想3

    1、词法分析主要算法3

    2、语法分析主要算法3

    3、语义分析主要算法4

    四、 程序流程图5

    五、运行测试结果8

    六、心得体会9

    七、源代码9

    C语言编译器实现

    一、 原理

    1、简介

    编译程序的工作过程一般可以分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。每一个阶段在功能上是相对独立的,它一方面从上一个阶段获取分析的结果来进行分析,另一方面由将结果传递给下一个阶段。由编译程序的五个阶段就对应了编译系统的结构。

    2、单词符号及种别表示

    单词符号种别编码main1int 2float3double4char5if 6else 7do8while9l(l|d)*10dd* 20=21+22- 23* 24/ 25(26)27{28}29,30;31>32>=33<34<=35==36!=37‘\0’1000ERROR-1

    3、语法结构定义如下:

    ::= ::= ‘{‘’}’

    ::={;};

    ::=||

    ::=ID=

    ::=if

    ::=do while

    ::=

    ::= ::= ::=)

    ::= Windows 系统 Visual C++ 6.0

    三、 算法设计思想

    1、词法分析主要算法

    这部分对源文件进行分析,允许/* */注释。从源文件依次读取字符,对字符进行分析,组成字符串、数字、关系符等固定含义的token符,并把它们添加到token链中,如果遇到非法字符报错并退出程序。

    2、语法分析主要算法

    这部分对Token链进行分析,利用自底向上的分析方法,构建SLR(1)分析表的过程是手工完成的。语法分析的同时构建语法树,移进时创建叶子,规约时创建节点。

    3、语义分析主要算法

    这部分对语法树从左到右进行遍历,节点记录了规约式的编号,遍历到节点时就进行相应处理。语义分析主要检查变量、函数是否被定义或重定义,同时产生四元式。

    函数一览表

    void scanner();

    void lrparser();

    void staBlock(int *nChain);

    void staString(int *nChain);

    void sta(int *nChain);

    void fuzhi();

    void tiaojian(int *nChain);

    void xunhuan();

    char* E();

    char* T();

    char* F();

    char *newTemp();

    void backpatch(int p,int t);

    int merge(int p1,int p2);

    void emit(char *res,char *num1,char *op,char *num2);

    四元组结构体定义:

    struct{

    char result[10];

    char arg1[10];

    char opera[10];

    char arg2[10];

    }fourCom[20];

    四、 程序流程图

    图1 主函数流程图

    图2 递归下降分析分析程序流程图

    图3 语句块分析流程图

    图4 语句串分析流程图

    是否

    图5 语句分析流程图

    五、运行测试结果

    正确程序结果

    错误程序结果:报错!(1)

    错误程序结果:报错!(2)

    六、心得体会

    这次的课程设计,最大的收获就是清楚了编译的整个过程,在学习编译原理这门课程之时,在做设计的过程中和词法分析、语法分析、语义分析联系起来, 非常清晰的理解了简单编译器

    展开全文
  • c语言实现C编译器c语言实现C编译器

    热门讨论 2010-06-13 08:27:00
    c语言实现C编译器c语言实现C编译器c语言实现C编译器c语言实现C编译器c语言实现C编译器c语言实现C编译器c语言实现C编译器c语言实现C编译器c语言实现C编译器c语言实现C编译器c语言实现C编译器
  • C语言微型编译器实现.pdf
  • c++实现c语言子集编译器,共有三种数据类型INT,BOOL,ARRAY;三种控制结构IF-ELSE、WHILE、FOR,产生四个表,词法分析parser.out、action.out、goto.out、四元式parser.out。
  • C语言语法编译器实现自定义语法规则,可以自己输入语法规则,程序可以自动分析
  • c语言编译器的文法实现,文档详细,适合初学者
  • java实现c语言简单编译器

    热门讨论 2012-08-08 22:23:45
    java实现C语言(部分文法)简单编译器,包括词法分析、语法分析、语义分析,输出四元式,有详细文档
  • C语言编译器

    2016-10-07 18:04:19
    C语言的常用编译器 目前最流行的C语言编译器有以下几种: ...这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。 Windows及Linux平台编译器推荐 **·**Windows平
    1. C语言的常用编译器
      目前最流行的C语言编译器有以下几种:
      · GNU Compiler Collection 或称 GCC
      · Microsoft C 或称 MS C
      · Borland Turbo C 或称 Turbo C
      这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。

    2. Windows及Linux平台编译器推荐
      Windows平台下推荐VC6.0或VS
      Linux平台下推荐使用GCC
      GCC是Linux下最流行最好用的C语言开发工具,不管是新手还是大牛,大部分都是GCC的拥护者,对于初学者,GCC是毋庸置疑的选择。大部分的Linux发行版自带了GCC,一般情况下无需安装。
      Vim是Linux下的文本编辑器,通常与GCC结合使用,提高开发效率。
      在Windows下,也有集成了GCC的开发工具,如 Code::Blocks、MinGW、C-Free 等,但不要期待这些工具在Windows下拥有良好的表现,实际的Windows项目开发中大部分使用VC6.0或其升级版Visual Studio。

    展开全文
  • 这是一个用Java实现C语言子集的编译器。语法分析方法采用LL(1)方法,能够实现C语言的源代码翻译为四元式。目前能够实现变量的声明与使用、bool值语言、普通算术运算、for、while、if-else、if、do-while循环等...

    编译原理课程设计-一个C语言子集编译器

    项目地址

    https://github.com/qiushuang139/c-compliers
    联系方式:

    • email:qiushuang820@outlook.com
    项目介绍

    这是一个用Java实现的C语言子集的编译器。语法分析方法采用LL(1)方法,能够实现将C语言的源代码翻译为四元式。目前能够实现变量的声明与使用、bool值语言、普通算术运算、for、while、if-else、if、do-while循环等语言的翻译。

    文法表达式
    开始语句(Start statement)

    B->{S}

    复合语句(Compound statement)

    S->CS
    S->$
    C->D | J | R

    控制语句(Control statement)

    J-> if(E){S}else{S}
    J->if(E){S}
    J->while(E){S}
    J->for(D;G;W){S}

    bool运算(bool calculation)

    E->HP
    P->&&E | $
    H->GI
    I->||E
    G->FKF | true |false
    D-> < | > | == | != | <= | >=
    G->(E)
    G->!E

    变量声明语句

    D-> TN
    T->float|char|int|bool
    N->ZA
    Z->id U
    A->,Z
    U->=L | $

    赋值语句

    R->id=L
    算术运算语句
    L->XM
    M->+L | -L |$
    X->FY
    Y->*X | /x |$
    F->(L)| id| num |bool

    展开全文
  • 用Java实现C语言编译器课程设计

    热门讨论 2011-01-14 22:00:51
    这是使用java实现c语言编译器,其中包括Java源代码和c语言的测试程序,包括我们的输出结果的截图和课程设计说明书,如果你的课程设计也是这个的话,用这个肯定够用了,包括词法分析,语法分析,语义分析,分别打印...
  • c语言 词法编译器

    2013-06-20 12:30:09
    实验一: M语言的词法分析程序 以M语言(结构化语言的子集)为背景,实习编译程序的词法分析程序构造方法。词法分析程序的主要任务就是扫描源程序,识别单词,转换并输出token序列。M语言的单词符号有如下几个类别...
  • C语言子集编译器,采用的LL1语义分析法 通过TXT文档源代码可得到最终的4元式中间代码。
  • 有没有用汇编实现C语言编译器,要求把输入的C语言程序转换成汇编程序。
  • C语言实现编译器

    2012-04-13 19:01:57
    一个简单的C实现编译器工具一个简单的C实现编译器工具一个简单的C实现编译器工具一个简单的C实现编译器工具
  • C语言简化编译器前端 编译原理 LR1

    热门讨论 2010-07-14 20:28:30
    C语言编译器,采用C++实现。 词法分析、语法分析、语法制导翻译全过程。 附上ISO定义的标准C语言文法。 更具体说明见"说明.doc".
  • C语言编译器的预定义符号分类:计算机等级|更新时间:2016-07-08|来源:转载C语言编译器的预定义符号__LINE__ 当前(源代码文件)行号 [整数]__FILE__ 当前正在编译的文件的文件名 [字符串]__DATE__ 当前日期,以...

    C语言编译器的预定义符号

    分类:计算机等级

    |

    更新时间:2016-07-08|

    来源:转载

    C语言编译器的预定义符号

    __LINE__ 当前(源代码文件)行号 [整数]

    __FILE__ 当前正在编译的文件的文件名 [字符串]

    __DATE__ 当前日期,以“月月 日日 年年年年”的形式给出 [字符串]

    __TIME__ 当前时间,以“HH:mm:ss”的格式给出 [字符串]

    __STDC__ 如果编译器符合ANSI C标准,该宏为1,否则为0

    __STDC_HOSTED__ 如果实现了所有C标准库,该宏为1,否则为0

    __STDC_VERSION__ 被定义为199901L(不同编译器可能不一样,比如我用的gcc里就没有这个预定义符号)

    注:这些预定义符号的首尾为两个下划线,如果是两个单词,中间以一个下划线连接。

    如果在源代码中使用了这些符号,它们会在预处理时被转换(使用gcc编译器的 -E 选项可以看到替换后的值)

    C标准里还在每个函数内预定义了一个标志符: __func__

    它被定义为 static const char __func__[]="function-name";

    即不能在程序内对__func__赋值,也不能改变它所指向的字符串(函数名),否则报编译错误

    注:__func__是个标志符,它在预处理阶段不被替换,所以使用gcc -E 是看不到任何效果的。

    例:test.c

    int main(){

    printf("%s %s\n",__FILE__,__func__);

    return 0;

    }

    输出: test.c main

    展开全文
  • C语言实现简易文本编译器--附源码
  • 编译原理课程设计-C语言子集编译器

    热门讨论 2011-01-13 14:31:17
    本程序能实现C语言子集的编译,能实现的主要功能包括: (1)、实现编译的词法分析 (2)、语法分析 (3)、语义分析功能 (4)、错误处理能力,并给出总的出错报告 (5)、编译最终形成四元式的中间代码形式
  • 用java是可以写bai语言编译器的,用任何du语言工具写都可以。 各语言开发zhi工具间只有开发效率的差dao异,没有可行不可行的区别。编译器其实就是一个翻译工具,它...1、编译器就是把c语言程序翻译为一种叫做目标...
  • 基于C语言实现的IDL编译器.pdf
  • 当今几乎所有的实用的编译器/解释器(以下统称编译器)都是用 C 语言编写的,有一些语言比如 Clojure,Jython 等是基于 JVM 或者说是用 Java 实现的,IronPython 等是基于 .NET 实现的,但是 Java 和 C# 等本身也要...
  • 尽管Kivi与C编程语言有很多相似之处,但并不旨在成为任何C编译器的替代实现。 怎么去Kivi? Kivi的结构都是在Makefiles上设计的。 根目录中的Makefile调用所有其他需要的Makefile。 查看“ Build页面以获取详细...
  • C语言编译器设计与实现(任务书,外文翻译,毕业论文20000字,答辩PPT)摘 要随着计算机的广泛应用,计算机程序设计语言也从初期的机器语言发展为汇编语言,以及现在的各种高级程序设计语言。而编译技术是计算机语言发展...
  • 对一个C语言的子集编制一个一遍扫描的编译程序,一加深对编译原理的理解,掌握编译程序的实现方法和技术。
  • C语言各种编译器的清屏方法

    千次阅读 2013-12-29 23:33:13
    1,vs/vc:vs本身并没有提供专用清屏的函数,但是清屏被作为windows专用...总结:在windows下无论你使用什么编译器,都可以使用system("cls")来清屏。同理,在linux下肯定可以调用清屏命令system("clear")来完成清屏。
  • 题目:c--语言编译器设计与实现(请为自己的编译器命名) 源语言定义:或采用教材中Decaf语言,或采用C语言(或C++语言或C#语言或JAVA语言)部分关键语法规则。源语言要求至少包含的语言成分如下: 数据类型至少包括...
  • 基于JavaCC的c语言编译器前端实现代码,偶然翻出来的,上传到这里,给需要的朋友参考,献丑了。
  • C语言编译器的设计与实现.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 152,738
精华内容 61,095
关键字:

c语言实现编译器

c语言 订阅