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

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

?? 新建 文本文檔 (2).txt

?? 編譯原理課程設(shè)計(jì) 很珍貴的資源 快來下載吧
?? TXT
字號(hào):
二、  語法分析器 

語法分析器的任務(wù)是根據(jù)詞法分析的結(jié)果判斷是否符合文法規(guī)則,并以一定形式輸出語法樹。(這里按逆波蘭式輸出。其中符號(hào)“!”代表?xiàng)l件語句運(yùn)算符;符號(hào)“@”代表循環(huán)語句運(yùn)算符) 

代碼如下: 

  

#include<stdio.h> 

#include<stdlib.h> 

#include<conio.h> 

#define BOOL int 

#define TRUE 1 

#define FALSE 0 

#define MAXSIZE 50 

  

typedef struct 

{ 

    int no; 

    char str[MAXSIZE]; 

}Element; 

  

Element ch; 

FILE *in,*out; 

  

void scan();      /* 掃描 */ 

void error(int error); /* 報(bào)錯(cuò) */ 

void P();         /* 程序 */         /* P → begin S end */ 

void S();         /* 語句串 */       /* S → SS { ; SS } */ 

void SS();        /* 語句 */         /* SS → S1 | S2 | S3 */ 

void S1();        /* 賦值語句 */     /* S1 → V := E */ 

void S2();        /* 條件語句 */     /* S2 → if SS2 then ( SS | P ) */ 

void S3();        /* 循環(huán)語句 */     /* S3 → while SS2 do ( SS | P ) */ 

void E();         /* 表達(dá)式 */       /* E → T { + T | - T } */ 

void SS2();       /* 條件 */         /* SS2 → E R E */ 

void R();         /* 關(guān)系符 */       /* R → < | <> | <= | > | >= | = */ 

void T();         /* 項(xiàng) */           /* T → F { * F | / F } */ 

void F();         /* 因子 */         /* F → V | N | ( E ) */ 

void V();         /* 變量 */         /* V → W */ 

void W();         /* 標(biāo)識(shí)符 */ 

void N();         /* 數(shù)字 */ 

  

void scan() 

{ 

    char buffer; 

    int i=0; 

    int temp=0; 

    do 

    { 

         buffer=fgetc(in); 

         ch.str[i++]=buffer; 

    }while(buffer!=','); 

    while(TRUE) 

    { 

         buffer=fgetc(in); 

         if(buffer!='\n') 

         { 

             temp=10*temp+buffer-48; 

         } 

         else 

             break; 

    } 

    ch.no = temp; 

    ch.str[--i]='\0'; 

} 

  

void error(int n) 

{ 

    switch(n) 

    { 

    case 1: 

         printf("標(biāo)識(shí)符begin錯(cuò)誤!"); 

         break; 

    case 2: 

         printf("標(biāo)識(shí)符if錯(cuò)誤!"); 

         break; 

    case 3: 

         printf("標(biāo)識(shí)符then錯(cuò)誤!"); 

         break; 

    case 4: 

         printf("標(biāo)識(shí)符while錯(cuò)誤!"); 

         break; 

    case 5: 

         printf("標(biāo)識(shí)符do錯(cuò)誤!"); 

         break; 

    case 6: 

         printf("標(biāo)識(shí)符end錯(cuò)誤!"); 

         break; 

    case 7: 

         printf("不是有效的句子!"); 

         break; 

    case 8: 

         printf("判斷語句出錯(cuò)!"); 

         break; 

    case 9: 

         printf("循環(huán)語句出錯(cuò)!"); 

         break; 

    case 10: 

         printf("不是正確的標(biāo)識(shí)符!"); 

         break; 

    case 11: 

         printf("條件表達(dá)式錯(cuò)誤!"); 

         break; 

    case 12: 

         printf("算術(shù)表達(dá)式錯(cuò)誤!"); 

         break; 

    case 18: 

         printf("賦值語句錯(cuò)誤!"); 

         break; 

    case 28: 

         printf("缺少')'!"); 

         break; 

    default: 

         printf("Compile failed!"); 

         break; 

    } 

    getch(); 

    exit(1); 

} 

  

