【问题标题】:Parsing string literals with FParsec?用 FParsec 解析字符串文字?
【发布时间】:2012-02-08 23:23:24
【问题描述】:

我想使用 FParsec 解析字符串文字。 “字符串文字”是指在开始和结束引号之间的东西(在我的例子中 - 单引号):

'Please, switch off your mobile phone'

我目前正在做的事情如下:

let string = between (pstring "'") (pstring "'") (manySatisfy isLetter)

但这会在第一个字母被消耗后停止。有没有办法让它变得贪婪?

【问题讨论】:

标签: parsing f# fparsec


【解决方案1】:

它已经很贪婪了; manySatisfy isLetter 解析输入流中的字母序列。

问题在于解析器因, 或空格而失败,因为它们不是字母。可以通过以下方式修复:

manyChars (noneOf "'")

或更明确地使用:

manySatisfy ((<>) '\'')

改为。

【讨论】:

  • 我相信使用像manySatisfy这样的字符串解析器应该比manyCharssatisfy的组合更快。
  • 你说得对,我忘了manySatisfy返回一个string
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多