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

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

?? parser.java

?? Expert system to help poker player choose his answer
?? JAVA
字號:
package expertSystem.knowledgeBase;

import java.awt.peer.SystemTrayPeer;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import com.sun.org.apache.regexp.internal.recompile;

import expertSystem.exceptions.RuleAlreadyExistsException;
import expertSystem.exceptions.WrongFileTypeException;
import expertSystem.exceptions.WrongKnowledgBaseSyntaxException;
import expertSystem.presentation.Window;

public class Parser {
	
	public boolean isLoad;

	 List<Fact> tempFactList;
	 List<Rule> tempRuleList;
	 Rule R;
	 Fact F;

	 public Parser(){
			tempFactList = new ArrayList<Fact>();
			tempRuleList = new ArrayList<Rule>();
	 }

	 public String wordTest(String S, int lineNumber)throws WrongKnowledgBaseSyntaxException{
		 	int j = 0;
		 	while(j<=S.length()-1){
		 		if(S.codePointAt(j)==32 || S.codePointAt(j)==58 || S.codePointAt(j)==59)throw new WrongKnowledgBaseSyntaxException(lineNumber);
		 			j++;
		 		}
			return S;
	 }
	 
	 public String questionTest(String S, int lineNumber) throws WrongKnowledgBaseSyntaxException{
			int j = 0;
			
			while(j<=S.length()-1){
				if(S.codePointAt(j)==58 || S.codePointAt(j)==59)throw new WrongKnowledgBaseSyntaxException(lineNumber);
					j++;
			}
			
			return S;
	}
	 
	public String probabilityTest(String S, int lineNumber) throws WrongKnowledgBaseSyntaxException{
			int j = 0;
			int i=S.indexOf('.');
			if(i==-1 || S.indexOf('.', i+1)!=-1)throw new WrongKnowledgBaseSyntaxException(lineNumber);
			while(j<=S.length()-1){
				if(S.codePointAt(j)!=46 && (S.codePointAt(j)<48 || S.codePointAt(j)>57))throw new WrongKnowledgBaseSyntaxException(lineNumber);
				j++;
			}
			return S+":";
	} 
	
	public String atributesManager(String atributes, int lineNumber) throws WrongKnowledgBaseSyntaxException{
			if(atributes.charAt(0)==' ' && atributes.charAt(atributes.length()-1)!=' '){
				atributes=atributes.substring(1, atributes.length());
				String parts[] = atributes.split(" ");
				if((parts.length>3 || parts.length<2) || parts[0].isEmpty() || parts[1].isEmpty())throw new WrongKnowledgBaseSyntaxException(lineNumber);
				if(parts.length==2)return wordTest(parts[0], lineNumber)+":"+wordTest(parts[1], lineNumber)+"::";
				else return wordTest(parts[0], lineNumber)+":"+wordTest(parts[1], lineNumber)+":"+wordTest(parts[2], lineNumber)+":";
			}else throw new WrongKnowledgBaseSyntaxException(lineNumber);
	}
	public String atributesManager2(String atributes, int lineNumber) throws WrongKnowledgBaseSyntaxException{
		if(atributes.charAt(0)==' ' && atributes.charAt(atributes.length()-1)!=' '){
			atributes=atributes.substring(1, atributes.length());
			String parts[] = atributes.split(" ");
			if(parts.length!=3 || parts[0].isEmpty() || parts[1].isEmpty()|| parts[2].isEmpty())throw new WrongKnowledgBaseSyntaxException(lineNumber);
			return wordTest(parts[0], lineNumber)+":"+wordTest(parts[1], lineNumber)+":"+wordTest(parts[2], lineNumber)+":";
		}else throw new WrongKnowledgBaseSyntaxException(lineNumber);
}
	public String questionManager(String question, int lineNumber) throws WrongKnowledgBaseSyntaxException{
			if(question.charAt(0)!=' ' && question.charAt(question.length()-1)!=' '){
				String parts[] = question.split(",");
				if(parts.length<3) throw new WrongKnowledgBaseSyntaxException(lineNumber);
				boolean flag;
				if(parts[0].isEmpty()){
					flag=true;
					for(int i=1;i<parts.length;i++){
						if(!parts[i].isEmpty())flag=false;
					}
					if(!flag)throw new WrongKnowledgBaseSyntaxException(lineNumber);
					return ":";
				}else {
					flag=false;
					for(int i=1;i<parts.length;i++){
						if(parts[i].isEmpty())flag=true;
					}
					if(flag)throw new WrongKnowledgBaseSyntaxException(lineNumber);
					String s="";
					for(int i=1;i<parts.length;i++){
						s+=wordTest(parts[i], lineNumber)+":";
					}
					return questionTest(parts[0], lineNumber)+":"+s;
				}
			}return "";
	}
	
