導航:首頁 > 源碼編譯 > 編譯原理實驗教程張昱光碟

編譯原理實驗教程張昱光碟

發布時間:2022-05-31 23:25:37

㈠ 考研中科院408計算機學科專業基礎綜合的參考書目是什麼

中科院也是統考408,一樣的。
全國碩士研究生入學統一考試計算機專業課推薦參考書目

一、數據結構

★ 嚴蔚敏、吳偉民編著:《數據結構(c語言版)》,清華大學出版社

★ 嚴蔚敏、吳偉民編著:《數據結構題集(C語言版)》,清華大學出版社

二、計算機組成原理

★唐朔飛編著:《計算機組成原理》,高等教育出版社,1999年版

★唐朔飛編著:《計算機組成原理學習指導與習題解答》,高等教育出版社,2005年9月

★白中英主編:《計算機組成原理》,科學出版社

三、操作系統

★湯小丹、梁紅兵、哲鳳屏、湯子瀛編著:《計算機操作系統(第三版)》,西安電子科技大學出版社 ★梁紅兵、湯小丹編著:《計算機操作系統》學習指導與題解(第二版),西安電子科技大學出版社,2008年9月

四、計算機網路

★謝希仁編著:《計算機網路(第5版)》,電子工業出版社

★高傳善、毛迪林、曹袖主編:《數據通信與計算機網路(第2版)》,高等教育出版社說明:

相關參考輔導書:

★《全國碩士研究生入學統一考試計算機專業基礎綜合考試大綱解析》,高等教育出版社,2008年10月

★鞏微、馮東暉主編:《2009年考研計算機學科專業基礎綜合考試全真模擬試題集》,原子能出版社,2008年10月

★陽光考研命題研究中心編寫:《2009年考研計算機科學專業基礎綜合考試教程》,中國人民大學出版社,2008年11月

編譯原理實驗報告

