資源簡介
編譯原理實驗,實現了一個詞法分析器生成Token序列。中間代碼、四元式生成。含有實驗報告。

代碼片段和文件信息
#include
#include
#include?
#include?
#include?
using?namespace?std;
void?printMenu();//打印菜單這個函數的聲明
/******************************************實驗一所用函數*********************************************************/
char?keywords[30][12]={“program““begin““end““var““while““do““repeat“
“until““for““to““if““then““else““;“?“:“?“(“?“)“?““
?“:=“?“+“?“-“?“*“?“/“?“>“?“>=“?“==“?“<“?“<=“};
int?num_key=28;
int?aut[11][8]={?0?0?0?0?0?0?0?0
?????????0?2?0?0?0?8?915
?????????????0?2?3?511?0?011
?????????????0?4?0?0?0?0?0?0
?????????????0?4?0?511?0?011
?????????????0?7?0?0?6?0?0?0
?????????????0?7?0?0?0?0?0?0
?????????????0?7?0?011?0?011
?????????????0?8?0?0?0?8?012
?????????????0?0?0?0?0?01014
?????????????0?0?0?0?0?0?013};
char?ID[50][12];
int?C[20];
int?num_ID=0num_C=0;
struct?token
{?int?code;
??int?value;
};????????????????????????????????????//Token結構
struct?token?tok[100];????????????????????//Token數組
int?i_token=0num_token=0;??????????????//Token計數器和Token個數
char?strTOKEN[15];????????????????????//當前單詞
int?i_str;??????????????????????????????//當前單詞指針
int?npmet;???????????????????????????//尾數值,指數值,小數位數,指數符號,類型
double?num;???????????????????????????//常數值
char?w[50];????????????????????????????//源程序緩沖區
int?i;??????????????????????????????????//源程序緩沖區指針當前字符為w[i]
struct?map?????????????????????????????//當前字符到狀態轉換矩陣列標記的映射
{
char?str[50];
int?col;
};
struct?map?col1[4]={{“0123456789“1}{“.“2}{“Ee“3}{“+-“4}};????//數字
struct?map?col2[2]={{“abcdefghijklmnopqrstuvwxyz“5}{“0123456789“1}};?//關鍵字或標識符
struct?map?col3[1]={{“;:()+-*/=><“6}};????????????????????//界符
struct?map?*ptr;
int?num_map;
void?act(int?s);
int?find(int?schar?ch);
int?InsertConst(double?num);
int?Reserve(char?*str);
int?InsertID(char?*str);
//實驗一中函數的實現
void?act(int?s)
{
int?code;
switch?(s)
{
case?1:n=0;m=0;p=0;t=0;e=1;num=0;i_str=0;
???strTOKEN[i_str]=‘\0‘;???????????????????//其它變量初始化
???break;
????case?2:n=10*n+w[i]-48;
???????break;
????case?3:t=1;
???break;
????case?4:n=10*n+w[i]-48;?m++;
???break;
????case?5:t=1;
???break;
????case?6:if?(w[i]==‘-‘)?e=-1;
???break;
????case?7:p=10*p+w[i]-48;
???break;
????case?8:strTOKEN[i_str++]=w[i];??//將ch中的符號拼接到strTOKEN的尾部;
??break;
????case?9:strTOKEN[i_str++]=w[i];??//將ch中的符號拼接到strTOKEN的尾部;
??break;
case?10:strTOKEN[i_str++]=w[i];?//將ch中的符號拼接到strTOKEN的尾部;
???break;
????case?11:num=n*pow(10.0e*p-m);???????????//計算常數值
???????????tok[i_token].code=2;??tok[i_token++].value=InsertConst(num);??//生成常數Token
????????????num_token++;
break;
case?12:strTOKEN[i_str]=‘\0‘;
???????????code=Reserve(strTOKEN);???????????????????//查關鍵字表
???????????if?(code)?
? ???{?
???tok[i_token].code=code;??tok[i_token++].value=0;
???}???//生成關鍵字Token
else?
{?tok[i_token].co
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????134??2011-10-30?15:42??編譯原理實驗\readme.txt
?????文件??????88064??2011-10-28?14:42??編譯原理實驗\SimpleComplier\Debug\SimpleComplier.exe
?????文件?????604764??2011-10-28?14:42??編譯原理實驗\SimpleComplier\Debug\SimpleComplier.ilk
?????文件?????887808??2011-10-28?14:42??編譯原理實驗\SimpleComplier\Debug\SimpleComplier.pdb
?????文件?????????73??2011-10-28?13:05??編譯原理實驗\SimpleComplier\SimpleComplier\code.txt
?????文件???????9844??2011-10-28?14:42??編譯原理實驗\SimpleComplier\SimpleComplier\Debug\BuildLog.htm
?????文件?????????67??2011-10-28?14:42??編譯原理實驗\SimpleComplier\SimpleComplier\Debug\mt.dep
?????文件????????663??2011-10-28?12:56??編譯原理實驗\SimpleComplier\SimpleComplier\Debug\SimpleComplier.exe.em
?????文件????????728??2011-10-28?12:56??編譯原理實驗\SimpleComplier\SimpleComplier\Debug\SimpleComplier.exe.em
?????文件????????621??2011-10-28?14:42??編譯原理實驗\SimpleComplier\SimpleComplier\Debug\SimpleComplier.exe.intermediate.manifest
?????文件?????227033??2011-10-28?14:42??編譯原理實驗\SimpleComplier\SimpleComplier\Debug\simpleComplier.obj
?????文件?????199680??2011-10-28?14:42??編譯原理實驗\SimpleComplier\SimpleComplier\Debug\vc90.idb
?????文件?????241664??2011-10-28?14:42??編譯原理實驗\SimpleComplier\SimpleComplier\Debug\vc90.pdb
?????文件??????10006??2011-10-28?14:42??編譯原理實驗\SimpleComplier\SimpleComplier\simpleComplier.cpp
?????文件???????4000??2011-10-28?13:06??編譯原理實驗\SimpleComplier\SimpleComplier\SimpleComplier.vcproj
?????文件???????1427??2011-10-28?15:53??編譯原理實驗\SimpleComplier\SimpleComplier\SimpleComplier.vcproj.NEU-C631077854A.wanyao.user
?????文件????2313216??2011-10-28?15:53??編譯原理實驗\SimpleComplier\SimpleComplier.ncb
?????文件????????908??2011-10-28?12:55??編譯原理實驗\SimpleComplier\SimpleComplier.sln
????..A..H.?????13824??2011-10-28?15:53??編譯原理實驗\SimpleComplier\SimpleComplier.suo
?????文件?????243712??2011-11-01?15:30??編譯原理實驗\編譯實驗報告最終版.doc
?????目錄??????????0??2011-10-30?15:39??編譯原理實驗\SimpleComplier\SimpleComplier\Debug
?????目錄??????????0??2011-10-30?15:39??編譯原理實驗\SimpleComplier\Debug
?????目錄??????????0??2011-10-30?15:39??編譯原理實驗\SimpleComplier\SimpleComplier
?????目錄??????????0??2011-10-30?15:39??編譯原理實驗\SimpleComplier
?????目錄??????????0??2011-11-01?15:30??編譯原理實驗
-----------?---------??----------?-----??----
??????????????4848236????????????????????25
- 上一篇:天融信病毒過濾網關用戶手冊
- 下一篇:東北大學軟件學院計算機網絡復習資料
評論
共有 條評論