#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語言詞法分析...