#include<stdio.h>
void main()
{

int m=0,n=0,n1=0,n2=0,n3=0,zg,fzg,flag;
int bz[7]=;/*狀態改變控制,1 表示可以改變狀態zt值,0 表示不可以*/
int zt[7]=;/*狀態值,2表示未定狀態,1表示 是,0表示 否*/

char temp[100]="\0";/*用於求first集*/
char z[7];/*非總結符*/
char z1[7];/*總結符*/
char z2[7]="\0";/*gs[]文法中出現的標記個數的輔助字元 01234*/
char gs[100]="\0";/*文法,按順序排成字元串*/

printf("請依次輸入非終結符(不超過7個):");
gets(z);
while(z[m]!='\0')

fzg=m;//zg是非終結符個數

while(n<m)
//生成01234輔助字元
printf("您輸入了:");
puts(z);
fflush(stdin);

printf("請依次輸入終結符(不超過7個):");
gets(z1);
while(z1[n1]!='\0')

zg=n1;
printf("您輸入了:");
puts(z1);
fflush(stdin);

printf("按照正確格式輸入所有文法(總長度不超過100格式如下):");
printf("如果文法為(字元'k'表示空):\n");
printf("S-->AB S-->bC A-->k A-->b\n");
printf("輸入:0SAB0SbC1Ak1Ab\n");
printf(" (注:數字01234表示第一二三四個非終結符)\n");

gets(gs);
fflush(stdin);
printf("您輸入了:");
puts(gs);
m=0;
//對於輸入文法字元串的轉換,將每個文法式左部去除
while(gs[m]!='\0')
{
n=m;
if(gs[m]>='0'&&gs[m]<='9')
{
m++;
while(gs[m]!='\0')
{
gs[m]=gs[m+1];
m++;
}
//gs[m-1]='\0';
}
m=++n;
}

m=0;

//puts(gs);

/*情況一,直接判定是 形如: (A-->k) */
while(gs[m]!='\0')
{
if(gs[m]=='k')
{
zt[gs[m-1]-48]=1;
bz[gs[m-1]-48]=0;
}
m++;
}

/*情況二,直接判定--否 形如: (D-->aS ,D-->c) */
for(n=0;n<fzg;n++)
{
if(bz[n]==1)
{
m=0;
n2=0;
while(gs[m]!='\0')
{
if(z2[n]==gs[m])
{
if(gs[m+1]>=z1[0]&&gs[m+1]<=z1[n1-1])
zt[n]=0;
else //gs[m+1] 是非終結符n2做標記
}
//跳出循環,無法解決該情況,推到下面情況三
m++;
}
if(n2!=99) //完成所有掃描,未出現非終結符,得出結論zt[n]=0.bz[n]=0不允許再改變zt[n]
}
}

/*情況三,最終判定*/
do
{
flag=0;
for(n=0;n<fzg;n++)
{
if(bz[n]==1) //未得到判定
{ m=0;
while(gs[m]!='\0')
{
if(gs[m]==z2[n]) //判定gs[m]是輔助字元0123
{
m++;
while(gs[m]>='A'&&gs[m]<='Z')
{

n1=0;
for(n2=0;n2<fzg;n2++) //循環查找是gs[m]哪個非終結符
{
if(gs[m]==z[n2])
{
if(zt[n2]==1) //這個非終結符能推出空
zt[n]=1;
else if(bz[n2]==1) //這個非終結符 現在 不能推出空,但它的狀態可改即它最終結果還未判定

else
//設 m1 做標記供下一if參考
break; //找到gs[m]是哪個非終結符,for循環完成任務,可以結束
}

}
if(n1==99) break;
m++;
}
}
m++;
}
if(zt[n]==1) bz[n]=0;
if(bz[n]==0) flag=1;//對應for下的第一個if(zt[n]==2)
}

}
}while(flag);

printf("結果是:\n");

for(m=0;m<5;m++)
{
switch(zt[m])
{
case 0:printf("%c---否\n",z[m]);break;
case 1:printf("%c---是\n",z[m]);break;
case 2:printf("%c---未定\n",z[m]);break;
}

}
/*
puts(gs);
puts(zt);
puts(z);
puts(z1);
puts(z2);
printf("%d,,,%d",fzg,zg);
*/

//下面求first集
//下面求first集

for(n=0;n<fzg;n++)

m=0;n=0;n1=0;n2=0;
while(gs[n]>='0'&&gs[n]<='9')
{
for(;m<fzg;m++)
{
if(n2!=m)
n1=0; //m=n2用於第二次以後的for循環中還原上次m的值

if(gs[n]==z2[m])
{
while(gs[n+1]>'9')
{
if(n1==0)
//如果是第一個直接保存

//不是第一個,先與字元數組中其它字元比較,沒相同的才保存
else if(gs[n]>='a'&&gs[n]<='z'&&gs[n+1]>='A'&&gs[n+1]<='Z') //gs[n]是終結符 且 gs[n+1]是非終結符
;//什麼也不做,程序繼續n++,掃描下一個gs[n]

else
{
for(n3=0;n3<=n1;n3++)
{
if(temp[m*13+n3]==gs[n+1])
break;
}

if(n3>n1) //for循環結束是因為n3而不是break

}
n++;
}
break; //break位於if(gs[n]==z2[m]),對於gs[n]已找到z2[m]完成任務跳出for循環
}
}
n2=m; //存放該for循環中m的值
n++;
}
//進一步處理集除去非終結符
m=0;n=0;n1=0;n2=0;
for(m=0;m<fzg;m++)
{
if(flag!=m)
n1=0; //m=flag用於第二次以後的for循環中還原上次m的值

while(temp[m*13+n1]!='\0')
{
while(temp[m*13+n1]>='A'&&temp[m*13+n1]<='Z') //搜索非終結符
{
for(n=0;n<fzg;n++) //確定是哪個非終結符
{if(temp[m*13+n1]==z[n])
break;
}
while(temp[m*13+n1]!='\0') //從temp[n*13+n1]開始每個字元依次往前移動一

n1--;
while(temp[n*13+n2]!='\0') //把z[n]對應的first加入temp[m*13+n1]這個first中,每個字元依次加在最後
{
for(n3=0;n3<n1;n3++) //循環判定是否有相同的字元
{
if(temp[m*13+n3]==temp[n*13+n2])
break;
}
if(temp[n*13+n2]=='k'&&zt[m]==0) //那些不能推出 空,但是因為要加入 其他非終結符的first集 而可能含有 空
n2++;
else if(n3>=n1) //for循環結束是因為n3而不是break ,即無相同字元

else n2++;
}

n1=0;
n2=0;
}

n1++;
}
flag=m; //存放該for循環中m的值
}

//非終結符的first集輸出
m=0;n1=0;
for(m=0;m<fzg;m++)
{
n1=0;
printf("非終結符 %c 的first集是: ",z[m]);
while(temp[m*13+n1]!='\0')
{
printf("%c",temp[m*13+n1]);
n1++;
}
printf("\n");
}

}

