亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 賦值翻譯.cpp

?? 賦值語句的翻譯的實(shí)驗(yàn)之一,算符優(yōu)先的方法
?? CPP
字號:
#include<stdio.h>   
#include<string.h>   
#include<ctype.h>   
#include<search.h>
#include<iostream.h>  
 #include<stdlib.h>
struct stackNode
{
    char data;
    struct stackNode *nextptr;
};
typedef struct stackNode STACKNODE;
typedef STACKNODE * STACKNODEPTR;
STACKNODEPTR topPtr=NULL;
void convertToPostfix(char *infix, char *postfix); //把中綴表達(dá)式轉(zhuǎn)化成后綴表達(dá)式
int isOperator(char c);  //判斷c是否是一個(gè)運(yùn)算符
int precedence(char operator1, char operator2);  /*判斷
operator1(棧頂)的優(yōu)先級是低于、等于還是高于
operator2(當(dāng)前)的優(yōu)先級,對應(yīng)的函數(shù)的返回值分別是-1,0和1*/
void push(STACKNODEPTR *topPtr, char value); //把一個(gè)值壓入堆棧
char pop(STACKNODEPTR *topPtr);  //從堆棧中彈出一個(gè)值
char stackTop(STACKNODEPTR topPtr); //返回棧頂?shù)闹档话堰@個(gè)值從堆棧中彈出
int isEmpty(STACKNODEPTR topPtr);  //判斷堆棧是否為空,返回1代表空.0代表非空
void printStack(STACKNODEPTR topPtr);  //打印堆棧
  extern   int   reserve(char*);   
  extern   void   output(int,char*);  
  char   token[20];   
  static char infix[30];
  char   ch;   
  int   i,c,f;   
    
  void   scanner(FILE   *fp)   
  {   
    ch=fgetc(fp);   //fgetc()是用來從文件中讀取內(nèi)容的。它可不管讀到的內(nèi)容是什么東西
    if(isalpha(ch))     //isalpha()如果是字母,返回真
    {   
      token[0]=ch;   
      i=1;   
      ch=fgetc(fp);   
      while(isalpha(ch)||isalnum(ch))   //isalnum()函數(shù)當(dāng)參數(shù)是數(shù)字或者字母的時(shí)候返回非0值,其它是0
      {   
        token[i]=ch;   
        i++;   
        ch=fgetc(fp);   
      }   
      fseek(fp,-1,1);   //移動(dòng)
      token[i]='\0';   
      c=reserve(token);   
      if(c!=-1)   
                  output(c,token);   
      else   
                  output(10,token);   
    }   
    else   if(isdigit(ch))   //isdigit() 如果參數(shù)是0,1,...,9中的一個(gè)字符,返回真,否則返回假,就是判斷字符是否數(shù)字
              {   
      token[0]=ch;   
      ch=fgetc(fp);   //fgetc()是用來從文件中讀取內(nèi)容的。它可不管讀到的內(nèi)容是什么東西。
      i=1;   
      while(isdigit(ch))   
      {   
        token[i]=ch;   
        i++;   
        ch=fgetc(fp);   
      }   
      token[i]='\0';   
      fseek(fp,-1,1);   
      output(1,token);   
              }   
    else   
      switch(ch)   
      {   
        case'=':ch=fgetc(fp);   
          if(ch=='=')   
            output(39,"==");   
          else   
          {   
          fseek(fp,-1,1);   
          output(21,"=");   
          }   
          break;   
        case'+':output(22,"+");break;   
        case'-':output(23,"-");break;   
        case'*':output(24,"*");break;   
        case'/':output(25,"/");break;   
        case'(':output(26,"(");break;   
        case')':output(27,")");break;   
        case'[':output(28,"[");break;   
        case']':output(29,"]");break;   
        case'{':output(30,"{");break;   
        case'}':output(31,"}");break;   
        case',':output(32,",");break;   
        case':':output(33,":");break;   
        case';':output(34,";");break;   
        case'>':ch=fgetc(fp);   
          if(ch=='=')   
            output(37,">=");   
          else   
          {   
          fseek(fp,-1,1);   
          output(35,">");   
          }   
          break;   
        case'<':ch=fgetc(fp);   
          if(ch=='=')   
            output(38,"<=");   
          else   
          {   
          fseek(fp,-1,1);   
          output(36,"<");   
          }   
          break;   
        case'!':ch=fgetc(fp);   
          if(ch=='=')   
            output(40,"!=");   
          else   
          {   
          fseek(fp,-1,1);   
          output(-1,"ERROR!");   
          }   
          break;   
      }   
    
  }   
  
    
  /**************************search.h*********************************/   
    
  extern   struct   table   
  {   
      int   id;   
      char   code[10];   
  };   
  struct   table   key[31]   =   {{1,"main"},{2,"int"},{3,"char"},{4,"if"},{5,"else"},{6,"for"},{7,"while"},{8,"case"},{9,"break"},{10,"ID"},{20,"NUM"},{-1,"ERROR"}};   
  int   reserve(char*   p)   
  {     int   i=0;   
      for(i=0;i<9;i++)   
      {   
          if(strcmp(p,key[i].code)==0)   //strcmp(s1,s2) 對字符串s1和s2進(jìn)行比較,返回比較結(jié)果--相等返回0,s1>s2時(shí)返回正數(shù),s1<s2時(shí)返回負(fù)數(shù)
          return(key[i].id);   
      }   
      return(-1);   
  }   
  void   output(int   t,char   *s)   
  {   int i;
	  printf("[   %-2d   ,   %-6s   ]\n",t,s);
	  ch=*s;
	  if(ch!=' ')
      infix[f]=ch;
	  f++;
  }   
    

