• 大小: 4.44MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-03
  • 语言: Java
  • 标签: 编译原理  

资源简介

华中科技大学 编译原理 面向过程的C语言的编译器设计 功能包括:词法分析和语法分析、语义分析、中间代码生成的 源码
题目:c--语言编译器设计与实现(请为自己的编译器命名) 源语言定义:或采用教材中Decaf语言,或采用C语言(或C++语言或C#语言或JAVA语言)部分关键语法规则。源语言要求至少包含的语言成分如下: 数据类型至少包括char类型、int类型和float类型 基本运算至少包括算术运算、比较运算、自增自减运算和复合赋值运算 控制语句至少包括if语句和while语句 实验内容:完整可运行的自定义语言编译器 实验一:词法语法分析器的设计与实现:建议使用词法语法生成工具如:LEX/FLEX ,YACC/BISON等专业工具完成。 实验二:符号表的设计与属性计算:设计符号表数据结构和关键管理功能。动态展现符号表变化过程。无论语法分析使用工具还是自己设计,都必须对符号表进行设计和管理,属性计算可以语义子程序实现。 实验三:语义分析和中间代码生成:生成抽象语法树,进行语义分析,实现类型检查和控制语句目标地址计算,生成中间代码。中间代码的形式可以采用不同形式,但实验中要求定义自己的中间形式。 实验四:目标代码生成:在前三个实验的基础上实现目标代码生成。也可以使用工具如LLVM来生成目标代码。

资源截图

代码片段和文件信息

/* A Bison parser made by GNU Bison 3.0.4.  */

/* Bison implementation for Yacc-like parsers in C

   Copyright (C) 1984 1989-1990 2000-2015 Free Software Foundation Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation either version 3 of the License or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not see .  */

/* As a special exception you may create a larger work that contains
   part or all of the Bison parser skeleton and distribute that work
   under terms of your choice so long as that work isn‘t itself a
   parser generator using the skeleton or a modified version thereof
   as a parser skeleton.  Alternatively if you modify or redistribute
   the parser skeleton itself you may (at your option) remove this
   special exception which will cause the skeleton and the resulting
   Bison output files to be licensed under the GNU General Public
   License without this special exception.

   This special exception was added by the Free Software Foundation in
   version 2.2 of Bison.  */

/* C LALR(1) parser skeleton written by Richard Stallman by
   simplifying the original so-called “semantic“ parser.  */

/* All symbols defined below should begin with yy or YY to avoid
   infringing on user name space.  This should be done even for local
   variables as they might otherwise be expanded by user macros.
   There are some unavoidable exceptions within include files to
   define necessary library symbols; they are noted “INFRINGES ON
   USER NAME SPACE“ below.  */

/* Identify Bison output.  */
#define YYBISON 1

/* Bison version.  */
#define YYBISON_VERSION “3.0.4“

/* Skeleton name.  */
#define YYSKELETON_NAME “yacc.c“

/* Pure parsers.  */
#define YYPURE 0

/* Push parsers.  */
#define YYPUSH 0

/* Pull parsers.  */
#define YYPULL 1




/* Copy the first part of user declarations.  */
#line 1 “ding.y“ /* yacc.c:339  */

    #include
    #include
    #include“GrammarTree.h“
    #include“lex.yy.c“
    void yyerror(const char* fmt ...);

#line 74 “ding.tab.c“ /* yacc.c:339  */

# ifndef YY_NULLPTR
#  if defined __cplusplus && 201103L <= __cplusplus
#   define YY_NULLPTR nullptr
#  else
#   define YY_NULLPTR 0
#  endif
# endif

/* Enabling verbose error messages.  */
#ifdef YYERROR_VERBOSE
# undef YYERROR_VERBOSE
# define YYERROR_VERBOSE 1
#else
# define YYERROR_VERBOSE 1
#endif

/* In a future release of Bison this section will be replaced
   by #include “ding.tab.h“.  */
#ifndef YY_YY_DING_TAB_H_INCLUDED
# define YY_Y

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-25 09:25  Cmm-Compiler\
     文件          66  2018-08-25 09:25  Cmm-Compiler\.gitattributes
     文件        1359  2018-08-25 09:25  Cmm-Compiler\README.md
     目录           0  2018-08-25 09:25  Cmm-Compiler\lab1\
     文件        4789  2018-08-25 09:25  Cmm-Compiler\lab1\GrammarTree.c
     文件        1407  2018-08-25 09:25  Cmm-Compiler\lab1\GrammarTree.h
     文件         188  2018-08-25 09:25  Cmm-Compiler\lab1\Makefile
     文件         242  2018-08-25 09:25  Cmm-Compiler\lab1\change.txt
     文件       62424  2018-08-25 09:25  Cmm-Compiler\lab1\ding
     文件       13458  2018-08-25 09:25  Cmm-Compiler\lab1\ding.l
     文件       63401  2018-08-25 09:25  Cmm-Compiler\lab1\ding.out
     文件      100693  2018-08-25 09:25  Cmm-Compiler\lab1\ding.output
     文件       90903  2018-08-25 09:25  Cmm-Compiler\lab1\ding.tab.c
     文件        3636  2018-08-25 09:25  Cmm-Compiler\lab1\ding.tab.h
     文件       12557  2018-08-25 09:25  Cmm-Compiler\lab1\ding.y
     文件       67341  2018-08-25 09:25  Cmm-Compiler\lab1\lex.yy.c
     文件         427  2018-08-25 09:25  Cmm-Compiler\lab1\test.cmm
     目录           0  2018-08-25 09:25  Cmm-Compiler\lab2\
     文件        4756  2018-08-25 09:25  Cmm-Compiler\lab2\GrammarTree.c
     文件         956  2018-08-25 09:25  Cmm-Compiler\lab2\GrammarTree.h
     文件         626  2018-08-25 09:25  Cmm-Compiler\lab2\Makefile
     文件       26103  2018-08-25 09:25  Cmm-Compiler\lab2\SemanticAnalysis (复件).c
     文件       26103  2018-08-25 09:25  Cmm-Compiler\lab2\SemanticAnalysis.c
     文件        1763  2018-08-25 09:25  Cmm-Compiler\lab2\SemanticAnalysis.h
     文件        9552  2018-08-25 09:25  Cmm-Compiler\lab2\SemanticAnalysis.l
     文件       98040  2018-08-25 09:25  Cmm-Compiler\lab2\SemanticAnalysis.tab.c
     文件        3791  2018-08-25 09:25  Cmm-Compiler\lab2\SemanticAnalysis.tab.h
     文件       15591  2018-08-25 09:25  Cmm-Compiler\lab2\SemanticAnalysis.y
     文件       19168  2018-08-25 09:25  Cmm-Compiler\lab2\SymbolTable.c
     文件        4386  2018-08-25 09:25  Cmm-Compiler\lab2\SymbolTable.h
     文件         708  2018-08-25 09:25  Cmm-Compiler\lab2\change.txt
............此处省略92个文件信息

评论

共有 条评论