㈢ 張昱的人物經歷

先後主持了4項和英特爾公司合作的項目和1項中國科學院計算機科學重點實驗室開放課題基金項目;作為技術骨幹參加了4項國家自然科學基金面上項目和1項高等學校博士學科點專項科研基金。
主要研究方向:
程序設計語言理論與實現技術,特別是面向新型系統結構的並行語言設計和編譯、並行程序分析和驗證,即時編譯器輔助的垃圾收集技術
XML數據處理等
近年來完成和正在進行的項目名稱:
新並行編程語言特性與範例的設計與可編程性研究
JIT輔助的垃圾收集
軟體安全性的驗證和編譯
XML流查詢引擎研究
Perl到Java虛擬機的移植
面向開放式運行平台的類型化低級語言
程序分析技術研究
「本地電話網網管與集中監控系統」和「電信動力及環境集中監控系統」
2006年 青年教師優秀教學津貼
2005年《編譯原理課程系列教材建設》安徽省教學成果三等獎
2001年 王寬誠育才獎
教材及教研論文:
陳意雲,張昱,《編譯原理》,普通高等教育「十五」國家級規劃教材,高等教育出版社,2003年。ISBN:7-04-013367-9
陳意雲,張昱,《編譯原理習題精選與解析》,高等教育出版社,2005年。ISBN:7-04-017812-5
張昱、陳意雲、鄭啟龍,編譯原理課程的教學方法和教材建設,中國大學教學,pages 61-62, 2005.7.
陳意雲、張昱、鄭啟龍,《編譯原理》的教學與實際相結合的探討,教育與現代化,77(4), pages 32~36,2005.
論文:
吳曉勇、張昱、孫東海,帶Order子句的XQuery在XML流上的查詢,小型微型計算機系統,已錄用.
曹益華、張昱,DTD可選的XML訪問控制研究,小型微型計算機系統,已錄用.
孫東海、張昱、吳曉勇,XML流上的XQuery前綴共享查詢,計算機科學,已錄用.
吳曉勇、張昱、孫東海,XQuery在XML流上查詢的結構化連接實現,計算機工程,已錄用.
張昱、劉玉宇,一種Java位元組碼優化框架,計算機工程,已錄用.
張昱,一種構建Java語言擴展的編譯器框架,計算機工程,已錄用.
Ming Fu, Yu Zhang. Homomorphism Resolving of XPath Trees Based on Automata. To appear in APWeb/WAIM 2007, June 2007.
張昱、吳年,一種逐層提升緩沖的XML流查詢自動機,小型微型計算機系統,28(3),2007.3.
Xiong Fu, Yu Zhang, and Yiyun Chen. Data-Layout Optimization Using Reuse Distance Distribution. In Proceedings of the 1st International Workshop on Embedded Software Optimization (ESO 2006) EUC Workshops 2006, LNCS 4097, pages 858-867, 2006.
付雄、張昱、陳意雲,基於復用距離的cache失效率分析,小型微型計算機系統,27(9), pages 1777-1781,2006.9.
張昱、吳年,XSIEQ-一種立即計算的XML流查詢系統,小型微型計算機系統,27(8), pages 1514-1518,2006.8.
張磊、張昱、陳意雲,Perl擴展到JVM的移植,計算機工程,32(3), pages 94~96,2006.2.
張昱、張磊,LALR(1)解析器的再工程:剖析YACC和CUP,計算機工程,31(15), pages 50-52,2005.8.
張昱、李凡,用Xerces-J進行基於XML Schema的XML局部驗證,小型微型計算機系統,26(8), pages 1369-1373,2005.8.
徐麗、張昱、陳意雲,Perl後端到JVM的移植,計算機工程,31(8), pages 82-83,2005.4.
張昱,付雄,含XPath的表達式的解析與應用,小型微型計算機系統,2004,25(3):442-446。
張昱,XForms--下一代的Web窗體,小型微型計算機系統,2003,24(9):1658-1664。
於海亮,張昱,陳意雲,Teleform--一種基於XML的Web界面描述模型,小型微型計算機系統,2003,24(12):2111-2117。
張昱,林志勇,陳意雲,分布式多媒體系統中的媒體同步,小型微型計算機系統,2003,24(3):444-447。
周達仁,張昱,於海亮,陳意雲,三層結構WEB界面模型的綁定機制,小型微型計算機系統,2002,23(5):536-539。
張昱,任才俊,鄭連城,基於規則描述的分布式電信業務工單處理系統,小型微型計算機系統,2001,22(8):1007-1010。
林志勇,張昱,陳意雲,DirectShow在MPEG-1流式播放器中的應用,計算機工程,2001,27(6):140-142。

