編譯原理實驗,詞法分析器及判錯

2021-10-07 02:14:53 字數 2086 閱讀 1427

配套課本忘了盒盒盒

在這裡插入**片

#include

#include

char str1[80]

,token[

20];

//宣告保留字串 方便比對

char *rwtab[6

] = ;

//syn為token對應的碼 tar為switch對應的輸出型別keyword

int syn,tar ;

//num為token索引

int num = 0;

//k為str1索引

int k=0;

//ch為k當前對應的str1的字元

char ch ;

int kk = 0;

void irparser();

void yucu();

void statement();

void expression();

void term();

void factor();

void scanner();

int main()

while(str1[count-1]

!='#');

scanner();

irparser();

return 0;

}void scanner()

}; token[

0] = ch;

if(ch>='0'&&ch

<='9')

k--; syn = 11;

} else if ((ch>='a'&&ch

<='z')|

|(ch>='a'&&ch

<='z'))

token[num++] = '\0';

k--; syn = 10;

for (int i = 0; i < 6; ++i)

}} else else if(ch == '=')else

break;

case '>':

ch = str1[k++];

if(ch == '=') else

break;

case ':':

ch = str1 [k++];

if(ch == '=') else

break;

case '+':

ch = str1 [k];

syn = 13;

break;

case '-':

ch = str1 [k];

syn = 14;

break;

case '*':

ch = str1 [k];

syn = 15;

break;

case '/':

ch = str1 [k];

syn = 16;

break;

case '=':

ch = str1 [k];

syn = 25;

break;

case ';':

ch = str1 [k];

syn = 26;

break;

case '(':

ch = str1 [k];

syn = 27;

break;

case ')':

ch = str1 [k];

syn = 28;

break;

case '#':

ch = str1 [k];

syn = 0;

break;

default

: syn = -1;

}}}void irparser()

} else }

else }

void yucu()

}void statement()

else }

else }

void expression()

}void term()

}void factor()

} else

}

編譯原理 詞法分析器

1 從源程式檔案中讀入字元。2 統計行數和列數用於錯誤單詞的定位。3 刪除空格類字元,包括回車 製表符空格。4 按拼寫單詞,並用 內碼,屬性 二元式表示。屬性值 token 的機內表示 5 如果發現錯誤則報告出錯 6 根據需要是否填寫識別符號表供以後各階段使用 int tag 0 設立標誌 一開始本...

編譯原理,例 詞法分析器

編譯原理課作業要求自己寫乙個詞法分析器,我嘗試寫了一下。詞法分析 電腦科學中將字串行轉換為單詞 token 序列的過程。進行詞法分析的程式或者函式叫作詞法分析器 lexical analyzer 也叫掃瞄器 scanner 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱為...

實驗 詞法分析器

實驗 一 詞法分析實驗 商業軟體工程專業 姓名 張木貴 學號 201505060365 一.實驗目的 通過設計編制除錯乙個具體的詞法分析程式,加深對詞法分析原理的理解。並掌握在對程式語言源程式進行掃瞄過程中將其分解為各類單詞的詞法分析方法。二 實驗內容和要求 1 根據狀態轉換圖直接程式設計 編寫乙個...