Я печатаю AST, чтобы отформатировать исходный файл, из которого AST создается с использованием Megaparsec. Комментарии отсутствуют в AST, но я намерен сохранить их после переформатирования. Есть ли способ в Megaparsec получить все комментарии (как для строковых, так и для блочных комментариев), аннотированные с информацией об источнике, либо внутри AST как узел или снаружи отдельно, как это сделано в Language.Haskell.Exts.Annotated?
Как получить комментарии с помощью Megaparsec?
comment
Что не так с первым подходом? Не глядя на исходный код, я не уверен, как Megaparsec обрабатывает комментарии, если вы предоставите ему синтаксический анализатор комментариев, но я подозреваю, что он просто удаляет их. Таким образом, правильным решением было бы изменить свой AST, чтобы включить комментарии и предоставить синтаксический анализатор, который никогда не преуспеет в Megaparsec для синтаксического анализатора комментариев (или Nothing, если для этого требуется Может быть). Это оставлено как комментарий, поскольку я не исследовал, что делает Megaparsec.
- person cole   schedule 22.05.2021