亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? subprodure.cpp

?? PL/0語言的詞法分析
?? CPP
字號:

#include "subProdure.h"
#include <strstream>
using namespace std;
void error(char * msg){
	if(0 != curSym.ln) cout<<" 行 "<<curSym.ln<<" ";
	if(0 != curSym.col) cout<<" 列 "<<curSym.col<<" ";
	cout<<msg<<endl;
	exit(1);
}

void getSym(){
	infile>>curSym.type;
	infile.ignore();
	infile>>curSym.id;
	bool getln=false,getcol=false;
	char tmp=infile.get();
	while(tmp!='\n'){
		switch(tmp){
		case 'L':
			if( 'n'==(tmp=infile.get()) ){
				infile>>curSym.ln;
				getln=true;
			}
			break;
		case 'C':
			if( 'o'==(tmp=infile.get()) && 'l'== (tmp=infile.get()) ){
				infile>>curSym.col;
				getcol=true;
			}
			break;
		default:
			tmp=infile.get();
		}
	}
	if(!getln) curSym.ln=0;
	if(!getcol) curSym.col=0;
	//cout<<"Debug in getSym(), line "<<__LINE__<<" "<<curSym.id<<endl;
}


bool sp_program(void){
	getSym();
	sp_subprogram();
	return true;
}

bool sp_subprogram(void){
	int phase = 0;
	while(phase<4){
		switch(curSym.type){
		case SYM_CONST:							//1. const
			getSym();
			if( SYM_IDENTIFIER != curSym.type ){
				error("Const 之后應為 表識符.");
			}
			getSym();
			if( SYM_EQU != curSym.type ){
				error("Const 語句的 表識符 沒有使用 \"=\" 初始化.");
			}
			getSym();
			if( SYM_NUMBER != curSym.type ){
				error("Const 語句的 初始化 數據 缺失.");
			}		
			getSym();
			while( SYM_COMMA == curSym.type ){
				getSym();
				if( SYM_IDENTIFIER != curSym.type ){
					error("Const 語句 表識符缺失.");
				}
				getSym();
				if( SYM_EQU != curSym.type ){
					error("Const 語句的 表識符 沒有使用 \"=\" 初始化.");
				}
				getSym();
				if( SYM_NUMBER != curSym.type ){
					error("Const 語句的 初始化 數據 缺失.");
				}		
				getSym();
			}
			if( SYM_SEMICOLON != curSym.type ){
				error("Const 語句 缺失 \";\".");
			}
			getSym();
			phase=1;
			break;
		case SYM_VAR:							//2. var
			getSym();
			if( SYM_IDENTIFIER != curSym.type ){
				error("Var 語句 表識符缺失.");
			}
			getSym();
			while( SYM_COMMA == curSym.type ){
				getSym();
				if( SYM_IDENTIFIER != curSym.type ){
					error("Var 語句 表識符缺失.");
				}
				getSym();
			}
			if( SYM_SEMICOLON != curSym.type ){
				error("Var 語句 缺失 \";\".");
			}
			getSym();
			phase=2;
			break;
		case SYM_PROCEDURE:						//3. produre
			getSym();
			if( SYM_IDENTIFIER != curSym.type ){
				error("Produre語句首部表識符缺失.");
			}
			getSym();
			if( SYM_SEMICOLON != curSym.type ){
				error("Produre語句首部缺失 \";\".");
			}
			getSym();

			sp_subprogram();
			if( SYM_SEMICOLON != curSym.type ){
				error("Produre語句說明部分缺失 \";\".");
			}
			getSym();
			phase=3;
			break;
		default:								//4. sentence
			sp_sentence();		
			phase=4;
		}
	}
	return true;
}
bool sp_sentence(void){
	switch(curSym.type){
	case SYM_IDENTIFIER:
		getSym();
		if( SYM_BECOMES != curSym.type ){
			error("期望 := 符號.");
		}
		getSym();
		sp_expression();
		break;
	case SYM_CALL:
		getSym();
		if( SYM_IDENTIFIER != curSym.type ){
			error("call 后缺少 標識符.");
		}
		getSym();
		break;
	case SYM_BEGIN:
		getSym();
		sp_sentence();
		while(SYM_SEMICOLON == curSym.type ){
			getSym();
			sp_sentence();
		}
		if( SYM_END != curSym.type ) error("丟失 end .");
		else{
			getSym();
		}
		break;
	case SYM_IF:
		getSym();
		sp_condition();
		if( SYM_THEN != curSym.type ) error("丟失 then .");
		getSym();
		sp_sentence();
		break;
	case SYM_WHILE:
		getSym();
		sp_condition();
		if( SYM_DO != curSym.type ) error("丟失 do .");

		getSym();
		sp_sentence();
		break;
	case SYM_READ:
		getSym();
		if( SYM_LPAREN != curSym.type ) error("read語句中丟失 \"(\" .");

		getSym();
		if( SYM_IDENTIFIER != curSym.type ) error("read語句中缺少 標識符.");

		getSym();
		while( SYM_COMMA == curSym.type ){
			getSym();
			if( SYM_IDENTIFIER != curSym.type ) error("read語句中缺少 標識符.");

			getSym();
		}
		if( SYM_RPAREN != curSym.type ) error("read語句中丟失 \")\" .");
		break;
	case SYM_WRITE:
		getSym();
		if( SYM_LPAREN != curSym.type ) error("write語句中丟失 \"(\" .");

		getSym();
		if( SYM_IDENTIFIER != curSym.type ) error("write語句中缺少 標識符.");

		getSym();
		while( SYM_COMMA == curSym.type ){
			getSym();
			if( SYM_IDENTIFIER != curSym.type ) error("write語句中缺少 標識符.");

			getSym();
		}
		if( SYM_RPAREN != curSym.type ) error("write語句中丟失 \")\" .");

		break;
	default:
		if( SYM_END == curSym.type ){
			error("End的前有多余的分號。");
		}
		 error("非法的語句 起始.");
	}
	return true;
}

