packages feed

language-ats 0.2.0.0 → 0.2.0.1

raw patch · 5 files changed

+29/−34 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Language.ATS: BoolTok :: AlexPosn -> Bool -> Token
+ Language.ATS: View :: AlexPosn -> Addendum -> Sort
- Language.ATS: AbsType :: AlexPosn -> String -> (Maybe [SortArg]) -> (Maybe Type) -> Declaration
+ Language.ATS: AbsType :: AlexPosn -> String -> SortArgs -> (Maybe Type) -> Declaration
- Language.ATS: AbsVT0p :: AlexPosn -> String -> (Maybe [SortArg]) -> (Maybe Type) -> Declaration
+ Language.ATS: AbsVT0p :: AlexPosn -> String -> SortArgs -> (Maybe Type) -> Declaration
- Language.ATS: AbsViewType :: AlexPosn -> String -> (Maybe [SortArg]) -> (Maybe Type) -> Declaration
+ Language.ATS: AbsViewType :: AlexPosn -> String -> SortArgs -> (Maybe Type) -> Declaration
- Language.ATS: DataProp :: AlexPosn -> String -> [Arg] -> [DataPropLeaf] -> Declaration
+ Language.ATS: DataProp :: AlexPosn -> String -> SortArgs -> [DataPropLeaf] -> Declaration
- Language.ATS: SortDef :: AlexPosn -> String -> Type -> Declaration
+ Language.ATS: SortDef :: AlexPosn -> String -> Sort -> Declaration
- Language.ATS: SumType :: String -> Maybe [SortArg] -> [Leaf] -> Declaration
+ Language.ATS: SumType :: String -> SortArgs -> [Leaf] -> Declaration
- Language.ATS: SumViewType :: String -> Maybe [SortArg] -> [Leaf] -> Declaration
+ Language.ATS: SumViewType :: String -> SortArgs -> [Leaf] -> Declaration
- Language.ATS: TypeDef :: AlexPosn -> String -> (Maybe [SortArg]) -> Type -> Declaration
+ Language.ATS: TypeDef :: AlexPosn -> String -> SortArgs -> Type -> Declaration
- Language.ATS: ViewTypeDef :: AlexPosn -> String -> (Maybe [SortArg]) -> Type -> Declaration
+ Language.ATS: ViewTypeDef :: AlexPosn -> String -> SortArgs -> Type -> Declaration
- Language.ATS: [typeArgs] :: Declaration -> Maybe [SortArg]
+ Language.ATS: [typeArgs] :: Declaration -> SortArgs

Files

