導航:首頁 > 源碼編譯 > 編譯原理課程設計布爾表達式

編譯原理課程設計布爾表達式

發布時間:2022-06-18 05:15:58

1. 編譯原理課程設計-詞法分析器設計(C語言)

#include"stdio.h"/*定義I/O庫所用的某些宏和變數*/

#include"string.h"/*定義字元串庫函數*/

#include"conio.h"/*提供有關屏幕窗口操作函數*/

#include"ctype.h"/*分類函數*/

charprog[80]={''},

token[8];/*存放構成單詞符號的字元串*/

charch;

intsyn,/*存放單詞字元的種別碼*/

n,

sum,/*存放整數型單詞*/

m,p;/*p是緩沖區prog的指針,m是token的指針*/

char*rwtab[6]={"begin","if","then","while","do","end"};

voidscaner(){

m=0;

sum=0;

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

token[n]='';

ch=prog[p++];

while(ch=='')

ch=prog[p++];

if(isalpha(ch))/*ch為字母字元*/{

while(isalpha(ch)||isdigit(ch))/*ch為字母字元或者數字字元*/{

token[m++]=ch;

ch=prog[p++];}

token[m++]='';

ch=prog[p--];

syn=10;

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

if(strcmp(token,rwtab[n])==0)/*字元串的比較*/{

syn=n+1;

break;}}

else

if(isdigit(ch))/*ch是數字字元*/{

while(isdigit(ch))/*ch是數字字元*/{

sum=sum*10+ch-'0';

ch=prog[p++];}

ch=prog[p--];

syn=11;}

else

switch(ch){

case'<':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='>'){

syn=21;

token[m++]=ch;}

elseif(ch=='='){

syn=22;

token[m++]=ch;}

else{

syn=20;

ch=prog[p--];}

break;

case'>':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='='){

syn=24;

token[m++]=ch;}

else{

syn=23;

ch=prog[p--];}

break;

case':':m=0;token[m++]=ch;ch=prog[p++];

if(ch=='='){

syn=18;

token[m++]=ch;}

else{

syn=17;

ch=prog[p--];}

break;

case'+':syn=13;token[0]=ch;break;

case'-':syn=14;token[0]=ch;break;

case'*':syn=15;token[0]=ch;break;

case'/':syn=16;token[0]=ch;break;

case'=':syn=25;token[0]=ch;break;

case';':syn=26;token[0]=ch;break;

case'(':syn=27;token[0]=ch;break;

case')':syn=28;token[0]=ch;break;

case'#':syn=0;token[0]=ch;break;

default:syn=-1;}}

main()

{

printf(" Thesignificanceofthefigures: "

"1.figures1to6saidKeyword "

"2. "

"3.figures13to28saidOperators ");

p=0;

printf(" pleaseinputstring: ");

do{

ch=getchar();

prog[p++]=ch;

}while(ch!='#');

p=0;

do{

scaner();

switch(syn){

case11:printf("(%d,%d) ",syn,sum);break;

case-1:printf(" ERROR; ");break;

default:printf("(%d,%s) ",syn,token);

}

}while(syn!=0);

getch();

}

程序測試結果

對源程序beginx:=9:ifx>9thenx:=2*x+1/3;end#的源文件,經過詞法分析後輸出如下圖5-1所示:

具體的你在修改修改吧

2. 編譯原理布爾表達式和LR(1)求助

回填技術是指控制語句中布爾表達式翻譯成四元式序列時,有的轉移地址不能在產生這些四元

3. 編譯原理布爾表達式和LR求助

D是正確的LL的第一個L表示from Left to right,第二個L表示Left most推導LR的第一個L和LL的第一個L含義相同,第二個R表示Right most推導

4. 編譯原理 while 語句文法

while(條件)
{
.......;//語句
X++或者X--;//做自增或自減運算來達到循環的過程
}
while後面跟一堆小括弧,裡面的條件判斷,類似IF語句,當條件滿足時做以下語句的循環,條件不滿足後直接跳出循環;
例題:
int i=0;//初始化i=0
while(i<5)//i=0滿足判斷的條件,進入循環語句
{
i++;//做自增運算,當i+到5時跳出循環,因為i不小於5了
}
printf("%d",i);//此時i的值為5

