编译原理实验指导书


    目 录
    相关问题说明 1
    实验题 2
    实验1 词法分析(2课时) 3
    实验2 语法分析(2课时) 5
    实验3 语义分析(2课时) 7
    实验4 代码生成(2课时) 9
    参考书目 11


    相关问题说明
    课程4实验
    课程中实现程序普通CC++程序Windows环境属控制台应程序
    提交实验成果:
    1 实验成果包括:
    n 源程序学号加姓名方式命名项目源程序目录例学号:090510xxx姓名:某某目录名:090510xxx某某源程序编译文件
    n 实验报告
    2 实验报告班干部收齐实验次课时交(实验外)源程序发邮箱
    实验成果评价标准:
    1 时提交实验成果期交计成绩
    2 实验成果雷者计成绩
    3 实验报告采手写方式书写格式计算机信息工程系求执行求办事计成绩
    4 实验成果完整缺源程序实验报告者计成绩
    5 实验报告容充实够真实反映实验情况酌情加分
    6 实验报告字迹工整酌情加分
    7 存加分性
    实验时间点:
    班级
    周次
    星期
    节次
    实验室
    信051
    79111316
    1
    12
    东7405
    软件工程062
    14
    1
    12
    东7405
    软件工程071
    18
    1
    12
    东7405
    计算机062
    791112141617
    1
    12
    东7406
    信息理071
    18
    1
    12
    东7406
    信息理061
    16
    1
    12
    东7408
    信息理071
    4711131517
    1
    12
    东7408
    软件工程061
    914
    1
    12
    东7408
    信息理062
    16
    1
    12
    东7412
    软件工程071
    1112131415
    1
    12
    东7412
    软件工程062
    9
    1
    12
    东7412
    计算机051
    13141516
    1
    12
    东7413
    物流理082
    78910111213141516
    1
    12
    东8405
    广告学081
    78910111213141516
    1
    12
    东8409
    信息理051
    131415161718
    1
    34
    东7405
    计算机052
    13141516
    1
    34
    东7406
    信061
    11121718
    1
    34
    东7406
    网络工程091
    891112
    2
    56
    东8413
    信052
    79111316
    1
    34
    东7412
    信061
    15
    1
    34
    东7412
    计科051
    4681012141618
    1
    34
    东7413
    计算机应081
    17
    1
    34
    东7413
    艺术设计084
    14
    1
    34
    东8405
    计算机应081
    45678910111213141516
    1
    34
    东8409
    信息计算科学061
    11121314
    1
    中午
    东7405
    软件工程081
    89101112131415
    1
    中午
    东7406
    软件工程061
    91011121314
    1
    中午
    东7408
    软件工程062
    91011121314
    1
    中午
    东7412
    软件工程071
    13141516
    1
    中午
    东7413
    计算机063
    791112141617
    1
    中午
    东8405
    计算机应082
    4567891011121314151617
    1
    中午
    东8409
    艺术设计084
    1315
    1
    56
    东7405
    计算机061
    10121416
    1
    57
    东7405
    电信科学082
    78910111213141516
    1
    56
    东7406
    计算机053
    13141516
    1
    56
    东7408
    艺术设计084
    789101112
    1
    56
    东7408
    信息计算081
    89101112131415
    1
    56
    东7412
    艺术设计084
    16
    1
    56
    东7412
    信息理052
    131415161718
    1
    56
    东7413
    艺术设计081
    78910111213141516
    1
    56
    东8405
    国际贸易081
    78910111213141516
    1
    56
    东8409
    信062
    1112151718
    1
    78
    东7406
    电信科学081
    1314
    1
    78
    东7406
    电信科学081
    1516
    1
    78
    东7408
    信息计算科学062
    11121314
    1
    78
    东7408
    艺术设计083
    78910111213141516
    1
    78
    东7412
    软件工程072
    13141516
    1
    78
    东7413
    电信科学081
    789101112
    1
    78
    东7413
    艺术设计082
    78910111213141516
    1
    78
    东8405
    金融学081
    78910111213141516
    1
    78
    东8409
    信051
    18
    2
    12
    东7405
    计算机应081
    17
    2
    12
    东7408
    计算机应081
    5678910111213141516
    2
    12
    东7412
    计科052
    4681012141618
    2
    12
    东7413
    计算机051
    1415
    2
    12
    东8405
    计算机科学081
    89101112131415
    2
    12
    东8409
    计算机应082
    567891011121314151617
    2
    34
    东7405
    计算机061
    17
    2
    34
    东7406
    网络工程081
    89101112131415
    2
    34
    东7406
    软件工程061
    141516
    2
    34
    东7408
    计科051
    17
    2
    34
    东7408
    计科051
    141516
    2
    34
    东7412
    计科051
    89111213
    2
    34
    东7413
    计算机052
    1415
    2
    34
    东7413
    计算机061
    7911121416
    2
    34
    东8405
    计科(成)
    68101214
    2
    34
    东8409
    信052
    18
    2
    中午
    东7405
    软件工程062
    141516
    2
    中午
    东7412
    信051
    568101213141516
    2
    56
    东7405
    信息理061
    89101112131415
    2
    56
    东7406
    软件工程072
    18
    2
    56
    东7406
    软件工程072
    1112131415
    2
    56
    东7408
    信051
    17
    2
    56
    东7413
    计科052
    89111213
    2
    56
    东7413
    信息理082
    89101112131415
    2
    56
    东8405
    理类0807
    78910111213141516
    2
    56
    东8409
    信052
    568101213141516
    2
    78
    东7405
    信息理062
    89101112131415
    2
    78
    东7406
    信052
    17
    2
    78
    东7413
    计科053
    89111213
    2
    78
    东7413
    电气类0806
    89101112131415
    2
    78
    东8405
    艺术设计086
    78910111213141516
    2
    78
    东8409
    公选
    6789101112
    2
    911
    东740812
    信息理051
    89141516
    3
    12
    东7405
    信息理061
    1116
    3
    12
    东7408
    软件工程061
    691314
    3
    12
    东7408
    信息理062
    1116
    3
    12
    东7412
    软件工程062
    691314
    3
    12
    东7412
    计科053
    4681012141618
    3
    12
    东7413
    广告051
    37
    3
    12
    东7413
    广告学082
    78910111213141516
    3
    12
    东8409
    信052
    1011131618
    3
    34
    东7405
    计算机071
    18
    3
    34
    东7406
    计算机071
    1112131415
    3
    34
    东7408
    计科052
    17
    3
    34
    东7408
    计科052
    141516
    3
    34
    东7412
    广告052
    37
    3
    34
    东7413
    信息理072
    17
    3
    34
    东7413
    计算机053
    1415
    3
    34
    东8405
    信息理071
    151617
    3
    中午
    东7405
    信051
    18
    3
    中午
    东7405
    汉语言061
    57111315
    3
    中午
    东7406
    网络工程071
    111213141518
    3
    中午
    东7408
    计算机063
    1011121314
    3
    中午
    东7409
    计算机061
    131517
    3
    中午
    东7412
    计算机063
    151617
    3
    中午
    东7413
    软件工程061
    4681012141516
    3
    中午
    东8405
    软件工程082
    89101112131415
    3
    中午
    东8409
    信051
    10111316
    3
    56
    东7405
    行政理071
    57111315
    3
    56
    东7406
    信息理052
    78
    3
    56
    东7413
    行政理061
    10111213
    3
    57
    东7413
    信息理072
    151617
    3
    57
    东7413
    电气类0807
    89101112131415
    3
    56
    东8405
    行政理081
    78910111213141516
    3
    56
    东8409
    计算机062
    17
    3
    68
    东7408
    计算机062
    1315
    3
    68
    东7412
    汉语言062
    57111315
    3
    78
    东7406
    软件工程062
    4681012141516
    3
    78
    东7408
    信息理052
    789
    3
    78
    东7413
    行政理062
    10111213
    3
    810
    东7413
    校公选
    789101112
    3
    911
    东740812
    计算机063
    131517
    3
    911
    东7412
    软件工程061
    678910111213
    4
    12
    东7405
    信息理072
    1718
    4
    12
    东7405
    计算机061
    1011121314
    4
    12
    东7409
    信息理072
    47111315
    4
    12
    东7412
    计算机061
    151617
    4
    12
    东7413
    信息理081
    89101112131415
    4
    12
    东8405
    电气类083
    89101112131415
    4
    12
    东8409
    网络工程092
    891112
    2
    56
    东8415


    实验题
    编译整数四运算表达式整数四运算表达式翻译汇编语言代码
    整数四运算文法:
    + | |
    * | |
    () | num
    消左递

    + |

    * | | ε
    () | num
    非终结符+*()num终结符
    词法:
    1. 运算符:+ *
    2. 界符:( )
    3. num非负整数
    4. 空白包括空格换行符水制表符分开运算符界符num包括换行符时换行符成表达式终结标志


    实验1 词法分析(2课时)
    实验目:解词法分析器功输出形式掌握词法分析器设计原理方法
    实验容:设计实现整数四运算表达式词法分析程序
    实验求:编写程序机调试测试纪录调试测试情况结合程序进行分析
    实验环境:Visual C++ 60版Windows 2000版汇编工具(Software子目录)
    实现点提示:
    需实现词法分析程序功接受表达式输出该表达式中类单词符号测试词法分析程序时定格式输出类单词符号
    单词符号种类属类型定义
    typedef enum Symbol { ERR 1 END NUM PLUS MINUS TIMES
    SLASH LPAREN RPAREN } Symbol
    运算符界符需处理种类编码num需处理应具体属性信息ERR表示词法分析错END表示表达式分析结束例1+2*(3+4)应单词符号序列
    NUM 1
    +
    NUM 2
    *
    (
    NUM 3
    +
    NUM 4
    )
    词法分析函数原型
    Symbol gettoken()
    实现具体方法参考文献[1]中4446页里涉ReserveInsertIdInsertConst实现程中会isdigitisspacegetcharungetcatoi等函数时注意包含相关头文件
    状态转换图



    实验2 语法分析(2课时)
    实验目:理解分析法基思想理解递降分析法基思路掌握构造递降子程序方法
    实验容:运递降子程序法实现整数四运算表达式语法分析程序
    实验求:编写程序机调试测试纪录调试测试情况结合程序进行分析
    实验环境:Visual C++ 60版Windows 2000版汇编工具(Software子目录)
    实现点提示:
    需实现语法分析程序功接受表达式分析该表达式根输入正确否出相应信息测试时果输入表达式分析正确输出表示分析正确信息否输出表示分析错误信息
    分析程序组递程组成文法中非终结符应程分析程中语法分析程序需调实验1实现词法分析程序
    全局程变量:
    ADVANCE输入串指示器IP指输入符号读入单字符号
    SYMIP前指输入符号
    ERROR出错处理子程序
    非终结符应子程序定义分析程中需某非终结符出发进行展开(推导)时调非终结符应子程序
    例:定文法G(E):
    E→TE'
    E'→+TE' |ε
    T→FT'
    T'→*FT' |ε
    F→(E) | i
    应递子程序
    PROCEDURE E
    BEGIN
    TE'
    END
    PROCEDURE E'
    IF SYM+’ THEN
    BEGIN
    ADVANCE
    TE'
    END
    PROCEDURE T
    BEGIN
    FT'¢
    END
    PROCEDURE T'
    IF SYM*’ THEN
    BEGIN
    ADVANCE
    FT'¢
    END
    PROCEDURE F
    IF SYMi’ THEN ADVANCE
    ELSE IF SYM(’ THEN
    BEGIN
    ADVANCE
    E
    IF SYM)’ THEN ADVANCE
    ELSE ERROR
    END ELSE ERROR
    程序:
    PROGRAM PARSER
    BEGIN
    ADVANCE
    E
    IF SYM <>’#’ THEN
    ERROR
    END
    者应递子程序:

    PROCEDURE E
    BEGIN
    TE'
    END
    PROCEDURE T
    BEGIN
    FT'
    END
    PROCEDURE E'
    IF SYM+’ THEN
    BEGIN
    ADVANCE
    TE'
    END ELSE IF SYM<>#’ AND
    SYM<>’)’ THEN ERROR
    PROCEDURE T'
    IF SYM*’ THEN
    BEGIN
    ADVANCE
    FT¢
    END ELSE IF SYM<>#’ AND
    SYM<>’)’AND SYM<>’+’ THEN ERROR
    PROCEDURE F
    IF SYMi’ THEN ADVANCE
    ELSE IF SYM(’ THEN
    BEGIN
    ADVANCE
    E
    IF SYM)’ THEN ADVANCE
    ELSE ERROR
    END ELSE ERROR
    程序:
    PROGRAM PARSER
    BEGIN
    ADVANCE
    E
    END
    具体实现语法分析程序时ADVANCE功实验1中gettoken实现程序中设置全局变量nexttokenSYM应保存调gettoken时返回结果ERROR种简单实现输出错误提示然调exit程序立终止执行
    实现整数四运算表达式语法分析程序时面例子基础修改扩充

    实验3 语义分析(2课时)
    实验目:理解属性文法理解语法制导翻译基思想方法
    实验容:设计实现实现整数四运算递降翻译器
    实验求:编写程序机调试测试纪录调试测试情况结合程序进行分析
    实验环境:Visual C++ 60版Windows 2000版汇编工具(Software子目录)
    实现点提示:
    需实现语义分析程序功接受表达式分析该表达式分析程中建立该表达式抽象语法树四运算表达式抽象语法树基作二叉树中序遍历序列应该输入表达式样——没括号外输出中序遍历序列检测程序功否正确果分支节点时变量标记四运算表达式抽象语法树进行序遍历输入表达式应四元式序列(实验4样四元式序列)例输入1+2*(3+4)应抽象语法树中序遍历序列四元式序列分
    1 + 2 * 3 + 4

    + 3 4 T1
    * 2 T1 T2
    + 1 T2 T3
    抽象语法树种类型定义
    typedef int ValType
    typedef struct ASTNode {
    Symbol sym
    ValType val
    struct ASTNode * arg1 *arg2
    } ASTNode *AST
    创建节点操作
    ASTNode *mknode(Symbol op ASTNode *arg1 ASTNode *arg2)
    返回新创建运算节点标号op域arg1arg2分指棵子树
    ASTNode *mkleaf(Symbol sym ValType val)
    返回新创建数节点标号num域val存放数值
    建立抽象语法树语义规
    E E1 + T Enptr mknode( +’ E1nptr Tnptr )
    E E1 – T Enptr mknode( ’ E1nptr Tnptr )
    E T Enptr Tnptr
    T T1 * F Tnptr mknode( *’ T1nptr Fnptr )
    T T1 F Tnptr mknode( ’ T1nptr Fnptr )
    T F Tnptr Fnptr
    F (E) Fnptr Enptr
    F num Fnptr mkleaf(num numval )
    消左递翻译模式
    E T {E'iTnptr}
    E' {EnptrE's}
    E' + T {E'1imknode(+’E'iTnptr)}
    E'1 {E'sE1s}
    E' T {E'1imknode(’E'iTnptr)}
    E'1 {E'sE1s}
    E' ε {E's E'i}
    T F {T'iFnptr}
    T' {TnptrT's}
    T' * F {T'1imknode(*’T'iFnptr)}
    T'1 {T'sT1s}
    T' F {T'1imknode(’T'iFnptr)}
    T'1 {T'sT1s}
    T' ε {T's T'i}
    F (E) {FnptrEnptr}
    F num {Fnptrmkleaf(numnumval)}
    递降翻译器设计参考文献[1]中156158页具体实现时实验2中实现语法分析程序基础进行修改实现表达式递降翻译器


    实验4 代码生成(2课时)
    实验目:理解代码生成程中基问题
    实验容:设计实现表达式代码生成程序
    实验求:编写程序机调试测试纪录调试测试情况结合程序进行分析
    实验环境:Visual C++ 60版Windows 2000版汇编工具(Software子目录)
    实现点提示:
    需代码生成程序功实验3语义分析程序四元式输出作输入输出汇编语言程序例1+2*(3+4)应输出
    386
    MODEL FLAT

    ExitProcess PROTO NEAR32 stdcall dwExitCodeDWORD

    INCLUDE ioh header file for inputoutput

    cr EQU 0dh carriage return character
    Lf EQU 0ah line feed

    STACK 4096 reserve 4096byte stack

    DATA reserve storage for data
    t DWORD 40 DUP ()
    label1 BYTE cr Lf The result is
    result BYTE 11 DUP ()
    BYTE cr Lf 0
    CODE start of main program code
    _start

    mov eax 3
    add eax 4
    mov t+0 eax

    mov eax 2
    mov ebx t+0
    mul ebx
    mov t+4 eax

    mov eax 1
    add eax t+4
    mov t+8 eax

    mov eax t+8
    dtoa result eax convert to ASCII characters
    output label1 output label and sum
    INVOKE ExitProcess 0 exit with return code 0
    PUBLIC _start make entry point public
    END end of source code
    输出汇编代码鉴文献[2]中格式假定面汇编程序保存文expressionasm中expressionasm复制汇编器目录然命令提示符汇编器目录次执行
    ml c coff expressionasm
    link debug subsystemconsole entrystart out expressionexe expressionobj
    ioobj kernel32lib
    expression

    The result is 15
    注意面link行应该连续输入方便起见汇编器目录批处理文件compilebat执行
    compile expression
    完成面三步完成务
    生成汇编代码中
    t DWORD 40 DUP ()
    定义40双字(占4字节)作时变量根需调整更方法栈中分配时变量
    生成代码时需考虑生成_startdtoa result eax间汇编码开头_start部分dtoa result eax结尾部分汇编码例子原样输出
    通分析1+2*(3+4)四元式序列汇编码应关系考虑四元式翻译汇编码需特注意寻址方式问题法法翻译
    汇编程序例子中成分含义参考文献[2]目录中文献[2]英文版电子书


    参考书目
    [1] 陈火旺等 程序设计语言编译原理(第3版) 北京:国防工业出版社20091
    [2] Richard C Detmer 80x86汇编语言计算机体系结构(英文版) 北京:机械工业出版社200411

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    《编译原理》课程实验报告

    《编译原理》课程实验报告题 目: 词法分析器实验 专 业: 计算机科学与技术 班 级: 1班 学 号: ...

    3年前   
    623    0

    编译原理语法分析实验报告

    编译原理语法分析实验报告软工班一、 实验内容二、 实验目的三、 实验要求四、 程序流程图l 主函数;l scanner();l irparser()函数l yucu() /*语句串分析*/l...

    2年前   
    934    0

    汇编原理实验指导书

    第一部分 汇编语言程序的上机过程 1 一、 建立汇编语言的工作环境 1 二、在计算机上运行汇编语言的步骤 1 三、 建立ASM文件 1 四、 用MASM程序产生OBJ文件 3 五、 ...

    5年前   
    1100    0

    电子测量原理实验指导书

    电子测量原理实验指导书XX大学自动化学院目 录电子测量实验系统组成原理及操作………………………… 1电子计数器原理及应用……………………………………… 10示波器原理及应用…………………...

    3年前   
    593    0

    实验2.正规式的定义与应用 编译原理实验报告

    实验2. 正规式的定义与应用一、 实验目的1. 熟悉正规式的构造方法;2. 熟悉从字符串中识别特定字符串的方法;3. 复习对文件的操作。二、 实验内容和要求已知一段C语言程序:#include...

    1年前   
    406    0

    计算机组成原理实验指导书

     计算机组成原理 实验指导书 目 录 实验一 8位算术逻...

    5年前   
    1490    0

    编译原理实验报告LR(1)分析法

    河南工业大学实验报告课 程 编译原理 实验名称 实验四 LR(1)分析法 一. 实验目的 1.掌握LR(1)分析法的基本原理; 2.掌握LR(1)分析表的构...

    2年前   
    1042    0

    编译原理实验3-4预测分析表方法

    实验3-4 预测分析表方法班级:_ _ 学号:_ _ 姓名:_ _ 得分:_ _一、实验目的理解预测分析表方法的实现原理。二、实验内容: ...

    1年前   
    313    0

    编译原理实验报告(一)词法分析程序

     编译原理实验报告(一) ----词法分析程序【目的要求】 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的...

    3年前   
    764    0

    编译原理实验报告LL(1)分析法

    课 程 编译原理 实验名称 实验二 LL(1)分析法 实验目的 1.掌握LL(1)分析法的基本原理; 2.掌握LL(1)分析表的构造方法; 3.掌握LL(1...

    1年前   
    395    0

    编译原理实验报告3-LL(1)文法构造

    实验3 LL(1)文法构造一、实验目的熟悉LL(1)文法的分析条件,了解LL(1)文法的构造方法。 二、实验内容1、编制一个能够将一个非LL(1)文法转换为LL(1)文法;2、消除左递归;3...

    2年前   
    296    0

    编译原理课后习题答案

    编译原理课后习题答案Chapter 11.解答:程序设计语言:程序设计语言是遵守一定规范的、描述“计算”(Computing)过程的形式语言。一般可以划分为低级语言和高级语言两大类。低级语言是...

    1年前   
    594    0

    《编译原理》期末试题(五)

    1.语言是A.句子的集合 B.产生式的集合 C.符号串的集合 D.句型的集合2.编译程序前三个阶段完成的工作是A.词法分析...

    2年前   
    723    0

    编译原理课程设计报告 简单编译器的设计与实现

     编译原理课程设计 ——简单编译器的设计与实现 班 级: 组长: 组员: 指导教师: 设计时间: ...

    5年前   
    1870    0

    编译原理期末试题附答案

    《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。(× )2.一个有限状态自动机中,有且仅有一个唯一的终态...

    1年前   
    401    0

    《单片机原理及应用》实验指导书(C语言)

    《 单 片 机 原 理 及 应用》实 验 指 导 书(C语言)XX大学物电学院微机教研室 XX2011前 言 由于单片机具有高可靠性、超小型、低价格、容易产品化等特点,在...

    3年前   
    670    0

    单片机原理与接口技术实验指导书(2018修订)

    本课程是电子信息工程、通信工程、信息工程和自动化专业必修的专业实验课程。通过本课程的教学,使学生深刻体会到单片机原理与接口技术的应用,掌握汇编和C51语言的语法和技巧,熟悉电子系统的设计和调试过...

    3年前   
    600    0

    编译原理-实验报告2-递归下降分析法

    计算机硬件实验室实验报告姓名学号班 级成 绩 设备名称及软件环境递归下降分析一、实验目的: 根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的...

    3年前   
    595    0

    语义分析与中间代码生成天津理工大学编译原理实验3

    实验报告学院(系)名称:计算机与通信工程学院姓名学号专业班级实验项目实验三:语义分析与中间代码生成课程名称编译原理课程代码实验时间实验地点计算机软件实验室计算机软件实验室批改意见成绩教师签字:...

    1年前   
    234    0

    实验1指导实验环境的建立和程序的编译

    实验1指导:实验环境的建立和程序的编译、调试和运行一、实验环境的建立〔一〕 下载工具文件或者 :// tjut.edu :8080/xuebao/hbyy下载以下两个压缩文件:〔1...

    2年前   
    462    0

    文档贡献者

    文***品

    贡献于2020-12-30

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档