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

  • 大小: 35.19MB
    文件類型: .zip
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2023-06-14
  • 語言: 其他
  • 標(biāo)簽: 編譯原理??

資源簡介

西安電子科技大學(xué)編譯原理大作業(yè),為簡單的函數(shù)繪圖語言編寫一個(gè)解釋器。該解釋器接受用繪圖語言編寫的源程序,經(jīng)過語法和語義分析后,直接將源程序所規(guī)定的圖形顯示在顯示屏(或顯示窗口)中。作業(yè)的目的是:通過自己動(dòng)手編寫解釋器,掌握語言翻譯,特別是語言識(shí)別的基本方法。

資源截圖

代碼片段和文件信息

//?-----------------------------?grammer.cpp?---------------------------------
//?語法分析器類的定義

#include?“grammer.h“

//?------------------------?通過詞法分析器接口get_token獲取一個(gè)記號(hào)-------
void?grammer_class::fetch_token()
{
token?=?lexical.get_token?()?;
if?(token.type?==?ERRTOKEN) syntax_error(1);
}

//?------------------------?匹配記號(hào)---------------------------
void?grammer_class::match_token?(enum?token_type?the_token)?
{
if?(token.type?!=?the_token)?syntax_error(2);
fetch_token();
}

//?------------------------?語法錯(cuò)誤處理--------------------------
void?grammer_class::syntax_error?(int?case_of)?
{
switch(case_of)
{ case?1: error_msg?(lexical.line_no“?非法記號(hào)?“?token.lexeme)?;
break;
case?2:?error_msg?(lexical.line_no?token.lexeme?“?不是預(yù)期記號(hào)“)?;
break;
}
}

//?------------------------?打印錯(cuò)誤信息---------------
void?grammer_class::error_msg(int?line?char?*descrip?char?*string)
{
cout?< lexical.close_lexical();
exit(1);
}

//?------------------------?先序遍歷并打印表達(dá)式的語法樹----------
void?grammer_class::print_syntax_tree(tree_node_ptr?root?int?indent)
{
int temp;

for?(temp=1;?temp<=indent;?temp++)?
cout?< switch(root->op_code) //?打印根節(jié)點(diǎn)
{ case?PLUS:??????cout?< case?MINUS:?????cout?< case?MUL:???????cout?< case?DIV:???????cout?< case?POWER:?????cout?< case?FUNC:??????cout?<content.tag_func.math_func_ptr?< case?CONST_ID:??cout?<content.tag_const?< case?T:?????????cout?< default:????????cout?< }
if(root->op_code?==?CONST_ID?||?root->op_code?==?T)?
return; //?葉子節(jié)點(diǎn)返回
if(root->op_code?==?FUNC) //?遞歸打印一個(gè)孩子的節(jié)點(diǎn)
print_syntax_tree(root->content.tag_func.childindent+1);
else //?遞歸打印兩個(gè)孩子的節(jié)點(diǎn)
{
print_syntax_tree(root->content.tag_op.left??indent+1);
print_syntax_tree(root->content.tag_op.right?indent+1);
}
}

//?------------------------?繪圖語言解釋器入口(與主程序的外部接口)-----------
void?grammer_class::grammer(char?*?file_name)?
{
enter(“grammer“);
if(!(lexical.init_lexical(file_name))) //?初始化詞法分析器
{
cout?< return;
}
fetch_token(); //?獲取第一個(gè)記號(hào)
program(); //?遞歸下降分析
lexical.close_lexical(); //?關(guān)閉詞法分析器
back(“grammer“);
return;
}

//?------------------------?program?的遞歸子程序---------------------
void?grammer_class::program?()
{
enter(“program“);
while?(token.type?!=?NONTOKEN)
{ statement();
match_token(SEMICO)?;
}
back(“program“);
}

//?------------------------?statement?的遞歸子程序---------------------
void?grammer_class::statement()
{
enter(“statement“);
switch?(token.type)
{ case?ORIGIN?: origin_statement(); break;
case?SCALE??: scale_statement(); break;
case?ROT????: rot_statement(); break;
cas

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2020-05-20?09:57??HW\
?????目錄???????????0??2020-05-20?09:58??HW\HW\
?????目錄???????????0??2020-05-20?09:57??HW\HW\Gramma\
?????目錄???????????0??2020-05-20?09:57??HW\HW\Gramma\Debug\
?????文件??????589884??2019-12-19?09:41??HW\HW\Gramma\Debug\Gramma.exe
?????文件??????833652??2019-12-19?09:41??HW\HW\Gramma\Debug\Gramma.ilk
?????文件?????2042636??2019-12-18?19:35??HW\HW\Gramma\Debug\Gramma.pch
?????文件?????1377280??2019-12-18?19:36??HW\HW\Gramma\Debug\Gramma.pdb
?????文件??????186231??2018-12-07?10:01??HW\HW\Gramma\Debug\grammer.obj
?????文件???????20390??2019-12-19?09:41??HW\HW\Gramma\Debug\grammermain.obj
?????文件???????23657??2018-12-07?10:01??HW\HW\Gramma\Debug\lexical.obj
?????文件??????186026??2018-11-22?22:18??HW\HW\Gramma\Debug\parser.obj
?????文件???????20900??2018-11-29?21:41??HW\HW\Gramma\Debug\parsermain.obj
?????文件???????23579??2018-11-22?22:18??HW\HW\Gramma\Debug\scanner.obj
?????文件??????140288??2019-12-19?09:41??HW\HW\Gramma\Debug\vc60.idb
?????文件??????110592??2019-12-18?19:35??HW\HW\Gramma\Debug\vc60.pdb
?????文件????????4232??2018-12-02?21:55??HW\HW\Gramma\Gramma.dsp
?????文件?????????520??2018-11-22?22:09??HW\HW\Gramma\Gramma.dsw
?????文件???????66560??2019-12-19?09:43??HW\HW\Gramma\Gramma.ncb
?????文件???????49664??2019-12-19?09:43??HW\HW\Gramma\Gramma.opt
?????文件?????????801??2019-12-19?09:41??HW\HW\Gramma\Gramma.plg
?????文件???????10106??2018-12-07?10:01??HW\HW\Gramma\grammer.cpp
?????文件????????2476??2018-12-07?10:01??HW\HW\Gramma\grammer.h
?????文件?????????248??2018-12-07?11:14??HW\HW\Gramma\grammermain.cpp
?????文件????????4358??2018-12-07?10:01??HW\HW\Gramma\lexical.cpp
?????文件????????2571??2018-12-07?10:01??HW\HW\Gramma\lexical.h
?????文件?????????191??2018-11-22?17:20??HW\HW\Gramma\test.txt
?????文件?????????329??2018-11-22?21:58??HW\HW\Gramma\test1.txt
?????文件?????????254??2018-11-29?21:24??HW\HW\Gramma\test2.txt
?????文件?????????162??2018-12-07?09:33??HW\HW\Gramma\test6.txt
?????目錄???????????0??2020-05-20?09:57??HW\HW\Lexical\
............此處省略57個(gè)文件信息

評(píng)論

共有 條評(píng)論