关键词:
实验一、词法分析实验
商软二班 张智恒 201506110172
一、 实验目的
编制一个词法分析程序
二、 实验内容和要求
编写一个词法分析程序,使其能够识别对应的单词符号,并以(单词符号 种别码)的形式输出。
三、 实验方法、步骤及结果测试
- 1. 源程序名:压缩包文件(rar或zip)中源程序名 zzh.c
可执行程序名:zzh.exe
- 2. 主要程序段及其解释:
# include<stdio.h>
# include<stdlib.h>
# include<string.h>
int panduan(char tmp[])
{
char b[6][10] = {"begin", "if", "then", "while", "do", "end", };
int k = 0;
while(k < 6) // 临时变量tmp 与 字符串b[k] 进行比较
{
if(strcmp(tmp, b[k]) == 0)
{
printf("<%s, %d>\n", tmp, k+1);
return 0;
}
k++;
}
printf("<%s, 10>\n", tmp);
return 0;
}
void cifafenxi(char a[])
{
int i = 0, j = 0;
char tmp[10];
int flag = 0;
while(a[i] != ‘\0‘)
{
if(a[i] >= ‘a‘ && a[i] <= ‘z‘) // 判断标识符
{
tmp[j] = a[i];
j++;
while((a[i+1] >= ‘a‘ && a[i+1] <= ‘z‘) || (a[i+1] >= ‘0‘ && a[i+1] <= ‘9‘))
{
i++;
tmp[j] = a[i];
j++;
}
tmp[j] = ‘\0‘;
j = panduan(tmp);
}
if(a[i] >= ‘0‘ && a[i] <= ‘9‘) // 判断数字
{
tmp[j] = a[i];
j++;
while(a[i+1] >= ‘0‘ && a[i+1] <= ‘9‘)
{
i++;
tmp[j] = a[i];
j++;
}
tmp[j] = ‘\0‘;
printf("<%s, 11>\n", tmp);
j = 0;
}
switch(a[i]) // 判断符号
{
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");
else
printf("<:, 17>\n");
}break;
case ‘<‘:
{
if(a[i+1] == ‘=‘)
printf("<<=, 21>\n");
else if(a[i+1] == ‘>‘)
printf("<<>, 22>\n");
else
printf("<<, 20>\n");
}break;
case ‘>‘:
{
if(a[i+1] == ‘=‘)
printf("<>=, 24>\n");
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 ‘#‘:printf("<#, 0>\n");break;
}
i++;
}
}
int main(void)
{
char a[300];
printf("input : ");
gets(a);
cifafenxi(a);
return 0;
}
- 3. 运行结果及分析
一般必须配运行结果截图,结果是否符合预期及其分析。
(截图需根据实际,截取有代表性的测试例子)
四、 实验总结
1.很有难度,在机房里憋了几个小时,还是搞不定,主要是在数字那一块数字方面该程序是没有负数的,很多地方其实也都不算完美通过与同学的交流,掌握了主要方法后发现其原理十分简单,把每一种类型都分开出来特殊处理就可以了
词法分析是编译的第一个阶段,它的主要任务是从左至右逐个字符地对源程序进行扫描,
初次做词法分析时无从下手,后经过看书查资料对其慢慢理解, 勉强是做出了一个不太好的成品 ,
对于编译程序的学习,我会更加用心的,毕竟我觉得确实有难度,但它确实很有用,比如编译程序
的结构要如何简洁清晰条理化,编译程序的效率等等的实际问题
词法分析实验报告
实验一:词法分析专业:商业软件工程 姓名:陈锐 学号:201506110103一、 实验目的 编制一个词法分析程序。二、 实验内容和要求1.... 查看详情
实验报告一词法分析程序
实验一、词法分析程序实验专业:商业软件工程 姓名:卓润峰 学号:201506110202一、 实验目的编制一个词法分析程序。二、 实验内容和要求1.输入:源程... 查看详情
实验一词法分析实验报告
...p; 实验目的(1) 理解词法分析在编译程序中的作用。(2) 加深对有穷自动机模型的理解。(3) 掌握词法分析程序的实现方法。(4) 用C语言对一个简... 查看详情
203-陈冠权-词法分析实验报告
实验一、词法分析实验专业:商业软件工程3班 姓名:陈冠权 学号:201506110203一、实验目的 通过设计编译程序完成一个词法分析器,加深对词法分析的理解。二、实验内容和要求输入一连串的字符,即保留字、... 查看详情
实验报告一词法分析程序
实验一、词法分析程序实验专业计算机科学与技术 姓名谢建航 学号201506110209一、 实验目的 1.编制一个词法分析程序。 二、 实验内容和要求输入... 查看详情
实验一词法分析试验报告
实验一、词法分析实验专业:商业软件工程 姓名:林海鑫 学号:201506110120一、 实验目的(1)掌握词法分析程序的实现方法。(2)用C语言对一个简单语言的子集编制一个一遍扫锚的编... 查看详情
词法分析实验报告-201506110151-董广枢
实验一、词法分析专业:商业软件工程二班 姓名董广枢学号201506110151一、 实验目的 编制一个词法分析程序 二、 实验内容和要求1、输入:... 查看详情
词法分析实验报告
实验一、词法分析实验1502商业软件工程专业黄浩峰 姓名 201506110142学号一、 实验目的 通过实验了解词法分析器的词法分析过程。 二、 实验内容和要求设计一个词法分析程序,对关... 查看详情
词法分析实验报告
词法分析实验报告一、 实验目的编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节。 二、 实验内容... 查看详情
实验1词法分析
...号和行距。报告提交和打印输出时请去掉此框。实验一、词法分析实验商软1班 周展鹏 201506110114一、 实验目的 通过设计一个词法分析程序,对词法进行分析,加... 查看详情
实验报告-词法分析
---恢复内容开始---实验一、词法分析实验专业:商软二班 姓名:黄思慧 学号:201506110189一、 实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握... 查看详情
词法分析实验报告
实验一、词法分析实验专业商业软件工程 姓名黄施策 学号201506110228一、 实验目的 编制一个词法分析程序。二、 实验内容和要求 &nb... 查看详情
词法分析实验报告
实验一、词法分析实验商务软件工程三班 吴文成 201506110217一、 实验目的调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能... 查看详情
词法分析实验报告
实验一、词法分析实验专业:商业软件工程 姓名:程嘉明 学号:201506110185一、 实验目的通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解后各类单词的词法分析方... 查看详情
词法分析实验报告
实验一、词法分析实验专业:商业软件工程 姓名: 陈 瑾学号:201506110101一、 实验目的 编制一个词法分析程序 二、   查看详情
词法分析实验报告
...行距。报告提交和打印输出时请去掉此框。 实验一、词法分析实验专业:商业软件工程 姓名:陈蔓嘉 学号:201506110245一、 实验目的 编制一个词法分析程序。... 查看详情
词法分析实验报告
实验一、词法分析实验商业软件工程 符致伟 201506110157一、 实验目的 编制一个词法分析程序二、 实验内容和要求 输入:源程序字符串 输出:二元... 查看详情
词法分析实验报告
...行距。报告提交和打印输出时请去掉此框。 实验一、词法分析实验 商软二班张智恒201506110172一、 实验目的 编制一个词法分析程序 二、   查看详情