void   main()   
  { 
	FILE   *fp;   
    char   wenjian[30];
	int i; 
	cout<<"1表示數(shù)字和關(guān)鍵字的main;2表示int;3表示char;4表示if;5表示else;6表示for;"<<endl;
	cout<<"7表示while;8表示case;9表示break10表示ID;20表示NUM;-1表示ERROR;22表示+;"<<endl;
	cout<<"23表示-;24表示*;25表示/;26表示(;27表示);28表示[;29表示];30表示{;31表示};"<<endl;
	cout<<"32表示,;33表示:;34表示;;35表示>;36表示<;37表示>=;38表示<=;39表示==;40!=;"<<endl;
    printf("Please   input   the   file   you   want   to   transform:"); 
	
    scanf("%s",&wenjian);   
    fp=fopen(wenjian,"r");      //打開一個(gè)文件
    while(!feof(fp))   
    {   
      scanner(fp);   
    }   
	//char infix[30];
    char postfix[30];	  
     //printf("Enter the expression.\n");
    //scanf("%s", infix);   
   //for(i=0;i<30;i++)
   //cout<<infix[i];


 convertToPostfix(infix, postfix);

  cout<<f<<endl;
  }   
void convertToPostfix(char *infix, char *postfix)//把中綴表達(dá)式轉(zhuǎn)化成后綴表達(dá)式
{
    int n, i=0,count=0;
    n=strlen(infix);

for(i=0;i<n;i++)
    {
        if(isOperator(infix[i])==1)
        {
            if(infix[i]=='(')
                push(&topPtr, infix[i]);
            else 
            {
                if(infix[i]==')')
                {
                    while((isEmpty(topPtr)!=1)&&stackTop

(topPtr)!='(')
                    {
                        postfix[count]=pop(&topPtr);
                        count++;
                    }

                    pop(&topPtr);
                }
                else
                {
                    if(isEmpty(topPtr)==1)
                        push(&topPtr, infix[i]);
                    else
                    {
                        while((isEmpty(topPtr)!=1)&&

(precedence(stackTop(topPtr), infix[i])>=0))
                        {
                            postfix[count]=pop(&topPtr);
                            count++;
                        }
                    
                            push(&topPtr, infix[i]);    
                    }
                }
            }
        }
        else
        {
            postfix[count]=infix[i];
            count++;
        }
    }



    while(isEmpty(topPtr)!=0)
    {
        postfix[count]=pop(&topPtr);
        count++;
    }
    for(i=0;i<count;i++)
        printf("%c", postfix[i]);
    printStack(topPtr);
}
int isOperator(char c)//判斷c是否是一個(gè)運(yùn)算符
{
    switch(c)
    {
    case '+': case '-': case '*': case '/': case '^': case '%': 

case '(': case')':
        return 1;
        break;
    default:
        return 0;
        break;
    }
}