㈣ 求高等教育出版社的編譯原理(陳意雲 張昱)的課後習題4.4的答案

編譯原理(第2版)陳意雲+張昱編著課後答案
網路文庫這里有
你搜一下
在62頁
很高興為你解答,不懂請追問!滿意請採納,謝謝!O(∩_∩)O~

㈤ 編譯原理實驗FOR循環語句的翻譯程序設計(遞歸下降法、輸出三地址表示)編程思想

for(i=0;i<3;i++)
{
.........
}

㈥ 編譯原理 詞法分析程序的設計與實現實驗題

說他像蒼蠅,是罵蒼蠅呢還是罵他呢?

㈦ 編譯原理實驗求助

1)定義
所有token或者叫單詞的有限自動機。
2)將有限自動機用代碼實現。
3)寫分析程序,利用你定義的有限自動機來識別所有的「單詞」。並將識別出來的單詞的相關信息,如名稱,位置,類別等記錄在相關的數據結構中。

㈧ yyin=fopen("E:\\學習\編譯原理\實驗一\help.txt","r");提示:unrecognized character escape sequence

後面的也應該是\\

㈨ 編譯原理語法分析實驗問題

錯誤1:在3.txt中,第二個表達式x:=2*3,在編譯器裡面沒有對*符號進行解釋,這個應補充,或者改掉*為+。
錯誤2:代碼中出現3次類似syn==15||16的代碼,我理解應該是(syn==15)||(syn==16)
改掉這兩點後代碼可以正常運行。
建議:寫代碼是一項工作,更是一個創作過程,建議你按照代碼寫作規范來寫,這樣的代碼清晰易讀,易於交流和糾錯。

閱讀全文

與編譯原理實驗教程張昱光碟相關的資料

熱點內容
程序員那麼可愛小說結局 瀏覽:862
zenity命令 瀏覽:564
監禁風暴哪個app有 瀏覽:865
程序員的愛心是什麼 瀏覽:591
java中對字元串排序 瀏覽:290
單片機用數模轉換生成三角波 瀏覽:634
外網怎麼登陸伺服器地址 瀏覽:133
什麼人要懂編譯原理 瀏覽:150
源碼改單 瀏覽:712
pdfzip 瀏覽:875
壓縮空氣25兆帕會變成液體嗎 瀏覽:50
linux測試伺服器性能 瀏覽:950
dlp硬碟加密 瀏覽:361
應用加密裡面打不開 瀏覽:857
基於單片機的超聲波測距儀的設計 瀏覽:741
xp自動備份指定文件夾 瀏覽:663
我的世界伺服器如何讓世界平坦 瀏覽:170
伺服器和電腦如何共享 瀏覽:689
程序員早期症狀 瀏覽:573
學小學生編程哪裡學 瀏覽:951