我試圖寫的一個小骰子符號解析骰子符號(例如,「2D6」,其中2
是count
和6
是死size
)使用所述文庫中elm-tools/parser
解析器。用榆樹
的表達式應該是在形式
[int] "d" int
,但我想不出來解析可選領先int
(這將默認爲1
,如果缺少它)。
到目前爲止,我已經想出了這一點:
import Parser exposing (..)
type alias Roll =
{ count : Int
, size : Int
}
die : Parser Int
die =
succeed identity
|. keyword "d"
|= int
,我想解析器上一次成功的解析返回一個Roll
,但我不知道如何着手。
我猜我需要使用oneOf
,但我不知道如何。
不幸的是,我找不到使用這個庫的任何好例子。
這個答案[不解析你給出的''2d6「'](https://ellie-app.com/3YVLMkCqM6ra1/0)的原始示例,因爲'int'如果遇到字母數字字符,則失敗。然而,如果你在'2'後有一個空格,它會成功。你有沒有改變要求? –
不,我現在正在用「private」整數解析器而不是「int」修復代碼。看起來'int'在'd'上被混淆了,因爲它是一個合法的十六進制數字。 – Ralph
如果乍得的答案幫助了你,你應該加入它,也許接受它作爲最有用的答案。 – rubystallion