实验一  词法分析程序045

实验一  词法分析程序实验

专业 计算机科学与技术   姓名 邹汉辉  学号 201508030045

一、实验目的

1. 编制一个词法分析程序

二、 实验内容和要求

1. 输入:源程序字符串

2. 输出:二元组(种别,单词本身)

3. 待分析语言的词法规则

三、 实验方法、步骤及结果测试

1.  源程序名:压缩包文件(rar或zip)中源程序名 cifafenxi.c

可执行程序名:cifafenxi.exe

2.  原理分析及流程图

3.  主要程序段及其解释:

#include<stdio.h>

#include<string.h>

int ccc(char a[100],int i)

{

switch(a[i])

{

case ‘+‘:

{

printf("(13,+)");

return(1);

}

case ‘-‘:

{

printf("(14,-)");

return(1);

}

case ‘*‘:

{

printf("(15,*)");

return(1);

}

case ‘/‘:

{

printf("(16,/)");

return(1);

}

case ‘:‘:

{

if(a[i+1]==‘=‘)

{

printf("(18,:=)");

return(2);

}

else

printf("(17,:)");

return(1);

}

case ‘<‘:

{

if(a[i+1]==‘>‘)

{

printf("(21,<>)");

return(2);

}

else if(a[i+1]==‘=‘)

{

printf("(22,<=)");

return(2);

}

else

printf("(20,<");

return(1);

}

case ‘>‘:

{

if(a[i+1]==‘=‘)

{

printf("(24,>=)");

return(2);

}

else

printf("(23,>");

return(1);

}

case ‘=‘:

{

printf("(25,=)");

return(1);

}

case ‘;‘:

{

printf("(26,;)");

return(1);

}

case ‘(‘:

{

printf("(27,()");

return(1);

}

case ‘)‘:

{

printf("(28,)");

return(1);

}

default:

return(0);

break;

}

}

void number(char a[10])

{

int i=0;

char text[10];

while(a[i]!=‘\0‘)

{

text[i]=a[i];

i++;

}

text[i]=‘\0‘;

printf("(11,%s)",text);

}

void fing(char a[10])

{

int i=0;

char text[10];

while(a[i]!=‘\0‘)

{

text[i]=a[i];

i++;

}

text[i]=‘\0‘;

if( strcmp(text,"begin")==0)

{

printf("(1,begin)");

}

else if( strcmp(text,"if")==0)

{

printf("(2,if)");

}

else if( strcmp(text,"then")==0)

{

printf("(3,then)");

}

else if( strcmp(text,"while")==0)

{

printf("(4,while)");

}

else if( strcmp(text,"do")==0)

{

printf("(5,do)");

}

else if( strcmp(text,"end")==0)

{

printf("(6,end)");

}

else

{

printf("(10,%s)",text);

}

}

main(){

int i=0,j=-1,l=0,x=0;

char a[100],text[10];

printf("输入源程序,以#号结束");

gets(a);

while(1)

{

if(a[i]>=‘0‘&&a[i]<=‘9‘)

{

while(a[i]>=‘0‘&&a[i]<=‘9‘)

i++;

l=0;

for(++j;j<i;j++)

{

text[l]=a[j];

l++;

}

text[l]=‘\0‘;

number(text);

i--;

}

else if(a[i]>=‘a‘&&a[i]<=‘z‘||a[i]>=‘A‘&&a[i]<=‘Z‘)

{l=0;

for(i;a[i]>=‘a‘ && a[i]<=‘z‘ ||a[i]>=‘A‘&&a[i]<=‘Z‘;i++)

{

text[l]=a[i];

l++;

}

i--;

text[l]=‘\0‘;

fing (text);

}

else

{

if(a[i]==‘#‘)

{

printf("(0,#)");

break;

}

x=ccc(a,i);

if(x==1)

{

j=i;

}

else if(x==2)

{

i++;

j=i;

}

}

i++;

}

}

4.  运行结果及分析

实验结果与预期基本相符

四、 实验总结

这次试验对我来说难度很大,查阅了大量的资料和别人的实验报告,才一步步完成,以后的理论课和上机课还要多多努力。

时间: 2024-12-11 06:09:49

实验一  词法分析程序045的相关文章

实验一词法分析程序

一.        实验目的 编制一个词法分析程序 二.        实验内容和要求 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三.        实验方法.步骤及结果测试 1.      源程序名:压缩包文件(rar或zip)中源程序名 cifafenxi.c  cifafenxi.exe 2.      原理分析及流程图 3.      主要程序段及其解释: do { scanf("%s\n",input); i=0; while(input[i]

实验一 词法分析程序实验

实验一.词法分析程序实验 商业软件工程   蓝海鹏  201506110171 一.        实验目的        编制一个词法分析程序. 二.        实验内容和要求 实验内容: 对字符串表示的源程序 从左到右进行扫描和分解 根据词法规则: 单词符号 种别码 单词符号 种别码 begin 1 : 17 if 2 := 18 then 3 < 20 while 4 <= 21 do 5 <> 22 end 6 > 23 l(l|d)*(标识符) 10 >=

0917 实验一 词法分析程序

#include <stdio.h> #include <string.h> #include <iostream.h> #define BEGIN 1 #define IF 2 #define THEN 3 #define WHILE 4 #define DO 5 #define END 6 #define INT 11 #define LT 20 #define LE 21 #define EQ 24 #define NE 22 #define GT 12 #def

0917 实验一词法分析程序

#include <stdio.h>#include <string.h>int Input1(char a){ int i=0; switch(a) { case('+'):  printf("%c\t   13\n",a);i++;break; case('-'):  printf("%c\t   14\n",a);i++;break; case('*'):  printf("%c\t   15\n",a);i++;b

0916 编程实验一 词法分析程序

#include<stdio.h> #include<stdlib.h> #include<string.h> #define _KEY_WOED_END "waiting for your expanding" typedef struct { int typenum; char * word; }WORD; char input[255]; char token[255] = ""; int p_input; int p_to

编程实验一 词法分析程序

#include<stdio.h> #include<stdlib.h> #include<string.h> #define _KEY_WOED_END "waiting for your expanding" //关键字结束标志 typedef struct { int typenum; char * word; }WORD; char input[255]; //输入换缓冲区 char token[255]=""; //单词

(改)编程实验一 词法分析程序

  #include <stdio.h>#include <stdlib.h>#include <string.h> typedef struct node{ char words[255]; struct node *next;}NODE; char word[255];char *word_default[6]={"begin","if","then","while","do&

词法分析程序实验报告

实验一词法分析实验 商业软件工程2班  黄铭坤  201506110147 一.        实验目的        编制一个词法分析程序. 二.        实验内容和要求 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三.        实验方法.步骤及结果测试 1.      源程序名:词法分析.c 可执行程序名:词法分析.exe 2.      原理分析及流程图 (1)   关键字: begin  if  then  while  do  end (2) 

实验报告一 词法分析程序

实验一.词法分析程序实验 专业:商业软件工程   姓名:卓润峰  学号:201506110202 一.        实验目的 编制一个词法分析程序. 二.        实验内容和要求 1.输入:源程序字符串. 2.输出:二元组(种别,单词本身) 3.待分析语言的词法规则 主要是从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用于语法分析 三.        实验方法.步骤及结果测试 1.     源程序名:压缩包文件(rar或zip)中源程序名 cifafenxi.c 可执行程序名: