W ramach GHC jest etap tłumaczenia kodu źródłowego Haskell na Core, a następnie (niekoniecznie jako następny krok) tłumaczenia Core na STG. Jednak jedno zagadnienie uchodzi mi z mojego zrozumienia - kiedy mamy "normalny" kod (to znaczy zwykły tekst) i kiedy coś faktycznie żyje w pamięci, jak abstrakcyjne drzewa składniowe (AST)?Rurociąg GHC: Core, STG - ASTs lub tekst?
A żeby moje pytanie nieco bardziej precyzyjny, będę dzielić go na części:
1) w parsowania pliku źródłowego fazie Haskell, mamy natychmiast skonstruować ASTs języka podstawowej? Jeśli nie, to wydaje mi się, że musimy skonstruować AST pełnego Haskella (co wydaje się dziwne), a następnie albo przetransformować je do AST Rdzenia, albo najpierw do tekstowego przedstawienia ich w Rdzeniu i ponownie wywołać parsowanie w celu uzyskania AST AST.
2) prawie to samo pytanie dotyczy rdzenia do STG przejściowym (ale w tym przypadku myślę, że mogę zakładać, że to, co mamy, jest ASTs rdzenia - poprawne)
Teraz to jasne - dziękuję! Aha, i linki wydają się być zepsute ... – socumbersome
Spójrz [tutaj] (https://github.com/ghc/ghc/tree/ghc-7.8/compiler/hsSyn), w szczególności [tutaj] (https: //github.com/ghc/ghc/blob/ghc-7.8/compiler/hsSyn/HsExpr.lhs), a następnie [tutaj] (https://github.com/ghc/ghc/blob/ghc-7.8/compiler/ coreSyn/CoreSyn.lhs) i [tutaj] (https://github.com/ghc/ghc/blob/ghc-7.8/compiler/stgSyn/StgSyn.lhs). –
Naprawiono linki. Otrzymuję to za próbę stworzenia czystych linków https: // www.haskell.org/ghc/'zamiast dziwnych linków https: // downloads.haskell.org/~ ghc /'. –