我正在尝试弄清楚如何编写一个 Haskell Parsec 解析器来使用这些 Ruby 表达式中的任何一个:
hello("test", 'test2')
my_variable
hello(world("test"))
(hello + " " + world)
当解析器在任何这些项目的开头开始解析时,它应该返回整个字符串并在项目的末尾停止解析。如果其中任何一项后跟逗号,则不应使用该逗号。
我试过几次为这些类型的表达式编写解析器,但没有成功。没有必要解析这些表达式的子组件——我不需要完整的 AST。我只需要消耗和捕获这些类型的块。
我认为,除了任何前面的标识符之外,一个适当的启发式方法可能只涉及平衡任何括号并吃掉外部平衡括号内的所有内容。但是我需要一些帮助来编写一个以这种方式工作的解析器。