[Из песочницы] Пишем (недо)интерпретатор на Haskell с помощью alex и happy

habr.png

Комментарии (1)

  • 10 августа 2017 в 22:17

    0

    data Exp = Let String Exp Exp | Exp1 Exp1 deriving (Show)
    data Exp1 = Plus Exp1 Term | Minus Exp1 Term | Term Term deriving (Show)
    data Term = Mul Term Factor | Div Term Factor | Factor Factor deriving (Show)
    data Factor = Num Int | Var String | Brack Exp deriving (Show)
    

    А вот это читерство, можно было объявить и один тип Exp (благо что грамматика и так факторизована), тогда и код интерпретатора был сильно проще и уложился бы в одну функцию с паттернматчингом

© Habrahabr.ru