实验一词法分析实验

商业软件工程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

词法分析程序实验报告相关推荐

  1. c语言词法分析程序实验报告,实验一词法分析程序设计与实现

    实验一 词法分析程序设计与实现 一.实验目的: 加深对词法分析器的工作过程的理解:加强对词法分析方法的掌握:能够采用一种编程语言实现简单的词法分析程序:能够使用自己编写的分析程序对简单的程序段进行词法 ...

  2. 重庆理工大学c语言程序实验报告,重庆理工大学-C语言程序实验报告.doc

    重庆理工大学-C语言程序实验报告 程序设计基础C实验报告 PAGE 47 <程序设计基础C> 实 验 报 告 教学班级: 学号: 姓名: 课程教师: 实验辅导教师: 重庆理工大学计算机学院 ...

  3. c语言实验分支程序设计二,C语言程序实验报告分支结构的程序设计(0页).doc

    C语言程序实验报告分支结构的程序设计(0页) 数学与软件科学学院 实验报告 学期:11至12___ 第_1 学期 2011年10 月 17 日 课程名称:程序设计基础教程-C语言 专业:2010级5_ ...

  4. 华理c语言设计网上作业,华理c程序实验报告(共9篇).doc

    华理c程序实验报告(共9篇) 华理c程序实验报告(共9篇) 2011华理<C语言实验报告> C程序设计课程 实验报告册 所在学院 班 级 学 号 姓 名 任(来自:www.XIelw.Co ...

  5. 一般单纯形法的matlab程序,实验报告(单纯形法的matlab程序)

    <实验报告(单纯形法的matlab程序)>由会员分享,可在线阅读,更多相关<实验报告(单纯形法的matlab程序)(5页珍藏版)>请在人人文库网上搜索. 1.实验一:线性规划单 ...

  6. 《移动软件开发》实验1:第一个微信小程序 实验报告

    2022年夏季<移动软件开发>实验报告 本实验报告所参考实验文档为:Docs (feishu.cn) 如想获得详细的制作过程,请点击上面链接.该博客仅为个人使用实验报告 姓名和学号? / ...

  7. c语言选择结构程序实验报告,C语言程序设计 实验报告2--选择结构

    福建农林大学金山学院实验报告 系(教研室):专业:年级: 实验课程:C语言程序设计姓名:学号:实验室号: 计算机号:实验时间:指导教师签字:成绩: 实验2:选择结构程序设计 一.实验目的和要求 1.了 ...

  8. 微信小程序实验报告-----学生家教小程序

    实验报告 课程名称:企业级前端应用开发实践 实验项目:学生家教小程序 实验地点: 专业班级: 学 号: 学生姓名: 指导教师: 年   月    日 实验报告 实验名称 学生家教系统 实验地点 实验日 ...

  9. c语言程序实验报告指针目的,c语言实验报告

    C语言上机实验实验报告指针 C语言程序设计实验报告 1实验目的 ⑴掌握指针的概念,会定义和使用指针变量: ⑵能正确使用变量的指针和指向变量的指针变量: ⑶能正确使用数组的指针和指向数组的指针变量: ⑷ ...

  10. python画图程序实验报告_Python绘图简明教程

    前言 本文纯科普向. 主要介绍一下Python上最好用的2D图形绘制库matplotlib的安装以及一些基础操作. 选择Python是因为其强大的第三方库和优秀便捷的语法,并且能方便地对数据进行后续处 ...

最新文章

  1. 017_Jedis的String数据类型
  2. c语言for要分号错误,c语言for语句
  3. 用shell或者python写出各种图形
  4. 被裁的第50天,我终于拿到心仪公司Offer
  5. Adobe Originals的可变字体
  6. VsCode之在vue中HTML代码使用自动补全插件
  7. 摩根大通的企业级区块链解决方案—Quorum
  8. vitamio视频框架使用详解
  9. 出入库管理系统-精致版
  10. POSCMS 邮件服务器配置
  11. iOS中文件连接群晖服务器,教你使用群晖怎么在ios的“家庭‘’App(HomeKit)里添加Hom...
  12. FC12下OKL4编译环境的搭建
  13. CS224W-图神经网络 笔记4.1:Community Structure in Networks - 网络中社区的特性
  14. 线性代数学习笔记——第四章学习指南——n维向量空间
  15. intel 12代异构处理器 + win11平台,使用VMware安装Linux系统出现键盘输入有延迟问题
  16. HTML+CSS基础知识5
  17. 更大的田字格python
  18. Surface Pro 5 开启华为多屏协同
  19. pda测试扫码枪用linux,PDA手持终端和扫描枪的区别
  20. JS页面四个颜色不同的div,鼠标进入哪个div,页面背景颜色变成该div的颜色。

热门文章

  1. Linux系统编程 --- 系统调用
  2. [转载]MySQL锁机制
  3. centos下安装和卸载jdk
  4. idea下载github代码及切换分支
  5. 无法鼠标拖动选择_在 iPad 上用鼠标体验怎么样?我用这 12 款 App 试了一下
  6. 电子相册系统(八)验证用户是否可用
  7. LQR、Stochastic Bandits、Bayesian Bandits、Contextual Bandits与基于模型的强化学习浅析
  8. Windows10右键没有新建文本文件
  9. Python内置函数(7)——sum
  10. [互联网面试笔试汇总C/C++-9] 实现赋值运算符函数-剑指offer