我需要为编程语言创建一个解析器。到目前为止,它已经完成了 95%,我会说,除了一个小细节。
用这种语言编写的程序具有以下结构:
outputs
inputs
expressions
要求是输出不能与输入混合。例如:
x := output of int;
y := output of in;
.....
z := input of int;
t := input of in;
.....
expressions
我可以很好地解析单个输出,但是如果我尝试使用 (many1 output) 来允许多个输出,它就不起作用,因为它试图将输入解析为输出。
我的主要解析器如下所示:
prog =
do outs <- many1 output
ins <- many1 input
exs <- expressions
eof
return (Prog outs ins exs)
我知道这看起来很容易,但我尝试了很多东西,但无法让它发挥作用。请帮忙。