实验一 词法分析程序

实验一词法分析程序实验

专业 商软2班   姓名 邝启彬  学号 201506110165

一、        实验目的

     编制一个词法分析程序。

二、        实验内容和要求

     输入:源程序字符串

输出:二元组(种别,单词符号本身)。

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

  1. 1.      源程序名:词法分析.c

可执行程序名:词法分析.exe

  1. 2.      原理分析及流程图

  1. 3.      主要程序段及其解释:
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

char *word[6]={"begin","if","then","while","do","end"};

char *word2[18]={"|","dd*","+","-","*","/",":",":=","<","<=","<>",">",">=","=",";","(",")","#"};

void words(char ch[]);

void signs(char ch[]);

main()

{

    char ch[10];

    do

    {

           printf("
请输入保留字(输入##时结束):");

           scanf("%s",ch);

           if(ch==" "||ch=="
")

                  getchar();

           words(ch);

           signs(ch);

    }while(ch!="##");

}

void words(char ch[])  //输入的保留字是关键字

{

    if(strcmp(ch,word[0])==0)

           printf("%s,1",ch);

    else if(strcmp(ch,word[1])==0)

           printf("%s,2",ch);

    else if(strcmp(ch,word[2])==0)

           printf("%s,3",ch);

    else if(strcmp(ch,word[3])==0)

           printf("%s,4",ch);

    else if(strcmp(ch,word[4])==0)

           printf("%s,5",ch);

    else if(strcmp(ch,word[5])==0)

           printf("%s,6",ch);

}                             

void signs(char ch[])  //输入的保留字是标识符

{

    int sum;

    if(strcmp(ch,word2[0])==0)

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

    if(strcmp(ch,word2[1])==0)

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

    if(strcmp(ch,word2[2])==0)

           printf("%s,13",ch);

    if(strcmp(ch,word2[3])==0)

           printf("%s,14",ch);

    if(strcmp(ch,word2[4])==0)

           printf("%s,15",ch);

    if(strcmp(ch,word2[5])==0)

           printf("%s,16",ch);

    if(strcmp(ch,word2[6])==0)

           printf("%s,17",ch);

    if(strcmp(ch,word2[7])==0)

           printf("%s,18",ch);

    if(strcmp(ch,word2[8])==0)

           printf("%s,20",ch);

    if(strcmp(ch,word2[9])==0)

           printf("%s,21",ch);

    if(strcmp(ch,word2[10])==0)

           printf("%s,22",ch);

    if(strcmp(ch,word2[11])==0)

           printf("%s,23",ch);

    if(strcmp(ch,word2[12])==0)

           printf("%s,24",ch);

    if(strcmp(ch,word2[13])==0)

           printf("%s,25",ch);

    if(strcmp(ch,word2[14])==0)

           printf("%s,26",ch);

    if(strcmp(ch,word2[15])==0)

           printf("%s,27",ch);

    if(strcmp(ch,word2[16])==0)

           printf("%s,28",ch);

    if(strcmp(ch,word2[17])==0)

           printf("%s,0",ch);  

}

  

  1. 4.      运行结果及分析

 

四、        实验总结

通过这个实验,使我了解了编译器词法分析的过程。虽然在做这个程序的时候曾经没有思路,在编写的时候出现很多错误,但是我耐心的一一解决,终于完成这个程序,感觉比较满意。

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/BennyKuang/p/5960524.html