锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久无码精品亚洲日韩京东传媒,亚洲免费福利在线视频,亚洲欧洲精品国产区http://www.tkk7.com/faithwind/category/17921.htmlLove Java ,because you are my first lady !^_^zh-cnWed, 28 Feb 2007 03:21:08 GMTWed, 28 Feb 2007 03:21:08 GMT60銆愬師銆慓ood disign , good code !http://www.tkk7.com/faithwind/archive/2006/12/01/84759.html榛戝挅鍟?/dc:creator>榛戝挅鍟?/author>Fri, 01 Dec 2006 02:25:00 GMThttp://www.tkk7.com/faithwind/archive/2006/12/01/84759.htmlhttp://www.tkk7.com/faithwind/comments/84759.htmlhttp://www.tkk7.com/faithwind/archive/2006/12/01/84759.html#Feedback0http://www.tkk7.com/faithwind/comments/commentRss/84759.htmlhttp://www.tkk7.com/faithwind/services/trackbacks/84759.html闃呰鍏ㄦ枃

]]>
銆愬師銆戠敱浠g爜鐪嬬紪紼嬫濇兂http://www.tkk7.com/faithwind/archive/2006/12/01/84752.html榛戝挅鍟?/dc:creator>榛戝挅鍟?/author>Fri, 01 Dec 2006 02:13:00 GMThttp://www.tkk7.com/faithwind/archive/2006/12/01/84752.htmlhttp://www.tkk7.com/faithwind/comments/84752.htmlhttp://www.tkk7.com/faithwind/archive/2006/12/01/84752.html#Feedback0http://www.tkk7.com/faithwind/comments/commentRss/84752.htmlhttp://www.tkk7.com/faithwind/services/trackbacks/84752.html榪欎釜鍔熻兘鏄竴涓В鏋怱tring鐢熸垚function鐨勫姛鑳斤紝褰撶劧鏍煎紡瑕佹眰闈炲父涓ユ牸鐨勶紝鑰屼笖鏍煎紡楠岃瘉涔熸槸涓涓笉鍙己灝戯紝鑰屼笖鏄潪甯擱噸瑕佺殑鐜妭銆?br />涓嶇煡閬撲綘鐪嬪埌榪欎釜鍔熻兘鑴戝瓙閲岄潰鎯沖埌鏄粈涔堟牱鐨勮В鍐蟲柟妗堝憿錛熸垜娌℃湁澶氭兂錛屾嬁璧鋒潵灝卞綋String鏉ュ鐞嗭紝split, substring etc.