	public Rule ruleManager(String preANDcon, int lineNumber) throws WrongKnowledgBaseSyntaxException{
			List<Fact> tempPrerequisiteList = new ArrayList<Fact>();
			List<Fact> tempConclusionList = new ArrayList<Fact>();
			String parts[] = preANDcon.split("THEN");
			if(parts.length==2){
				for (int i=0;i<parts.length;i++){
					
					if(parts[i].charAt(0)==' ' && parts[i].charAt(parts[i].length()-1)==' '){
						String parts2[] = parts[i].split("AND");
						
						for(int j=0;j<parts2.length;j++){
							if(parts2[j].equals(" ") || parts2[j].equals(""))throw new WrongKnowledgBaseSyntaxException(lineNumber);
							
							if(parts2[j].charAt(0)!=' ' || parts2[j].charAt(parts2[j].length()-1)!=' ')throw new WrongKnowledgBaseSyntaxException(lineNumber);
							parts2[j]=parts2[j].substring(0, parts2[j].length()-1);
							preANDcon=atributesManager2(parts2[j], lineNumber);
							if(!isLoad)continue;
							Fact f;
							String parts3[] = preANDcon.split(":");
							if(parts3.length==2){f = new Fact(parts3[0], parts3[1], null);}
							else {f = new Fact(parts3[0], parts3[1], parts3[2]);}
							if(i==0)tempPrerequisiteList.add(f);
							else tempConclusionList.add(f);
							
						}
					}else throw new WrongKnowledgBaseSyntaxException(lineNumber);
				}
			}else throw new WrongKnowledgBaseSyntaxException(lineNumber);
			return new Rule(false, tempPrerequisiteList, tempConclusionList);
	}
	
	public Fact createFact(String parts[]){
		 	Fact f;
		 	double dob;
		 	if(parts[2].isEmpty()){
		 		if(parts[3].isEmpty()){
		 			f = new Fact(parts[0], parts[1], null, false, dob=Double.parseDouble(parts[4]));
		 			
		 			return f;
		 		}
		 		else {
		 			f = new Fact(parts[0], parts[1], null);
		 			f.setIsQustion(true);
		 			f.setQuestion(parts[3]);
		 			for(int i=4;i<parts.length-1;i++){
		 				f.getAnswers().add(parts[i]);
		 			}
		 			f.setProbability(dob=Double.parseDouble(parts[parts.length-1]));
		 			
		 			return f;
		 		}
		 	}else{
		 		if(parts[3].isEmpty()){
			 		f = new Fact(parts[0], parts[1], parts[2], false, dob=Double.parseDouble(parts[4]));
			 		return f;
			 	}
			 	else {
			 		f = new Fact(parts[0], parts[1], parts[2]);
			 		f.setIsQustion(true);
			 		f.setQuestion(parts[3]);
			 		for(int i=4;i<parts.length-1;i++){
			 			f.getAnswers().add(parts[i]);
			 		}
			 		f.setProbability(dob=Double.parseDouble(parts[parts.length-1]));
			 		
			 		return f;
			 	}
		 	}
	 }
	 
	 public void addFact(Fact F){
		 	if(tempFactList.contains(F))System.out.println("Fact juz jest");
		 	else{
		 		tempFactList.add(F);
		 	}
	 }
		    
	 
	 
