⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 postfix.cpp

📁 lex files for given decription used as assignment in compiler design
💻 CPP
字号:
//IIT2006021//Arunanshu Pandey// the program is used to convert a infix expression to a postfix expression#include<iostream>#include<stdio.h>#include<string.h>#include<stdlib.h>using namespace std;const int size =50;string infix; char postfix[size];char stack[size];int top=-1;int precedence(char ch);   // function to get the precedence of the operatorchar pop();  //function to pop an element from the stackchar topelement();  // returns the top element of the stackvoid push(char ch);  // pushes an element into the stackint main(){     char ele,elem,st[2];     int prep,pre,popped,j=0,chk=0;    // strcpy(postfix," ");              getline(cin,infix);cout<<infix;          for(int i=0;infix[i]!=0;i++)          {                  if(infix[i]!='('&&infix[i]!=')'&&infix[i]!='^'&&infix[i]!='*'&&infix[i]!='/'&&infix[i]!='+'&&infix[i]!='-')                            postfix[j++]=infix[i];                  else if(infix[i]=='(')                      {                         elem=infix[i];                         push(elem);                      }                  else if(infix[i]==')')                      {                         while(popped=pop() != '(')                             postfix[j++]=popped;                      }                  else                      {                         elem=infix[i];                         pre=precedence(elem);//stores the precedence of operator coming frm infix                         ele=topelement();                         prep=precedence(ele);//stores the precedence of operator at the top of the stack                                                 if(pre > prep)                           push(elem);                                                                                             else                           {                                while(prep >= pre)                                  {                                     if(ele=='#')                                       break;                                     popped=pop();                                     ele=topelement();                                     postfix[j++]=popped;                                     prep=precedence(ele);                                   }                                   push(elem);                            }                         }             }                        while((popped=pop())!='#')              postfix[j++]=popped;          postfix[j]='\0';                    cout<<"\n post fix :"<<postfix<<endl;                                return 0;}int precedence(char ch){       switch(ch)          {               case '^' : return 5;               case '/' : return 4;               case '*' : return 4;                                                           case '+' : return 3;               case '-' : return 3;               default  : return 0;          }}char pop()                  //function to pop the element from the stack{     char ret;     if(top!=-1)       {  ret =stack[top];          top--;          return ret;       }     else        return '#';}                         char topelement()          // function to return top element from the stack without popping{           char ch;      if(top!=-1)        ch=stack[top];      else         ch='#';       return ch;}void push(char ch)          // function to push an element in the stack{     if(top!=size-1)         {            top++;            stack[top]= ch;         }}                                         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -