packages feed

language-lua 0.4.2 → 0.4.3

raw patch · 3 files changed

+37/−28 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Language.Lua.Annotated.Syntax: instance Data a => Data (Binop a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (Block a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (Exp a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (FunArg a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (FunBody a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (FunCall a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (FunDef a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (FunName a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (Name a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (PrefixExp a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (Stat a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (Table a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (TableField a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (Unop a)
+ Language.Lua.Annotated.Syntax: instance Data a => Data (Var a)
+ Language.Lua.Annotated.Syntax: instance Typeable1 Binop
+ Language.Lua.Annotated.Syntax: instance Typeable1 Block
+ Language.Lua.Annotated.Syntax: instance Typeable1 Exp
+ Language.Lua.Annotated.Syntax: instance Typeable1 FunArg
+ Language.Lua.Annotated.Syntax: instance Typeable1 FunBody
+ Language.Lua.Annotated.Syntax: instance Typeable1 FunCall
+ Language.Lua.Annotated.Syntax: instance Typeable1 FunDef
+ Language.Lua.Annotated.Syntax: instance Typeable1 FunName
+ Language.Lua.Annotated.Syntax: instance Typeable1 Name
+ Language.Lua.Annotated.Syntax: instance Typeable1 PrefixExp
+ Language.Lua.Annotated.Syntax: instance Typeable1 Stat
+ Language.Lua.Annotated.Syntax: instance Typeable1 Table
+ Language.Lua.Annotated.Syntax: instance Typeable1 TableField
+ Language.Lua.Annotated.Syntax: instance Typeable1 Unop
+ Language.Lua.Annotated.Syntax: instance Typeable1 Var
+ Language.Lua.Syntax: instance Data Binop
+ Language.Lua.Syntax: instance Data Block
+ Language.Lua.Syntax: instance Data Exp
+ Language.Lua.Syntax: instance Data FunArg
+ Language.Lua.Syntax: instance Data FunBody
+ Language.Lua.Syntax: instance Data FunCall
+ Language.Lua.Syntax: instance Data FunName
+ Language.Lua.Syntax: instance Data PrefixExp
+ Language.Lua.Syntax: instance Data Stat
+ Language.Lua.Syntax: instance Data TableField
+ Language.Lua.Syntax: instance Data Unop
+ Language.Lua.Syntax: instance Data Var
+ Language.Lua.Syntax: instance Typeable Binop
+ Language.Lua.Syntax: instance Typeable Block
+ Language.Lua.Syntax: instance Typeable Exp
+ Language.Lua.Syntax: instance Typeable FunArg
+ Language.Lua.Syntax: instance Typeable FunBody
+ Language.Lua.Syntax: instance Typeable FunCall
+ Language.Lua.Syntax: instance Typeable FunName
+ Language.Lua.Syntax: instance Typeable PrefixExp
+ Language.Lua.Syntax: instance Typeable Stat
+ Language.Lua.Syntax: instance Typeable TableField
+ Language.Lua.Syntax: instance Typeable Unop
+ Language.Lua.Syntax: instance Typeable Var

Files

language-lua.cabal view
@@ -2,9 +2,14 @@ Description:         Lua 5.2 lexer, parser and pretty-printer. Documentation: (<https://osa1.github.com/language-lua>)                      .                      Changelog:+                     \0.4.3:+                     .+                     - `Data` and `Typeable` instances are implemented for syntax tree.+                     .                      \0.4.2:                      .                      - More tweaks in pretty printer.+                     .                      - Started using 2 spaces for indentation(instead of 4 as before).                      .                      \0.4.1:@@ -34,7 +39,7 @@                      \0.2.0:                      .                      - Syntax tree is annotated. All parsers(`parseText`, `parseFile`) annotate resulting tree with source positions.-Version:             0.4.2+Version:             0.4.3 Synopsis:            Lua parser and pretty-printer Homepage:            http://github.com/osa1/language-lua Bug-reports:         http://github.com/osa1/language-lua/issues
src/Language/Lua/Annotated/Syntax.hs view
@@ -1,12 +1,14 @@ {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveDataTypeable #-}  -- | Lua 5.2 syntax tree, as specified in <http://www.lua.org/manual/5.2/manual.html#9>. -- Annotation implementation is inspired by haskell-src-exts. module Language.Lua.Annotated.Syntax where  import Prelude hiding (LT, EQ, GT)+import Data.Data -data Name a = Name a String deriving (Show, Eq, Functor)+data Name a = Name a String deriving (Show, Eq, Functor, Data, Typeable)  data Stat a     = Assign a [Var a] [Exp a] -- ^var1, var2 .. = exp1, exp2 ..@@ -24,7 +26,7 @@     | LocalFunAssign a (Name a) (FunBody a) -- ^local function \<var\> (..) .. end     | LocalAssign a [Name a] (Maybe [Exp a]) -- ^local var1, var2 .. = exp1, exp2 ..     | EmptyStat a -- ^/;/-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data Exp a     = Nil a@@ -37,59 +39,59 @@     | TableConst a (Table a) -- ^table constructor     | Binop a (Binop a) (Exp a) (Exp a) -- ^binary operators, /+ - * ^ % .. < <= > >= == ~= and or/     | Unop a (Unop a) (Exp a) -- ^unary operators, /- not #/-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data Var a     = VarName a (Name a) -- ^variable     | Select a (PrefixExp a) (Exp a) -- ^/table[exp]/     | SelectName a (PrefixExp a) (Name a) -- ^/table.variable/-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data Binop a = Add a | Sub a | Mul a | Div a | Exp a | Mod a | Concat a     | LT a | LTE a | GT a | GTE a | EQ a | NEQ a | And a | Or a-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data Unop a = Neg a | Not a | Len a-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data PrefixExp a     = PEVar a (Var a)     | PEFunCall a (FunCall a)     | Paren a (Exp a)-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data Table a = Table a [TableField a] -- ^list of table fields-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data TableField a     = ExpField a (Exp a) (Exp a) -- ^/[exp] = exp/     | NamedField a (Name a) (Exp a) -- ^/name = exp/     | Field a (Exp a)-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  -- | A block is list of statements with optional return statement. data Block a = Block a [Stat a] (Maybe [Exp a])-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data FunName a = FunName a (Name a) [Name a] (Maybe (Name a))-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data FunDef a = FunDef a (FunBody a)-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data FunBody a = FunBody a [Name a] (Maybe a) (Block a) -- ^(args, vararg, block)-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data FunCall a     = NormalFunCall a (PrefixExp a) (FunArg a) -- ^/prefixexp ( funarg )/     | MethodCall a (PrefixExp a) (Name a) (FunArg a) -- ^/prefixexp : name ( funarg )/-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)  data FunArg a     = Args a [Exp a] -- ^list of args     | TableArg a (Table a) -- ^table constructor     | StringArg a String -- ^string-    deriving (Show, Eq, Functor)+    deriving (Show, Eq, Functor, Data, Typeable)   class Functor ast => Annotated ast where
src/Language/Lua/Syntax.hs view
@@ -1,9 +1,11 @@ {-# OPTIONS_GHC -Wall #-}+{-# LANGUAGE DeriveDataTypeable #-}  -- | Lua 5.2 syntax tree, as specified in <http://www.lua.org/manual/5.2/manual.html#9>. module Language.Lua.Syntax where  import Prelude hiding (LT, EQ, GT)+import Data.Data  type Name = String @@ -23,7 +25,7 @@     | LocalFunAssign Name FunBody -- ^local function \<var\> (..) .. end     | LocalAssign [Name] (Maybe [Exp]) -- ^local var1, var2 .. = exp1, exp2 ..     | EmptyStat -- ^/;/-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data Exp     = Nil@@ -36,50 +38,50 @@     | TableConst [TableField] -- ^table constructor     | Binop Binop Exp Exp -- ^binary operators, /+ - * ^ % .. < <= > >= == ~= and or/     | Unop Unop Exp -- ^unary operators, /- not #/-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data Var     = VarName Name -- ^variable     | Select PrefixExp Exp -- ^/table[exp]/     | SelectName PrefixExp Name -- ^/table.variable/-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data Binop = Add | Sub | Mul | Div | Exp | Mod | Concat     | LT | LTE | GT | GTE | EQ | NEQ | And | Or-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data Unop = Neg | Not | Len-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data PrefixExp     = PEVar Var     | PEFunCall FunCall     | Paren Exp-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data TableField     = ExpField Exp Exp -- ^/[exp] = exp/     | NamedField Name Exp -- ^/name = exp/     | Field Exp-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  -- | A block is list of statements with optional return statement. data Block = Block [Stat] (Maybe [Exp])-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data FunName = FunName Name [Name] (Maybe Name)-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data FunBody = FunBody [Name] Bool Block -- ^(args, vararg, block)-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data FunCall     = NormalFunCall PrefixExp FunArg -- ^/prefixexp ( funarg )/     | MethodCall PrefixExp Name FunArg -- ^/prefixexp : name ( funarg )/-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)  data FunArg     = Args [Exp] -- ^list of args     | TableArg [TableField] -- ^table constructor     | StringArg String -- ^string-    deriving (Show, Eq)+    deriving (Show, Eq, Data, Typeable)