gpt4 book ai didi

ruby - 用 Ruby 设计一个扑克解析器

转载 作者:数据小太阳 更新时间:2023-10-29 08:34:59 26 4
gpt4 key购买 nike

我正在用 Ruby 编写一个小程序来解析来自扑克网站的牌局历史记录。日志分为几行,看起来有点像这样:

Table 123456 NL Hold'em $1/$2
5 Players
Seat 3 is the button
Seat 1: randomGuy112 $152.56
Seat 2: randomGirl99 $200
Seat 3: PokerPro $357.12
Seat 4: FishCake556 $57.19
Seat 6: MooMoo $188.98
Dealt to MooMoo [Ah, Ks]
randomGuy112 folds
randomGirl99 raises to $7

etc.. etc..

我想在一个对象中总结这些信息,例如,以不同方式呈现或将其保存到数据库。当我最初想到这个问题时,我以为我只有一个真正直接的类,其中包含许多正则表达式和几个 if/else 语句。然后我意识到这可能会变成一个相当大的方法,并且可能成为调试/维护的噩梦。请记住,它需要在游戏的每个阶段(翻前、翻牌等)循环以收集玩家的 Action 。

我也想用 TDD 方法解决这个问题,但是“一个长的方法”方法意味着用于检查后期输入的测试将在某种程度上依赖于早期测试。

我是 Ruby 的新手,还没有点击“Ruby 方式”来做事。我发现自己正在编写 C# 代码用不同的语言。

你能给我一些关于如何设计解析器的建议,这样它就不会是一大堆 if/else 语句并且更易于测试吗?

最佳答案

使用Treetop

看起来您确实处于临时字符串匹配和 RE 的优势与需要实际解析器的边界之间。

手写解析器没有任何问题,只要您的方法保持简短,任何给定的方法都不会太复杂,if 语句的总数与解析器需要。

我不确定 10 行难以理解的正则表达式是否比 30 行漂亮的代码好。

现在,Ruby 确实有一个高级的 PEG 解析器生成器。我认为在这种情况下我不会担心它是否矫枉过正,我只会 go ahead and use Treetop.

关于ruby - 用 Ruby 设计一个扑克解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1537455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com