xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡(jiǎn)介

本資源是PL/0語言的語法分析程序(C語言版),外加輸出語法樹,每行附帶注釋,可讀性強(qiáng),下載下來配合.h文件即可編譯

資源截圖

代碼片段和文件信息

/*
?*?PL/0?complier?program?for?win32?platform?(implemented?in?C)
?*
?*?The?program?has?been?test?on?Visual?C++?6.0?Visual?C++.NET?and
?*?Visual?C++.NET?2003?on?Win98?WinNT?Win2000?WinXP?and?Win2003
?*
?*?使用方法:
?*?運(yùn)行后輸入PL/0源程序文件?
?*/

#include?
#include?
#include?“pl0.h“
#include?“string.h“

//?分割符,0表示0個(gè)‘--‘,1表示1個(gè),以此類推
int?Tree_level[500];
//?存單詞
char*?Tree[500];?
//?數(shù)單個(gè)個(gè)數(shù)
int?word_num?=?0;

void?Gen_grammerTree(){
int?i=0;?
printf(“\nGrammer?Tree\n“);
????for(i=0?;?i????????switch?(Tree_level[i])
????{
????case?0:
???? printf(“%s\n“Tree[i]);
????????break;
????case?1:
???? printf(“--%s\n“Tree[i]);
????????break;
????case?2:
????????printf(“----%s\n“Tree[i]);
????????break;
????case?3:
????????printf(“------%s\n“Tree[i]);
????????break;
????case?4:
????????printf(“--------%s\n“Tree[i]);
????????break;
????case?5:
????????printf(“----------%s\n“Tree[i]);
????????break;
????case?6:
????????printf(“------------%s\n“Tree[i]);
????????break;
????case?7:
????????printf(“--------------%s\n“Tree[i]);
????????break;
????case?8:
????????printf(“----------------%s\n“Tree[i]);
????????break;
????case?9:
????????printf(“------------------%s\n“Tree[i]);
????????break;
????case?10:
????????printf(“--------------------%s\n“Tree[i]);
????????break;
????case?11:
????????printf(“----------------------%s\n“Tree[i]);
????????break;
????case?12:
????????printf(“------------------------%s\n“Tree[i]);
????????break;
????case?13:
????????printf(“--------------------------%s\n“Tree[i]);
????????break;
????case?14:
????????printf(“----------------------------%s\n“Tree[i]);
????????break;
????case?15:
????????printf(“------------------------------%s\n“Tree[i]);
????????break;
????case?16:
????????printf(“--------------------------------%s\n“Tree[i]);
????????break;
????default:
???? printf(“越界??!“Tree[i]);
????????break;
????}
????}
}

int?main()
{
????printf(“Input?pl/0?file????“);
????scanf(“%s“?fname);?????/*?輸入文件名?*/

????//?打開一個(gè)文件?返回文件指針:?FILE類型的指針變量?指向該文件
????fin?=?fopen(fname?“r“);

????if?(fin)
????{
????????init();?????/*?初始化?*/

????????err?=?0;????//?計(jì)算已發(fā)現(xiàn)的錯(cuò)誤個(gè)數(shù)
????????//?cc、ll:?getch使用的計(jì)數(shù)器?cc表示當(dāng)前字符
????????//?cx虛擬機(jī)代碼指針?取值范圍[0?cxmax-1]
????????cc?=?cx?=?ll?=?0;
????????//?緩沖區(qū)中獲取字符,getch?使用?初始化為一個(gè)空格
????????ch?=?‘?‘;

????????//?首次讀一個(gè)字符?后面的在block里完成?其是遞歸程序
????????if(-1?!=?getsym())
????????{
????????????//?記錄語法樹
????????????int?Grammer_level?=?0;
????????????Tree_level[word_num]?=?Grammer_level;
????????????Tree[word_num]?=?“?<程序>“;
????????????word_num+=1;
????????????//?三個(gè)參數(shù)?1:?當(dāng)前分程序所在層?2:?名字表當(dāng)前尾指針?第三個(gè)就是標(biāo)識(shí)了3種聲明和6種語句的bool數(shù)組
????????????//?第四個(gè)參數(shù),表示語法樹層數(shù)
????????????if(-1?==?block(0?0?Grammer_level+1))???/*?調(diào)用編譯程序?*/
????????????{
????????????????fclose(fin);
??????

評(píng)論

共有 條評(píng)論