	 public void addRule(Rule R){
		 	tempRuleList.add(R);
	 }
	 
	 public KnowledgeBase checkORload(String fileName, boolean _isLoad) throws WrongFileTypeException, WrongKnowledgBaseSyntaxException, IOException, RuleAlreadyExistsException{
			Window.baseFactNumberText.setText("");
			this.isLoad = _isLoad;
			String strResult="";
			List<String> lines = new ArrayList<String>();
			String line="";
			if((fileName.length()<5)||(fileName.charAt(fileName.length()-4)!='.')||(fileName.charAt(fileName.length()-3)!='t')||(fileName.charAt(fileName.length()-2)!='x')||(fileName.charAt(fileName.length()-1)!='t')){
				throw new WrongFileTypeException();
			}
			BufferedReader in = new BufferedReader(new FileReader(fileName));
		    do{
		    	line = in.readLine();
		    	if (line != null){
		    		switch (lines.size()){
			    		case 0:{
			    			if(line.length()>=8 && line.startsWith("<TITLE>")){
			    				if(line.charAt(7)!=' '){
			    					Window.baseNameText.setText(line.substring(7,line.length()));
			    				}else throw new WrongKnowledgBaseSyntaxException(1);
			    			} else throw new WrongKnowledgBaseSyntaxException(1);
			    			lines.add(line);
			    			break;
			    		}
			    		case 1:{
			    			if(line.length()>=9 && line.startsWith("<TARGET>")){
			    				if(line.charAt(8)!=' '&& line.charAt(line.length()-1)==';'){
			    					strResult=atributesManager(" "+line.substring(8, line.length()-1),2);
			    					//if(!isLoad)break;
			    					String parts[]=strResult.split(":");
			    					if(parts.length==2)Window.machine.target=new Fact(parts[0],parts[1],null);
			    					else Window.machine.target=new Fact(parts[0],parts[1],parts[2]);
			    					System.out.println(Window.machine.target.toString()+" TO JEST CEL");
			    				}else throw new WrongKnowledgBaseSyntaxException(2);
			    			} else throw new WrongKnowledgBaseSyntaxException(2);
			    			lines.add(line);
			    			break;
			    		}
			    		default:{
			    			lines.add(line);
			    			break;
			    		}
		    		}
		    	}
		    }while (line != null);
	    	in.close();
	    
		    for(int i=2;i<lines.size();i++){	//System.out.println(" test  "+lines.size());
		    	String oneLine=lines.get(i);
		    	if(oneLine.isEmpty() || (oneLine.length()==1 && oneLine.charAt(0)!='#')) throw new WrongKnowledgBaseSyntaxException(i+1);
	    		else if(oneLine.length()>0 && oneLine.charAt(0)=='#')continue;
	    		else if(oneLine.length()>=10 && oneLine.startsWith("FACT")){
	    			
	    			F=new Fact();
	    			oneLine=oneLine.substring(4);
	    			if(oneLine.charAt(0)==' ' && oneLine.charAt(oneLine.length()-1)==';'){
	    				String parts[];
	    				parts=oneLine.split(";");
	    				if(parts.length!=3 || parts[0].isEmpty() || parts[2].isEmpty())throw new WrongKnowledgBaseSyntaxException(i+1);
	    				oneLine=atributesManager(parts[0],i+1);
	    				if(!parts[1].isEmpty())oneLine+=questionManager(parts[1],i+1);
	    				else oneLine+=":";
	    				oneLine+=probabilityTest(parts[2],i+1);
	    				
	    				if(!isLoad)continue;
	    				parts=oneLine.split(":");
	    				F=createFact(parts);
	    				
	    				if(tempFactList.isEmpty())tempFactList.add(F);
	    				else addFact(F);
	    			}else throw new WrongKnowledgBaseSyntaxException(i+1);
	    		}else if(oneLine.length()>=20 && oneLine.startsWith("IF")){
	    			R = new Rule();
	    			for(int iii=0;iii<tempRuleList.size();iii++){
	    				//System.out.println("RULE_"+(iii+1)+" :  "+tempRuleList.get(iii).toString()+"\n");
	    			}
	    			
	    			
	    			
	    				
	    				
	    				
	    				if(oneLine.charAt(2)==' ' && oneLine.charAt(oneLine.length()-1)==';'){
	    					oneLine=oneLine.substring(2, oneLine.length()-1);
	    					oneLine+=" ";
	    					
		    				Rule R = ruleManager(oneLine,i+1);
		    				if(!isLoad)continue;
		    				if(tempRuleList.size()!=0)
			    				for(Rule r : tempRuleList){
			    					if(r.equals(R))throw new RuleAlreadyExistsException(i+1);
			    				}
		    				if(tempRuleList.isEmpty())tempRuleList.add(R);
		    				else addRule(R);//System.out.println(" ZNACZNIK222222");
	    				}else throw new WrongKnowledgBaseSyntaxException(i+1);
	    			}else throw new WrongKnowledgBaseSyntaxException(i+1);
		    	
		    }
		    /*for(int i=0;i<tempFactList.size();i++){
				System.out.println("FACT_"+(i+1)+" :  "+tempFactList.get(i).toString()+"\n");
			}
			for(int i=0;i<tempRuleList.size();i++){
				System.out.println("RULE_"+(i+1)+" :  "+tempRuleList.get(i).toString()+"\n");
			}*/
			Window.baseFactNumberText.setText(""+tempFactList.size());
			Window.baseRuleNumberText.setText(""+tempRuleList.size());
		    return new KnowledgeBase(tempFactList, tempRuleList);
	 	}    
	 	
}	    
		 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美久久久久无广告 | 99精品国产一区二区三区不卡| 精品福利一区二区三区免费视频| 日韩av一区二区三区| 91麻豆精品国产91久久久资源速度| 三级成人在线视频| 欧美成人伊人久久综合网| 麻豆免费看一区二区三区| 日韩三级在线免费观看| 国产一区二区三区香蕉| 国产精品久久久久影院亚瑟| 99精品偷自拍| 舔着乳尖日韩一区| 26uuu精品一区二区在线观看| 国产精品一区二区在线看| 国产精品全国免费观看高清| 91亚洲精品一区二区乱码| 亚洲第四色夜色| 精品99999| 97成人超碰视| 蜜桃精品视频在线| 中文字幕中文字幕中文字幕亚洲无线| 91欧美激情一区二区三区成人| 亚洲成人av中文| 26uuu另类欧美| 91黄视频在线观看| 久久se这里有精品| 亚洲视频精选在线| 日韩欧美国产精品| 91色乱码一区二区三区| 麻豆精品视频在线观看免费| 国产精品丝袜在线| 欧美丰满一区二区免费视频 | 国产精品一区二区在线看| 亚洲女爱视频在线| 26uuu另类欧美亚洲曰本| 色婷婷久久久久swag精品| 免费在线看一区| 亚洲素人一区二区| 精品国产91乱码一区二区三区| 99精品久久99久久久久| 国产在线精品一区二区夜色| 亚洲国产成人av好男人在线观看| 久久午夜电影网| 欧美日韩激情在线| 成人黄色av电影| 久久精品国产一区二区三区免费看| 国产精品超碰97尤物18| 精品国产一二三区| 欧美精品色综合| 91免费版在线| 成人爱爱电影网址| 韩国在线一区二区| 日韩国产高清影视| 亚洲一区二区三区自拍| 国产精品麻豆欧美日韩ww| 精品国产自在久精品国产| 欧美性三三影院| 91久久一区二区| 成人av网站在线| 成人一区二区视频| 国产成人综合精品三级| 久久99精品久久久久久动态图| 亚洲一区二区三区视频在线播放| 亚洲日本免费电影| 亚洲视频1区2区| 国产精品久久久久久久久晋中 | 亚洲精品国产精品乱码不99| 国产婷婷色一区二区三区在线| 日韩免费高清电影| 欧美欧美欧美欧美首页| 欧美日韩成人在线| 欧美色精品天天在线观看视频| 91免费看片在线观看| 成人国产电影网| 成人激情小说乱人伦| 国产成人精品亚洲777人妖 | 一区二区三区日本| 成人欧美一区二区三区| 中文字幕中文字幕一区| 国产精品高潮呻吟| 亚洲欧美日韩成人高清在线一区| 1区2区3区欧美| 亚洲日本在线看| 有码一区二区三区| 午夜私人影院久久久久| 午夜精品福利在线| 欧美a一区二区| 国内精品视频一区二区三区八戒 | 成人自拍视频在线观看| 粗大黑人巨茎大战欧美成人| 成人av在线观| 色94色欧美sute亚洲线路一ni| 一本一道综合狠狠老| 欧美日韩激情一区二区| 日韩亚洲欧美综合| 久久理论电影网| 国产精品久久精品日日| 一区二区三区欧美激情| 亚洲va欧美va人人爽| 激情欧美日韩一区二区| 成人av电影观看| 欧美在线短视频| 日韩亚洲欧美在线观看| 中文av一区二区| 亚洲无人区一区| 麻豆极品一区二区三区| 成人网在线播放| 欧美吻胸吃奶大尺度电影| 日韩视频123| 亚洲欧美日韩国产手机在线 | 亚洲丝袜制服诱惑| 日韩中文字幕av电影| 国产成人精品影院| 欧美性极品少妇| 2021国产精品久久精品| 亚洲综合成人在线| 欧美成人女星排名| 亚洲婷婷在线视频| 国产一区二区三区美女| 成人深夜福利app| 伊人色综合久久天天人手人婷| 欧美一级黄色录像| 欧美高清在线视频| 亚洲一二三四久久| 国产一区二区福利| 精品伦理精品一区| 欧美一区二区国产| 国产精品久99| 不卡在线观看av| 国产综合成人久久大片91| 99视频超级精品| 亚洲精品一区二区三区四区高清| 亚洲欧美在线视频观看| 激情偷乱视频一区二区三区| 欧美丝袜自拍制服另类| 亚洲国产精品精华液2区45| 日韩国产精品久久| 欧洲视频一区二区| 欧美国产日本韩| 日本va欧美va精品| 91久久奴性调教| 欧美国产精品久久| 久久超碰97中文字幕| 在线成人午夜影院| 亚洲精品免费看| gogo大胆日本视频一区| 久久久久久97三级| 麻豆一区二区在线| 欧美老女人在线| 一个色在线综合| 99久久综合99久久综合网站| 久久香蕉国产线看观看99| 奇米色一区二区| 最新不卡av在线| 国产一区二区影院| 日韩一区和二区| 偷拍自拍另类欧美| 欧美亚洲图片小说| 一区二区在线看| 91啦中文在线观看| 专区另类欧美日韩| av亚洲产国偷v产偷v自拍| 日本一区二区动态图| 国产99久久久久久免费看农村| 久久久亚洲午夜电影| 国产精品白丝jk白祙喷水网站 | 99re这里都是精品| 国产精品你懂的| 成人午夜免费电影| 欧美韩日一区二区三区四区| 成人影视亚洲图片在线| 国产欧美精品在线观看| 国产成人午夜精品影院观看视频| 久久久综合精品| 国产91精品在线观看| 国产精品天美传媒沈樵| 成人国产精品免费观看| 亚洲欧美经典视频| 欧美自拍偷拍午夜视频| 亚洲va欧美va国产va天堂影院| 欧美精品一卡两卡| 九色综合狠狠综合久久| 久久午夜老司机| 91麻豆精品视频| 午夜精品一区二区三区电影天堂 | 久久国产精品免费| 久久网站热最新地址| 丁香天五香天堂综合| 亚洲色图在线播放| 欧美综合在线视频| 激情深爱一区二区| 日韩理论电影院| 欧美日韩国产一区| 久久精品二区亚洲w码| 国产精品久久久久久久久免费丝袜| 一本到三区不卡视频| 日本成人在线网站| 国产精品女上位| 91精品国产综合久久久久久久久久|