鐪嬬湅紼嬪簭鍚э細
涓嬮潰鏄垜鐨勬柟娉曪紝鏆備笖璇存槸鏂規硶鍚э細
聽1聽聽聽聽public聽void聽addFunction(String聽prototype,Long聽comId)throws聽AlpineException{
聽2聽聽聽聽聽聽聽聽ModDao聽dao聽=聽(ModDao)this.getDao("modDao");
聽3聽聽聽聽聽聽聽聽Components聽com聽=聽this.findByPrimaryKey(Components.class,聽comId);
聽4聽聽聽聽聽聽聽聽Functions聽function聽=聽new聽Functions();
聽5聽聽聽聽聽聽聽聽function.setComponent(com);
聽6聽聽聽聽聽聽聽聽prototype聽=聽delDupSpace(prototype);
聽7聽聽聽聽聽聽聽聽String[]聽funTtemp聽=聽prototype.split("\n");
聽8聽聽聽聽聽聽聽聽String聽fun聽=聽funTtemp[0];
聽9聽聽聽聽聽聽聽聽if(fun.indexOf("(")聽==聽-1||fun.indexOf(")")聽==聽-1){
10聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽AlpineException(ErrorCode.FUNCTION_FORMAT_ERROR);
11聽聽聽聽聽聽聽聽}
12聽聽聽聽聽聽聽聽String聽funHead聽=聽fun.substring(0,fun.indexOf("("));
13聽聽聽聽聽聽聽聽String[]聽typeAndHead聽=聽funHead.split("聽");
14聽聽聽聽聽聽聽聽if(typeAndHead.length聽<聽1){
15聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽AlpineException(ErrorCode.FUNCTION_FORMAT_ERROR);
16聽聽聽聽聽聽聽聽}else{
17聽聽聽聽聽聽聽聽聽聽聽聽if(typeAndHead.length聽>1){
18聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setReturnType(typeAndHead[0]);
19聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setFunctionName(typeAndHead[typeAndHead.length-1]);
20聽聽聽聽聽聽聽聽聽聽聽聽}else{
21聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setReturnType("void");
22聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setFunctionName(typeAndHead[0]);
23聽聽聽聽聽聽聽聽聽聽聽聽}
24聽聽聽聽聽聽聽聽聽聽聽聽if(fun.indexOf("http://")聽!=聽-1){
25聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String聽exp聽=聽fun.substring(fun.indexOf(";")+1);
26聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽exp聽=聽exp.replaceAll("&#13;",聽"");
27聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setExplanation(exp);
28聽聽聽聽聽聽聽聽聽聽聽聽}
29聽聽聽聽聽聽聽聽聽聽聽聽this.insert(function);
30聽聽聽聽
31聽聽聽聽聽聽聽聽聽聽聽聽String聽paStr聽=聽fun.substring(fun.indexOf("(")+1,聽fun.indexOf(")"));
32聽聽聽聽聽聽聽聽聽聽聽聽if(!StringHelper.isEmpty(paStr)){
33聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String[]聽pas聽=聽paStr.split(",");
34聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽for聽(int聽i聽=聽0;聽i聽<聽pas.length;聽i++)聽{
35聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Parameters聽parameter聽=聽new聽Parameters();
36聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String[]聽pars聽=聽pas[i].split("聽");
37聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(pars.length聽<聽2聽||聽pars.length聽>聽3){
38聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽AlpineException(ErrorCode.FUNCTION_FORMAT_ERROR);
39聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}else{
40聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(pars.length聽==聽2){
41聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Parameters聽paDup聽=聽dao.getParameterByPaName(pars[1],聽function.getId());
42聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(paDup聽!=聽null)
43聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽AlpineException(ErrorCode.FUNCTION_FORMAT_ERROR);
44聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
45聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setParameterName(pars[1]);
46聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setParameterType(pars[0]);
47聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setInOrOut("In");
48聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
49聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(pars.length聽==聽3){
50聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Parameters聽paDup聽=聽dao.getParameterByPaName(pars[2],聽function.getId());
51聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(paDup聽!=聽null)
52聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽AlpineException(ErrorCode.FUNCTION_FORMAT_ERROR);
53聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
54聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setParameterName(pars[2]);
55聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setParameterType(pars[1]);
56聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(pars[0].contains("In"))
57聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setInOrOut("In");
58聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(pars[0].contains("Out"))
59聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setInOrOut("Out");
60聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
61聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setFunction(function);
62聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽this.insert(parameter);
63聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setOrderF(parameter.getId());
64聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽this.update(parameter);
65聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
66聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
67聽聽聽聽聽聽聽聽聽聽聽聽}
68聽聽聽聽聽聽聽聽聽聽聽聽
69聽聽聽聽聽聽聽聽聽聽聽聽for聽(int聽i聽=聽1;聽i聽<聽funTtemp.length;聽i++)聽{//start聽1
70聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String[]聽paTemp聽=聽funTtemp[i].split(":");
71聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(paTemp.length聽==聽2){
72聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Parameters聽parameter聽=聽dao.getParameterByPaName(paTemp[0].trim(),function.getId());
73聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(parameter聽!=聽null){
74聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽parameter.setExplanation(paTemp[1]);
75聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽this.update(parameter);
76聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
77聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
78聽聽聽聽聽聽聽聽聽聽聽聽}
79聽聽聽聽聽聽聽聽}
80聽聽聽聽}
浠ヤ笅鏄疊irdGu鐨勬柟妗堬細
聽聽1public聽class聽FunctionParser聽{
聽聽2聽聽聽聽public聽static聽class聽Token聽{
聽聽3聽聽聽聽聽聽聽聽private聽TokenType聽type;
聽聽4聽聽聽聽聽聽聽聽private聽String聽content;
聽聽5聽聽聽聽聽聽聽聽public聽Token(TokenType聽type,聽String聽content)聽{
聽聽6聽聽聽聽聽聽聽聽聽聽聽聽super();
聽聽7聽聽聽聽聽聽聽聽聽聽聽聽this.type聽=聽type;
聽聽8聽聽聽聽聽聽聽聽聽聽聽聽this.content聽=聽content;
聽聽9聽聽聽聽聽聽聽聽}
聽10聽聽聽聽聽聽聽聽public聽String聽getContent()聽{
聽11聽聽聽聽聽聽聽聽聽聽聽聽return聽content;
聽12聽聽聽聽聽聽聽聽}
聽13聽聽聽聽聽聽聽聽public聽TokenType聽getType()聽{
聽14聽聽聽聽聽聽聽聽聽聽聽聽return聽type;
聽15聽聽聽聽聽聽聽聽}
聽16聽聽聽聽聽聽聽聽
聽17聽聽聽聽聽聽聽聽
聽18聽聽聽聽}
聽19聽聽聽聽
聽20聽聽聽聽private聽enum聽TokenType聽{symbol,聽leftParenthese,聽rightParenthese,聽inOutFlag,聽comment,聽comma};
聽21聽聽聽聽private聽enum聽TokenParseStatus聽{start,聽inSymbol,聽comment1,聽inOutFlag};
聽22
聽23聽聽聽聽private聽interface聽ParseStatus聽{
聽24聽聽聽聽聽聽聽聽public聽ParseStatus聽process聽(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)
聽25聽聽聽聽聽聽聽聽throws聽InvalidSyntaxException;
聽26聽聽聽聽}
聽27聽聽聽聽
聽28聽聽聽聽private聽static聽final聽ParseStatus聽START聽=聽new聽ParseStatus()聽{
聽29聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)
聽30聽聽聽聽聽聽聽聽throws聽InvalidSyntaxException聽{
聽31聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.symbol)聽{
聽32聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽symbolStack.push(token.getContent());
聽33聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽GOT_FIRST_SYMBOL;
聽34聽聽聽聽聽聽聽聽聽聽聽聽}聽
聽35聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);
聽36聽聽聽聽聽聽聽聽}
聽37聽聽聽聽};
聽38聽聽聽聽
聽39聽聽聽聽private聽static聽final聽ParseStatus聽GOT_FIRST_SYMBOL聽=聽new聽ParseStatus聽()聽{
聽40聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
聽41聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.leftParenthese)聽{
聽42聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setReturnType("void");
聽43聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setFunctionName(symbolStack.pop());
聽44聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽WAITING_FIRST_ARG;
聽45聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(token.getType()聽==聽TokenType.symbol)聽{
聽46聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setFunctionName(token.getContent());
聽47聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setReturnType(symbolStack.pop());
聽48聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽BEFORE_ARG_DEF;
聽49聽聽聽聽聽聽聽聽聽聽聽聽}聽
聽50聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);
聽51聽聽聽聽聽聽聽聽}
聽52聽聽聽聽};
聽53聽聽聽聽
聽54聽聽聽聽private聽static聽final聽ParseStatus聽BEFORE_ARG_DEF聽=聽new聽ParseStatus聽()聽{
聽55聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
聽56聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.leftParenthese)聽{
聽57聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽WAITING_FIRST_ARG;
聽58聽聽聽聽聽聽聽聽聽聽聽聽}
聽59聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);
聽60聽聽聽聽聽聽聽聽}
聽61聽聽聽聽};
聽62聽聽聽聽
聽63聽聽聽聽private聽static聽final聽ParseStatus聽WAITING_FIRST_ARG聽=聽new聽ParseStatus聽()聽{
聽64
聽65聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
聽66聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.rightParenthese)聽{
聽67聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽AFTER_ARG_DEF;
聽68聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(token.getType()聽==聽TokenType.symbol)聽{
聽69聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽symbolStack.push(token.getContent());
聽70聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽GOT_ARG_TYPE;
聽71聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(token.getType()聽==聽TokenType.inOutFlag)聽{
聽72聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽symbolStack.push聽(token.getContent());
聽73聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽GOT_IN_OUT_FLAG;
聽74聽聽聽聽聽聽聽聽聽聽聽聽}
聽75聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);聽聽聽聽
聽76聽聽聽聽聽聽聽聽}
聽77聽聽聽聽};
聽78聽聽聽聽
聽79聽聽聽聽private聽static聽final聽ParseStatus聽GOT_IN_OUT_FLAG聽=聽new聽ParseStatus聽()聽{
聽80聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
聽81聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.symbol)聽{
聽82聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽symbolStack.push(token.getContent());
聽83聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽GOT_ARG_TYPE;
聽84聽聽聽聽聽聽聽聽聽聽聽聽}
聽85聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);聽聽聽聽
聽86聽聽聽聽聽聽聽聽}
聽87聽聽聽聽};
聽88聽聽聽聽
聽89聽聽聽聽private聽static聽final聽ParseStatus聽GOT_ARG_TYPE聽=聽new聽ParseStatus聽()聽{
聽90聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
聽91聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.symbol)聽{
聽92聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Parameters聽param聽=聽new聽Parameters聽();
聽93聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽param.setParameterName(token.getContent());
聽94聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽param.setParameterType(symbolStack.pop());
聽95聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String聽inOutFlag聽=聽"In";
聽96聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(!symbolStack.isEmpty())聽{
聽97聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽inOutFlag聽=聽symbolStack.pop();
聽98聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽99聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽param.setInOrOut(inOutFlag);
100聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.adParameter(param);
101聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽GOT_ARG_VALUE;
102聽聽聽聽聽聽聽聽聽聽聽聽}
103聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);聽聽聽聽
104聽聽聽聽聽聽聽聽}
105聽聽聽聽};
106聽聽聽聽
107聽聽聽聽private聽static聽final聽ParseStatus聽GOT_ARG_VALUE聽=聽new聽ParseStatus聽()聽{
108聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
109聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.rightParenthese)聽{
110聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽AFTER_ARG_DEF;
111聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(token.getType()聽==聽TokenType.comma)聽{
112聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽WAITING_ARG;
113聽聽聽聽聽聽聽聽聽聽聽聽}
114聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);聽聽聽聽
115聽聽聽聽聽聽聽聽}
116聽聽聽聽};
117聽聽聽聽
118聽聽聽聽private聽static聽final聽ParseStatus聽WAITING_ARG聽=聽new聽ParseStatus聽()聽{
119聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
120聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.symbol)聽{
121聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽symbolStack.push(token.getContent());
122聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽GOT_ARG_TYPE;
123聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if(token.getType()聽==聽TokenType.inOutFlag)聽{
124聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽symbolStack.push(token.getContent());
125聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽GOT_IN_OUT_FLAG;
126聽聽聽聽聽聽聽聽聽聽聽聽}
127聽聽聽聽聽聽聽聽聽聽聽聽return聽null;
128聽聽聽聽聽聽聽聽}
129聽聽聽聽};
130聽聽聽聽
131聽聽聽聽private聽static聽final聽ParseStatus聽AFTER_ARG_DEF聽=聽new聽ParseStatus聽()聽{
132聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
133聽聽聽聽聽聽聽聽聽聽聽聽if聽(token.getType()聽==聽TokenType.comment)聽{
134聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽function.setExplanation(token.getContent());
135聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽END;
136聽聽聽聽聽聽聽聽聽聽聽聽}
137聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);
138聽聽聽聽聽聽聽聽}
139聽聽聽聽};
140聽聽聽聽
141聽聽聽聽private聽static聽final聽ParseStatus聽END聽=聽new聽ParseStatus聽()聽{
142聽聽聽聽聽聽聽聽public聽ParseStatus聽process(Functions聽function,聽Token聽token,聽Stack<String>聽symbolStack)聽throws聽InvalidSyntaxException聽{
143聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽(token);
144聽聽聽聽聽聽聽聽}
145聽聽聽聽};
146聽聽聽聽
147聽聽聽聽private聽StringBuffer聽currentLine;
148聽聽聽聽private聽int聽index;
149聽聽聽聽private聽Functions聽function;
150聽聽聽聽
151聽聽聽聽public聽Functions聽parse(String聽content)聽throws聽InvalidSyntaxException聽{
152聽聽聽聽聽聽聽聽if聽(StringHelper.isEmpty(content))聽{
153聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽IllegalArgumentException聽("content聽is聽empty.");
154聽聽聽聽聽聽聽聽}
155聽聽聽聽聽聽聽聽StringTokenizer聽tokenizer聽=聽new聽StringTokenizer聽(content,聽"\n");
156聽聽聽聽聽聽聽聽String聽line聽=聽tokenizer.nextToken();
157聽聽聽聽聽聽聽聽parseFirstLine聽(line);
158聽聽聽聽聽聽聽聽while聽(tokenizer.hasMoreTokens())聽{
159聽聽聽聽聽聽聽聽聽聽聽聽line聽=聽tokenizer.nextToken();
160聽聽聽聽聽聽聽聽聽聽聽聽parseParamLine聽(line);
161聽聽聽聽聽聽聽聽}
162聽聽聽聽聽聽聽聽return聽function;
163聽聽聽聽}
164聽聽聽聽
165聽聽聽聽private聽void聽parseFirstLine聽(String聽line)聽throws聽InvalidSyntaxException聽{
166聽聽聽聽聽聽聽聽currentLine聽=聽new聽StringBuffer聽(line);
167聽聽聽聽聽聽聽聽index聽=聽0;
168聽聽聽聽聽聽聽聽function聽=聽new聽Functions聽();
169聽聽聽聽聽聽聽聽Token聽token;
170聽聽聽聽聽聽聽聽ParseStatus聽status聽=聽START;
171聽聽聽聽聽聽聽聽Stack<String>聽stack聽=聽new聽Stack<String>聽();
172聽聽聽聽聽聽聽聽while聽(聽(token聽=聽nextToken())聽!=聽null)聽{
173聽聽聽聽聽聽聽聽聽聽聽聽status聽=聽status.process(function,聽token,聽stack);
174聽聽聽聽聽聽聽聽}
175聽聽聽聽聽聽聽聽if聽(status聽!=聽AFTER_ARG_DEF聽&&聽status聽!=聽END)聽
176聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽("Function聽hasn't聽finished聽properly.");
177聽聽聽聽}
178
179聽聽聽聽private聽void聽parseParamLine聽(String聽line)聽
180聽聽聽聽throws聽InvalidSyntaxException聽{
181聽聽聽聽聽聽聽聽int聽idx聽=聽line.indexOf(':');
182聽聽聽聽聽聽聽聽if聽(idx聽<聽0)聽{
183聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽("Expected聽':'聽from聽parameter聽line.");
184聽聽聽聽聽聽聽聽}
185聽聽聽聽聽聽聽聽String聽paramName聽=聽line.substring(0,聽idx);
186聽聽聽聽聽聽聽聽String聽comment聽=聽line.substring(idx聽+聽1);
187聽聽聽聽聽聽聽聽Parameters聽param聽=聽function.getParameter聽(paramName);
188聽聽聽聽聽聽聽聽if聽(paramName聽==聽null)
189聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽("Unknown聽parameter:'paramName'");
190聽聽聽聽聽聽聽聽param.setExplanation(comment);
191聽聽聽聽}
192聽聽聽聽
193聽聽聽聽private聽Token聽nextToken聽()聽throws聽InvalidSyntaxException聽{
194聽聽聽聽聽聽聽聽if聽(index聽>=聽currentLine.length())
195聽聽聽聽聽聽聽聽聽聽聽聽return聽null;
196聽聽聽聽聽聽聽聽StringBuffer聽buf聽=聽new聽StringBuffer聽();
197聽聽聽聽聽聽聽聽TokenParseStatus聽status聽=聽TokenParseStatus.start;
198聽聽聽聽聽聽聽聽while聽(index聽<聽currentLine.length聽())聽{
199聽聽聽聽聽聽聽聽聽聽聽聽char聽ch聽=聽currentLine.charAt(index);
200聽聽聽聽聽聽聽聽聽聽聽聽if聽(status聽==聽TokenParseStatus.start)聽{
201聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(isSymbolLetter(ch))聽{
202聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽status聽=聽TokenParseStatus.inSymbol;
203聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽buf.append(ch);
204聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
205聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(ch聽==聽'(')聽{
206聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
207聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽new聽Token聽(TokenType.leftParenthese,聽"(");
208聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(ch聽==聽')')聽{
209聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
210聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽new聽Token聽(TokenType.rightParenthese,聽")");
211聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(ch聽==聽',')聽{
212聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
213聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽new聽Token聽(TokenType.comma,聽",");
214聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(ch聽==聽'聽'聽||聽ch聽==聽'\t')聽{
215聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
216聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(ch聽==聽'[')聽{
217聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽status聽=聽TokenParseStatus.inOutFlag;
218聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
219聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(ch聽==聽';')聽{
220聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
221聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String聽str聽=聽currentLine.substring(index);
222聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽index聽=聽currentLine.length();
223聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽new聽Token聽(TokenType.comment,聽str);
224聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽{
225聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽("Enexpected聽character:聽"聽+聽ch);
226聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
227聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(status聽==聽TokenParseStatus.inSymbol)聽{
228聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(isSymbolLetter(ch))聽{
229聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽buf.append(ch);
230聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
231聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽{
232聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽new聽Token聽(TokenType.symbol,聽buf.toString());
233聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽
234聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(status聽==聽TokenParseStatus.inOutFlag)聽{
235聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(isSymbolLetter(ch))聽{
236聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽buf.append聽(ch);
237聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
238聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽if聽(聽ch聽==聽']')聽{
239聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽++聽index;
240聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String聽str聽=聽buf.toString聽();
241聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(!聽("In".equals(str)聽||聽"Out".equals(str)))聽{
242聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽InvalidSyntaxException聽("Invalid聽in/out聽flag.");
243聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
244聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽new聽Token聽(TokenType.inOutFlag,聽str);
245聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
246聽聽聽聽聽聽聽聽聽聽聽聽}
247聽聽聽聽聽聽聽聽}
248聽聽聽聽聽聽聽聽if聽(status聽==聽TokenParseStatus.inSymbol)聽{
249聽聽聽聽聽聽聽聽聽聽聽聽return聽new聽Token聽(TokenType.symbol,聽buf.toString());
250聽聽聽聽聽聽聽聽}
251聽聽聽聽聽聽聽聽return聽null;
252聽聽聽聽}
253
254聽聽聽聽private聽boolean聽isSymbolLetter(char聽ch)聽{
255聽聽聽聽聽聽聽聽return聽Character.isLetter(ch)聽||聽Character.isDigit(ch);
256聽聽聽聽}
257}

鐩告瘮涔嬩笅錛岀涓縐嶆柟娉曠浉褰㈣緇屻?br />鎯沖繀榪欎篃鏄緢澶氣滃ぇ楦熲濇壘涓嶅埌鍚堥備漢閫夌殑鍘熷洜鍚с?br />涓婇潰涓ょ鏂規硶涓嶇敤澶氳錛屽ぇ瀹朵竴鐪嬪氨鐭ラ亾濂藉湪鍝噷錛屽悓鏃惰繕鏄紪紼嬫濇兂鐨勬埅鐒朵笉鍚屻?img src ="http://www.tkk7.com/faithwind/aggbug/84752.html" width = "1" height = "1" />

]]>
主站蜘蛛池模板: 国内精品99亚洲免费高清| 妻子5免费完整高清电视| 久久久亚洲精品视频| 国产在线观看片a免费观看| 亚洲AV永久无码精品一福利| 亚洲色成人网站WWW永久| 久久精品免费全国观看国产| 特级毛片在线大全免费播放| 无码乱人伦一区二区亚洲| 青草草在线视频永久免费| 今天免费中文字幕视频| 亚洲欧美日韩一区二区三区 | 在线观看亚洲成人| 91免费国产自产地址入| 一区二区免费电影| 亚洲日韩精品国产一区二区三区| 亚洲日产无码中文字幕| 日本一区免费电影| 在线看片v免费观看视频777| 中文字幕视频在线免费观看| 亚洲精品无码久久久久APP | 亚洲综合一区二区精品导航| 免费大片黄手机在线观看| 曰批全过程免费视频网址 | 免费特级黄毛片在线成人观看| 色播在线永久免费视频网站| 亚洲成a人无码亚洲成www牛牛| 日韩亚洲AV无码一区二区不卡| 亚洲一区二区三区免费| 黄网址在线永久免费观看 | 免费A级毛片无码免费视| 无码免费一区二区三区免费播放| 男女交性无遮挡免费视频| 亚洲综合精品伊人久久| 亚洲日本香蕉视频观看视频| 亚洲精品白浆高清久久久久久| 国产无遮挡又黄又爽免费视频 | 亚洲国产精彩中文乱码AV| 免费一级成人毛片| 日韩免费电影在线观看| 无码区日韩特区永久免费系列|