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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 編譯原理-語法分析.cpp

?? 編譯原理LR(0) 語法分析器 編譯原理LR(0) 語法分析器
?? CPP
字號:
#include "stdio.h"
#include "malloc.h"
#include "math.h"


struct Lchar{
    char char_ch;
    struct Lchar *next;
}Lchar,*p,*h,*temp,*top,*base;
struct Lint{
    int int_t;
    struct Lint *next;
}Lint,*itop,*ibase,*itemp;
int table[12][9]={
	{0,0,-4,0,-5,0,1,2,3},
    {-6,0,0,0,0,100,0,0,0},
    {12,-7,12,12,12,12,0,0,0},
    {14,14,14,14,14,14,0,0,0},
    {0,0,-4,0,-5,0,8,2,3},
    {16,16,16,16,16,16,0,0,0},
    {0,0,-4,0,-5,0,0,9,3},
    {0,0,-4,0,-5,0,0,0,10},
    {-6,0,0,-11,0,0,0,0,0},
    {11,-7,11,11,11,11,0,0,0},
    {13,13,13,13,13,13,0,0,0},
    {15,15,15,15,15,15,0,0,0}
};
/*存儲LR(0)分析表,大于10為歸約,小于0為進棧,0表示出錯,1到10表示狀態轉移,100表示接受*/


char curchar;
char curtocmp;
int curstate;
int right;/*設置開關項,當出錯時為0*/
int i,j;


void push(char pchar)/*字符棧入棧函數*/
{
     temp=(struct Lchar *)malloc(sizeof(Lchar));
     temp->char_ch=pchar;
     temp->next=top;
     top=temp;
}

void pop(void)/*字符棧出棧函數*/
{
     if(top->next!=NULL)
        top=top->next;
}

void ipop(void)/*狀態棧出棧函數*/
{
     if(itop->next!=NULL)
        itop=itop->next;
}

void ipush(int pint)
{
     itemp=(struct Lint *)malloc(sizeof(Lint));
     itemp->int_t=pint;
     itemp->next=itop;
     itop=itemp;
}

int changchartoint(char ch)/*將字符轉為數字,以得到算符優先值*/
{
     int t;
     switch(ch)
	 {
          case '+':t=0;break;
          case '*':t=1;break;
          case '(':t=2;break;
          case ')':t=3;break;
          case 'i':t=4;break;
          case '#':t=5;break;
          case 'E':t=6;break;
          case 'T':t=7;break;
		  case 'F':t=8;break;
	 }
     return t;
}

void doforpush(int t)
{
     switch(t)
	 {
          case 1:push('E');break;
          case 2:push('E');break;
          case 3:push('T');break;
          case 4:push('T');break;
          case 5:push('F');break;
          case 6:push('F');
	 }
}

void dosome(void)
{
     int t;
     printf("\nCharStack\tCharLink\tStateStack\n");
     for(;;)
	 {
          curchar=h->char_ch;
          curtocmp=top->char_ch;
          curstate=itop->int_t;
          i=changchartoint(curchar);
          t=table[curstate][i];  
          temp=top;
          printf("\n");
          for(;;)/*打印棧*/
		  {
                printf("%c",temp->char_ch);
                if(temp->char_ch=='#')
                    break;
                else
                    temp=temp->next;
		  }
     printf("\t\t");
     temp=h;
     for(;;)/*打印待比較的字符*/
	 {
          printf("%c",temp->char_ch);  
          if(temp->char_ch=='#')
               break;
          else
               temp=temp->next;
	 }
     printf("\t\t");
     itemp=itop;
     for(;;)/*打印狀態棧*/
	 {
          printf("%d",itemp->int_t);  
          if(itemp->next==NULL)
                break;
          else
                itemp=itemp->next;
	 }
     printf("\t\t");
     if(t==0)/*LR(0)分析表為0,出錯*/
	 {
          right=0;
          break;   
	 }
     else/*LR(0)分析表不為0*/
	 {
          if(t<0)/*LR(0)分析表小于0,入棧*/
		  {
              push(curchar);  /*字符入字符棧*/
              ipush(abs(t));  /*狀態棧入棧*/
              h=h->next;
		  }
          else/*LR(0)分析表大于0,歸約*/
		  {
              if(t==100)/*LR(0)分析表等于100,正確*/
              break;
              if(t==12||t==14||t==16)/*產生式右部和狀態出棧,由文法可知只需退棧一次*/
			  {
                    pop();
                    ipop();
			  }
              else
			  {
              pop();pop();pop();
              ipop();ipop();ipop();
			  }                      /*產生式右部和狀態出棧,由文法可知需退棧三次*/
              doforpush(t-10);/*產生式左部出棧*/
              j=changchartoint(top->char_ch);
              curstate=itop->int_t;
              ipush(table[curstate][j]);/*狀態轉移,狀態入棧*/
		  }
	 }
	 }
}

