• 大小: 30KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-07-13
  • 语言: C/C++
  • 标签:

资源简介

编译原理赋值语句的翻译程序,带实验文档,程序分析源程序为C语言,输出到控制台,带出错提醒

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#define MAX 20
char temp[5]={‘1‘‘2‘‘3‘‘4‘‘5‘}; //用来作为四元式的临时变量
void move(char bchar *cint x) //从x处向前移动,并插入b;
{ int s;
  c[x-2]=b;
  for(s=x+1;s   c[x-1]=c[s];
}
void change(char a[20]char ch[])

   int top=-1;//栈指针,初始值为-1
   int i=0n;
   int j=0;
   char sta[20];//符号栈
     while(ch[i]!=‘#‘)
 {
 if(isalnum(ch[i]))//范围在A–Z a–z or 0–9
 {
 while(isalnum(ch[i]))
 {a[j]=ch[i];
              j++;
              i++;
 }//while
             //a[j]=‘‘;
             //j++;
 } //if
       else//如果是符号,+-*/()(:=)以=表示
   {
         switch(ch[i])
 { case ‘=‘:
   case ‘+‘:
           case ‘-‘: if(sta[top]==‘=‘||top==-1||sta[top]==‘(‘)
 { top++; 
                       sta[top]=ch[i++];
                     }//if
                     else 
 {a[j]=sta[top];
                      j++;
                      top--; 
 }//else
                     break;
          case ‘*‘:
          case ‘/‘:if(sta[top]==‘*‘||sta[top]==‘/‘)
   {a[j]=sta[top];//出栈
                    j++;
                    top--;
   }//if
                   else
   {
                    top++;
                    sta[top]=ch[i];//入栈
                    i++;
   }//else
                   break ;
       case ‘(‘: top++; 
                 sta[top]=ch[i];
                 i++;break;
       case ‘)‘: if(sta[top]==‘(‘)
 { top--;
                     i++;
 }//if
           else 
   {a[j]=sta[top];
           top--;
           j++;
   }//else
           break;
     default: cout<<“ 你输入的有错误!“<          ch[i]=‘#‘;
          j=0;
           break;
 }//switch
   }//else
 }//while

   while(top!=-1)//把sta中剩余的符号赋到a中
   {
   a[j]=sta[top];j++;
        top--;
   }//while
   a[j]=‘#‘;
  cout<<“四元式为: “<   n=0;
   j=0;
  while(a[n]!=‘#‘)
  {  
  if(!isalnum(a[n]))
  {  if(a[n]==‘=‘)
      cout<   <<‘-‘<<‘‘<   else  {cout<   <     move(temp[j]an);
j++;
n=-1;}
  }//if
     n++;
  }//while
 }//change

void main()
{
static int i=0;
static int j=0;
char ch[MAX]s[MAX];
cout<<“请输入中缀表达式(以#作为结束符): “;
cin>>ch;
change(sch);
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2571  2008-01-05 10:18  翻译程序\translation.cpp
     文件       64512  2008-10-04 17:01  翻译程序\赋值语句翻译.doc
     目录           0  2015-11-24 16:27  翻译程序\

评论

共有 条评论