zoukankan      html  css  js  c++  java
  • 实验一 词法分析程序

    实验一词法分析程序实验

    专业 商软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.      运行结果及分析

     

    四、        实验总结

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

     

     

     

     

     

     

     

  • 相关阅读:
    freemarker模版引擎技术总结
    ajax跨域访问数据
    mysql 导入 大sql文件
    Python获取并输出当前日期时间
    Pandas dataframe数据写入文件和数据库
    java DTO 转 POJO
    vs2008 c#项目调试dll源码,问题:“若要调试此模块,请将其项目生成配置更改为“调试”模式” 的解决方案
    sqlserver 2008 merger语句
    sqlserver查询数据库中有多少个表,多少视图,多少存储过程,或其他对象
    sqlserver中select造成死锁
  • 原文地址:https://www.cnblogs.com/BennyKuang/p/5960524.html
Copyright © 2011-2022 走看看