- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在用 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 语句并且更易于测试吗?
最佳答案
看起来您确实处于临时字符串匹配和 RE 的优势与需要实际解析器的边界之间。
手写解析器没有任何问题,只要您的方法保持简短,任何给定的方法都不会太复杂,if
语句的总数与解析器需要。
我不确定 10 行难以理解的正则表达式是否比 30 行漂亮的代码好。
现在,Ruby 确实有一个高级的 PEG 解析器生成器。我认为在这种情况下我不会担心它是否矫枉过正,我只会 go ahead and use Treetop.
关于ruby - 用 Ruby 设计一个扑克解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1537455/
一副扑克牌是 52 张牌 13阶4花色 致力于高效的手部表示和评估 A K Q J T 9 8 7 6 5 4 3 2 scdh
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我遇到了一个真正令人困惑的错误,在过去的几个小时里我一直试图解决这个错误,但没有成功。我正在研究扑克实现。最初,我通过迭代循环生成卡片。 const suits = ['Heart', 'Spade'
我是一名优秀的程序员,十分优秀!