2016-02-07 3 views
2

Я пытаюсь разобрать исходный код Haskell и генерировать дерево решений для анализа различных путей, которые могут выполнять программы Haskell. haskell-src-exts дает разумное представление, но не имеет связанной с ним информации о типе.
Предоставляет ли GHC или какой-либо другой инструмент эту функциональность?Получение Parsed и тип-аннотированный код Haskell

+0

Если вы хотите получить информацию о типе любого выражения (верхнего уровня или нет) в исходном файле haskell, вы можете проверить ['ghc-mod'] (http://hackage.haskell.org/ пакет/ghc-mod). – zakyggaps

+0

Я хочу сгенерировать дерево из исходного кода программы, чтобы проанализировать потенциальные пути, которые может принять программа. Простой текстовый синтаксический анализ не является достаточным для моей информации о потреблении и необходимости в типе информации, а также в узлах дерева, которое я собираюсь сгенерировать. – ankitrokdeonsns

+0

Вам нужно сделать это на исходном уровне? Было бы намного проще реализовать это на Core, где вложенное совпадение шаблонов уже сглажено. – Cactus

ответ

1

Нет инструмента, кроме GHC, который особенно хорошо разбирается в методе проверки Haskell на данный момент. A haskell-type-exts был в разработке до src-exts, но он не был завершен.

Таким образом, вы можете использовать разумную оболочку для API GHC, такую ​​как hint, и вызывать ее в подвыражениях, которые вы хотите проверить, используя свой type inference api.

Это довольно болезненный подход, но я не могу думать о гораздо лучше. Если вы заинтересованы только в работе над haskell-, например, как в качестве упражнения, вместо этого вы можете импортировать компилятор PureScript в качестве библиотеки, а затем вы сможете получить полностью типированное дерево синтаксиса, ,

В качестве альтернативы, вы можете попробовать ориентироваться в чащу самого GHC API, чтобы получить полностью typechecked источник ...

Если вы решили пойти по этому пути, this answer может вам начать.

Смежные вопросы