packages feed

CoreErlang 0.0.1 → 0.0.2

raw patch · 6 files changed

+29/−244 lines, 6 filesdep ~basedep ~parsecnew-uploaderPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, parsec

API changes (from Hackage documentation)

+ Language.CoreErlang.Syntax: instance Data Alias
+ Language.CoreErlang.Syntax: instance Data Alt
+ Language.CoreErlang.Syntax: instance Data Atom
+ Language.CoreErlang.Syntax: instance Data Const
+ Language.CoreErlang.Syntax: instance Data Exp
+ Language.CoreErlang.Syntax: instance Data Exps
+ Language.CoreErlang.Syntax: instance Data FunDef
+ Language.CoreErlang.Syntax: instance Data Function
+ Language.CoreErlang.Syntax: instance Data Guard
+ Language.CoreErlang.Syntax: instance Data Literal
+ Language.CoreErlang.Syntax: instance Data Module
+ Language.CoreErlang.Syntax: instance Data Pat
+ Language.CoreErlang.Syntax: instance Data Pats
+ Language.CoreErlang.Syntax: instance Data TimeOut
+ Language.CoreErlang.Syntax: instance Data a => Data (Ann a)
+ Language.CoreErlang.Syntax: instance Data a => Data (BitString a)
+ Language.CoreErlang.Syntax: instance Data a => Data (List a)
+ Language.CoreErlang.Syntax: instance Typeable Alias
+ Language.CoreErlang.Syntax: instance Typeable Alt
+ Language.CoreErlang.Syntax: instance Typeable Atom
+ Language.CoreErlang.Syntax: instance Typeable Const
+ Language.CoreErlang.Syntax: instance Typeable Exp
+ Language.CoreErlang.Syntax: instance Typeable Exps
+ Language.CoreErlang.Syntax: instance Typeable FunDef
+ Language.CoreErlang.Syntax: instance Typeable Function
+ Language.CoreErlang.Syntax: instance Typeable Guard
+ Language.CoreErlang.Syntax: instance Typeable Literal
+ Language.CoreErlang.Syntax: instance Typeable Module
+ Language.CoreErlang.Syntax: instance Typeable Pat
+ Language.CoreErlang.Syntax: instance Typeable Pats
+ Language.CoreErlang.Syntax: instance Typeable TimeOut
+ Language.CoreErlang.Syntax: instance Typeable1 Ann
+ Language.CoreErlang.Syntax: instance Typeable1 BitString
+ Language.CoreErlang.Syntax: instance Typeable1 List

Files