void P() 

{ 

    if(ch.no==1) 

    { 

         scan(); 

         S(); 

         if(ch.no==6) 

             scan(); 

         else 

             error(6); 

    } 

    else 

         error(1); 

} 

  

void S() 

{ 

    SS(); 

    while(ch.no==26) 

    { 

         scan(); 

         SS(); 

    } 

} 

  

void SS() 

{ 

    switch(ch.no) 

    { 

    case 10: 

         S1(); 

         break; 

    case 2: 

         S2(); 

         break; 

    case 4: 

         S3(); 

         break; 

    default: 

         error(7); 

         break; 

    } 

} 

  

void S1() 

{ 

    V(); 

    if(ch.no==18) 

    { 

         scan(); 

         E(); 

         fputc(':',out); 

         fputc('=',out); 

         fputc(' ',out); 

    } 

    else 

         error(18); 

} 

  

void S2() 

{ 

    if(ch.no==2) 

    { 

         scan(); 

         SS2(); 

         if(ch.no==3) 

         { 

             scan(); 

             switch(ch.no) 

             { 

             case 10: 

             case 2: 

             case 4: 

                  SS(); 

                  break; 

             case 1: 

                  P(); 

                  break; 

             default: 

                  error(8); 

                  break; 

             } 

             fputc('!',out); 

             fputc(' ',out); 

         } 

         else 

             error(3); 

    } 

    else 

         error(2); 

} 

  

void S3() 

{ 

    if(ch.no==4) 

    { 

         scan(); 

         SS2(); 

         if(ch.no==5) 

         { 

             scan(); 

             switch(ch.no) 

             { 

             case 10: 

             case 2: 

             case 4: 

                  SS(); 

                  break; 

             case 1: 

                  P(); 

                  break; 

             default: 

                  error(9); 

                  break; 

             } 

             fputc('@',out); 

             fputc(' ',out); 

         } 

         else 

             error(5); 

    } 

    else 

         error(4); 

} 

  

void V() 

{ 

    W(); 

} 

  

void E() 

{ 

    T(); 

    while(ch.no==13) 

    { 

         scan(); 

         T(); 

         fputc('+',out); 

         fputc(' ',out); 

    } 

    while(ch.no==14) 

    { 

         scan(); 

         T(); 

         fputc('-',out); 

         fputc(' ',out); 

    } 

} 

  

void SS2() 

{ 

    int temp; 

    E(); 

    temp=ch.no; 

    R(); 

    E(); 

    switch(temp) 

    { 

    case 20: 

         fputc('<',out); 

         fputc(' ',out); 

         break; 

    case 21: 

         fputc('<',out); 

         fputc('>',out); 

         fputc(' ',out); 

         break; 

    case 22: 

         fputc('<',out); 

         fputc('=',out); 

         fputc(' ',out); 

         break; 

    case 23: 

         fputc('>',out); 

         fputc(' ',out); 

         break; 

    case 24: 

         fputc('>',out); 

         fputc('=',out); 

         fputc(' ',out); 

         break; 

    case 25: 

         fputc('=',out); 

         fputc(' ',out); 

         break; 

    } 

} 

  

void R() 

{ 

    switch(ch.no) 

    { 

    case 20: 

         scan(); 

         break; 

    case 21: 

         scan(); 

         break; 

    case 22: 

         scan(); 

         break; 

    case 23: 

         scan(); 

         break; 

    case 24: 

         scan(); 

         break; 

    case 25: 

         scan(); 

         break; 

    default: 

         error(11); 

         break; 

    } 

} 

  

void W() 

{ 

    int i=0; 

    if(ch.no==10) 

    { 

         while(ch.str[i]!='\0') 

             fputc(ch.str[i++],out); 

         fputc(' ',out); 

         scan(); 

    } 

    else 

         error(10); 

} 

  

void T() 

