91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 754KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-07-05
  • 語言: 其他
  • 標簽: pl0??編譯原理??

資源簡介

是pl0的語法分析器,編譯原理實驗; 用C寫的。 /語法分析過程中 /利用詞法分析的結果進行分析 /嚴格按照PL0程序定義來編寫 / / ::= . / ::= PROGRAM ; / ::= [][][] / ::= CONST {,}; / ::= = / ::= VAR {,}; / ::= ;;【原課件中沒有最后的分號,經分析應該有分號】 / ::= PROCEDURE / ::= | / ::= BEGIN {;} END【符合語句應該注意的是,END前距離END最近的那條語句一定沒有分號,其他語句必須有分號】 /::= |||||| / ::= := / ::= READ({,}) / ::= WRITE({,}) / ::= CALL 【原課件中有分號,實際不應該有】 / ::= IF THEN / ::= WHILE DO / ::= ||() / ::= {} / ::= *|/ / ::= [+|-]{} / ::= +|- / ::= |ODD / ::= #|=|>|>=|<|<=

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?

using?namespace?std;

/********************************************************************
/PL0的編譯程序?C++版
/
/詞法分析??語法分析??符號表
/
/詞法分析過程中
/遇到.號就立即結束,無論后面是否有內容都忽略
/遇到非法字符,中斷分析并給出錯誤報告
/遇到超過14個字母的單詞,截斷成14個字母的,如果他不是數字再截斷成10個字母的并給出錯誤報告
/遇到數字開頭的標識符?中斷分析并給出錯誤報告
/
/語法分析過程中
/利用詞法分析的結果進行分析
/嚴格按照PL0程序定義來編寫
/
/<程序>?::=?<程序首部>?<分程序>.
/<程序首部>?::=?PROGRAM?<標識符>;
/<分程序>?::=?[<常量說明部分>][<變量說明部分>][<過程說明部分>]<語句部分>
/<常量說明部分>?::=?CONST?<常量定義>{<常量定義>};
/<常量定義>?::=?<標識符>=<無符號整數>
/<變量說明部分>?::=?VAR?<標識符>{<標識符>};
/<過程說明部分>?::=?<過程首部>;<分程序>;【原課件中沒有最后的分號,經分析應該有分號】
/<過程首部>?::=?PROCEDURE?<標識符>
/<語句部分>?::=?<語句>|<復合語句>
/<復合語句>?::=?BEGIN?<語句>{;<語句>}?END【符合語句應該注意的是,END前距離END最近的那條語句一定沒有分號,其他語句必須有分號】
/<語句>::=?<賦值語句>|<條件語句>|<當型?循環語句>|<過程調用語句>|<讀語句>|<寫語句>|<復合語句>
/<賦值語句>?::=?<標識符>:=<表達式>
/<讀語句>?::=?READ(<標識符>{<標識符>})
/<寫語句>?::=?WRITE(<表達式>{<表達式>})
/<過程調用語句>?::=?CALL?<標識符>【原課件中有分號,實際不應該有】
/<條件語句>?::=?IF?<條件>?THEN?<語句>
/<當型循環語句>?::=?WHILE?<條件>?DO?<語句>
/<因子>?::=?<標識符>|<常量>|(<表達式>)
/<項>?::=?<因子>{<乘法運算符><因子>}
/<乘法運算符>?::=?*|/
/<表達式>?::=?[+|-]<項>{<加法運算符><項>}
/<加法運算符>?::=?+|-
/<條件>?::=?<表達式><關系運算符><表達式>|ODD?<表達式>
/<關系運算符>?::=?#|=|>|>=|<|<=
/
/如果上述的任意一個步驟出了問題都會有錯誤提示,并指出是在源文件中的第幾行,是哪一個定義出了問題
/當一個<語句>【復合語句除外】判斷成功之后,在詞法分析的結果找到這個語句的開始和結束,并輸出這個語句是什么語句
/語法分析的實際操作類似一個走迷宮的搜索問題,找到一個可行的方向就前進,直到走到把所有單詞都分析完,或者走不通了,一層層回溯返回FALSE給出錯誤信息
/
/符號表
/符號表的建立是在語法分析的深度優先搜索的基礎上完成的
/基于深度優先搜索的特點當一個過程分析完,直接就能得到它的層級
/變量的LEVEL等于定義該變量的過程的LEVEL+1
/每個過程的變量的ADR都重新從3開始遞增
/常量沒有LEVEL,沒有ADR,
/變量和常量都沒有SIZE
/當程序的變量分析完就得到了符號表中最近插入的過程的SIZE【SIZE等于該過程的最后一個變量的ADR+1,若該過程沒有變量則等于3】
/
*******************************************************************/