CoreErlang.cabal view
@@ -1,13 +1,12 @@ name: CoreErlang-version: 0.0.1+version: 0.0.2 copyright: 2008, David Castro Pérez, Henrique Ferreiro García license: BSD3 license-file: LICENSE author:	David Castro Pérez <dcastrop@udc.es>         Henrique Ferreiro García <hferreiro@udc.es>-maintainer:	Henrique Ferreiro García <hferreiro@udc.es>-            David Castro Pérez <dcastrop@udc.es>-homepage: .+maintainer:	Alex Kropivny <alex.kropivny@gmail.com>+homepage: http://github.com/amtal/CoreErlang stability: Experimental category: Language synopsis: Manipulating Core Erlang source code@@ -28,6 +27,6 @@         Language.CoreErlang.Pretty,         Language.CoreErlang.Syntax   if flag(split-base)-    build-depends:	base >= 3, parsec == 2.1.0.0, pretty+    build-depends:	base >= 3 && < 5, parsec >= 2.1.0.0, pretty   else-    build-depends:	base < 3, parsec == 2.1.0.0+    build-depends:	base < 3, parsec >= 2.1.0.0
Language/CoreErlang/Parser.hs view
@@ -5,8 +5,7 @@ --                (c) David Castro Pérez 2008 -- License     :  BSD-style (see the file LICENSE) ----- Maintainer  :  Henrique Ferreiro García <hferreiro@udc.es>---                David Castro Pérez <dcastrop@udc.es>+-- Maintainer  :  Alex Kropivny <alex.kropivny@gmail.com> -- Stability   :  experimental -- Portability :  portable --@@ -166,7 +165,7 @@               return $ Function (a,i)  literal :: Parser Literal-literal = liftM LInt integer <|> liftM LFloat float <|>+literal = try (liftM LFloat float) <|> liftM LInt integer <|>           liftM LAtom atom <|> nil <|> echar <|> estring  nil :: Parser Literal
Language/CoreErlang/Pretty.hs view
@@ -5,8 +5,7 @@ --                (c) David Castro Pérez 2008 -- License     :  BSD-style (see the file LICENSE) ----- Maintainer  :  Henrique Ferreiro García---                David Castro Pérez+-- Maintainer  :  Alex Kropivny <alex.kropivny@gmail.com> -- Stability   :  experimental -- Portability :  portable --
Language/CoreErlang/Syntax.hs view
@@ -5,8 +5,7 @@ --                (c) David Castro Pérez 2008 -- License     :  BSD-style (see the file LICENSE) ----- Maintainer  :  Henrique Ferreiro García <hferreiro@udc.es>---                David Castro Pérez <dcastrop@udc.es>+-- Maintainer  :  Alex Kropivny <alex.kropivny@gmail.com> -- Stability   :  experimental -- Portability :  portable --@@ -14,6 +13,7 @@ -- <http://www.it.uu.se/research/group/hipe/cerl/>  -----------------------------------------------------------------------------+{-# LANGUAGE DeriveDataTypeable #-}  module Language.CoreErlang.Syntax (     -- * Modules@@ -33,33 +33,35 @@     Ann(..),   ) where +import Data.Data+ -- | This type is used to represent variables type Var = String  -- | This type is used to represent atoms data Atom = Atom String- deriving (Eq,Ord,Show)+ deriving (Eq,Ord,Show,Data,Typeable)  -- | This type is used to represent function names data Function = Function (Atom,Integer)-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | A CoreErlang source module. data Module         = Module Atom [Function] [(Atom,Const)] [FunDef]-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | This type is used to represent constants data Const         = CLit Literal         | CTuple [Const]         | CList (List Const)-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | This type is used to represent lambdas data FunDef         = FunDef (Ann Function) (Ann Exp)-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | /literal/. -- Values of this type hold the abstract value of the literal, not the@@ -72,13 +74,13 @@         | LFloat   Double   -- ^ floating point literal         | LAtom   Atom      -- ^ atom literal         | LNil              -- ^ empty list-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | CoreErlang expressions. data Exps         = Exp (Ann Exp)        -- ^ single expression         | Exps (Ann [Ann Exp]) -- ^ list of expressions-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | CoreErlang expression. data Exp@@ -99,28 +101,28 @@         | Try Exps ([Var],Exps) ([Var],Exps) -- ^ try expression         | Rec [Ann Alt] TimeOut      -- ^ receive expression         | Catch Exps                 -- ^ catch expression-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | A bitstring. data BitString a         = BitString a [Exps]-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | A list of expressions data List a         = L [a]         | LL [a] a-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | An /alt/ in a @case@ expression data Alt         = Alt Pats Guard Exps-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  data Pats         = Pat Pat    -- ^ single pattern         | Pats [Pat] -- ^ list of patterns-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | A pattern, to be matched against a value. data Pat@@ -130,26 +132,26 @@         | PList (List Pat)         -- ^ list pattern         | PBinary [BitString Pat]  -- ^ list of bitstring patterns         | PAlias Alias             -- ^ alias pattern-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | An alias, used in patterns data Alias         = Alias Var Pat-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | A guarded alternative @when@ /exp/ @->@ /exp/. -- The first expression will be Boolean-valued. data Guard         = Guard Exps-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | The timeout of a receive expression data TimeOut         = TimeOut Exps Exps-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)  -- | An annotation for modules, variables, ... data Ann a         = Constr a      -- ^ core erlang construct         | Ann a [Const] -- ^ core erlang annotated construct-  deriving (Eq,Ord,Show)+  deriving (Eq,Ord,Show,Data,Typeable)
− hcar/hcar.sty
@@ -1,183 +0,0 @@-\ProvidesPackage{hcar}--\newif\ifhcarfinal-\hcarfinalfalse-\DeclareOption{final}{\hcarfinaltrue}-\ProcessOptions--\RequirePackage{keyval}-\RequirePackage{color}-\RequirePackage{array}--\ifhcarfinal-  \RequirePackage[T1]{fontenc}-  \RequirePackage{lmodern}-  \RequirePackage{tabularx}-  \RequirePackage{booktabs}-  \RequirePackage{framed}-  \RequirePackage[obeyspaces,T1]{url}-  \RequirePackage-    [bookmarks=true,colorlinks=true,-     urlcolor=urlcolor,-     linkcolor=linkcolor,-     breaklinks=true,-     pdftitle={Haskell Communities and Activities Report}]%-    {hyperref}-\else-  \RequirePackage[obeyspaces]{url}-\fi-\urlstyle{sf}--\definecolor{urlcolor}{rgb}{0.1,0.3,0}-\definecolor{linkcolor}{rgb}{0.3,0,0}-\definecolor{shadecolor}{rgb}{0.9,0.95,1}%{0.98,1.0,0.95}-\definecolor{framecolor}{gray}{0.9}-\definecolor{oldgray}{gray}{0.7}--\newcommand{\Contact}{\subsubsection*{Contact}}-\newcommand{\FurtherReading}{\subsubsection*{Further reading}}-\newcommand{\FuturePlans}{\subsubsection*{Future plans}}-\newcommand{\Separate}{\smallskip\noindent}-\newcommand{\FinalNote}{\smallskip\noindent}--\newcommand{\urlpart}{\begingroup\urlstyle{sf}\Url}-\newcommand{\email}[1]{\href{mailto:\EMailRepl{#1}{ at }}{$\langle$\urlpart{#1}$\rangle$}}-\newcommand{\cref}[1]{($\rightarrow\,$\ref{#1})}--\ifhcarfinal-  \let\hcarshaded=\shaded-  \let\endhcarshaded=\endshaded-\else-  \newsavebox{\shadedbox}-  \newlength{\shadedboxwidth}-  \def\hcarshaded-    {\begingroup-     \setlength{\shadedboxwidth}{\linewidth}%-     \addtolength{\shadedboxwidth}{-2\fboxsep}%-     \begin{lrbox}{\shadedbox}%-     \begin{minipage}{\shadedboxwidth}\ignorespaces}-  \def\endhcarshaded-    {\end{minipage}%-     \end{lrbox}%-     \noindent-     \colorbox{shadecolor}{\usebox{\shadedbox}}%-     \endgroup}-\fi--\ifhcarfinal-  \newenvironment{hcartabularx}-    {\tabularx{\linewidth}{l>{\raggedleft}X}}-    {\endtabularx}-\else-  \newenvironment{hcartabularx}-    {\begin{tabular}{@{}m{.3\linewidth}@{}>{\raggedleft}p{.7\linewidth}@{}}}-    {\end{tabular}}-\fi--\ifhcarfinal-  \let\hcartoprule=\toprule-  \let\hcarbottomrule=\bottomrule-\else-  \let\hcartoprule=\hline-  \let\hcarbottomrule=\hline-\fi--\define@key{hcarentry}{chapter}[]{\let\level\chapter}-\define@key{hcarentry}{section}[]{\let\level\section}-\define@key{hcarentry}{subsection}[]{\let\level\subsection}-\define@key{hcarentry}{subsubsection}[]{\let\level\subsubsection}-\define@key{hcarentry}{level}{\let\level=#1}-%\define@key{hcarentry}{label}{\def\entrylabel{\label{#1}}}-\define@key{hcarentry}{new}[]%-  {\let\startnew=\hcarshaded\let\stopnew=\endhcarshaded-   \def\startupdated{\let\orig@addv\addvspace\let\addvspace\@gobble}%-   \def\stopupdated{\let\addvspace\orig@addv}}-\define@key{hcarentry}{old}[]{\def\normalcolor{\color{oldgray}}\color{oldgray}}%-\define@key{hcarentry}{updated}[]%-  {\def\startupdated-    {\leavevmode\let\orig@addv\addvspace\let\addvspace\@gobble\hcarshaded}%-   \def\stopupdated{\endhcarshaded\let\addvspace\orig@addv}}--\def\@makeheadererror{\PackageError{hcar}{hcarentry without header}{}}--\newenvironment{hcarentry}[2][]%-{\let\level\subsection- \let\startupdated=\empty\let\stopupdated=\empty- \let\startnew=\empty\let\stopnew=\empty-%\let\entrylabel=\empty- \global\let\@makeheaderwarning\@makeheadererror- \setkeys{hcarentry}{#1}%- \startnew\startupdated- \level{#2}%- % test:- \global\let\@currentlabel\@currentlabel-%\stopupdated- \let\report@\empty- \let\groupleaders@\empty- \let\members@\empty- \let\contributors@\empty- \let\participants@\empty- \let\developers@\empty- \let\maintainer@\empty- \let\status@\empty- \let\release@\empty- \let\portability@\empty- \let\entry@\empty}%-{\stopnew\@makeheaderwarning}%--\renewcommand{\labelitemi}{$\circ$}-\settowidth{\leftmargini}{\labelitemi}-\addtolength{\leftmargini}{\labelsep}--\newcommand*\MakeKey[2]%-  {\expandafter\def\csname #1\endcsname##1%-     {\expandafter\def\csname #1@\endcsname{\Key@{#2}{##1}}\ignorespaces}}-\MakeKey{report}{Report by:}-\MakeKey{status}{Status:}-\MakeKey{groupleaders}{Group leaders:}-\MakeKey{members}{Members:}-\MakeKey{contributors}{Contributors:}-\MakeKey{participants}{Participants:}-\MakeKey{developers}{Developers:}-\MakeKey{maintainer}{Maintainer:}-\MakeKey{release}{Current release:}-\MakeKey{portability}{Portability:}-\MakeKey{entry}{Entry:}--\newcommand\Key@[2]{#1 & #2\tabularnewline}--\newcommand\makeheader-{\smallskip- \begingroup- \sffamily- \small- \noindent- \let\ohrule\hrule- \def\hrule{\color{framecolor}\ohrule}%- \begin{hcartabularx}- \hline- \report@- \groupleaders@- \members@- \participants@- \developers@- \contributors@- \maintainer@- \status@- \release@- \portability@- \hcarbottomrule- \end{hcartabularx}- \endgroup- \stopupdated- \global\let\@makeheaderwarning\empty- \@afterindentfalse- \@xsect\smallskipamount}--% columns/linebreaks, interchanged-\newcommand\NCi{&\let\NX\NCii}%-\newcommand\NCii{&\let\NX\NL}%-\newcommand\NL{\\\let\NX\NCi}%-\let\NX\NCi-\newcommand\hcareditor[1]{&#1 (ed.)&\\}-\newcommand\hcarauthor[1]{#1\NX}%
− hcar/template.tex
@@ -1,31 +0,0 @@-\documentclass{article}--\usepackage{hcar}--\begin{document}--\begin{hcarentry}{CoreErlang}-\report{Henrique Ferreiro Garc\'{i}a}-\participants{David Castro P\'{e}rez}-\status{Parses and pretty-prints all of Core Erlang}-\makeheader--CoreErlang is a haskell library which consists on a parser and-pretty-printer for the intermediate language used by Erlang. The parser uses-the Parsec library and the pretty-printer was modelled after the-corresponding module of the haskell-src package. It also exposes a Syntax-module which allows easy manipulation of terms.--It is able to parse and pretty print all of Core Erlang. Remaining work-includes customizing the pretty printer and refining the syntax interface.--\FurtherReading--\begin{itemize}-\item It can be downloaded from hackage at: -\item A darcs repository is available at: \url{http://code.haskell.org/CoreErlang}-\end{itemize}--\end{hcarentry}--\end{document}