{ 

    F(); 

    while(ch.no==15) 

    { 

         scan(); 

         F(); 

         fputc('*',out); 

         fputc(' ',out); 

    } 

    while(ch.no==16) 

    { 

         scan(); 

         F(); 

         fputc('/',out); 

         fputc(' ',out); 

    } 

} 

  

void F() 

{ 

    switch(ch.no) 

    { 

    case 10: 

         V(); 

         break; 

    case 11: 

         N(); 

         break; 

    case 27: 

         scan(); 

         E(); 

         if(ch.no==28) 

             scan(); 

         else 

             error(28); 

         break; 

    default: 

         error(12); 

         break; 

    } 

} 

  

void N() 

{ 

    int i=0; 

    if(ch.no==11) 

    { 

         while(ch.str[i]!='\0') 

             fputc(ch.str[i++],out); 

         fputc(' ',out); 

         scan(); 

    } 

    else 

         error(12); 

} 

  

void main() 

{ 

    const char* input="scaned.txt"; 

    const char* output="compiled.txt"; 

    if(!(in=fopen(input,"r"))) 

         error(-1); 

    out=fopen(output,"w"); 

    scan(); 

    P(); 

    if(ch.no==0) 

    { 

         printf("Success!"); 

         fputc('#',out); 

    } 

    else 

         error(-1); 

    fclose(in); 

    fclose(out); 

    getch(); 

} 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美偷拍另类a∨色屁股| 99久久精品情趣| 国产成人aaa| 99re热这里只有精品免费视频| 色香蕉久久蜜桃| 欧美一区二区三区免费视频| 久久久一区二区三区| 亚洲欧洲日产国产综合网| 亚洲第一在线综合网站| 韩国精品免费视频| 91免费版在线| 日韩免费在线观看| 专区另类欧美日韩| 奇米影视一区二区三区| 国产91精品露脸国语对白| 欧美婷婷六月丁香综合色| 国产亚洲一本大道中文在线| 成人av电影在线| 在线观看视频一区二区欧美日韩| 日韩欧美成人一区| 亚洲日本电影在线| 美国十次综合导航| 色久优优欧美色久优优| 日韩三级中文字幕| 亚洲男同性恋视频| 精品午夜一区二区三区在线观看| 色欲综合视频天天天| 精品99一区二区三区| 亚洲午夜在线电影| 成人性色生活片免费看爆迷你毛片| 欧美色精品在线视频| 国产精品美女久久福利网站| 麻豆成人91精品二区三区| 色综合色综合色综合 | 亚洲专区一二三| 国产真实乱偷精品视频免| 在线亚洲免费视频| 欧美韩国一区二区| 免费成人在线影院| 欧美午夜精品一区二区三区| 欧美韩国日本综合| 国产真实乱对白精彩久久| 欧美理论在线播放| 亚洲欧洲性图库| 国产精品综合在线视频| 在线亚洲人成电影网站色www| 久久婷婷国产综合精品青草| 视频一区二区三区中文字幕| 色婷婷激情一区二区三区| 日本一区二区三区在线观看| 黑人巨大精品欧美黑白配亚洲| 7878成人国产在线观看| 一区二区三区四区乱视频| 成熟亚洲日本毛茸茸凸凹| 亚洲精品一区二区三区蜜桃下载| 午夜精品久久久久久久久 | 一区二区三区免费网站| 懂色av中文字幕一区二区三区| 欧美高清视频不卡网| 免费在线成人网| 久久久精品天堂| 91在线精品秘密一区二区| 九九国产精品视频| 亚洲欧美韩国综合色| 在线观看欧美日本| 欧美日韩免费在线视频| 精品日韩成人av| 麻豆国产91在线播放| 欧美高清一级片在线| 亚洲一级二级在线| 色成年激情久久综合| 亚洲日本护士毛茸茸| 99国产精品久| 亚洲免费观看高清在线观看| 不卡一区二区三区四区| 中文字幕一区二区三区在线播放| 国产东北露脸精品视频| 国产日韩欧美在线一区| 国产成人亚洲综合色影视| 日本一区二区三区四区| 成人av资源站| 亚洲码国产岛国毛片在线| 99riav久久精品riav| 玉米视频成人免费看| 91精彩视频在线观看| 国产精品久久国产精麻豆99网站| 国产三级久久久| 91丨九色丨蝌蚪丨老版| 91麻豆精品国产综合久久久久久| 亚洲午夜日本在线观看| 欧美美女一区二区在线观看| 日本sm残虐另类| 久久综合色综合88| 风流少妇一区二区| 亚洲欧洲制服丝袜| 欧美喷水一区二区| 免费成人性网站| 久久久天堂av| 99久久精品免费看国产| 亚洲电影一区二区三区| 制服丝袜中文字幕一区| 成人美女视频在线看| 亚洲精品伦理在线| 69av一区二区三区| 精品一区二区三区免费观看| 日本一二三不卡| 一本大道久久a久久精品综合| 亚洲大片在线观看| 亚洲精品在线免费观看视频| 成人av在线资源网| 五月婷婷另类国产| 久久一区二区视频| 99久久精品一区| 五月综合激情婷婷六月色窝| 精品国产不卡一区二区三区| 99视频在线精品| 性做久久久久久免费观看欧美| 日本韩国一区二区| 久久久久久久久久久黄色| 在线视频亚洲一区| 日韩精品国产欧美| 国产日产欧美精品一区二区三区| 色综合久久久久综合体 | 波多野结衣亚洲| 亚洲成a天堂v人片| 精品国产百合女同互慰| 色88888久久久久久影院野外 | 欧美一区午夜精品| 成人黄页毛片网站| 天天免费综合色| 国产欧美日韩亚州综合| 欧美日韩三级视频| 风流少妇一区二区| 日本成人中文字幕在线视频 | 国产成人综合在线观看| 亚洲激情校园春色| 国产亚洲综合性久久久影院| 欧美日韩激情一区二区三区| 成人深夜视频在线观看| 日韩电影免费一区| 一区在线播放视频| 久久美女艺术照精彩视频福利播放 | 99精品欧美一区二区三区小说 | 亚洲色图欧洲色图婷婷| 在线不卡免费欧美| 99久久伊人网影院| 久久av资源站| 亚洲成人资源在线| 椎名由奈av一区二区三区| 久久久午夜电影| 91精品在线麻豆| 在线免费观看日本欧美| 成人免费看的视频| 激情伊人五月天久久综合| 天堂午夜影视日韩欧美一区二区| 亚洲欧美激情小说另类| 亚洲国产高清不卡| 欧美mv日韩mv国产网站| 欧美精品在线观看播放| 在线欧美小视频| 91麻豆视频网站| 成人激情综合网站| 国产精品一区三区| 久久精品免费观看| 三级不卡在线观看| 午夜精品久久久久久久久| 樱花影视一区二区| 亚洲日本在线看| 亚洲欧美综合色| 欧美国产1区2区| 国产嫩草影院久久久久| 精品91自产拍在线观看一区| 欧美一级理论片| 欧美一级夜夜爽| 8v天堂国产在线一区二区| 欧美麻豆精品久久久久久| 欧美亚洲国产一区二区三区va| 色欧美片视频在线观看在线视频| 99久久综合色| 成人国产电影网| 成人蜜臀av电影| 成人av第一页| 99精品国产91久久久久久| 99精品欧美一区二区三区综合在线| 大桥未久av一区二区三区中文| 国产毛片精品国产一区二区三区| 国内精品久久久久影院薰衣草| 久久国产人妖系列| 精品一区二区三区免费毛片爱| 黄色资源网久久资源365| 狠狠狠色丁香婷婷综合激情 | 欧美一区二区美女| 日韩一区二区中文字幕| 欧美电影免费观看高清完整版在| 日韩欧美三级在线| 精品盗摄一区二区三区| 国产偷v国产偷v亚洲高清| 国产精品久久久久永久免费观看| 国产精品女主播在线观看| 国产精品灌醉下药二区|