Copyright | (c) Niklas Broberg 2009 |
---|---|
License | BSD-style (see the file LICENSE.txt) |
Maintainer | Niklas Broberg, d00nibro@chalmers.se |
Stability | stable |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
Fixity information to give the parser so that infix operators can be parsed properly.
Synopsis
- data Fixity = Fixity ( Assoc ()) Int ( QName ())
- infix_ :: Int -> [ String ] -> [ Fixity ]
- infixl_ :: Int -> [ String ] -> [ Fixity ]
- infixr_ :: Int -> [ String ] -> [ Fixity ]
- preludeFixities :: [ Fixity ]
- baseFixities :: [ Fixity ]
-
class
AppFixity
ast
where
- applyFixities :: MonadFail m => [ Fixity ] -> ast SrcSpanInfo -> m (ast SrcSpanInfo )
Fixity representation
Operator fixities are represented by their associativity (left, right or none) and their precedence (0-9).
Instances
Eq Fixity Source # | |
Data Fixity Source # | |
Defined in Language.Haskell.Exts.Fixity gfoldl :: ( forall d b. Data d => c (d -> b) -> d -> c b) -> ( forall g. g -> c g) -> Fixity -> c Fixity Source # gunfold :: ( forall b r. Data b => c (b -> r) -> c r) -> ( forall r. r -> c r) -> Constr -> c Fixity Source # toConstr :: Fixity -> Constr Source # dataTypeOf :: Fixity -> DataType Source # dataCast1 :: Typeable t => ( forall d. Data d => c (t d)) -> Maybe (c Fixity ) Source # dataCast2 :: Typeable t => ( forall d e. ( Data d, Data e) => c (t d e)) -> Maybe (c Fixity ) Source # gmapT :: ( forall b. Data b => b -> b) -> Fixity -> Fixity Source # gmapQl :: (r -> r' -> r) -> r -> ( forall d. Data d => d -> r') -> Fixity -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> ( forall d. Data d => d -> r') -> Fixity -> r Source # gmapQ :: ( forall d. Data d => d -> u) -> Fixity -> [u] Source # gmapQi :: Int -> ( forall d. Data d => d -> u) -> Fixity -> u Source # gmapM :: Monad m => ( forall d. Data d => d -> m d) -> Fixity -> m Fixity Source # gmapMp :: MonadPlus m => ( forall d. Data d => d -> m d) -> Fixity -> m Fixity Source # gmapMo :: MonadPlus m => ( forall d. Data d => d -> m d) -> Fixity -> m Fixity Source # |
|
Ord Fixity Source # | |
Show Fixity Source # | |
The following three functions all create lists of fixities from textual representations of operators. The intended usage is e.g.
fixs = infixr_ 0 ["$","$!","`seq`"]
Note that the operators are expected as you would write them infix, i.e. with ` characters surrounding varid operators, and varsym operators written as is.
Collections of fixities
preludeFixities :: [ Fixity ] Source #
All fixities defined in the Prelude.
baseFixities :: [ Fixity ] Source #
All fixities defined in the base package.
Note that the
+++
operator appears in both Control.Arrows and
Text.ParserCombinators.ReadP. The listed precedence for
+++
in
this list is that of Control.Arrows.
Applying fixities to an AST
class AppFixity ast where Source #
All AST elements that may include expressions which in turn may need fixity tweaking will be instances of this class.
:: MonadFail m | |
=> [ Fixity ] |
The fixities to account for. |
-> ast SrcSpanInfo |
The element to tweak. |
-> m (ast SrcSpanInfo ) |
The same element, but with operator expressions updated, or a failure. |
Tweak any expressions in the element to account for the fixities given. Assumes that all operator expressions are fully left associative chains to begin with.