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

資源簡介

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

資源截圖

代碼片段和文件信息

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

//*********************詞法分析器******************************//
char?SEPARATER[2]?=?{?‘(‘?‘)‘?};????//分隔符
char?OPERATOR[5]?=?{?‘+‘?‘-‘?‘*‘?‘/‘?‘=‘?};?????//運算符
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;
}

/**判斷是否為運算符**/
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來實現(xiàn)運算符對應(yīng)其優(yōu)先級
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))//判斷該元素是否為運算符
{
if?(*it?==?‘)‘)//若為’)‘,把棧中的運算符依次加入后綴表達式,直到出現(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ōu)先級大于等于棧頂?shù)倪\算符的優(yōu)先級,直接入棧
{
stk.push(*it);
}
else?if?(op[*it]?<=?op[stk.top()])//?入棧的運算符優(yōu)先級小于等于棧頂?shù)倪\算符的優(yōu)先級,棧頂運算符出棧,再次比較,直到出現(xiàn)優(yōu)先級低的運算符,或者棧為空,退出
{
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+

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

?????文件???????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


評論

共有 條評論