bool sp_condition(void){
	if(SYM_ODD == curSym.type ){
		getSym();
		sp_expression();
	}else{
		sp_expression();
		if(SYM_EQU == curSym.type || SYM_NEQ == curSym.type
			|| SYM_LES == curSym.type || SYM_LEQ == curSym.type
			|| SYM_GTR == curSym.type || SYM_GEQ == curSym.type ){
			getSym();
			sp_expression();
		}else error("條件表達式出錯(無關系云算符).");
	}
	return true;
}

bool sp_expression(void){

	if(SYM_PLUS == curSym.type || SYM_MINUS == curSym.type)	getSym();
		
	sp_term();

	while(SYM_PLUS == curSym.type || SYM_MINUS == curSym.type){
		getSym();
		sp_term();
	}

	return true;
}

bool sp_term(void){

	sp_factor();

	while( /* getSym(), */ SYM_TIMES == curSym.type || SYM_SLASH == curSym.type ){
		getSym();
		sp_factor();
	}
	return true;
}

bool sp_factor(void){
	//getSym();
	if(SYM_LPAREN == curSym.type){
		getSym();

		sp_term();
		
		//getsym();
		if(SYM_RPAREN == curSym.type){
			getSym();
		}else error("因子 缺少一右括號。");
	}else if (SYM_IDENTIFIER == curSym.type || SYM_NUMBER == curSym.type ){
		getSym();
	}else error("不是以合法的因子。");

	return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av免费网站| 欧美tk丨vk视频| 捆绑调教美女网站视频一区| 久久久精品一品道一区| 欧美精品在线观看一区二区| 欧美日韩免费观看一区二区三区 | 一区二区三区在线免费视频| 国产传媒一区在线| 欧美电影一区二区三区| 伊人色综合久久天天| 国产成人精品免费| 日韩视频一区二区三区| 亚洲大片一区二区三区| 欧美日韩视频一区二区| 日韩中文字幕1| 欧美一级黄色录像| 久久精品国产网站| 久久久精品国产免大香伊 | 99v久久综合狠狠综合久久| 26uuu精品一区二区| 国产在线麻豆精品观看| 久久精品亚洲麻豆av一区二区| 国产一区久久久| 国产婷婷色一区二区三区在线| 日韩国产精品91| 久久婷婷色综合| 美女免费视频一区| 日韩欧美黄色影院| 中文字幕av一区二区三区高| 一区二区成人在线| 欧美日韩一区小说| 韩国精品免费视频| 久久99久久99小草精品免视看| 亚洲黄色av一区| 精品美女一区二区| 欧美高清视频在线高清观看mv色露露十八| 丁香另类激情小说| 蜜臀a∨国产成人精品| 亚洲国产欧美一区二区三区丁香婷| 中文乱码免费一区二区| 国产亚洲一区二区三区四区| 99久久夜色精品国产网站| 亚洲欧美激情插| 日韩欧美美女一区二区三区| 日本一区二区高清| 精品污污网站免费看| 午夜视频在线观看一区二区| 日韩欧美国产系列| 色婷婷综合久久久中文一区二区| 午夜久久久影院| 久久精品视频在线免费观看| 国产成人精品影院| 亚洲综合免费观看高清完整版在线| 欧美日韩国产综合一区二区三区| 老司机午夜精品| 亚洲男人的天堂在线aⅴ视频| 欧美猛男gaygay网站| 精品一区二区精品| 欧美精品一区二区久久久| 国产一区二区三区视频在线播放| 中文子幕无线码一区tr| 欧美裸体bbwbbwbbw| aaa国产一区| 国产美女在线精品| 石原莉奈在线亚洲三区| 亚洲国产成人porn| 国产精品久久精品日日| 欧美性视频一区二区三区| 香蕉影视欧美成人| 专区另类欧美日韩| 亚洲制服丝袜av| 国产.欧美.日韩| 麻豆久久一区二区| 亚洲妇熟xx妇色黄| 美女视频黄 久久| 国产一区二区三区在线观看精品| 国产伦精品一区二区三区免费| 亚洲影院免费观看| 欧美综合色免费| 成人动漫在线一区| 丁香天五香天堂综合| 国产剧情av麻豆香蕉精品| 日韩国产欧美在线观看| 奇米777欧美一区二区| 三级成人在线视频| 亚洲香肠在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美日韩在线播| 在线免费视频一区二区| 成人爽a毛片一区二区免费| 国产一区在线视频| 成人激情图片网| 一本大道久久a久久综合| 欧美日韩一区二区三区四区五区| 欧美日韩在线播放| 欧美日韩1区2区| 日韩一区二区在线观看| 国产日韩欧美一区二区三区乱码| 国产丝袜欧美中文另类| 久久精品在线免费观看| 欧美高清在线一区| 亚洲欧美中日韩| 亚洲成av人片在线| 国产一区在线观看视频| 国模娜娜一区二区三区| 91免费国产视频网站| 精品国产一二三区| 夜色激情一区二区| 麻豆久久久久久| 色综合久久综合网97色综合| 日韩三级av在线播放| 成人爱爱电影网址| 麻豆精品新av中文字幕| 欧美电影影音先锋| 日韩一区二区三区视频在线观看| 亚洲另类在线制服丝袜| 激情深爱一区二区| 欧美浪妇xxxx高跟鞋交| 国产精品麻豆一区二区| 视频一区欧美日韩| 日本韩国欧美三级| 国产婷婷一区二区| 国产精品小仙女| 欧美人与z0zoxxxx视频| 国产日产欧产精品推荐色| 亚洲精品国产a久久久久久| 丰满亚洲少妇av| 国产欧美一区二区精品性| 天天av天天翘天天综合网 | 偷偷要91色婷婷| 91黄视频在线观看| 亚洲激情自拍视频| 色婷婷激情一区二区三区| 国产精品嫩草久久久久| 国产成人夜色高潮福利影视| 欧美成人精品3d动漫h| 日韩av电影天堂| 欧美va亚洲va香蕉在线| 狠狠色狠狠色综合系列| 国产亚洲欧美日韩俺去了| 国产乱人伦偷精品视频不卡 | 在线精品视频小说1| 玉足女爽爽91| 粉嫩嫩av羞羞动漫久久久| 久久久久亚洲蜜桃| 精品视频全国免费看| 免费美女久久99| 国产精品福利影院| 91精品国产麻豆| 日韩精品电影在线| 在线91免费看| 精一区二区三区| 一区二区中文视频| 国产视频亚洲色图| 视频一区视频二区中文| 国产精品夜夜爽| 国产成人免费视频网站| 久久久久国产一区二区三区四区| 国产综合一区二区| 久久综合成人精品亚洲另类欧美| 国产精品一区二区你懂的| 久久网站热最新地址| 国产精品系列在线观看| 亚洲人成在线播放网站岛国| 91麻豆精品一区二区三区| 亚洲一区欧美一区| 91行情网站电视在线观看高清版| 日韩有码一区二区三区| 亚洲欧洲国产日韩| 欧美亚洲高清一区二区三区不卡| 蜜桃传媒麻豆第一区在线观看| 国产精品免费视频一区| 欧美丰满一区二区免费视频| 国产精品99久久久久久宅男| 亚洲午夜私人影院| 欧美www视频| 色94色欧美sute亚洲线路二 | 一片黄亚洲嫩模| 国产精品色婷婷| 欧美韩国日本综合| 国产欧美精品国产国产专区| 欧美肥大bbwbbw高潮| 欧美日韩一区精品| 色欧美日韩亚洲| 91久久国产综合久久| 成人免费视频国产在线观看| 9色porny自拍视频一区二区| 91福利在线观看| 日韩精品中文字幕一区| 日本一区二区电影| 亚洲第一电影网| 成人黄色电影在线| 日韩美女主播在线视频一区二区三区| 欧美一区二区三区在线观看视频| 自拍偷在线精品自拍偷无码专区| 亚洲国产另类av| 欧美日韩精品一区二区三区四区| 亚洲激情五月婷婷| 国产精品一区二区三区99| 精品国内二区三区|