[英]Elm Parser cannot Return String Inside Curly Braces
我是Elm解析器庫的新手,我正試圖擺脫使用正則表達式。 我需要解析一個字符串並返回雙花括號內的每個字符串的字符串列表,如{{return this}}
我正在使用Parser.sequence
函數,這是我的代碼
block : Parser (List String)
block =
Parser.sequence
{ start = "{{"
, separator = ""
, end = "}}"
, spaces = spaces
, item = getSource
, trailing = Optional
}
我的問題是,我應該在item
字段中做什么來在大括號之間返回字符串。 謝謝!
如何為單詞創建自己的解析器呢?
word : Parser String
word =
getChompedString <|
succeed ()
|. chompIf Char.isAlphaNum
|. chompWhile Char.isAlphaNum
它實際上會選擇alphanum字符,因此{{return textABC123}}
將導致Ok ["return","textASD234"]
。 對於{{return text}}
Char.isLower
就足夠了。
然后你可以按sequence
使用它而不是getSource
(因為getSource
也會阻塞}
字符,這在當前情況下是不合適的):
block : Parser (List String)
block =
Parser.sequence
{ start = "{{"
, separator = ""
, end = "}}"
, spaces = spaces
, item = word
, trailing = Optional
}
這是一個演示它的ellie-app示例 。
您需要一個返回Parser String
的函數。 你可以使用變量函數:
block : Parser (List String)
block =
Parser.sequence
{ start = "{{"
, separator = ""
, end = "}}"
, spaces = spaces
, item =
Parser.variable
{ start = Char.isAlphaNum
, inner = Char.isAlphaNum
, reserved = Set.empty
}
, trailing = Optional
}
例:
> Parser.run block "{{foo bar baz}}"
Ok ["foo","bar","baz"]
: Result (List Parser.DeadEnd) (List String)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.