void main(void)
{
	 char ch;
     printf("請輸入一個句子:") ;
     base=(struct Lchar *)malloc(sizeof(Lchar));
     base->next=NULL;
     base->char_ch='#';
     top=base;/*初始化字符棧*/
     ibase=(struct Lint *)malloc(sizeof(Lint));
     ibase->int_t=0;
     ibase->next=NULL;
     itop=ibase;/*初始化狀態棧*/
     h=(struct Lchar *)malloc(sizeof(Lchar));
     h->next=NULL;
     p=h;
     do{    /*輸入待比較字符串,以'#'結束*/
           ch=getchar();
           putchar(ch);
           if(ch=='i'||ch=='+'||ch=='*'||ch=='('||ch==')'||ch=='#')/*輸入合法字符串*/
		   {
                  temp=(struct Lchar *)malloc(sizeof(Lchar));
                  temp->next=NULL;
                  temp->char_ch=ch;
                  h->next=temp;
                  h=h->next;
		   }
           else/*輸入不合法字符串*/
		   {
                  temp=p->next;
                  printf("\nInput a wrong char!Input again:\n");
                  for(;;)/*打印當前字符串*/
				  {    
                          if (temp!=NULL)
                               printf("%c",temp->char_ch);      
                          else
                               break;
                          temp=temp->next;
				  }
		   }
	 }while(ch!='#');/*輸入待比較字符串,以'#'結束*/
     p=p->next;
     h=p;
     right=1;/*初始化開關項*/
     dosome();/*開始識別*/
     if(right)
          printf("\n合法句子\n");
     else
          printf("\n錯誤句子\n");
     getchar();
	 getchar();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人一区二区三区在线观看| 欧美色精品在线视频| 日韩极品在线观看| 伊人色综合久久天天| 国产精品妹子av| 国产清纯美女被跳蛋高潮一区二区久久w | 久久99国产精品麻豆| 亚洲制服丝袜av| 亚洲一二三四在线| 午夜精品成人在线视频| 亚洲va欧美va国产va天堂影院| 五月婷婷另类国产| 欧美aaaaa成人免费观看视频| 日本伊人色综合网| 激情久久五月天| 国产成人一区二区精品非洲| 盗摄精品av一区二区三区| 成人午夜激情视频| 91福利在线播放| 日韩一级精品视频在线观看| www国产精品av| 国产精品护士白丝一区av| 一区二区三区四区亚洲| 日韩av中文字幕一区二区| 国产麻豆精品在线观看| 丁香五精品蜜臀久久久久99网站| 色婷婷综合久久久久中文一区二区 | 1区2区3区欧美| 五月婷婷色综合| 国产成人免费9x9x人网站视频| 不卡在线观看av| 欧美精品色一区二区三区| 2017欧美狠狠色| 一区二区三区视频在线观看| 日本va欧美va精品发布| 成人午夜短视频| 7777精品伊人久久久大香线蕉 | 日韩精品一区二区三区四区| 久久精品一区二区三区不卡| 一区二区三区精品在线观看| 久久国产精品99久久人人澡| 成人av电影免费观看| 日韩一区二区视频在线观看| 国产精品久久久久久久久动漫| 亚洲高清视频在线| 成人av资源网站| 精品不卡在线视频| 亚洲亚洲人成综合网络| 国产精品香蕉一区二区三区| 欧美日免费三级在线| 亚洲国产精品精华液2区45| 另类小说一区二区三区| 337p亚洲精品色噜噜| 在线播放欧美女士性生活| 国产精品视频你懂的| 另类中文字幕网| 欧美日韩极品在线观看一区| 国产精品无码永久免费888| 日韩影院精彩在线| 91官网在线免费观看| 国产精品久久久久婷婷| 国产精一区二区三区| 欧美一区二区三区四区视频| 亚洲国产综合人成综合网站| 成人av资源在线观看| 国产精品嫩草久久久久| 国产精品一级在线| 久久人人爽爽爽人久久久| 麻豆久久久久久| 91精品国产综合久久久久久久| 亚洲综合免费观看高清完整版 | 久久亚洲春色中文字幕久久久| 午夜在线成人av| 欧美日韩三级一区二区| 一区二区成人在线视频| 91成人在线免费观看| 亚洲人成在线播放网站岛国| 91丨国产丨九色丨pron| 国产精品不卡在线| 91免费版在线| 亚洲伊人色欲综合网| 欧美网站大全在线观看| 亚洲成人一区二区| 91精品黄色片免费大全| 免费久久精品视频| 精品国产乱码久久久久久影片| 麻豆成人av在线| 久久精品免视看| 成人福利视频在线看| 成人欧美一区二区三区在线播放| 色综合久久88色综合天天免费| 一区二区三区自拍| 欧美日韩一区久久| 久久97超碰色| 国产精品传媒在线| 91成人免费网站| 日韩av一区二区在线影视| 精品免费国产一区二区三区四区| 国产在线观看一区二区| 国产精品久久久久久户外露出| 91久久精品一区二区三区| 日韩中文字幕亚洲一区二区va在线| 91精品国产综合久久久蜜臀图片| 国产黄色精品网站| 亚洲综合在线电影| 欧美mv日韩mv亚洲| av电影一区二区| 天天综合天天做天天综合| 久久久久久久性| 欧美影院精品一区| 国产高清亚洲一区| 亚洲第一福利视频在线| 久久精品男人的天堂| 色欧美乱欧美15图片| 久久av资源网| 一区二区三区日韩| 久久色视频免费观看| 日本久久一区二区| 国产尤物一区二区| 亚洲大片在线观看| 中文在线一区二区| 日韩欧美高清一区| 色综合久久久久综合| 九九久久精品视频| 亚洲成av人影院在线观看网| 国产性做久久久久久| 欧美肥妇毛茸茸| 色婷婷久久一区二区三区麻豆| 久久99精品视频| 亚洲成人高清在线| 一区二区免费视频| 亚洲国产高清aⅴ视频| www亚洲一区| 欧美一级在线视频| 91福利在线观看| 99久久99久久精品国产片果冻| 国产在线不卡一区| 另类小说视频一区二区| 香蕉乱码成人久久天堂爱免费| 国产精品午夜在线| 国产欧美一区二区精品久导航 | 蜜臀久久99精品久久久久久9| 亚洲欧美日韩久久精品| 国产欧美视频一区二区三区| 日韩三级免费观看| 91精品国产aⅴ一区二区| 欧美系列在线观看| 欧美视频一区在线| 欧美亚洲日本一区| 欧洲中文字幕精品| 欧洲在线/亚洲| 欧美视频一区二区三区在线观看| 一本高清dvd不卡在线观看| 91亚洲国产成人精品一区二区三 | 在线观看免费亚洲| 色琪琪一区二区三区亚洲区| 一本一道久久a久久精品 | 日韩一区二区免费电影| 欧美美女一区二区三区| 在线播放中文字幕一区| 91精品福利在线一区二区三区 | 日本一区二区成人| 国产精品国产三级国产aⅴ无密码| 国产日韩在线不卡| 国产精品卡一卡二| 综合婷婷亚洲小说| 亚洲国产精品久久人人爱| 偷窥少妇高潮呻吟av久久免费| 午夜不卡在线视频| 国产一区二三区| 99久久精品免费看国产| 欧美丝袜丝交足nylons| 日韩网站在线看片你懂的| 久久综合999| 国产精品卡一卡二卡三| 亚洲成av人片在线观看无码| 美女精品一区二区| 成人18精品视频| 欧美日韩免费一区二区三区视频| 欧美一区二区三区播放老司机| 精品久久久网站| 综合久久给合久久狠狠狠97色| 亚洲第一综合色| 黑人巨大精品欧美一区| 99久久久无码国产精品| 欧美日韩不卡在线| 国产拍欧美日韩视频二区| 亚洲精品美国一| 激情五月婷婷综合| 91捆绑美女网站| 91精品国产高清一区二区三区蜜臀 | 精品国产一区二区三区久久影院 | 中文欧美字幕免费| 三级久久三级久久| 风流少妇一区二区| 欧美一级片在线观看| 亚洲视频电影在线| 精品中文字幕一区二区小辣椒| 91丨porny丨国产入口| 精品国产伦一区二区三区观看体验 |