• 大小: 60KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-11-08
  • 语言: 其他
  • 标签:

资源简介

编译原理,词法分析,语法分析,四元式生,设计报告

资源截图

代码片段和文件信息



#include “stdio.h“
#include “Parse.h“
#include “Global.h“
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define NULL 0
#define OK 1
#define size 100
FILE *fp;
char ch;
char *keyword[6]={“begin““else““end““if““then““var“};
char *comparison[5]={“<““<=““>““>=““<>“};
char *equal[1]={“=“};
char *interpunction[10]={“““;““:=““.““(““)““+““-““*““/“};
char *now[2]={“while““do“};
int flag[1]={1};
char buffer[10][100];
int inc=-1;

bool search(char searchstr[]int wordtype)
{
       int i;
       switch (wordtype)
       {
             case 1:for(i=0;i<=5;i++)
{
                        if(strcmp(keyword[i]searchstr)==0)
                         return(true);
                              
                     }
 break;
   
              case 2: for(i=0;i<=4;i++)
                           {
                            if(strcmp(comparison[i]searchstr)==0)
                             return(true);
                           }
  break;
              case 3: for(i=0;i<=9;i++)
                           {
                            if(strcmp(interpunction[i]searchstr)==0)
                             return(true);
                           }
  break;
              case 4:for(i=0;i<=1;i++)
 {
                             if(strcmp(now[i]searchstr)==0)
                             return(true);
 }
  break;
  case 5:{
                             if(strcmp(equal[0]searchstr)==0)
                             return(true);
 }
  break;
       }
                         return(false);
}

char letterprocess (char ch)//字母处理函数                       
{
   int i=-1j=1;
   char letter[20];
   while (isalnum(ch)!=0)
   {
     letter[++i]=ch;
     ch=fgetc(fp);
   }
 letter[i+1]=‘\0‘;
 if (search(letter1))
 {
 printf(“<%s->\n“letter);printf(“aaaaa“);
     flag[0]=0;
 }
 else if(search(letter4))
 printf(“<%s->\n“letter);
 else
 {
  printf(“\n“letter);
  strcpy(buffer[++inc]letter);
 }
 return(ch);
}

char numberprocess(char ch)//数字处理程序
{
    int i=-1;
    char num[20];
// printf(“该文法不在此次考虑中\n“);
flag[0]=0;
    while (isdigit(ch)!=0)
    {
        num[++i]=ch;
        ch=fgetc(fp);
    }
    if(isalpha(ch)!=0)
    {
       while(isspace(ch)==0)
       {
          num[++i]=ch;
          ch=fgetc(fp);
       }
       num[i+1]=‘\0‘;
       printf(“错误!非法标识符:%s\n“num);
       goto u;
     }
       num[i+1]=‘\0‘;
       printf(“\n“num);
       u: return(ch);
}

char otherprocess(char ch)
{
    int i=-1;
    char other[20];
    if (isspace(ch)!=0)
    {
        ch=fgetc(fp);
        goto u;
    }
    while ((isspace(ch)==0)&&(isalnum(ch)==0))
    {
        other[++i]=ch;
        ch=fgetc(fp);
    }
    other[i+1]=‘\0‘;
    if (search(other3))
{
printf(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         18  2005-06-21 21:10  ljSimple\lj.txt

     文件      54784  2005-06-23 15:42  ljSimple\Main.opt

     文件       3375  2005-06-22 09:26  ljSimple\Main.dsp

     目录          0  2005-06-22 09:26  ljSimple\Debug

     文件        533  2005-06-22 09:27  ljSimple\Main.dsw

     文件        249  2005-06-21 23:20  ljSimple\Global.h

     文件       1932  2005-06-21 22:07  ljSimple\Parse.h

     文件        242  2005-06-23 14:47  ljSimple\Main.plg

     文件       2978  2005-06-21 22:07  ljSimple\Prece.H

     文件       1007  2005-06-21 21:30  ljSimple\Stack.h

     文件       4656  2005-06-21 23:00  ljSimple\Main.c

     文件      13310  2005-03-19 13:07  ljSimple\MAIN.EXE

     文件      58368  2005-06-23 15:42  ljSimple\Main.ncb

     目录          0  2005-06-20 14:08  ljSimple

    ..A.SH.        10  2006-10-11 12:39  ljSimple\_desktop.ini

     文件      84992  2005-06-23 15:39  ljSimple\课程设计报告书.doc

    ....SHR         9  2007-01-12 22:14  ljSimple\Desktop_.ini

     文件     708150  2005-06-23 14:52  ljSimple\运行结果.bmp

----------- ---------  ---------- -----  ----

               934831                    19


评论

共有 条评论

相关资源