int precedence(char operator1, char operator2)  /*判斷
operator1(棧頂)的優(yōu)先級是低于、等于還是高于
operator2(當(dāng)前)的優(yōu)先級,對應(yīng)的函數(shù)的返回值分別是-1,0和1*/
{
    switch(operator1)
    {
    case '^':
        if(operator2=='^')
            return 0;
        else
            return -1;
        break;
    case '*': case'/': case'%':
        if(operator2=='^'||operator2=='(')
            return -1;
        if(operator2=='*'||operator2=='/'||operator2=='%')
            return 0;
        if(operator2=='+'||operator2=='-')
            return 1;
        break;
    case '+': case '-':
        if

(operator2=='^'||operator2=='*'||operator2=='/'||operator2=='%'

)
            return -1;
        if(operator2=='+'||operator2=='-')
            return 0;
        if(operator2=='(')
            return -1;
        break;
    }
} 


void push (STACKNODEPTR *topPtr, char value)//把一個(gè)值壓入堆棧
{
    STACKNODEPTR newPtr;
    newPtr=(struct stackNode *)malloc(sizeof(STACKNODE));
    if(newPtr!=NULL)
    {
        newPtr->data=value;
        newPtr->nextptr=* topPtr;
        *topPtr=newPtr;
    }
    else
        printf("%d not inserted. No memory available.\n", 

value);
}

char pop (STACKNODEPTR *topPtr)//從堆棧中彈出一個(gè)值
{
    STACKNODEPTR tempPtr;
    char popValue;

    tempPtr=*topPtr;
    popValue=(*topPtr)->data;
    *topPtr=(*topPtr)->nextptr;
    free(tempPtr);
    return popValue;
}

char stackTop(STACKNODEPTR topPtr)//返回棧頂?shù)闹档话堰@個(gè)值從堆棧中彈出
{
    char popValue;

    popValue=topPtr->data;
    return popValue;
}

int isEmpty(STACKNODEPTR topPtr)//判斷堆棧是否為空,返回1代表空.0代表非空
{
    if(topPtr!=NULL)
        return 0;
    else
        return 1;
}
   
