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

  • 大小: 11KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-12
  • 語言: C/C++
  • 標簽: pl0擴充??c語言??

資源簡介

c語言實現pl0編譯器的擴充: if 條件 then 語句 else 語句 for 變量=初始值 to 終止值 begin 語句 end dowhile 語句 until 條件

資源截圖

代碼片段和文件信息

/*
?*?PL/0?complier?program?for?win32?platform?(implemented?in?C)
?*
?*?The?program?has?been?test?on?Visual?C++?6.0?Visual?C++.NET?and
?*?Visual?C++.NET?2003?on?Win98?WinNT?Win2000?WinXP?and?Win2003
?*
?*?使用方法:
?*?運行后輸入PL/0源程序文件?
?*?回答是否輸出虛擬機代碼
?*?回答是否輸出名字表
?*?fa.tmp輸出虛擬機代碼
?*?fa1.tmp輸出源文件及其各行對應的首地址
?*?fa2.tmp輸出結?
?*?fas.tmp輸出名字表
?*/

#include?

#include?“pl0.h“
#include?“string.h“

/*?解釋執行時使用的棧?*/
#define?stacksize?500


int?main()
{
bool?nxtlev[symnum];

printf(“Input?pl/0?file????“);
scanf(“%s“?fname);?????/*?輸入文件名?*/

fin?=?fopen(fname?“r“);//char?fname[al];

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“Input?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(nxtlev?declbegsys?statbegsys?symnum);
nxtlev[period]?=?true;

if(-1?==?block(0?0?nxtlev))???/*?調用編譯程序?*/
{
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“);
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;

/*?設置保留字名字按照字母順序,便于折半查找?*/
strcpy(&(word[0][0])?“begin“);
strcpy(&(word[1][0])?“call“);
strcpy(&(word[2][0])?“const“);
strcpy(&(word[3][0])?“do“);
strcpy(&(word[4][0])?“dowhile“);
????strcpy(&(word[5][0])?“else“);//************添加else*****************************************************
strcpy(&(word[6][0])?“end“);
????strcpy(&(word[7][0])?“for“);//*****************for*****
strcpy(&(word[8][0])?“if“);
strcpy(&(word[9][0])?“odd“);
strcpy(&(word[10][0])?“procedure“);
strcpy(&(word[11][0])?“read“);
strcpy(&(word[12][0])?“then“);
strcpy(&(word[13][0])?“to“);//*****************to*****
strcpy(&(word[14][0])?“until“);
strcpy(&(word[15][0])?“var“);
strcpy(&(word[16][0])?“while“);
strcpy(&(word[17][0])?“write“);

/*?設置保留字符號?即begin對應beginsym...*/
wsym[0]?=?beginsym;

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

?????文件??????31525??2009-12-08?01:19??pl0.c

?????文件???????4848??2009-12-07?20:50??pl0.h

?????文件?????????61??2009-12-07?20:35??for.PL0

?????文件?????????89??2009-12-08?00:50??dowhile.PL0

?????文件????????110??2009-12-08?01:18??else.pl0

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

????????????????36633????????????????????5


評論

共有 條評論