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

  • 大小: 146KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-07-13
  • 語言: 其他
  • 標簽: 編譯原理??

資源簡介

詞法分析是從左向右掃描每行源程序的符號,拼成單詞,換成統一的機內表示形式——TOKEN字,送給語法分析程序。 TOKEN字是一個二元式:(單詞種別碼,自身值)。PL/0語言單詞的種別碼用整數表示,可參考教材或自行設定;單詞自身值按如下規則給出: (1)標識符的自身值是它在符號表的入口地址。 (2)常數的自身值是常數本身(或它的二進制數值)。 (3)關鍵字和界限符的自身值為本身。

資源截圖

代碼片段和文件信息

#define?_CRT_SECURE_NO_WARNINGS
#include???
#include???
#include?

int?count;

int?judge(char?token[10]char?procedure[100])
{
int?ijkind;
char?c;
char?*reserve[8]?=?{?“const““main““if““else““while““int““for““return“?};//保留字

for?(i?=?0;?i? {
token[i]?=?NULL;
}

c?=?procedure[count++];
while?((c?==?‘?‘)?||?(c?==?‘\n‘))//排除空格和換行
{
c?=?procedure[count++];
}

i?=?0;

//字母
if?(((c?<=?‘z‘)?&&?(c?>=?‘a‘))?||?((c?<=?‘Z‘)?&&?(c?>=?‘A‘)))
{
while?(((c?<=?‘z‘)?&&?(c?>=?‘a‘))?||?((c?<=?‘Z‘)?&&?(c?>=?‘A‘))?||?((c?>=?‘0‘)?&&?(c?<=?‘9‘)))//次字符是字母或數字
{
token[i++]?=?c;
c?=?procedure[count++];
}
kind?=?2;
count--;//回退

for?(j?=?0;?j? {
if?(strcmp(token?reserve[j])?==?0)
{
kind?=?1;
break;
}
}
}

//數字
else?if?((c?>=?‘0‘)?&&?(c?<=?‘9‘))
{
while?((c?>=?‘0‘)?&&?(c?<=?‘9‘))
{
token[i++]?=?c;
c?=?procedure[count++];
}
count--;
kind?=?3;

}

//運算符
else?if?((c?==?‘(‘)?||?(c?==?‘)‘)?||?(c?==?‘{‘)?||?(c?==?‘}‘)?||?(c?==?‘;‘)?||?(c?==?‘‘))?
{
token[i++]?=?c;
kind?=?5;
}

//界符、結束標志、錯誤字符
else
{
switch(c)
{
case‘<‘:
token[i++]?=?c;
c?=?procedure[count++];
if?(c?==?‘=‘)
{
token[i++]?=?c;
kind?=?4;
}
else
{
kind?=?4;
count--;
}
break;
case‘>‘:
token[i++]?=?c;
c?=?procedure[count++];
if?(c?==?‘=‘)
{
token[i++]?=?c;
kind?=?4;
}
else
{
kind?=?4;
count--;
}
break;
case‘!‘:
token[i++]?=?c;
c?=?procedure[count++];
if?(c?==?‘=‘)
{
token[i++]?=?c;
kind?=?4;
}
else
{
kind?=?4;
count--;
}
break;
case‘+‘:
token[i++]?=?c;
kind?=?4;
break;
case‘-‘:
token[i++]?=?c;
kind?=?4;
break;
case‘*‘:
token[i++]?=?c;
kind?=?4;
break;
case‘/‘:
token[i++]?=?c;
kind?=?4;
break;
case‘=‘:
token[i++]?=?c;
kind?=?4;
break;
case‘#‘:
kind?=?0;
break;
default:
token[i++]?=?c;
kind?=?-1;
break;
}
}

token[i++]?=?‘\0‘;
return?kind;
}
??

int?main()
{
int?kind;
char?procedure[100]?token[10]?ch?temp=‘Y‘;
printf(“-----------詞法分析器------------\n“);
while?(temp?==?‘y‘||temp?==?‘Y‘)//是否繼續
{
count?=?0;
printf(“\n請輸入一段程序(以“#”結束):\n“);
do?{
scanf(“%c“?&ch);
procedure[count++]?=?ch;
}?while?(ch?!=?‘#‘);

getchar();//回車

count?=?0;
printf(“\n詞法分析結果:\n“);
while?(1)
{
kind?=?judge(token?procedure);?
if?(kind?==?-1)//檢測到錯誤字符
{
printf(“錯誤的字符‘%s‘\n“token);
}
else?if?(kind?==?0)//結束標志
{
break;
}
else//輸出一條正確的分析結果
{
printf(“(?%d,?%-6s)\n“?kind?token);
}
}
printf(“\n是否繼續(Y/N)“);
scanf(“%c“?&temp);
}
system(“pause“);
return?0;
}

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

?????文件???????3066??2017-05-06?08:00??word\word.cpp

?????文件?????155105??2018-04-16?14:08??word\word.docx

?????目錄??????????0??2018-04-16?14:08??word

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

???????????????158171????????????????????3


評論

共有 條評論