C語言詞法分析器

2021-06-16 04:35:12 字數 3172 閱讀 4057

#include

#include

#include

#include

#define len 180

int syn,p,m,n;

char token[10],ch;

char *keyword[32]=;

struct wordline//定義結構體

;struct wordline *creat(struct wordline *head,char token[10],int numofline)//建立鍊錶

pickword(char str[len])

p--;

syn=33;

for(n=0;n<32;n++)

if(strcmp(token,keyword[n])==0)

}else if ((ch>='0')&&(ch<='9'))

p--;

syn=34;

}else switch (ch)

else

break;

case '-':token[m++]=ch;

ch=str[p++];

if(ch=='-')

else

break;

case ':':token[m++]=ch;

ch=str[p++];

if(ch=='=')

else

break;

case '<':token[m++]=ch;

ch=str[p++];

if(ch=='>')

else if (ch=='=')

else

break;

case '>':token[m++]=ch;

ch=str[p++];

if(ch=='=')

else

break;

case '*':token[m++]=ch;

ch=str[p++];

if(ch=='/')

else

break;

case '/':token[m++]=ch;

ch=str[p++];

if(ch=='*')

else

break;

case '=':token[m++]=ch;

ch=str[p++];

if(ch=='=')

else

break;

case '!':token[m++]=ch;

ch=str[p++];

if(ch=='=')

else

break;

case ';':token[m++]=ch;

syn=52;

break;

case '(':token[m++]=ch;

syn=53;

break;

case ')':token[m++]=ch;

syn=54;

break;

case '':token[m++]=ch;

syn=56;

break;

case '#':token[m++]=ch;

syn=57;

break;

case '&':token[m++]=ch;

ch=str[p++];

if(ch=='&&')

else

break;

case '%':token[m++]=ch;

syn=62;

break;

case '[':token[m++]=ch;

syn=63;

break;

case ']':token[m++]=ch;

syn=64;

break;

case '|':token[m++]=ch;

ch=str[p++];

if(ch=='|')

else

break;

case '"':token[m++]=ch;

syn=67;

break;

case ',':token[m++]=ch;

syn=68;

break;

default :

if(ch=='/0')

else

break;

}token[m++]='/0';

}main()

system("cls");

while(!feof(fp))

printf("/n");

fclose(fp);

getchar();

printf("是否列印各行資訊??/n""是請按「1」繼續,按「2」清屏重新讀取其他原始檔,按其他鍵退出/n");

chr1=getchar();

if (chr1=='2')

else if (chr1!='1') exit(1);

fp=fopen(filename,"r");

numofline=0;

printf("( word        line)/n");

head=end=(struct wordline*)malloc(sizeof(struct wordline));

while(!feof(fp))

}while(1);

}fclose(fp);

printf("是否將輸入內容儲存/n""是按「1」繼續,按「2」清屏重新讀取其他原始檔,按其他鍵退出/n");

getchar();

chr1=getchar();

if (chr1=='2')

else if (chr1!='1') exit(1);

l2: printf("請輸入儲存的檔名/n");

scanf("%s",fileget);

if ((fw=fopen(fileget,"at+"))==null)

head=head->next;

while(head!=null)

fclose(fw);

printf("儲存完畢是否清屏繼續操作/n""是按「1」繼續,否按其他鍵退出/n");

getchar();

chr1=getchar();

if(chr1=='1')

else

exit(1);

}

c語言詞法分析器

include include include void main void int reserver char void main void if output fopen output.txt wt null fprintf output,4s t 8s t 16s t 4s n 位置 符號型別...

編譯原理 C語言詞法分析器

本程式預設的種別碼的編碼 主介面 功能1提到的input.txt檔案的內容可以是任意c語言 這裡我的input.txt隨便打了一段c語言 進入1功能,直接從input.txt檔案讀取 這裡沒寫路徑輸入,必須把input.txt和本程式的cpp檔案放在同一目錄下 經過分析後得到結果 沒做清屏處理,寫得...

C語言詞法分析器 編譯原理

這是老師布置的編譯原理的實驗課任務,課餘時間花了近乙個星期的時間去編寫 主要是c 太久沒有用了,好多函式都不熟悉,查閱了很多資料 這次的詞法分析只有簡單的語法錯誤判斷功能,約等於沒有.如果想要增加功能可以在相關函式 段增加即可.而且token的種別碼只做了粗略的區分,想要加上也很簡單 c語言詞法分析...