首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用FParsec解析方法参数

用FParsec解析方法参数
EN

Stack Overflow用户
提问于 2011-08-26 03:00:51
回答 1查看 389关注 0票数 4

我试图用FParsec实现一个方法参数解析器。

我想知道在FParsec本身中是否有一些已经实现的特性可以帮助我实现这个目的?我问这个问题,因为FParsec在处理操作符优先级时提供了一些工具,所以可能也有这样的东西。

解析开始和结束大括号是相当直截了当。头痛之处在于处理以下3种可能发生的情况:

方法参数可以包括:

  • no参数,
  • one参数,
  • 多个参数(均为逗号分隔)。请记住,最后一个参数之前不能用逗号!

我已经有了一些关于如何自己实现这个功能的线索,以防没有任何内置特性,即使用<|>操作符和流复制,但是如果可能的话,我想远离这种低级的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-26 03:12:14

我相信你想使用sepBy

代码语言:javascript
复制
type AST =
| Arguments of AST list
| Argument of string * string

let parseArguments =
    spaces 
    >>. pchar '(' 
    >>. spaces 
    >>. sepBy parseArgument (pchar ',') 
    .>> spaces 
    .>> pchar ')' 
    |>> Arguments

由devoured_elysium编辑:

上面的代码是正确的,尽管它没有编译。我将在这里发布我的编译版本,这样,如果有人只想尝试代码而不费吹灰之力,他们就可以这样做。

代码语言:javascript
复制
type AST =
| Arguments of AST list
| Argument of string

let parseArguments =
    spaces 
    >>. pchar '(' 
    >>. spaces 
    >>. sepBy (many1Satisfy isLetter |>> Argument) (pchar ',')
    .>> spaces 
    .>> pchar ')'
    |>> Arguments

test parseArguments "(a,b,c)" //succeed
test parseArguments "(a,b,c,)" //fail
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7199589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档