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

  • 大小: 34KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-09-05
  • 語言: 其他
  • 標簽:

資源簡介

能讀取詞法分析結果進行語法分析,在語法分析的同時進行語義分析,生成中間代碼;采用LR分析法的實現

資源截圖

代碼片段和文件信息

#include?“string.h“
#include?“stdio.h“
#include?“stdlib.h“
#include?“malloc.h“
#include?“cifafenxi.h“

char?state[20]={0}?; //狀態棧
char?yuyi[10]?=?““; //語義棧
char?fuhao[30]?=?“$“; //符號棧
char?input[80]?=?““; //輸入符號棧

int?nextq=0; //四元式生成變量之序號
char?si_n[10]; //四元式之數字部分
char?si_s[10][5]; //四元式之操作符部分
char?si3[10]; //第三部分
char?si4[10]; //第四部分
//0--->9?文法
const?char?wf1[10][5]={“S““E““E““T““T““F““F““F““F““F“};
const?char?wf2[10][11]={“E““EorT““T““TandF““F““notF““(E)““AropA““iropi““i“};
const?int?wf3[10]={1313123331}; //各條需回退幾步
const?int?wf4[10]={09911111010101010}; //各條在表中對應的坐標

//LR分析表
const?char?lr_f[19][8]={?
000‘S‘0‘S‘0‘S‘
‘a‘0‘S‘00000
‘r‘‘S‘‘r‘000‘r‘0
‘r‘‘r‘‘r‘000‘r‘0
000‘S‘0‘S‘0‘S‘
000‘S‘0‘S‘0‘S‘
0000‘S‘000
00000000
‘r‘‘r‘‘r‘000‘r‘0
‘r‘‘r‘‘r‘0‘S‘0‘r‘0
0000000‘S‘
‘r‘‘r‘‘r‘000‘r‘0
000‘S‘0‘S‘0‘S‘
000‘S‘0‘S‘0‘S‘
‘r‘‘r‘‘r‘000‘r‘0
00‘S‘000‘S‘0
‘r‘‘r‘‘r‘000‘r‘0
‘r‘‘r‘‘r‘000‘r‘0
‘r‘‘S‘‘r‘000‘r‘0} ; //主要動作第一部分(‘S‘?or?‘r‘?or?‘a‘(acc))

const?int?lr_s[19][12]={
000405096132
0012000000000
2132000200000
444000400000
0004050960140
0004050961532
000070000000
000000008000
777000700000
9990100900000
0000000110000
888000800000
0004050960318
0004050960170
555000500000
00120001600000
666000600000
333000300000
1121000100000} ; //主要部分第二部分(數字)
/*定義必須在程序之前?。。。?/
int?pi=0ps=0py=0pf=0;

void?main()
{
int?t1=0t2=0; //臨時變量
char?ts[10]={0}; //臨時字符串變量
int?bz=1; //步驟
int?flag=1; //是否讀取下一個字符:1讀取,0不讀取

/*輸入待分析字符串*/
????p=0;
????printf(“\n?Please?input?string?with?the?end?of?‘$‘:\n“);
????do
????{
???? ch=getchar();
???? prog[p]=ch;
???? p++;
????}while(ch!=‘$‘);
t1=0;

????p=0;
/*pi輸入符號棧指針,ps狀態,py語義,pf符號*/

strcpy(inputprog); //拷貝一份到input[]中以用作處理

printf(“步驟?狀態棧????????????語義棧????符號棧?????????????輸入符號棧???????主要動作??\n“);
scaner();
while(1)
{

printf(“%-4d“bz++);

t1=0t2=0;
do{
printf(“%d|“state[t1]);
if(state[t1++]>=10)
t2+=3; //t2為狀態棧顯示所占位置的大小
else
t2+=2;
}while(state[t1]!=0);


for(t1=0;t1<20-t2;t1++) //不足則補空格,保證狀態??倿?0大小,方便對齊
printf(“?“);


for(t1=1;t1<=py;t1++) //打印語義棧
printf(“_%d“yuyi[t1]);

for(t1=0;t1<8-py*2;t1++)
printf(“?“);

printf(“?%-13s\t%-13s\t%c%d\n“fuhaoinputlr_f[state[ps]][syn]lr_s[state[ps]][syn]);
//syn是

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

?????文件???????3229??2008-01-19?16:56??編譯原理\cifafenxi.h

?????文件???????5291??2008-01-19?11:28??編譯原理\main.c

?????文件?????184406??2008-01-19?16:56??編譯原理\main.exe

?????目錄??????????0??2010-05-06?11:26??編譯原理

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

???????????????192926????????????????????4


評論

共有 條評論