词法分析程序实验报告
实验一词法分析实验
商业软件工程2班 黄铭坤 201506110147
一、 实验目的
编制一个词法分析程序。
二、 实验内容和要求
输入:源程序字符串
输出:二元组(种别,单词本身)
待分析语言的词法规则
三、 实验方法、步骤及结果测试
1. 源程序名:词法分析.c
可执行程序名:词法分析.exe
2. 原理分析及流程图
(1) 关键字:
begin if then while do end
(2) 运算符和界符:
: = + - * / < > <= < > >= ; ( ) #
(3)各种单词符号对应的种别码
单词符号 |
种别码 |
单词符号 |
种别码 |
begin |
1 |
: |
17 |
if |
2 |
:= |
18 |
then |
3 |
< |
20 |
while |
4 |
<= |
21 |
do |
5 |
<> |
22 |
end |
6 |
> |
23 |
l(l|d)* |
10 |
>= |
24 |
dd* |
11 |
= |
25 |
+ |
13 |
; |
26 |
- |
14 |
( |
27 |
* |
15 |
) |
28 |
/ |
16 |
# |
0 |
3. 主要程序段及其解释:
void Analyse(char a[])//词法分析的主要函数
{
int i=0,j=0,n=0,m=0,temp=0;
char b[N];//数组b存储数组a中除关键字外的其他字母
while(a[i]!='$')//对输入的单词符号进行识别判断是否为关键字或标志符,若是则输出单词本身及其词法规则和种别码
{
if(a[i]>=65&&a[i]<=122)//判断每一个单词符号是否为字母
{
j=0;
while((a[i]>=65&&a[i]<=122)||(a[i]>='0'&&a[i]<='9')||a[i]=='_')
{
b[j]=a[i];
j++;
i++;
}
i--;
b[j]='\0';
for(n=0;n<6;n++)
{
if(strcmp(b,word[n])==0)
{
printf("<关键字,%d,",n+1);
while(word[n][m]!='\0')
{
printf("%c",word[n][m]);
m++;
}
printf(">\n");
temp=1;
}
}
if(temp==0)
printf("<标识符,10,%s>\n",b);
}
else
{
switch(a[i])//用switch结构实现对界符和运算符的识别和其词法规则和种别码的输出
{
case '#': printf("<0,$>\n");
case '+': printf("<运算符,13,+>\n");break;
case '-': printf("<运算符,14,->\n");break;
case '*': printf("<运算符,15,*>\n");break;
case '/': printf("<运算符,16,/>\n");break;
case ':':if(a[i+1]=='=')
{
printf("<运算符,18,:=>\n");
i++;
}
else printf("<界符,17,:>\n");
break;
case '<': if(a[i+1]=='=')
{
printf("<运算符,21,<=>\n");
i++;
}
else if(a[i+1]=='>')
{
printf("<运算符,22,<>>\n");
i++;
}
else printf("<界符,20,<>\n");
break;
case '>': if(a[i+1]=='=')
{
printf("<运算符,24,>=>\n");
i++;
}
else printf("<界符,23,>>\n");
break;
case '=': printf("<运算符,25,=>\n");break;
case ';': printf("<界符,26,;>\n");break;
case '(': printf("<界符,27,(>\n");break;
case ')': printf("<界符,28,)>\n");break;
case' ': break;
case'\n': break;
default:
if(a[i]>='0'&&a[i]<='9')
printf("<数字,%c>\n",a[i]);
else
printf("'%c'输入错误!\n",a[i]);//若输入的单词符号为其他,则输出“输入错误”
break;
}
}
i++;
}
}
4. 运行结果及分析
四、 实验总结
转载于:https://www.cnblogs.com/hhmk/p/5962263.html
词法分析程序实验报告相关推荐
- c语言词法分析程序实验报告,实验一词法分析程序设计与实现
实验一 词法分析程序设计与实现 一.实验目的: 加深对词法分析器的工作过程的理解:加强对词法分析方法的掌握:能够采用一种编程语言实现简单的词法分析程序:能够使用自己编写的分析程序对简单的程序段进行词法 ...
- 重庆理工大学c语言程序实验报告,重庆理工大学-C语言程序实验报告.doc
重庆理工大学-C语言程序实验报告 程序设计基础C实验报告 PAGE 47 <程序设计基础C> 实 验 报 告 教学班级: 学号: 姓名: 课程教师: 实验辅导教师: 重庆理工大学计算机学院 ...
- c语言实验分支程序设计二,C语言程序实验报告分支结构的程序设计(0页).doc
C语言程序实验报告分支结构的程序设计(0页) 数学与软件科学学院 实验报告 学期:11至12___ 第_1 学期 2011年10 月 17 日 课程名称:程序设计基础教程-C语言 专业:2010级5_ ...
- 华理c语言设计网上作业,华理c程序实验报告(共9篇).doc
华理c程序实验报告(共9篇) 华理c程序实验报告(共9篇) 2011华理<C语言实验报告> C程序设计课程 实验报告册 所在学院 班 级 学 号 姓 名 任(来自:www.XIelw.Co ...
- 一般单纯形法的matlab程序,实验报告(单纯形法的matlab程序)
<实验报告(单纯形法的matlab程序)>由会员分享,可在线阅读,更多相关<实验报告(单纯形法的matlab程序)(5页珍藏版)>请在人人文库网上搜索. 1.实验一:线性规划单 ...
- 《移动软件开发》实验1:第一个微信小程序 实验报告
2022年夏季<移动软件开发>实验报告 本实验报告所参考实验文档为:Docs (feishu.cn) 如想获得详细的制作过程,请点击上面链接.该博客仅为个人使用实验报告 姓名和学号? / ...
- c语言选择结构程序实验报告,C语言程序设计 实验报告2--选择结构
福建农林大学金山学院实验报告 系(教研室):专业:年级: 实验课程:C语言程序设计姓名:学号:实验室号: 计算机号:实验时间:指导教师签字:成绩: 实验2:选择结构程序设计 一.实验目的和要求 1.了 ...
- 微信小程序实验报告-----学生家教小程序
实验报告 课程名称:企业级前端应用开发实践 实验项目:学生家教小程序 实验地点: 专业班级: 学 号: 学生姓名: 指导教师: 年 月 日 实验报告 实验名称 学生家教系统 实验地点 实验日 ...
- c语言程序实验报告指针目的,c语言实验报告
C语言上机实验实验报告指针 C语言程序设计实验报告 1实验目的 ⑴掌握指针的概念,会定义和使用指针变量: ⑵能正确使用变量的指针和指向变量的指针变量: ⑶能正确使用数组的指针和指向数组的指针变量: ⑷ ...
- python画图程序实验报告_Python绘图简明教程
前言 本文纯科普向. 主要介绍一下Python上最好用的2D图形绘制库matplotlib的安装以及一些基础操作. 选择Python是因为其强大的第三方库和优秀便捷的语法,并且能方便地对数据进行后续处 ...
最新文章
- 017_Jedis的String数据类型
- c语言for要分号错误,c语言for语句
- 用shell或者python写出各种图形
- 被裁的第50天,我终于拿到心仪公司Offer
- Adobe Originals的可变字体
- VsCode之在vue中HTML代码使用自动补全插件
- 摩根大通的企业级区块链解决方案—Quorum
- vitamio视频框架使用详解
- 出入库管理系统-精致版
- POSCMS 邮件服务器配置
- iOS中文件连接群晖服务器,教你使用群晖怎么在ios的“家庭‘’App(HomeKit)里添加Hom...
- FC12下OKL4编译环境的搭建
- CS224W-图神经网络 笔记4.1:Community Structure in Networks - 网络中社区的特性
- 线性代数学习笔记——第四章学习指南——n维向量空间
- intel 12代异构处理器 + win11平台,使用VMware安装Linux系统出现键盘输入有延迟问题
- HTML+CSS基础知识5
- 更大的田字格python
- Surface Pro 5 开启华为多屏协同
- pda测试扫码枪用linux,PDA手持终端和扫描枪的区别
- JS页面四个颜色不同的div,鼠标进入哪个div,页面背景颜色变成该div的颜色。
热门文章
- Linux系统编程 --- 系统调用
- [转载]MySQL锁机制
- centos下安装和卸载jdk
- idea下载github代码及切换分支
- 无法鼠标拖动选择_在 iPad 上用鼠标体验怎么样?我用这 12 款 App 试了一下
- 电子相册系统(八)验证用户是否可用
- LQR、Stochastic Bandits、Bayesian Bandits、Contextual Bandits与基于模型的强化学习浅析
- Windows10右键没有新建文本文件
- Python内置函数(7)——sum
- [互联网面试笔试汇总C/C++-9] 实现赋值运算符函数-剑指offer