Мне нужно создать парсер для языка программирования.До сих пор это сделано на 95%, я бы сказал, за исключением крошечной детали.
Программа, написанная на этом языке, имеет следующую структуру:
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)
Я знаю, это кажется легким, но я много чего перепробовал и просто не могу заставить его работать.Пожалуйста, помогите.