language-ats.cabal view
@@ -1,5 +1,5 @@ name:                language-ats-version:             0.2.0.0+version:             0.2.0.1 synopsis:            Parser and pretty-printer for ATS. description:         Parser and pretty-printer for [ATS](http://www.ats-lang.org/), written with Happy and Alex. license:             BSD3
src/Language/ATS/Lexer.x view
@@ -22,8 +22,6 @@  import Control.Composition import Data.Data (Typeable, Data)-import Data.Char (toUpper, toLower)-import Control.Lens (over, _head) import Control.DeepSeq (NFData) import GHC.Generics (Generic) import Text.PrettyPrint.ANSI.Leijen hiding (line, bool, column, (<$>))@@ -48,9 +46,6 @@  $br = [\<\>] --- Boolean literals-@bool = (true | false)- -- Integer @integer = $digit+ @time_lit = $digit+ u@@ -208,7 +203,6 @@     @char_lit                { tok (\p s -> CharTok p (toChar s)) }     @lambda                  { tok (\p s -> Arrow p s) }     @func_type               { tok (\p s -> FuncType p s) }-    @bool                    { tok (\p s -> BoolTok p (read (over _head toUpper s)))}     @time_lit                { tok (\p s -> TimeTok p s) }     @integer                 { tok (\p s -> IntTok p (read s)) } -- FIXME shouldn't fail silenty on overflow     @float                   { tok (\p s -> FloatTok p (read s)) }@@ -321,7 +315,6 @@  data Token = Identifier AlexPosn String            | Keyword AlexPosn Keyword-           | BoolTok AlexPosn Bool            | IntTok AlexPosn Int            | FloatTok AlexPosn Float            | CharTok AlexPosn Char@@ -425,7 +418,6 @@     pretty (Identifier _ s) = text s     pretty (IdentifierSpace _ s) = text s     pretty (Keyword _ kw) = pretty kw-    pretty (BoolTok _ b) = text $ over _head toLower (show b)     pretty (IntTok _ i) = pretty i     pretty (FloatTok _ x) = pretty x     pretty (CharTok _ c) = squotes (pretty c)@@ -453,7 +445,6 @@ token_posn (Identifier p _) = p token_posn (IdentifierSpace p _) = p token_posn (Keyword p _) = p-token_posn (BoolTok p _) = p token_posn (IntTok p _) = p token_posn (FloatTok p _) = p token_posn (StringTok p _) = p
src/Language/ATS/Parser.y view
@@ -101,7 +101,6 @@     propdef { Keyword $$ KwPropdef }     list { Keyword $$ (KwListLit "") }     list_vt { Keyword $$ (KwListLit "_vt") }-    boolLit { BoolTok _ $$ }     timeLit { TimeTok _ $$ }     intLit { IntTok _ $$ }     floatLit { FloatTok _ $$ }@@ -220,7 +219,6 @@      | Type prfTransform underscore { AsProof $1 Nothing }      | view at Type { ViewType $1 $3 }      | viewPlusMinus { ViewLiteral $1 }-     | view { ViewLiteral None }      | Existential Type { Ex $1 $2 }      | Universal Type { ForA $1 $2 }      | Type at Type { At $2 (Just $1) $3 }@@ -255,8 +253,7 @@     | StaticExpression { Arg (Second (ConcreteType $1)) }  -- | Parse a literal-Literal : boolLit { BoolLit $1 }-        | timeLit { TimeLit $1 }+Literal : timeLit { TimeLit $1 }         | intLit { IntLit $1 }         | floatLit { FloatLit $1 }         | string { StringLit $1 }@@ -368,7 +365,6 @@                  | StaticExpression BinOp StaticExpression { StaticBinary $2 $1 $3 }                  | intLit { StaticInt $1 }                  | doubleParens { StaticVoid $1 }-                 | boolLit { StaticBool $1 }                  | sif StaticExpression then StaticExpression else StaticExpression { Sif $2 $4 $6 } -- TODO separate type for static expressions                  | identifierSpace { StaticVal (Unqualified $ to_string $1) }                  | Name openParen StaticArgs closeParen { SCall $1 $3 }@@ -443,6 +439,7 @@      | vt0pPlain { Vt0p None }      | vt0pCo { Vt0p Plus }      | addr { Addr }+     | view { View $1 None }       | IdentifierOr { NamedSort $1 }  QuantifierArgs : IdentifierOr { [$1] }@@ -611,14 +608,13 @@             | lsqbracket {% Left $ Expected $1 "Function signature" "[" }  -- | Parse affiliated `sortdef`s-AndSort : AndSort and IdentifierOr eq Type { AndD $1 (SortDef $2 $3 $5) } -- TODO figure out if this is building up the slow way-        | sortdef IdentifierOr eq Type { SortDef $1 $2 $4 }+AndSort : AndSort and IdentifierOr eq Sort { AndD $1 (SortDef $2 $3 $5) } -- TODO figure out if this is building up the slow way+        | sortdef IdentifierOr eq Sort { SortDef $1 $2 $4 } --- FIXME stadef r() = file_mode_r()-AndStadef : stadef boolLit eq Name { Stadef (over _head toLower (show $2)) $4 [] }-          | stadef boolLit eq identifierSpace { Stadef (over _head toLower (show $2)) (Unqualified $ to_string $4) [] }-          | AndStadef and stadef boolLit eq identifierSpace { AndD $1 (Stadef (over _head toLower (show $4)) (Unqualified $ to_string $6) []) }-          | AndStadef and stadef boolLit eq identifier { AndD $1 (Stadef (over _head toLower (show $4)) (Unqualified $ to_string $6) []) }+AndStadef : stadef IdentifierOr eq Name { Stadef $2 $4 [] }+          | stadef IdentifierOr eq identifierSpace { Stadef $2 (Unqualified $ to_string $4) [] }+          | AndStadef and stadef IdentifierOr eq identifierSpace { AndD $1 (Stadef $4 (Unqualified $ to_string $6) []) }+          | AndStadef and stadef IdentifierOr eq identifier { AndD $1 (Stadef $4 (Unqualified $ to_string $6) []) }  StafunDecl : prfun PreFunction { Func $1 (PrFun $2) }            | prfn PreFunction { Func $1 (PrFn $2) }@@ -658,6 +654,9 @@ SortArg : IdentifierOr colon Sort { [ SortArg $1 $3 ] }         | SortArg comma IdentifierOr colon Sort { SortArg $3 $5 : $1 }         | SortArg comma IdentifierOr { Anonymous (NamedSort $3) : $1 }+        | SortArg comma Sort { Anonymous $3 : $1 }+        | IdentifierOr { [ Anonymous (NamedSort $1) ] }+        | Sort { [Anonymous $1] }  SortArgs : openParen SortArg closeParen { Just $2 }          | doubleParens { Just [] }@@ -674,7 +673,7 @@          | absview IdentifierOr openParen FullArgs closeParen MaybeType { AbsView $1 $2 $4 $6 }          | abstype IdentifierOr SortArgs MaybeType { AbsType $1 $2 $3 $4 }          | absvtype IdentifierOr SortArgs MaybeType { AbsViewType $1 $2 $3 $4 }-         | dataprop IdentifierOr openParen FullArgs closeParen eq DataPropLeaves { DataProp $1 $2 $4 $7 }+         | dataprop IdentifierOr SortArgs eq DataPropLeaves { DataProp $1 $2 $3 $5 }          | absprop IdentifierOr openParen FullArgs closeParen { AbsProp $1 $2 $4 }          | AndSort { $1 }          | AndStadef { $1 }
src/Language/ATS/PrettyPrint.hs view
@@ -272,10 +272,12 @@     pretty (Vt0p ad)     = "vt@ype" <> pretty ad     pretty (NamedSort s) = text s     pretty Addr          = "addr"+    pretty (View _ t)    = "view" <> pretty t  instance Pretty Type where     pretty = cata a where         a (NamedF n)              = pretty n+        a (ViewTypeF _ t)         = "view@" <> parens t         a (ExF e t)               = pretty e <+> t         a (DependentF n ts)       = pretty n <> parens (mconcat (punctuate ", " (fmap pretty (reverse ts))))         a (ForAF u t)             = pretty u <+> t@@ -290,7 +292,6 @@         a (ConcreteTypeF e)       = pretty e         a (TupleF _ ts)           = parens (mconcat (punctuate ", " (fmap pretty (reverse ts))))         a (RefTypeF t)            = "&" <> t-        a (ViewTypeF _ t)         = "view@" <> parens t         a (FunctionTypeF s t t')  = t <+> string s <+> t'         a (ViewLiteralF c)        = "view" <> pretty c         a NoneTypeF{}             = "()"@@ -548,7 +549,7 @@     pretty (Func _ (PrFun pref))           = "prfun" </> pretty pref     pretty (Func _ (PrFn pref))            = "prfn" </> pretty pref     pretty (Extern _ d)                    = "extern" <$> pretty d-    pretty (DataProp _ s as ls)            = "dataprop" <+> text s <> prettyArgs as <+> "=" <$> prettyDL ls+    pretty (DataProp _ s as ls)            = "dataprop" <+> text s <> prettySortArgs as <+> "=" <$> prettyDL ls     pretty (ViewTypeDef _ s as t)          = "vtypedef" <+> text s <> prettySortArgs as <+> "=" <#> pretty t     pretty (TypeDef _ s as t)              = "typedef" <+> text s <> prettySortArgs as <+> "=" <+> pretty t     pretty (AbsProp _ n as)                = "absprop" <+> text n <+> prettyArgs as
src/Language/ATS/Types.hs view
@@ -43,6 +43,7 @@     , StackFunction (..)     , Sort (..)     , SortArg (..)+    , SortArgs     , rewriteATS     , rewriteDecl     -- * Lenses@@ -75,6 +76,8 @@ data Leaf = Leaf { _constructorUniversals :: [Universal], name :: String, constructorArgs :: [String], maybeType :: Maybe Type }     deriving (Show, Eq, Generic, NFData) +type SortArgs = Maybe [SortArg]+ -- | Declare something in a scope (a function, value, action, etc.) data Declaration = Func AlexPosn Function                  | Impl [Arg] Implementation -- TODO do something better for implicit universals@@ -88,23 +91,23 @@                  | Staload Bool (Maybe String) String                  | Stadef String Name [Type]                  | CBlock String-                 | TypeDef AlexPosn String (Maybe [SortArg]) Type-                 | ViewTypeDef AlexPosn String (Maybe [SortArg]) Type-                 | SumType { typeName :: String, typeArgs :: Maybe [SortArg], _leaves :: [Leaf] }-                 | SumViewType { typeName :: String, typeArgs :: Maybe [SortArg], _leaves :: [Leaf] }-                 | AbsType AlexPosn String (Maybe [SortArg]) (Maybe Type)-                 | AbsViewType AlexPosn String (Maybe [SortArg]) (Maybe Type)+                 | TypeDef AlexPosn String SortArgs Type+                 | ViewTypeDef AlexPosn String SortArgs Type+                 | SumType { typeName :: String, typeArgs :: SortArgs, _leaves :: [Leaf] }+                 | SumViewType { typeName :: String, typeArgs :: SortArgs, _leaves :: [Leaf] }+                 | AbsType AlexPosn String SortArgs (Maybe Type)+                 | AbsViewType AlexPosn String SortArgs (Maybe Type)                  | AbsView AlexPosn String [Arg] (Maybe Type)-                 | AbsVT0p AlexPosn String (Maybe [SortArg]) (Maybe Type)+                 | AbsVT0p AlexPosn String SortArgs (Maybe Type)                  | AbsT0p AlexPosn String Type                  | ViewDef AlexPosn String [Arg] Type                  | OverloadOp AlexPosn BinOp Name                  | OverloadIdent AlexPosn String Name (Maybe Int)                  | Comment String-                 | DataProp AlexPosn String [Arg] [DataPropLeaf]+                 | DataProp AlexPosn String SortArgs [DataPropLeaf]                  | Extern AlexPosn Declaration                  | Define String-                 | SortDef AlexPosn String Type+                 | SortDef AlexPosn String Sort                  | AndD Declaration Declaration                  | Local AlexPosn ATS ATS                  | AbsProp AlexPosn String [Arg]@@ -193,6 +196,7 @@           | T0p Addendum -- ^ t@ype           | Vt0p Addendum -- ^ vt@ype           | Addr+          | View AlexPosn Addendum -- ^ view           deriving (Show, Eq, Generic, NFData)  -- FIXME a type for sorts?