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

  • 大小: 196KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-08-21
  • 語言: C/C++
  • 標(biāo)簽: 編譯原理??C++??

資源簡介

本資源使用C++實(shí)現(xiàn)了語法分析器,內(nèi)容包括C++源代碼與exe文件、input.txt和程序運(yùn)行說明文檔。該資源的文字版信息請?jiān)L問博客《編譯原理實(shí)踐:C++實(shí)現(xiàn)語法分析器(學(xué)習(xí)筆記)》(https://blog.csdn.net/weixin_40589192/article/details/106933125)。

資源截圖

代碼片段和文件信息

#include?
#include???????????/*包含庫所用的某些宏和變量*/
#include??????????/*包含庫*/
#include??????????/*包含字符串處理庫*/
#define?_KEY_WORD_END?“waiting?for?your?expanding“
????????????????????????????/*定義關(guān)鍵字結(jié)束標(biāo)志*/
using?namespace?std;

typedef?struct??????????????/*單詞二元組*/
{
int?categoryCode;???????/*單詞種別*/
char?*value;????????????/*單詞自身的值*/
}WORD;

/*詞法分析部分*/
char?inputBuffer[10000];????/*輸入緩沖區(qū)*/
char?wordBuffer[1000]?=?““;?/*單詞緩沖區(qū)*/
int?inputBufferIndex;???????/*輸入緩沖區(qū)下標(biāo)*/
int?wordBufferIndex;????????/*單詞緩沖區(qū)下標(biāo)*/
char?ch;????????????????????/*當(dāng)前讀入字符*/
char?*rwtab[]?=?{“begin“?“void“?“int“?“char“?“main“?“if“?“scanf“?“printf“?“while“?“for“?“return“?“end“?_KEY_WORD_END};
????????????????????????????/*關(guān)鍵字?jǐn)?shù)組*/
WORD*?scaner();?????????????/*聲明詞法分析函數(shù),獲得一個單詞*/
char?getChar();?????????????/*聲明字符讀取函數(shù),從輸入緩沖區(qū)讀取一個字符*/
void?removeBlankSymbol();???/*聲明去掉空格和\t函數(shù)*/
void?concatWord();??????????/*聲明拼接單詞函數(shù)*/
int?isLetter();?????????????/*聲明判斷是否字母函數(shù)*/
int?isDigit();??????????????/*聲明判斷是否數(shù)字函數(shù)*/
int?retriveKeyword();???????/*聲明檢索關(guān)鍵字?jǐn)?shù)組函數(shù),在字符數(shù)組rwtab中檢索*/
void?retractChar();?????????/*聲明回退字符函數(shù),回退一個字符*/
char*?digitToBinary();??????/*聲明將十進(jìn)制轉(zhuǎn)換成二進(jìn)制函數(shù)*/
char*?changeWordFormation();/*聲明更改單詞的輸出形式函數(shù)*/

/*語法分析部分*/
void?lrparser();????????????/*聲明語法分析函數(shù)*/
void?statementString();?????/*聲明語句串分析函數(shù)*/
void?statement();???????????/*聲明語句分析函數(shù)*/
void?expression();??????????/*聲明(等號右邊的)表達(dá)式分析函數(shù)*/
void?term();????????????????/*聲明項(xiàng)分析函數(shù)*/
void?factor();??????????????/*聲明因子分析函數(shù)*/

void?isLexicalError();??????/*聲明檢測詞法錯誤函數(shù)*/
bool?isLineBreak();?????????/*聲明檢測換行符函數(shù)*/

WORD?*oneWord?=?new?WORD;????/*存放一個單詞*/
int?rowNumber?=?1;???????????/*記錄當(dāng)前行數(shù)*/
bool?lexicalError?=?false;???/*檢測是否有詞法錯誤*/
bool?syntacticError?=?false;?/*檢測是否有語法錯誤*/

int?main()
{
????freopen(“input.txt““r“stdin);
????freopen(“output.txt““w“stdout);

inputBufferIndex?=?0;?????????????????????//?初始化輸入緩沖區(qū)下標(biāo)

scanf(“%[^#]s“?inputBuffer);?????????????//?讀入源程序字符串到緩沖區(qū),以#結(jié)束,允許多行輸入,#會讀成‘\0‘
printf(“Your?words(must?start?with?‘begin‘?and?end?with?‘end‘):\n\n“);
printf(“---------------------------------\n“);
????printf(“%s\n“?inputBuffer);
????printf(“---------------------------------\n\n“);
????printf(“The?result?of?syntactic?analysis:\n\n“);

????oneWord?=?scaner();?//?獲得一個新單詞
????lrparser();

if(lexicalError?==?true?&&?syntacticError?==?true)
{
????printf(“\nPlease?correct?the?above?lexical?errors?and?syntactic?errors?for?syntactic?analysis!\n“);
}
else
{
????????if(lexicalError?==?true)
????????{
????????????printf(“\nPlease?correct?the?above?lexical?errors?for?syntactic?analysis!\n“);
????????}
????????else?if(syntacticError?==?true)
????????{
????????????printf(“\nPlease?correct?the?above?syntactic?errors?for?syntactic?analysis!\n“);
????????}
}
return?0;
}

/*語法分析部分*/

/*語法分析函數(shù)*/
void?lrparser()
{
????while(isLineBreak());?//?判斷是否存在換行
????if(oneWord?->?categoryCode?!=?1)?//?‘begin‘的種別碼
????{
????

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????????79??2020-06-23?22:29??編譯原理實(shí)踐:C++實(shí)現(xiàn)語法分析器\input.txt

?????文件??????28089??2019-11-23?01:49??編譯原理實(shí)踐:C++實(shí)現(xiàn)語法分析器\syntacticParser.cpp

?????文件?????949095??2019-11-23?01:40??編譯原理實(shí)踐:C++實(shí)現(xiàn)語法分析器\syntacticParser.exe

?????文件????????548??2019-11-23?01:48??編譯原理實(shí)踐:C++實(shí)現(xiàn)語法分析器\程序運(yùn)行說明文檔.txt

?????目錄??????????0??2020-06-23?22:29??編譯原理實(shí)踐:C++實(shí)現(xiàn)語法分析器

-----------?---------??----------?-----??----

???????????????977811????????????????????5


評論

共有 條評論