xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡(jiǎn)介

詳細(xì)內(nèi)容:https://blog.csdn.net/weixin_39644536/article/details/101054795 簡(jiǎn)單計(jì)算器的編譯器的設(shè)計(jì)與實(shí)現(xiàn),利用 LR 分析法編制、調(diào)試其語法分析程序,生成的中間代碼為后綴表達(dá)式, 通過語法制導(dǎo)定義和后綴表達(dá)式進(jìn)行計(jì)算。編制好分析程序后計(jì)若干用例,上機(jī) 測(cè)試并通過所設(shè)計(jì)的分析程序。 算術(shù)表達(dá)式的 LR 分析分為擴(kuò)展文法,構(gòu)造識(shí)別活動(dòng)前綴的 DFA 圖,判斷 是否有沖突,若有沖突,則消除沖突和構(gòu)造 LR 分析表等步驟。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include?
#include?
#include?
using?namespace?std;

//*********************詞法分析器******************************//
char?SEPARATER[2]?=?{?‘(‘?‘)‘?};????//分隔符
char?OPERATOR[5]?=?{?‘+‘?‘-‘?‘*‘?‘/‘?‘=‘?};?????//運(yùn)算符
char?FILTER[4]?=?{?‘?‘?‘\t‘?‘\r‘?‘\n‘?};????????????????????//過濾符

/**判斷是否為分隔符**/
bool?IsSeparater(char?ch){
for?(int?i?=?0;?i<2;?i++){
if?(SEPARATER[i]?==?ch){
return?true;
}
}
return?false;
}

/**判斷是否為運(yùn)算符**/
bool?IsOperator(char?ch){
for?(int?i?=?0;?i<5;?i++){
if?(OPERATOR[i]?==?ch){
return?true;
}
}
return?false;
}
/**判斷是否為過濾符**/
bool?IsFilter(char?ch){
for?(int?i?=?0;?i<4;?i++){
if?(FILTER[i]?==?ch){
return?true;
}
}
return?false;
}
/**判斷是否為數(shù)字**/
bool?IsDigit(char?ch){
if?(ch?>=?‘0‘?&&?ch?<=?‘9‘)?return?true;
return?false;
}

/**詞法分析**/
vector?analyse(string?expression){
vector?vec;
char?ch?=?‘?‘;
for?(int?i?=?0;?i?pression.length();?i++)
{
string?arr?=?““;
ch?=?expression[i];
if?(IsFilter(ch)){}??????????????//判斷是否為過濾符
else?if?(IsDigit(ch)){???????????//判斷是否為數(shù)字
while?(IsDigit(ch)?||?IsFilter(ch)){
if?(IsDigit(ch))
arr?+=?ch;
i++;
ch?=?expression[i];
}
i--;
//printf(“%3d????“?CONSTANT);
cout?<“< vec.push_back(arr);
}
else?if?(IsOperator(ch))
{
arr?+=?ch;
//printf(“%3d????“?value(OPERATOR?8?*arr.data()));
cout?<“?< vec.push_back(arr);
}
else?if?(IsSeparater(ch))
{
arr?+=?ch;
//printf(“%3d????“?value(SEPARATER?8?*arr.data()));
cout?<“?< vec.push_back(arr);
}
else
{
cout?< vec.clear();
return?vec;
}
}
return?vec;
}
//*********************中間代碼生成器******************************//
string?InversePolish(string?s_mid)
{
string?s_beh?=?““;
stack?stk;

map?op;//利用map來實(shí)現(xiàn)運(yùn)算符對(duì)應(yīng)其優(yōu)先級(jí)
op[‘(‘]?=?0;
op[‘)‘]?=?0;
op[‘+‘]?=?1;
op[‘-‘]?=?1;
op[‘*‘]?=?2;
op[‘/‘]?=?2;
string::iterator?it?=?s_mid.begin();;
while?(it?!=?s_mid.end())
{
if?(op.count(*it))//判斷該元素是否為運(yùn)算符
{
if?(*it?==?‘)‘)//若為’)‘,把棧中的運(yùn)算符依次加入后綴表達(dá)式,直到出現(xiàn)‘(‘,’(‘出棧,退出該次循環(huán)
{
while?(stk.top()?!=?‘(‘)
{
s_beh?+=?stk.top();
s_beh?+=?“?“;
stk.pop();
}
stk.pop();
}
else?if?(stk.empty()?||?*it?==?‘(‘?||?op[*it]>op[stk.top()])//若為‘(’,入棧?;?要入棧的運(yùn)算符優(yōu)先級(jí)大于等于棧頂?shù)倪\(yùn)算符的優(yōu)先級(jí),直接入棧
{
stk.push(*it);
}
else?if?(op[*it]?<=?op[stk.top()])//?入棧的運(yùn)算符優(yōu)先級(jí)小于等于棧頂?shù)倪\(yùn)算符的優(yōu)先級(jí),棧頂運(yùn)算符出棧,再次比較,直到出現(xiàn)優(yōu)先級(jí)低的運(yùn)算符,或者棧為空,退出
{
while?(op[*it]?<=?op[stk.top()]?&&?(!stk.empty()))
{
s_beh?+=?stk.top();
s_beh?+=?“?“;
stk.pop();
if?(stk.empty())?break;
}
stk.push(*it);
}
}
else
{
s_beh?+=?*it;
it+

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????4086??2019-06-17?19:08??Calculator(終)\Calculator\Calculator\Calculator.vcxproj

?????文件????????944??2019-06-17?19:08??Calculator(終)\Calculator\Calculator\Calculator.vcxproj.filters

?????文件???????1834??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.log

?????文件????????199??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.tlog\Calculator.lastbuildstate

?????文件???????2774??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.tlog\cl.command.1.tlog

?????文件??????24380??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.tlog\CL.read.1.tlog

?????文件???????1078??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.tlog\CL.write.1.tlog

?????文件???????5018??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.tlog\link.command.1.tlog

?????文件???????4674??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.tlog\link.read.1.tlog

?????文件???????1046??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.tlog\link.write.1.tlog

?????文件?????429056??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\vc120.idb

?????文件?????561152??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\vc120.pdb

?????文件?????966314??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\源.obj

?????文件??????15266??2019-06-20?09:50??Calculator(終)\Calculator\Calculator\源.cpp

?????文件????8323072??2019-06-20?09:50??Calculator(終)\Calculator\Calculator.sdf

?????文件????????976??2019-06-17?18:45??Calculator(終)\Calculator\Calculator.sln

????..A..H.?????28160??2019-06-20?09:50??Calculator(終)\Calculator\Calculator.v12.suo

?????文件?????218624??2019-06-20?09:49??Calculator(終)\Calculator\Debug\Calculator.exe

?????文件????1910424??2019-06-20?09:49??Calculator(終)\Calculator\Debug\Calculator.ilk

?????文件????3174400??2019-06-20?09:49??Calculator(終)\Calculator\Debug\Calculator.pdb

?????目錄??????????0??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug\Calculator.tlog

?????目錄??????????0??2019-06-20?09:49??Calculator(終)\Calculator\Calculator\Debug

?????目錄??????????0??2019-06-20?09:50??Calculator(終)\Calculator\Calculator

?????目錄??????????0??2019-06-19?17:38??Calculator(終)\Calculator\Debug

?????目錄??????????0??2019-06-20?09:50??Calculator(終)\Calculator

?????目錄??????????0??2019-06-18?20:47??Calculator(終)

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

?????????????15673477????????????????????26


評(píng)論

共有 條評(píng)論

相關(guān)資源