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

  • 大小: 489KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-13
  • 語言: 其他
  • 標簽: 編譯原理??pl0擴展??

資源簡介

擴展了一些功能,++,--,*=,/=,取反,取余,一維數(shù)組,for循環(huán),while循環(huán),write包含換行,可以輸出文本等功能,里面有具體的測試例子

資源截圖

代碼片段和文件信息


/*帶詳細注釋的C語言版本PL/0編譯程序
*編譯和運行環(huán)境:
*1Visual?C++6.0VisualC++.NET?and?Visual?C++.NET?2003
*WinNT?Win2000?WinXP?and??Win2003?
*2?gcc?version?3.3.2??20031022(Red?Hat?Linux?3.3.2-1)
*Redhat?Fedora?core?1
*Intel?32?platform
*使用方法:
*運行后輸入PL/0?源程序文件名
*回答是否輸出虛擬機代碼
*回答是否輸出名字表
*fa.tmp?輸出虛擬機代碼
*fa1.tmp??輸出源文件及其各行對應(yīng)的首地址
*fa2.tmp??輸出結(jié)果?
*fas.tmp??輸出名字表
*/
#include
#include“pl0.h“
#include“string.h“
/*解釋執(zhí)行時使用的棧*/
#define?stacksize?500
char?WORDS[200][20];???//用于記錄文本最多200條
int?W=0;??????????????????//用來記錄文本的個數(shù)
int?CXb=300;????????????????????//用來break跳轉(zhuǎn)
int?CXc=400;????????????????????//用來continue跳轉(zhuǎn)
int?I=1000;??????????????????????????//a:=++b;??用來保存a在字母表的位置
int?Ia=1000;?????????????????????????//同上,用來臨時保存
int?main()
{
bool?nxtlev[symnum];
printf(“Input?pl/0?file??“);
scanf(“%s“fname);???????????????????????????????/*輸入文件名*/
fin=fopen(fname“r“);
if(fin)
{
printf(“List?object?code??(Y/N)“);????????????????/*是否輸出虛擬機代碼*/
scanf(“%s“fname);
listswitch=(fname[0]==‘y‘||fname[0]==‘Y‘);
printf(“List?symbol?table???(Y/N)“);??????????????/*是否輸出名字表*/
scanf(“%s“fname);
tableswitch=(fname[0]==‘y‘||fname[0]==‘Y‘);
fa1=fopen(“fa1.tmp““w“);
fprintf(fa1“Iput?pl/0?file??“);
fprintf(fa1“%s\n“?fname);
init();??????????????????????????????????????/*初始化*/
err=0;
cc=cx=ll=0;
ch=‘?‘;
if(-1!=getsym())
{
fa=fopen(“fa.tmp““w“);
fas=fopen(“fas.tmp““w“);
addset(nxtlevdeclbegsysstatbegsyssymnum);
nxtlev[period]=true;????
if(-1==block(00nxtlev)) /*調(diào)用編譯程序*/
{
fclose(fa);
fclose(fa1);
fclose(fas);
fclose(fin);
printf(“\n“);
return?0;
}
fclose(fa);
fclose(fa1);
fclose(fas);
if(sym!=period)
{
error(9);
}
if(err==0)
{
fa2=fopen(“fa2.tmp“?“w“);
interpret();
fclose(fa2);
}
else
{
printf(“Errors?in?pl/0?program“);
}
}
fclose(fin);
}
else
{
printf(“Can‘t?open?file!?\n“);
}
printf(“\n“);
//printf(“%s“WORDS);
return?0;
}
/*
*初始化
*/
void?init()
{
int?i;
for(i=0;i<=255;i++)
{
ssym[i]=nul;
}
ssym[‘+‘]=plus;
ssym[‘-‘]=minus;
ssym[‘*‘]=times;
ssym[‘/‘]=slash;
ssym[‘(‘]=lparen;
ssym[‘)‘]=rparen;
ssym[‘=‘]=eql;
ssym[‘‘]=comma;
ssym[‘.‘]=period;
ssym[‘#‘]=neq;
ssym[‘;‘]=semicolon;
ssym[‘%‘]=percent;????/////////////????取余
ssym[‘~‘]=not;????????/////////////????取反
ssym[‘“‘]=words;??????/////////////????文本
/*設(shè)置保留字名字按照字母順序便于折半查找*/
strcpy(&(word[0][0])“begin“);
strcpy(&(word[1][0])“break“);
strcpy(&(word[2][0])“call“);
strcpy(&(word[3][0])“const“);
strcpy(&(word[4][0])“continue“);
strcpy(&(word[5][0])“do“);
strcpy(&(word[6][0])“else“);???//增加else
strcpy(&(word[7][0])“end“);
strcpy(&(word[8][0])“for“);????//增加for
strcpy(&(word[9][0])“if“);
strcpy(&(word[10][0])“odd“);
strcpy(&(word[11][0])“procedure“);
strcpy(&(word[12][0])“read“);
strcpy(&(word[13][0])“sqrt“);

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-11?00:05??pl0\
?????目錄???????????0??2019-01-10?11:41??pl0\Debug\
?????文件??????????66??2014-01-03?09:10??pl0\Debug\fa.tmp
?????文件?????????130??2014-01-03?09:10??pl0\Debug\fa1.tmp
?????文件??????????91??2014-01-03?09:10??pl0\Debug\fas.tmp
?????文件??????217165??2019-01-10?11:10??pl0\Debug\pl0.exe
?????文件??????865788??2019-01-10?11:10??pl0\Debug\pl0.ilk
?????文件???????76478??2019-01-10?11:10??pl0\Debug\pl0.obj
?????文件??????230184??2019-01-10?11:10??pl0\Debug\pl0.pch
?????文件??????558080??2019-01-10?11:10??pl0\Debug\pl0.pdb
?????文件??????164864??2019-01-10?11:11??pl0\Debug\vc60.idb
?????文件???????86016??2019-01-10?11:10??pl0\Debug\vc60.pdb
?????文件???????????0??2019-01-10?11:11??pl0\fa.tmp
?????文件?????????410??2019-01-10?11:11??pl0\fa1.tmp
?????文件??????????21??2019-01-10?11:11??pl0\fa2.tmp
?????文件???????????0??2019-01-10?11:11??pl0\fas.tmp
?????文件???????61719??2019-01-10?11:10??pl0\pl0.cpp
?????文件????????3365??2019-01-10?11:10??pl0\pl0.dsp
?????文件?????????531??2019-01-10?11:41??pl0\pl0.dsw
?????文件????????4959??2019-01-09?22:30??pl0\pl0.h
?????文件???????17920??2019-01-09?22:18??pl0\pl0.h.doc
?????文件???????66560??2019-01-10?11:41??pl0\pl0.ncb
?????文件???????48640??2019-01-10?11:41??pl0\pl0.opt
?????文件?????????731??2019-01-10?11:10??pl0\pl0.plg
?????文件?????????529??2007-11-23?15:47??pl0\pl0.txt
?????文件???????29713??2018-11-24?15:03??pl0\pl0源程序.docx
?????文件?????????516??2007-11-26?12:40??pl0\Test.cpp
?????文件?????????237??2007-09-28?14:04??pl0\test.txt
?????文件?????????759??2019-01-09?22:30??pl0\test0.txt
?????文件?????????180??2019-01-08?21:16??pl0\test1.txt
?????文件?????????178??2019-01-10?23:07??pl0\testchengdeng.txt
............此處省略14個文件信息

評論

共有 條評論