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