typedef?struct?t{
????string?namekind;
????int?vallevadrsize;
}Table;

bool?isChengXu(int?lev);
bool?isFenChengXu(int?lev);
bool?isChengXuShouBu();
bool?isChangLiangShuoMing();
bool?isBianLiangShuoMing();
bool?isGuoChengShuoMing(int?lev);
bool?isYuJuBuFen();
bool?isChangLiangDingYi();
bool?isGuoChengShouBu(int?lev);
bool?isYuJu();
bool?isFuHeYuJu();
bool?isFuZhiYuJu();
bool?isWhileDoYuJu();
bool?isIfYuJu();
bool?isCallYuJu();
bool?isWriteYuJu();
bool?isReadYuJu();
bool?isTiaoJian();
bool?isYinZi();
bool?isXiang();
bool?isBiaoDaShi();
void?printYuFa(int?xint?ystring?statement);//輸出語法分析的結果
void?addtotable(string?namestring?kindint?valint?levint?adrint?size);//把記錄加入符號表
int?stoi(string?s);//字符串轉化成數字
string?itos(int?n);//數字轉化成字符串
int?error(int?eint?eline);//指出在eline行有錯誤e
bool?isNumber(string?s);//判斷一個字符串是不是一個數字
string?strtoupper(string?s);//把字符串轉換為大寫
string?strtolower(string?s);//把字符串轉換為小寫
int?lvkongge(string?mSourseint?&i);//慮空格,遇到文件末尾結束,返回-1
string?getnext(string?mSourseint?&i);//從源文件中識別一個單詞并返回
bool?cifafenxi(string?mSourse);//詞法分析的主函數,執行慮空格操作,然后用getnext函數獲取下一個單詞進行分析,依次循環知道lvkongge函數返回-1
void?initmp();//初始化保留字界符的查找表,
bool?nexteql(string?s);//從詞法分析的結果頂部取出一個單詞,判斷s是否與之相等,

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-06-26?15:36??實驗\
?????目錄???????????0??2012-06-26?15:37??實驗\PL0語法分析器\
?????目錄???????????0??2012-06-26?16:18??實驗\PL0語法分析器\Debug\
?????目錄???????????0??2012-06-26?15:43??實驗\PL0語法分析器\PL0語法分析器\
?????文件?????2731008??2012-06-26?16:21??實驗\PL0語法分析器\PL0語法分析器.ncb
?????文件?????????925??2012-06-26?15:36??實驗\PL0語法分析器\PL0語法分析器.sln
?????文件????????8192??2012-06-26?16:21??實驗\PL0語法分析器\PL0語法分析器.suo
?????目錄???????????0??2012-06-26?16:18??實驗\PL0語法分析器\PL0語法分析器\Debug\
?????文件????????4218??2012-06-26?16:18??實驗\PL0語法分析器\PL0語法分析器\Debug\BuildLog.htm
?????文件????????2048??2012-06-26?16:15??實驗\PL0語法分析器\PL0語法分析器\Debug\PL0語法分析器.exe.embed.manifest
?????文件????????2112??2012-06-26?16:15??實驗\PL0語法分析器\PL0語法分析器\Debug\PL0語法分析器.exe.embed.manifest.res
?????文件??????232448??2012-06-26?16:15??實驗\PL0語法分析器\PL0語法分析器\Debug\vc90.idb
?????文件??????282624??2012-06-26?16:15??實驗\PL0語法分析器\PL0語法分析器\Debug\vc90.pdb
?????文件??????657707??2012-06-26?16:15??實驗\PL0語法分析器\PL0語法分析器\Debug\yufa.obj
?????文件????????3967??2012-06-26?16:18??實驗\PL0語法分析器\PL0語法分析器\PL0語法分析器.vcproj
?????文件????????1419??2012-06-26?16:21??實驗\PL0語法分析器\PL0語法分析器\PL0語法分析器.vcproj.annie-THINK.annie.user
?????文件???????32785??2012-06-26?15:37??實驗\PL0語法分析器\PL0語法分析器\yufa.cpp

評論

共有 條評論