5. 編譯原理這門課程第六章中間代碼生成的知識點有哪些

編譯原理這門課第六章中間代碼生成的知識點包含章節導引,第一節中間語言,第二節聲明語句,第三節賦值語句,第四節布爾表達式和控制流語句,課後練習,。

6. 有個編譯原理的問題麻煩大家幫忙,多謝多謝~~

B -- T
T and F
(B) and F
(B or T) and F

(T or T) and F

(F or T) and F
(true or T) and F
(true or F) and F

(true or false) and F

(true or false) and not F
(true or false) and not false

7. 用C++實現布爾表達式的真值問題

#include <stdio.h>

#include <string.h>


bool eval(const char*s){ if(!s) return 0;

if(*s==0 || *s==')') return 0;


if(*s=='(') return eval(s+1);


const char*p=s;

char c=*p++; if(c!='T' && c!='F') printf("Invalid expression. "); return 0;

bool v=(c=='T')?1:0;


if(*p=='!') v!=eval(p+1);

else if(*p=='|') v|=eval(p+1);

else if(*p=='&')v&=eval(p+1);

else if(*p!=0 && *p!=')')printf("Invalid expression... ");


return v;

}


int main(){

char*s="(T|T)&F&(F|T)";


printf("eval( %s )=%c Press Enter to quit... ", s, (eval(s)==0)?'F':'T');

getchar();

return 0;

}


8. 跪求!我們的作業。 題目:將布爾表達式轉換成四元式的程序實現

我自到

9. 急急急,編譯原理

using namespace std;

struct BiNode
{
char data;
BiNode *lchild, *rchild;
};
typedef BiNode *BiTree;

int CreateBiTree(BiTree &T, const char *s1, const char *s2, int len)
{
if (len<=0)
{
T = NULL;
return 1;
}
else
{
T = new BiNode;
T->data = *s1;
int i;
for ( i=0; i<len; i++) if (s2[i]==*s1) break;
CreateBiTree(T->lchild, s1+1, s2, i);
CreateBiTree(T->rchild, s1+i+1, s2+i+1, len-(i+1));
}
return 1;
}

int DestroyBiTree(BiTree &T)
{
if (T==NULL) return 1;
DestroyBiTree(T->lchild);
DestroyBiTree(T->rchild);
delete T;
T = NULL;
return 1;
}

int ATraverse(BiTree &T)
{
if (T==NULL) return 1;
ATraverse(T->lchild);
ATraverse(T->rchild);
cout<<T->data;
return 1;
}

main()
{
char a[2000],b[2000];
while(cin>>a>>b)
{
BiTree T;
int count=0;
int n;
for(n=0;a[n]!='\0';n++);
CreateBiTree(T,a,b,n);
ATraverse(T);
cout<<" ";

cout<<endl;
DestroyBiTree(T);

10. 一個編譯原理的課程設計,急急急

回答:alkaid_pku
學長
4月14日 06:31 1. 預處理
2. 編譯
3. 匯編
4. 查找庫函數
5. 連接

閱讀全文

與編譯原理課程設計布爾表達式相關的資料

熱點內容
我的世界無盡貪婪奇點壓縮器 瀏覽:391
源碼資源免費分享網 瀏覽:684
批量qq號有效驗證源碼 瀏覽:511
本科程序員五年工資 瀏覽:899
創維電視櫃怎麼安裝app 瀏覽:850
可愛的程序員陸漓劇照 瀏覽:850
怎樣把截屏壓縮成300kb 瀏覽:224
dart文件加密 瀏覽:39
java對接攝像頭源碼 瀏覽:885
安卓項目開發實例附源碼 瀏覽:728
程序員蘋果全家桶 瀏覽:197
遠程命令阻塞 瀏覽:731
有網頁源碼怎麼查數據 瀏覽:100
win10下make編譯速度過慢 瀏覽:866
微機原理編譯環境 瀏覽:19
怎麼把圖紙轉換成pdf 瀏覽:541
安卓libcurl編譯64 瀏覽:905
手機app怎麼測速 瀏覽:276
中興gpon命令 瀏覽:885
python中取出字典key值 瀏覽:682