趣味のプロジェクトのために、私はポーカーアプリケーションを書こうとしています。その機能の一部は、ゲームの説明を含むポーカーフォーラムからのメッセージを解析する機能です。メッセージの例のプレーンテキストバージョンは次のとおりです。
例1
$0.02/$0.05 No-Limit Hold'em (8 handed)
Known players:
BB: $1.70 UTG2: $13.05 MP1: $2.89 MP2: $2.64 MP3 (Hero): $5.28 CO
: $5.00 BU: $5.00 SB: $11.37
Preflop: Hero is MP3 with 8
[http://resources.pokerstrategy.com/smileys/heart.png], 8
[http://resources.pokerstrategy.com/smileys/club.png].
UTG2 folds, MP1 raises to $0.15, MP2 calls $0.15, Hero calls $0.15, CO folds,
BU calls $0.15, 2 folds, BB folds.
Flop: ($0.67) 8 [http://resources.pokerstrategy.com/smileys/diamond.png], K
[http://resources.pokerstrategy.com/smileys/club.png], 6
[http://resources.pokerstrategy.com/smileys/diamond.png] (4 players)
MP1 checks, MP2 checks, Hero bets $0.47, BU folds, MP1 folds, MP2 calls $0.47.
Turn: ($1.61) A [http://resources.pokerstrategy.com/smileys/club.png] (2
players)
MP2 checks, Hero checks.
River: ($1.61) Q [http://resources.pokerstrategy.com/smileys/club.png] (2
players)
MP2 bets $0.60, Hero raises to $2.10, MP2 calls $1.42.
Final Pot: $5.73.
例2
Grabbed by Holdem Manager <http://www.holdemmanager.net>
NL Holdem $0.05(BB) Replayer
SB ($5.02)
BB ($4.78)
UTG ($2)
UTG+1 ($2)
UTG+2 ($1.88)
MP1 ($5.32)
CO ($10.36) (21/18 на 109 рук, С-бет Ф=88%(11), С-бет Т=33%(3), АФ=2,6
(4,5/3,0/0,5), WTSD=41%, W$SD=71%)
Hero ($10.98)
Dealt to Hero 9 [http://resources.pokerstrategy.com/smileys/spade.png] T
[http://resources.pokerstrategy.com/smileys/spade.png]
UTG calls $0.05, fold, fold, fold, CO raises to $0.20, Hero calls $0.20,
fold, fold, fold
FLOP ($0.52) J [http://resources.pokerstrategy.com/smileys/club.png] 8
[http://resources.pokerstrategy.com/smileys/spade.png] 4
[http://resources.pokerstrategy.com/smileys/diamond.png]
CO bets $0.35, Hero calls $0.35
TURN ($1.22) J [http://resources.pokerstrategy.com/smileys/club.png] 8
[http://resources.pokerstrategy.com/smileys/spade.png] 4
[http://resources.pokerstrategy.com/smileys/diamond.png] 9
[http://resources.pokerstrategy.com/smileys/heart.png]
CO checks, Hero checks
RIVER ($1.22) J [http://resources.pokerstrategy.com/smileys/club.png] 8
[http://resources.pokerstrategy.com/smileys/spade.png] 4
[http://resources.pokerstrategy.com/smileys/diamond.png] 9
[http://resources.pokerstrategy.com/smileys/heart.png] 4
[http://resources.pokerstrategy.com/smileys/spade.png]
CO bets $1, Hero ???
基本的に、これら2つの例は、2つの異なるコンバーターによって生成されました。そして現在、そこには約20の異なるコンバーターがあります。
私がする必要があるのは、さまざまなコンバーターのこれらのゲームの説明を解析し、ゲームのテキストの説明をJavaオブジェクトGameに「変換」できるようにすることです。私はすでにたくさんの正規表現を使っていくつかのコードを書いています。このコードは私のテストの約70%を正しく解析できますが、次のようになります。
- 維持するのは本当に難しい
- 何か新しくてかっこいいことを自分に教えたいです。
それで、正規表現以外の私の他のオプションは何ですか?私は現在ANTLRを調べていますが、それがこのタスクに最適かどうかはわかりません。