void printStack(STACKNODEPTR topPtr)//打印堆棧
{
    if(topPtr==NULL)
        printf("The stack is empty.\n");
    else
    {
        
        while(topPtr!=NULL)
        {
            printf("%c", topPtr->data);
            topPtr=topPtr->nextptr;
        }
        printf("NULL\n\n");
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产suv精品一区二区三区| 天天色天天操综合| 成人精品免费视频| 久久亚区不卡日本| 大白屁股一区二区视频| 国产精品久久网站| 色婷婷久久一区二区三区麻豆| 亚洲人成网站影音先锋播放| 在线精品视频免费观看| 亚洲成人动漫精品| 日韩欧美一区二区视频| 国产成人精品1024| 亚洲伦在线观看| 制服丝袜在线91| 国产精品888| 亚洲男同性视频| 欧美一卡二卡三卡四卡| 粉嫩在线一区二区三区视频| 一区二区三区在线免费视频| 91精品国产一区二区人妖| 国产成人av电影在线| 亚洲最色的网站| 26uuu亚洲综合色| 色域天天综合网| 国模冰冰炮一区二区| 亚洲免费av高清| 欧美精品一区二区蜜臀亚洲| 99re成人在线| 国产真实乱偷精品视频免| 亚洲欧美精品午睡沙发| 欧美一区二区三区在线电影| 99这里都是精品| 久久精品99国产国产精| 国产精品成人一区二区艾草| 欧美高清激情brazzers| www.久久精品| 老司机精品视频导航| 一区二区三区 在线观看视频| 欧美一二三区在线| 91高清视频免费看| 成人性生交大片免费看在线播放| 亚洲精品国产无套在线观| ww亚洲ww在线观看国产| 欧美片网站yy| 色天天综合久久久久综合片| 国产久卡久卡久卡久卡视频精品| 亚洲成人av一区二区| 亚洲图片激情小说| 亚洲精品一区二区三区四区高清 | 成人avav影音| 日本欧美大码aⅴ在线播放| 亚洲男人的天堂在线观看| 久久综合狠狠综合| 91精品国产综合久久精品性色| 99re成人在线| 波多野结衣中文字幕一区二区三区 | 国产综合成人久久大片91| 丝袜亚洲另类欧美| 亚洲一区二区三区四区在线免费观看| 欧美国产日韩亚洲一区| 久久人人97超碰com| 日韩精品一区二| 91精品国产欧美一区二区18| 欧美日韩一区中文字幕| 色综合天天视频在线观看| 91在线精品一区二区三区| 成人网在线播放| 国产91露脸合集magnet| 粉嫩蜜臀av国产精品网站| 国产在线视频一区二区| 国产精品主播直播| 国产精品亚洲第一| 国产精品香蕉一区二区三区| 国产精品1区2区3区| 国产中文一区二区三区| 国产成人av一区二区| 高清日韩电视剧大全免费| 国产成人综合在线观看| 不卡视频在线观看| 色天天综合久久久久综合片| 欧美探花视频资源| 欧美一级爆毛片| 久久久精品免费网站| 国产精品亲子伦对白| 国产精品福利一区| 亚洲色图清纯唯美| 亚洲午夜av在线| 美女网站色91| 成人中文字幕合集| 日本福利一区二区| 欧美一区二区成人6969| 久久久99免费| 亚洲欧美日韩一区二区三区在线观看| 亚洲自拍偷拍av| 久久99国产乱子伦精品免费| 国产成人av网站| 欧美日韩三级一区| 久久亚洲影视婷婷| 亚洲欧美日韩国产成人精品影院| 亚洲综合自拍偷拍| 免费成人在线播放| av在线不卡观看免费观看| 欧美日韩黄视频| 久久久91精品国产一区二区精品| 亚洲欧美日韩电影| 欧美a级一区二区| av高清久久久| 91麻豆精品国产无毒不卡在线观看| 日韩欧美你懂的| 亚洲视频在线一区| 精品一区二区三区免费毛片爱| 国产91在线|亚洲| 9191精品国产综合久久久久久| 久久男人中文字幕资源站| 一区二区三区视频在线看| 蜜臀av一区二区| 一本大道久久a久久精二百| 日韩欧美在线123| 亚洲欧美成aⅴ人在线观看| 精品一区二区在线播放| 91美女在线观看| 精品国产网站在线观看| 中文字幕一区二区三区四区| 喷白浆一区二区| 欧美在线视频你懂得| 国产精品亲子乱子伦xxxx裸| 日本一区中文字幕| 91国产视频在线观看| 国产女同性恋一区二区| 麻豆一区二区三| 欧美日韩一区二区三区不卡| 国产精品水嫩水嫩| 极品少妇一区二区| 欧美久久久久中文字幕| 中文字幕在线不卡视频| 国产精品一二一区| 日韩视频在线永久播放| 亚洲电影第三页| 色综合久久综合| 国产精品视频看| 国产乱子轮精品视频| 欧美一区二区视频免费观看| 亚洲综合激情小说| 色婷婷综合久色| 国产精品视频观看| 国产.欧美.日韩| 久久久精品日韩欧美| 久久精品二区亚洲w码| 91精品国产一区二区人妖| 天堂精品中文字幕在线| 欧美影院午夜播放| 亚洲激情综合网| 日本精品一区二区三区高清| 中文字幕一区二区三区蜜月| 国产91清纯白嫩初高中在线观看| 日韩精品一区在线| 久久精品噜噜噜成人av农村| 在线播放一区二区三区| 午夜精品久久久久久久蜜桃app| 色av综合在线| 亚洲成人动漫在线观看| 欧美日韩一区二区三区四区 | 欧美精品自拍偷拍动漫精品| 一区二区三区四区在线播放| 色94色欧美sute亚洲线路一久| 18欧美亚洲精品| 色综合色综合色综合色综合色综合| 国产精品久久久久久久久免费相片| 国产成人日日夜夜| 中文字幕精品三区| www.欧美日韩| 亚洲自拍与偷拍| 91精品国产综合久久福利| 蜜桃视频一区二区三区| 日韩久久免费av| 国产精品99久久久久久有的能看 | 久久久99久久| 成人亚洲一区二区一| 亚洲欧洲精品一区二区精品久久久| av不卡免费电影| 亚洲在线观看免费| 日韩欧美国产一区二区三区| 久久精品国产一区二区| 国产欧美日韩久久| 色婷婷综合激情| 青青草原综合久久大伊人精品| 欧美成人三级在线| jlzzjlzz欧美大全| 亚洲一区二区三区美女| 日韩欧美国产午夜精品| 国产成人免费xxxxxxxx| 一区二区三区av电影| 日韩一区二区视频在线观看| 国模一区二区三区白浆| 亚洲男人天堂一区| 日韩欧美一级二级三级久久久| 国产69精品久久久久777| 亚洲与欧洲av电影| 久久精品在这里| 欧美视频精品在线观看|