raa0121 / GoBCDice

GoBCDice is BCDice reimplemented by Go.
BSD 3-Clause "New" or "Revised" License
9 stars 2 forks source link

ランダム選択コマンド(Choice)を実装する #21

Closed ochaochaocha3 closed 5 years ago

ochaochaocha3 commented 5 years ago

https://github.com/torgtaitai/DodontoF/blob/v1.49.01/src_ruby/diceBotInfos.rb

choice[a,b,c]:列挙した要素から一つを選択表示。ランダム攻撃対象決定などに

このコマンドの場合、トークンの切り出し方が他のコマンドとまったく違う([] 内はカンマで区切られた任意の文字列)ため、字句解析器に状態を持たせて動作を分岐させる必要がある。

参考:青木峰郎『Rubyソースコード完全解説:第11章 状態付きスキャナ

抽象構文木の例