{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-} {-# language TemplateHaskell #-} {-| Module : Language.Python.Syntax.Comment Copyright : (C) CSIRO 2017-2018 License : BSD3 Maintainer : Isaac Elliott <isaace71295@gmail.com> Stability : experimental Portability : non-portable -} module Language.Python.Syntax.Comment where import Data.Deriving (deriveEq1, deriveOrd1) -- | A Python single-line comment, such as on the following line: -- -- @ -- y = x + 4 # add four to the value of x -- @ -- -- In this case, the structure parsed would be -- -- @ -- MkComment () " add four to the value of x" -- @ -- -- with the hash being inferred, and the space after the hash being preserved. -- -- Python does not have multi-line comments. There is a common convention of -- using a multi-line string expression as a multi-line comment, since a -- string expression is a no-op statement. Such multi-line comments are -- __NOT__ represented with this data type, but rather as normal -- string expressions (since that's what they are). data Comment a = MkComment { _commentAnn :: a , _commentValue :: String } deriving (Eq, Ord, Show, Functor, Foldable, Traversable) deriveEq1 ''Comment deriveOrd1 ''Comment