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

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

?? pgn.g

?? chess 一個beguanyu國際象棋的一個Java源碼
?? G
字號:
header {package de.java_chess.javaChess.pgn;import antlr.*;import antlr.collections.*;  import de.java_chess.javaChess.notation.*;}/*  pgn.g - A Antlr grammar to parse .pgn (Portable Game Notation) files.  Copyright (C) 2003 The Java-Chess team <info@java-chess.de>  This program is free software; you can redistribute it and/or  modify it under the terms of the GNU General Public License  as published by the Free Software Foundation; either version 2  of the License, or (at your option) any later version.  This program is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License for more details.  You should have received a copy of the GNU General Public License  along with this program; if not, write to the Free Software  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/ /** * A parser for PGN (Portable Game Notation) files. */class PGNParser extends Parser;options {    exportVocab=PGN;    defaultErrorHandler = false;       // Don't generate parser error handlers    buildAST = false;    k=2;}// tokens {//        DOT;// 	STRING_LITERAL;//	SQUARE_NAME;//	MOVE_INDEX;//	FIGURINE_LETTER_CODE;// }{	/**	 * The current move index.         */	private int _moveIndex;	/**	 * The buffer for the game notation.	 */	private GameNotation _notation;	/**	 * Set a new buffer for the game notation.  	 *	 * @param notation The new notation buffer.	 */	public final void setNotation( GameNotation notation) {	    _notation = notation;	}	/**	 * Get the current notation.	 *	 * @return The current notation.	 */	public final GameNotation getNotation() {	    return _notation;	}	/**	 * A loader to follow the loaded game.	 */	private GameLoader _gameLoader;	/**	 * Get the current game loader.	 *	 * @return The current game loader.	 */	private final GameLoader getGameLoader() {            return _gameLoader;        }	/**	 * Set a new game loader.	 * 	 * @param loader The new game loader.	 */	private final void setGameLoader( GameLoader loader) {	    _gameLoader = loader;	}}// A PGN filepgnGame[ GameNotation notationBuffer]{   setNotation( notationBuffer);   setGameLoader( new GameLoader());}	: whiteSpaces tagPairSection moveTextSection	;// The tag pair sectiontagPairSection : ( tagPair whiteSpaces )* ;// All the valid tag pairstagPair : LBRACK          whiteSpaces 	  ( eventTag | siteTag | dateTag | roundTag | whiteTag | blackTag | resultTag | openingTag )           whiteSpaces 	  RBRACK	  ;// A event tageventTag : TAG_EVENT whiteSpaces STRING_LITERAL ; // A site tagsiteTag : TAG_SITE  whiteSpaces STRING_LITERAL ;// A date tagdateTag : TAG_DATE  whiteSpaces STRING_LITERAL ;// A round tagroundTag : TAG_ROUND  whiteSpaces STRING_LITERAL ;// Info on the player with the white pieceswhiteTag : TAG_WHITE  whiteSpaces name:STRING_LITERAL { getNotation().setPlayerInfo( name.getText(), true); } ;// Info on the player with the black piecesblackTag : TAG_BLACK  whiteSpaces name:STRING_LITERAL { getNotation().setPlayerInfo( name.getText(), false); } ;// Info on the resultresultTag : TAG_RESULT  whiteSpaces STRING_LITERAL ;// Info on the openingopeningTag : TAG_OPENING whiteSpaces name:STRING_LITERAL { getNotation().setOpeningInfo( name.getText()); } ;// The movetext sectionmoveTextSection : { _moveIndex = 0; } ( move )* GAME_TERMINATOR ;// A movemove { PlyNotation notation = null;}	:           mI:MOVE_INDEX { ++_moveIndex == Integer.parseInt( mI.getText()) }?          whiteSpaces           notation = ply { getNotation().addPly( notation); }          whiteSpaces           notation = ply { getNotation().addPly( notation); }          whiteSpaces        	;// A plyply returns [PlyNotation notation = null]{ PGNPlyFragment plyFragment = new PGNPlyFragment(); }	: (	    (              ( lc:FIGURINE_LETTER_CODE { plyFragment.setPieceTypeFromLetter( lc.getText().charAt(0)); } )?       	      (                 ( snOrg:SQUARE_NAME { plyFragment.setOrigin( snOrg.getText()); } )?                ( PIECE_MOVE { plyFragment.setCapture( false); } | PIECE_CAPTURE { plyFragment.setCapture( true); } )                 snDest:SQUARE_NAME { plyFragment.setDestination( snDest.getText()); }               )      	      (                 PAWN_PROMOTION                 lc2:FIGURINE_LETTER_CODE { ! "P".equals( lc2.getText()) && ! "K".equals( lc2.getText())}?                 { plyFragment.setPawnPromotion( lc2.getText().charAt(0)); }               )?            )            |	    LEFT_CASTLING { plyFragment.setCastling( true); }            |            RIGHT_CASTLING { plyFragment.setCastling( false); }          )          {  // When we have all the info from the PGN file, we can try to             // create a ply notation from it.	     notation = getGameLoader().completePly( plyFragment);          }	  {notation != null}?  // Make sure, we were actually able to turn the fragment into a ply!      	;// A couple of whitespaces, that delimit a PGN featurewhiteSpaces : ( WS )* ;/** * A lexer for PGN files. */class PGNLexer extends Lexer;options {        exportVocab=PGN;       // call the vocabulary 'PGN'.        k=2;                   // 2 characters of lookahead        testLiterals=true;        caseSensitiveLiterals = true;        caseSensitive=true;        charVocabulary = '\3'..'\377';  // Set the vocabulary to all characters, except the special                                         // characters, that Antlr uses.}   // ignore whitespacesWS      :       ( ' ' | '\t' | '\f'                | ( "\r\n" | '\r' | '\n'  ) { newline(); }  // handle different types of newlines (DOS, MAC, Unix)                ) { /* $setType(Token.SKIP); */ }        ;// Basic literals// ASTERISK	:	'*' ;  // Used as a game terminator.DOT 		: 	'.' ;LBRACK		:	'[';RBRACK  	:	']';// Single-line commentsSL_COMMENT        :       ";" ( ~( '\n' | '\r' ) )*  ( "\n" | "\r" | "\r\n" ) { $setType(Token.SKIP); newline(); }        ;// A string literal (remove the quotes already here).STRING_LITERAL :  ( '"' (~('"'))* '"' )   {     // Remove the leadind and trailing quote.    String literal = $getText;    literal = literal.length() == 2 ? "" : literal.substring( 1, literal.length() - 2);    $setText( literal);  }   ;// A square name (like 'a4' or 'h8')SQUARE_NAME : 'a'..'h' '1'..'8' ;// The code to move a piece.PIECE_MOVE	: '-';// The code to capture a piece.PIECE_CAPTURE	: 'x';// The code to promote a pawn.PAWN_PROMOTION	: '=';// The character code of a figure typeFIGURINE_LETTER_CODE : ( 'P' | 'N' | 'B' | 'R' | 'Q' | 'K' ) ;// The castling moves// LEFT_CASTLING 	: "O-O-O" ;RIGHT_CASTLING 	: "O-O" ( "-O" { $setType( LEFT_CASTLING ); } )? ;// A move indexMOVE_INDEX : ( '1'..'9' ('0'..'9')* DOT )   {     // Remove the trailing dot.    String index = $getText;    index = index.substring( 0, index.length() - 1);    $setText( index);   }   ;// The identifiers for the tag pairsTAG_WHITE 	: "White" ;TAG_BLACK 	: "Black" ;TAG_DATE 	: "Date" ;TAG_EVENT 	: "Event" ;TAG_SITE  	: "Site" ;TAG_ROUND 	: "Round" ;TAG_RESULT 	: "Result" ; TAG_OPENING	: "Opening" ;// The game termination markersGAME_TERMINATOR : ( "*" | "1-0" | "0-1" | "1/2-1/2" ) ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品入口麻豆原神| 亚洲欧美另类久久久精品| xf在线a精品一区二区视频网站| 久久久久久久精| 午夜亚洲福利老司机| 国产在线播放一区三区四| 91福利在线导航| 国产欧美日韩在线| 美洲天堂一区二卡三卡四卡视频| 99久久免费国产| 久久久www免费人成精品| 午夜电影网一区| 色婷婷久久久久swag精品| 久久久久久久久岛国免费| 奇米精品一区二区三区四区| 91一区二区三区在线观看| 久久你懂得1024| 久久精品国产精品亚洲精品| 欧美三级乱人伦电影| 亚洲欧洲在线观看av| 国产·精品毛片| 久久久久久久网| 精品亚洲aⅴ乱码一区二区三区| 欧美怡红院视频| 亚洲欧美成aⅴ人在线观看| 成人综合在线网站| 国产午夜精品久久| 国产精品18久久久| 久久久亚洲综合| 国产精品99久久久| 国产婷婷色一区二区三区四区| 另类调教123区| 日韩欧美自拍偷拍| 精品一区二区三区欧美| 2017欧美狠狠色| 九色综合狠狠综合久久| 精品嫩草影院久久| 久久电影网站中文字幕| 日韩精品一区二区在线| 麻豆传媒一区二区三区| 精品国产免费人成电影在线观看四季| 免费在线观看日韩欧美| 欧美电影精品一区二区| 久久69国产一区二区蜜臀| 久久久久久9999| av一区二区三区在线| **网站欧美大片在线观看| 色久综合一二码| 午夜精品国产更新| 日韩精品一区二区三区中文不卡 | 色播五月激情综合网| 亚洲精品少妇30p| 欧美久久久久久蜜桃| 蜜臂av日日欢夜夜爽一区| 久久久久亚洲综合| 91在线观看污| 日韩制服丝袜av| 国产午夜亚洲精品羞羞网站| 白白色 亚洲乱淫| 亚洲一二三四久久| 日韩一区二区免费电影| 韩国成人精品a∨在线观看| 国产精品久久久久影院色老大| 色综合天天综合色综合av | 欧美一级片在线| 国产精品一区二区黑丝| 亚洲乱码国产乱码精品精小说| 欧美日韩精品欧美日韩精品一| 免费人成黄页网站在线一区二区| 久久久美女艺术照精彩视频福利播放| 色婷婷久久久久swag精品| 蜜桃免费网站一区二区三区| 国产精品嫩草99a| 欧美日本在线视频| 成人一级视频在线观看| 亚洲mv在线观看| 中文字幕国产精品一区二区| 欧美午夜精品一区二区三区| 国内精品久久久久影院一蜜桃| 亚洲日本一区二区三区| 欧美一区二区在线看| av在线一区二区| 久久99久久久久| 亚洲欧美经典视频| 国产日韩欧美a| 4438成人网| 99r精品视频| 国产经典欧美精品| 日本亚洲三级在线| 一二三区精品视频| 国产精品区一区二区三区| 在线观看91av| 在线免费观看日本欧美| 国产精品综合网| 蜜臀av性久久久久蜜臀aⅴ流畅 | 在线精品视频免费观看| 国产黄色91视频| 蜜臀久久99精品久久久久久9| 亚洲一二三级电影| 一区二区三区在线免费| 国产精品精品国产色婷婷| www激情久久| 精品久久久久久亚洲综合网| 制服丝袜亚洲精品中文字幕| 一本一道久久a久久精品 | 欧美精品成人一区二区三区四区| www..com久久爱| 成人性生交大片| 国产成人免费视频网站| 国产精品影音先锋| 狠狠色丁香久久婷婷综| 精品影院一区二区久久久| 欧美a级理论片| 奇米精品一区二区三区在线观看一 | 91精品国产91久久久久久最新毛片| 91在线视频免费观看| 99久久99久久免费精品蜜臀| 成人精品鲁一区一区二区| 国产精品12区| 高清日韩电视剧大全免费| 国产成人99久久亚洲综合精品| 麻豆成人久久精品二区三区红| 日韩av二区在线播放| 日本系列欧美系列| 青娱乐精品视频| 九色综合狠狠综合久久| 国产精品18久久久| 成人99免费视频| 色噜噜狠狠色综合中国| 欧美亚洲一区二区在线观看| 欧美视频一区在线| 91精品国产色综合久久| 精品999在线播放| 中文在线免费一区三区高中清不卡| 亚洲国产成人私人影院tom| 亚洲欧洲三级电影| 亚洲在线观看免费| 日韩电影在线观看电影| 国产一区二区视频在线播放| 国产**成人网毛片九色| 91久久精品一区二区三区| 制服丝袜中文字幕亚洲| 久久婷婷一区二区三区| 中文字幕制服丝袜一区二区三区| 一区二区三区中文字幕电影 | 18成人在线观看| 一区二区三区视频在线观看| 天天影视涩香欲综合网 | 久久一日本道色综合| 中文字幕一区二区三区在线播放 | 美女精品自拍一二三四| 国产一区二区三区电影在线观看| 成人av在线看| 欧美日韩在线观看一区二区| 日韩免费一区二区| 日韩一区在线播放| 午夜精品久久久久久久 | 69堂精品视频| 欧美国产精品中文字幕| 午夜精品福利视频网站 | 粉嫩高潮美女一区二区三区 | 久久精子c满五个校花| 亚洲美女区一区| 国产麻豆91精品| 欧美色视频一区| 国产精品嫩草久久久久| 久久av中文字幕片| 欧美日韩一区中文字幕| 国产亚洲综合av| 日韩电影一区二区三区| 欧美日韩另类国产亚洲欧美一级| 久久综合一区二区| 亚洲一二三区视频在线观看| 成人黄页在线观看| 精品国产一区二区三区不卡| 一个色在线综合| 成人av在线网站| 国产日韩欧美精品综合| 韩国在线一区二区| 欧美一区二区三区日韩| 亚洲综合激情另类小说区| 成人网男人的天堂| 久久久久久久久久久久久女国产乱| 一区二区视频免费在线观看| 成人av网站免费| 久久美女高清视频| 韩国成人在线视频| 26uuu精品一区二区三区四区在线| 午夜精品一区在线观看| 欧美日本国产一区| 一区二区免费看| 91麻豆精品在线观看| 国产精品久久久久久久久久免费看| 九色综合狠狠综合久久| 精品久久久久久最新网址| 国产在线播放一区| 国产偷v国产偷v亚洲高清| 国产成人av电影在线| 国产精品污www在线观看| 国内精品国产三级国产a久久|