1. 編譯原理有用嗎
編譯原理非常有用。
編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。
編譯原理是計算機專業設置的一門重要的專業課程。雖然只有少數人從事編譯方面的工作,但是這門課在理論、技術、方法上都對學生提供了系統而有效的訓練,有利於提高軟體人員的素質和能力。
2. 先消除左遞歸 再用遞歸下降法實現語法分析程序S->if(A){B} , A->Ab|c ,B->i
1. 對語法規則有明確的定義;
2. 編寫的分析程序能夠進行正確的語法分析;
3. *對於遇到的語法錯誤,能夠做出簡單的錯誤處理,給出簡單的錯誤提示,保證順利完成語法分析過程;
4. 實驗報告要求用文法的形式對語法定義做出詳細說明,說明語法分析程序的工作過程,說明錯誤處理的實現*。
3. 200分求清華大學《編譯原理(第二版)》書末的PLO詞法分析C源代碼!
http://download.csdn.net/source/636799
這個網站上有,附帶課程報告,留下郵箱發給你也行.
PL/0 語言編譯程序,由江漢石油學院計算機系周雲才
根據清華大學出版社出版,
* 呂映芝,張素琴,蔣維杜編寫的教材《編譯原理》中第二章(PL/0編譯程序的實現)
* 以及附錄A中的代碼改編而成。
4. 跪求編譯原理課程設計 要求就是:編寫一款語言轉換器,將類Pascal語言源程序轉換為C源程序。
看看樓下怎麼說。
5. 編譯原理用C語言實現基於LR(1)或SLR(1)語法分析程序代碼,最好還有報告,急。。。
這個是精簡的語法分析程序,如果符合的話,hi我
給你實驗報告
#include <stdio.h>
#include<dos.h>
#include<stdlib.h>
#include<string.h>
char a[50] ,b[50];
char ch;
int n1,i1=0,n=5;
int E();int T();int E1();int T1();int F();
void main() /*遞歸分析*/
{
int f,j=0;
printf("請輸入字元串(長度<50,以#號結束)\n");
do{
scanf("%c",&ch);
a[j]=ch;
j++;
}while(ch!='#');
n1=j;
ch=b[0]=a[0];
f=E();
if (f==0) return;
if (ch=='#') printf("accept\n");
else printf("error\n");
}
int E() // E→TE'
{ int f,t;
f=T();
if (f==0) return(0);
t=E1();
if (t==0) return(0);
else return(1);
}
int T() // T→FT'
{ int f,t;
f=F();
if (f==0) return(0);
t=T1();
if (t==0) return(0);
else return(1);
}
int E1()/*E』*/ // E'→+TE'
{ int f;
if(ch=='+') {
b[i1]=ch;
ch=a[++i1];
f=T();
if (f==0) return(0);
E1();
return(1);
}
return(1);
}
int T1()/*T』*/ // T'→*FT'
{
int f,t;
if(ch=='*') {
b[i1]=ch;
ch=a[++i1];
f=F();
if (f==0) return(0);
t=T1();
if (t==0) return(0);
else return(1);}
a[i1]=ch;
return(1);
}
int F() // F→(E)
{ int f;
if(ch=='(') {
b[i1]=ch;
ch=a[++i1];
f=E();
if (f==0) return(0);
if(ch==')') {
b[i1]=ch;
ch=a[++i1];
}
else {
printf("error\n");
return(0);
}
}
else if(ch=='i') {
b[i1]=ch;
ch=a[++i1];
}
else {printf("error\n");return(0);}
return(1);
}