编译原理词法分析实验
目录
- 实验内容描述
- 实验设计
- 输入输出形式
- 样例输入和样例输出
- 实验设计原理(步骤)
- 主要函数和辅助函数
- 核心代码截图
- 实验结果
可以找我代做,包满分。QQ1975728171可以写完整实验报告
实验内容描述
根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下:
(1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格式统一定义;
(2)为了方便进行自动评测,输入的被编译源文件统一命名为testfile.txt;输出的结果文件统一命名为output.txt,结果文件中每行按如下方式组织:
单词类别码 单词的字符/字符串形式(中间仅用一个空格间隔)
单词的类别码请统一按如下形式定义:
实验设计
输入输出形式
【输入形式】testfile.txt中的符合文法要求的测试程序。
【输出形式】要求将词法分析结果输出至output.txt中。
样例输入和样例输出
【样例输入】
const int const1 = 1, const2 = -100;
const char const3 = ‘_’;
int change1;
char change3;
int gets1(int var1,int var2){
change1 = var1 + var2;
return (change1);
}
void main(){
printf(“Hello World”);
printf(gets1(10, 20));
}
【样例输出】
CONSTTK const
INTTK int
IDENFR const1
ASSIGN =
INTCON 1
COMMA ,
IDENFR const2
ASSIGN =
MINU -
INTCON 100
SEMICN ;
CONSTTK const
CHARTK char
IDENFR const3
ASSIGN =
CHARCON _
SEMICN ;
INTTK int
IDENFR change1
SEMICN ;
CHARTK char
IDENFR change3
SEMICN ;
INTTK int
IDENFR gets1
LPARENT (
INTTK int
IDENFR var1
COMMA ,
INTTK int
IDENFR var2
RPARENT )
LBRACE {
IDENFR change1
ASSIGN =
IDENFR var1
PLUS +
IDENFR var2
SEMICN ;
RETURNTK return
LPARENT (
IDENFR change1
RPARENT )
SEMICN ;
RBRACE }
VOIDTK void
MAINTK main
LPARENT (
RPARENT )
LBRACE {
PRINTFTK printf
LPARENT (
STRCON Hello World
RPARENT )
SEMICN ;
PRINTFTK printf
LPARENT (
IDENFR gets1
LPARENT (
INTCON 10
COMMA ,
INTCON 20
RPARENT )
RPARENT )
SEMICN ;
RBRACE }
实验设计原理(步骤)
主要函数和辅助函数
主要函数:
main()主函数;
最外面是一个大的while循环,判断文件是否读取完成,里面有一个小的while循环,判断读入的字符是否为空格,之后按照下面步骤进行。
- k=0,如果读取的字符是字母(LETTER函数判断),则k++,继续读字符,并把读的字符传给数组TOKEN,直到读到的不是字母;最后读完字符串,还要与关键字做比较(RESERVEDWORD函数)如果字母后面是数字,则把它定义为标识符。
- i=0,如果一开始就是数字(NUMBER函数判断),则k++,继续读数字,直到读不到数字。
- 如果是字符常量或者是字符串,前面字符是’或者”,在while循环里面,判断下面读取的字符是否为’或者”,如果是则跳出循环,在TOKEN数组里面的就是字符常量或者字符串。
- 最后是运算符判断,比如>=这个运算符,先读取的是>,然后再判断后面是否为=,如果为=,则定义为GEQ;否则为GRE,即=。
其他辅助函数:
bool NUMBER(char A)判断是否为数字
bool LETTER(char A)判断是否为字母
bool CHARCON(char A)判断是否为字符常量
bool STRCON(char A)判断是否为字符串
bool RESERVEDWORD(char* a, FILE* fp)判断是否为关键字]
核心代码截图
实验结果
这是在cg平台上的测试结果,完全正确!
编译原理词法分析实验相关推荐
- c++实现编译原理词法分析实验(含代码)
c++实现编译原理词法分析实验(含代码) 一.实验目的: 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解.并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法. ...
- [编译原理]词法分析实验之基于 DFA 的单词识别
Spring-_-Bear 的 CSDN 博客导航 问题描述: 基于 DFA 的单词识别问题的一种描述是:编写一个程序,输入一个确定的有穷自动机(DFA),使用该 DFA 识别单词. 基本要求: 设置 ...
- c语言的适当大小的子集,编译原理上机实验报告
编译原理上机实验报告,编制C语言子集的词法分析程序,编制递归下降法的语法分析程序 编译技术上机实验题目 实验一 一.题目 编制C语言子集的词法分析程序 二.目的 通过设计.编制.调试一个具体的词法分析 ...
- 《编译原理》实验教学大纲
<编译原理>实验教学大纲 课程编号: 773033 课程名称:编译原理 英文名称:Compiler Principle 课程类型: 模块课 学 时:5 学 分:4 适用对象: 软件开发各专 ...
- 编译原理 词法分析 算符优先分析法
编译原理 词法分析 算符优先分析法 实验目的 加深对语法分析器工作工程的理解,加强对算符优先分析法实现语法分析程序的掌握:能够采用一种编程语言实现简单的语法分析程序:能够使用自己辨析的分析程序对简单的 ...
- c 语言编写编译原理语义分析实验,北邮 编译原理 语义分析实验报告
<北邮 编译原理 语义分析实验报告>由会员分享,可在线阅读,更多相关<北邮 编译原理 语义分析实验报告(14页珍藏版)>请在人人文库网上搜索. 1.编译原理第六章 语义分析目 ...
- 编译原理词法分析程序设计
编译原理词法分析程序设计 1. 课程设计目的: 结合讲授内容,设计与实现一个简单词法分析器,通过设计编制调试一个具体的词法分析程序,加深对词法分析程序的功能及实现方法的理解.并掌握在对程序设计语言 ...
- 【SEUSE】编译原理 - 词法分析器实验报告
[SEU&SE]编译原理 - 词法分析器实验报告 README 一. 实验目的 二. 实验环境 1. 开发环境: 2. 运行环境 三. 实验内容 1. 主要内容 2. 主要功能 3. 种别码 ...
- 编译原理:实验一练习
编译原理:实验一练习 词法分析器 编译原理实验报告 上面的第一个链接中的词法分析器有一点问题,修改后的代码如下: #include "string.h"#include " ...
最新文章
- 《从缺陷中学习C/C++》——6.18 小结
- 数据结构 -- 队列
- JZOJ5906 传送门
- C# WPF MVVM项目实战(进阶①)
- 为什么阿里全面推动 K8S 落地,咬紧牙关也要搞云原生?
- 批量刷新远程物化视图的方法(备用)
- leetcode python3 简单题191. Number of 1 Bits
- javascript 获得本地 IP 地址
- Git入门(本地使用)
- DynamipsGUI 2.8(CCNP模拟器)
- JAVA定义矩形类 方法一
- 计算机内存怎样清理,怎么样清理电脑内存 电脑清理内存方法【图文】
- 京东云,走进产业数字化深处
- CTF学习-web解题思路
- IE11怎么调取摄像头并拍照
- win10上elasticsearch-head显示集群健康值未连接问题
- 【工业设计】设计应注意技术、情感需求和技术发展
- 贾扬清开源 AI 框架 Caffe | 开源英雄
- web前端涉及到的软件
- 项目人生,人生项目--王如龙语录
热门文章
- 【JVM】第一章 JVM体系结构
- spring mvc注解之@RequestBody和@RequestParm
- redis学习笔记之虚拟内存
- Django学习之Cookie和Session
- mysql基础知识总结
- siteminder sso agent 初探
- [导入]ASP.NET Ajax程序设计第II卷:客户端Microsoft Ajax Library与异步通信层及源代码.zip(101.50 MB)...
- jQuery复制table header到表格的最下面
- ApacheCN 数据科学译文集 2020.8
- JavaScript 编程精解 中文第三版 六、对象的秘密