我需要为编程语言创建解析器。到目前为止,它完成了95%,我会说,除了一个小细节。Parsec解析许多问题
用这种语言编写的程序具有以下结构:
outputs
inputs
expressions
的要求是,输出不能与输入混合。例如:
x := output of int;
y := output of in;
.....
z := input of int;
t := input of in;
.....
expressions
我可以分析一个输出就好了,但如果我尝试使用(many1输出),允许多路输出,因为它试图解析输入,输出,这是行不通的。
我的主分析器看起来像这样:
prog =
do outs <- many1 output
ins <- many1 input
exs <- expressions
eof
return (Prog outs ins exs)
我知道这似乎很容易,但我尝试了很多东西,只是不能得到它的工作。请帮忙。
非常感谢。这完全解决了它。我没有意识到它们都以一个ident开始,并且被输出解析器使用。 – HaskellNoob 2010-10-30 14:12:12