关键词:
实验一词法分析实验
商业软件工程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. 运行结果及分析
四、 实验总结
词法分析程序实验报告
实验一、词法分析实验专业:商业软件工程 姓名王芷玲 学号201606110246一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求 对字符串表示的源程序... 查看详情
词法分析程序实验报告
实验一词法分析实验商业软件工程2班 黄铭坤 201506110147一、 实验目的 编制一个词法分析程序。二、 实验内容和 查看详情
词法分析实验报告
实验一、词法分析实验专业:商业软件工程 姓名:程嘉明 学号:201506110185一、 实验目的通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解后各类单词的词法分析方... 查看详情
词法分析实验报告
实验一、词法分析实验商务软件工程三班 吴文成 201506110217一、 实验目的调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能... 查看详情
词法分析实验报告
实验一、词法分析程序实验专业:商业软件 姓名:杨链新 学号:201506110113一、 实验目的 通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解... 查看详情
实验报告一词法分析程序
实验一、词法分析程序实验专业:商业软件工程 姓名:卓润峰 学号:201506110202一、 实验目的编制一个词法分析程序。二、 实验内容和要求1.输入:源程... 查看详情
实验报告一--词法分析程序
实验一、词法分析程序实验专业计算机科学与技术 姓名刘东 学号201506110164一、 实验目的编制一个词法分析程序二、 实验内容和要求输入:源程序字符串... 查看详情
实验报告一词法分析程序
实验一、词法分析程序实验专业计算机科学与技术 姓名谢建航 学号201506110209一、 实验目的 1.编制一个词法分析程序。 二、 实验内容和要求输入... 查看详情
实验报告-词法分析
---恢复内容开始---实验一、词法分析实验专业:商软二班 姓名:黄思慧 学号:201506110189一、 实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握... 查看详情
词法分析-实验报告
... 实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。二、 实验内... 查看详情
实验报告一:词法分析
实验一、词法分析实验专业:商业软件工程 姓名:覃伟业 学号;201506110233一、 实验目的编写一个关于词法分析的程序, 二、 实验内容和要求要求:-输入:源程序字符串-输出:二元组(种别,... 查看详情
词法分析实验报告1
实验一、词法分析实验商软二班张智恒201506110172一、 实验目的 编制一个词法分析程序 二、 实验内容和要求编写一个词法分析程序,使其能... 查看详情
词法分析实验报告
实验一、词法分析实验商业软件工程 符致伟 201506110157一、 实验目的 编制一个词法分析程序二、 实验内容和要求 输入:源程序字符串 输出:二元... 查看详情
词法分析器实验报告
一、 实验目的编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节。 二、 实验内容和要求实验内容:对字符串... 查看详情
词法分析实验报告
实验一、词法分析实验专业商业软件3班 姓名林鑫杰学号201506110211一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求输入:源程序字符串输出... 查看详情
201506110135陈若倩词法分析实验报告
实验一、词法分析实验商业软件工程专业 陈若倩 201506110135一、 实验目的通过设计一个词法分析程序,对词法进行分析,加强对词法的理解,掌握对程序设计语言的分解和理解。二、 实验内容和要求... 查看详情
词法分析实验报告
实验一、词法分析实验1502商业软件工程专业黄浩峰 姓名 201506110142学号一、 实验目的 通过实验了解词法分析器的词法分析过程。 二、 实验内容和要求设计一个词法分析程序,对关... 查看详情
实验一词法分析实验报告
实验一、词法分析实验专业:商业软件工程2班 姓名别博文 学号201606110175一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求 对字符串表示的源程序... 查看详情