<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -25,6 +25,7 @@ import Data.Char
 import Data.Map (Map)
 import qualified Data.Map as Map
 import Data.Tree
+import Data.Generics -- not Haskel 98
 
 -- data
 showd :: CToken -&gt; String
@@ -71,71 +72,71 @@ data PrimaryE = PEThis CToken                     -- this
               | PEXml CToken
               | PEFunc FuncE
               | PEParens CToken ListE CToken  -- (, List of expressions , )
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data ListE = ListE [(AssignE, (Maybe CToken))] 
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data ArrayLit = ArrayLitC CToken (Maybe Elision) CToken  -- [, maybe commas, ]
               | ArrayLit  CToken ElementList CToken      -- [, element list, ]
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data ElementList = El (Maybe Elision) AssignE [EAE] (Maybe Elision)
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data EAE = EAE Elision AssignE
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data Elision = Elision [CToken]  -- commas possible separated by space in a list
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
-data ObjectLit = ObjectLit CToken (Maybe PropertyList) CToken deriving (Show)
+data ObjectLit = ObjectLit CToken (Maybe PropertyList) CToken deriving (Show, Data, Typeable)
 
-data PropertyList = PropertyList [(CToken, CToken, AssignE, (Maybe CToken))]  deriving (Show) -- [propertyName, :, assignE, maybe ',']
+data PropertyList = PropertyList [(CToken, CToken, AssignE, (Maybe CToken))]  deriving (Show, Data, Typeable) -- [propertyName, :, assignE, maybe ',']
 
-data FuncE = FuncE CToken (Maybe CToken) Signature BlockItem deriving (Show) -- function, maybe ident, signature, block
+data FuncE = FuncE CToken (Maybe CToken) Signature BlockItem deriving (Show, Data, Typeable) -- function, maybe ident, signature, block
 
 data Arguments = Arguments CToken (Maybe ListE) CToken
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data SuperE = SuperE CToken (Maybe Arguments)
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data PostFixE = PFFull FullPostFixE (Maybe CToken)
               | PFShortNew ShortNewE (Maybe CToken)
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data FullPostFixE = FPFPrimary PrimaryE [FullPostFixSubE]
                   | FPFFullNew FullNewE [FullPostFixSubE]
                   | FPFSuper SuperE PropertyOp [FullPostFixSubE]
                   | FPFInc PostFixE CToken
                   | FPFDec PostFixE CToken
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data FullPostFixSubE = FPSProperty PropertyOp
                      | FPSArgs Arguments 
                      | FPSQuery QueryOp
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data FullNewE = FN CToken FullNewE Arguments
               | FNPrimary PrimaryE [PropertyOp]
               | FNSuper SuperE [PropertyOp]
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data ShortNewE = SN CToken ShortNewSubE
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data ShortNewSubE = SNSFull FullNewE
                   | SNSShort ShortNewE
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data PropertyOp = PropertyOp CToken CToken  -- . , identifier
                 | PropertyB CToken ListE CToken -- [ list expression ]
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data QueryOp = QueryOpDD CToken CToken
              | QueryOpD CToken CToken ListE CToken
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data UnaryE = UEPrimary PostFixE
             | UEDelete CToken PostFixE
@@ -147,27 +148,27 @@ data UnaryE = UEPrimary PostFixE
             | UEMinus CToken UnaryE
             | UEBitNot CToken UnaryE
             | UENot CToken UnaryE
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data AritE = AEUnary UnaryE
            | AEBinary CToken AritE AritE
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data RegE = RegE CToken [CToken] CToken (Maybe CToken)
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data CondE = CondE AritE (Maybe (CToken, AssignE, CToken, AssignE))
            | CondRE RegE
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data NAssignE = NAssignE AritE (Maybe (CToken, NAssignE, CToken, NAssignE))
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data AssignE = ACond CondE
              | AAssign PostFixE CToken AssignE
              | ACompound PostFixE CToken AssignE
              | ALogical PostFixE CToken AssignE
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data BlockItem =  Tok        CToken
                 | Expr       AssignE
@@ -179,32 +180,32 @@ data BlockItem =  Tok        CToken
                 | VarS       (Maybe [CToken]) CToken [VarBinding] -- maybe attributes, var, varbindings
                 | ForS       CToken CToken (Maybe ForInit) CToken (Maybe ListE) CToken (Maybe ListE) CToken BlockItem -- for( ? ; ? ; ?) {}
                 | Metadata   Metadata
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data Metadata = MDSwf [(CToken, CToken)]
               | MD    CToken CToken [CToken] CToken
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data ForInit = FIListE ListE
              | FIVarS  BlockItem
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data VarBinding = VarBinding CToken CToken AsType (Maybe (CToken, AssignE)) (Maybe CToken) -- identifier, :, datatype, (maybe (=, assignE)), maybe ','
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data Signature =  Signature  CToken [Arg] CToken (Maybe (CToken, AsType)) -- left paren, arguments, right paren, :,  return type
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data Arg = Arg CToken CToken AsType (Maybe (CToken, AssignE)) (Maybe CToken) -- arg name, :, type, maybe default value, maybe comma
          | RestArg CToken CToken (Maybe (CToken, AsType)) -- ..., name
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data Package = Package CToken CToken (Maybe CToken) BlockItem -- whitespace, package, maybe name, block
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data Ast = AS3Program Package AsState
          | AS3Directives [BlockItem] AsState
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 type AsParser = Parsec TList AsState
 
@@ -214,7 +215,7 @@ data AsType = AsType CToken
             | AsTypeRest
             | AsTypeUser CToken
             | AsTypeUnknown
-    deriving (Show, Eq, Ord)
+    deriving (Show, Eq, Ord, Data, Typeable)
            
 -- Symbol Lookup key
 data AsDef = DefPackage   Name
@@ -224,7 +225,7 @@ data AsDef = DefPackage   Name
            | DefVar       Name  -- can be for constants too
            | DefNamespace Name  
            | DefNone
-    deriving (Show, Eq, Ord)
+    deriving (Show, Eq, Ord, Data, Typeable)
 
 type Attribute = String
 -- Symbol Lookup value
@@ -232,15 +233,15 @@ data AsDefInfo = DiNone             --
                | DiClass    [Attribute] (Maybe AsDef) (Maybe [AsDef]) -- attributes, extends, implements
                | DiFunction [Attribute] 
                | DiVar      AsType
-    deriving (Show, Eq, Ord)
+    deriving (Show, Eq, Ord, Data, Typeable)
 
 type AsDefTuple = (AsDef, AsDefInfo)
 
 data AsStateEl = AsStateEl { sid::Int, scope::Map AsDef AsDefInfo }
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 data AsState = AsState{ filename::String, outfile::String, curId::Int, flags::Map String String, accessors::Map String (AsType, Bool, Bool), initMembers::[String], path::[Int], scopes::Tree AsStateEl }
-    deriving (Show)
+    deriving (Show, Data, Typeable)
 
 initState :: AsState
 initState = AsState{ filename = &quot;&quot;, outfile = &quot;&quot;, curId = 0, path = [0], flags = Map.empty, accessors = Map.empty, initMembers = [], scopes = newScope 0}</diff>
      <filename>ActionhaXe/Data.hs</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@
 -}
 -- Turn the as3 source into Tokens for parsing
 
-module ActionhaXe.Lexer (runLexer, Token, tokenSource, tokenLine, tokenCol, tokenItem, tokenItemS, TokenType(..), TokenNum(..), keywords, operators) where
+module ActionhaXe.Lexer (runLexer, Token, tokenSource, tokenLine, tokenCol, tokenItem, tokenItemS, TPos(..), TokenType(..), TokenNum(..), keywords, operators) where
 
 import Text.Parsec
 import Text.Parsec.String (Parser)
@@ -25,12 +25,16 @@ import Text.Parsec.Char
 import Text.Parsec.Perm
 import Data.Char
 import Data.List 
+import Data.Generics -- not Haskell '98
 
-type Token = (SourcePos, TokenType)
+type Token = (TPos, TokenType)
 
-tokenSource (s, i) = sourceName s
-tokenLine (s, i) = sourceLine s
-tokenCol (s, i) = sourceColumn s
+data TPos = TPos SourceName Line Column
+    deriving (Show, Eq, Ord, Data, Typeable)
+
+tokenSource ((TPos s l c), i) = s
+tokenLine ((TPos s l c), i) = l
+tokenCol ((TPos s l c), i) = c
 tokenItem (s, i) = i
 
 tokenItemS (p, i) = case i of
@@ -44,7 +48,6 @@ tokenItemS (p, i) = case i of
                         TokenIdent   s -&gt; s
                         TokenString  s -&gt; s
                         TokenNl      s -&gt; s
---                        TokenRegex   (s,s') -&gt; s++s'
                         TokenEscaped s -&gt; s
                         TokenXml     s -&gt; s
                         TokenKw      s -&gt; s
@@ -55,7 +58,7 @@ data TokenNum    = TokenInteger String
                  | TokenDouble String
                  | TokenOctal String
                  | TokenHex String
-    deriving (Show, Eq, Ord)
+    deriving (Show, Eq, Ord, Data, Typeable)
 
 data TokenType = 
              TokenWhite String
@@ -64,13 +67,12 @@ data TokenType =
            | TokenIdent String
            | TokenString String
            | TokenNl String
---           | TokenRegex (String, String)
            | TokenEscaped String
            | TokenKw String
            | TokenOp String
            | TokenXml String
            | TokenUnknown String
-    deriving (Show, Eq, Ord)
+    deriving (Show, Eq, Ord, Data, Typeable)
 
 keywords = [ &quot;...&quot;, &quot;as&quot;, &quot;break&quot;, &quot;case&quot;, &quot;catch&quot;, &quot;class&quot;, &quot;const&quot;, &quot;continue&quot;, &quot;default&quot;,
              &quot;delete&quot;, &quot;do&quot;, &quot;else&quot;, &quot;extends&quot;, &quot;false&quot;, &quot;finally&quot;, &quot;for&quot;, &quot;function&quot;, &quot;if&quot;,
@@ -133,12 +135,6 @@ xml = do{ char '&lt;'; t &lt;- many1 (satisfy (\c -&gt; isPrint c &amp;&amp; c /= '&gt;')); char '&gt;'
 
 xmlSTag = do{ char '&lt;'; t &lt;- manyTill (satisfy (\c -&gt; isPrint c &amp;&amp; c /= '/' &amp;&amp; c /= '&gt;')) (string &quot;/&gt;&quot;); return $ TokenXml $ &quot;&lt;&quot;++t++&quot;/&gt;&quot;}
 
-{-
-regexOptions = permute (catter &lt;$?&gt; ('_', char 'g') &lt;|?&gt; ('_', char 'i') &lt;|?&gt; ('_', char 'm') &lt;|?&gt; ('_', char 's') &lt;|?&gt; ('_', char 'x'))
-    where catter g i m s x =  filter (\c -&gt; c /= '_') [g, i, m, s, x]
-regex = do { char '/'; notFollowedBy (char ' '); s &lt;- manyTill escapedAnyChar (char '/'); o &lt;- optionMaybe regexOptions; return $ maybe (TokenRegex (&quot;/&quot;++(concat s)++&quot;/&quot;, &quot;&quot;)) (\m -&gt; TokenRegex (&quot;/&quot;++(concat s)++&quot;/&quot;, m)) o}
--}
-
 number = try (do{ char '0'; char 'x'; x &lt;- many1 hexDigit; return $ TokenNum $ TokenHex $ &quot;0x&quot;++x})
      &lt;|&gt; try (do{ char '0'; x &lt;- many1 octDigit; return $ TokenNum $ TokenOctal $ &quot;0&quot;++x})
      &lt;|&gt; try (do{ x &lt;- double; return $ TokenNum $ TokenDouble $  x })
@@ -164,7 +160,6 @@ atoken =
      &lt;|&gt; try (do{ x &lt;- commentMLine; return x})
      &lt;|&gt; try (do{ x &lt;- xmlSTag; return x})
      &lt;|&gt; try (do{ x &lt;- xml; return x})
---     &lt;|&gt; try (do{ x &lt;- regex; return x})
      &lt;|&gt; try (do{ x &lt;- escapedCharToken; return x})
      &lt;|&gt; try (do{ x &lt;- number; return x})
      &lt;|&gt; try (do{ x &lt;- operator; return x})
@@ -175,7 +170,7 @@ atoken =
      &lt;|&gt;      do{ x &lt;- anyToken; return $ TokenUnknown $ x:[]}
 
 
-lexer = many1 (do { p &lt;- getPosition; t &lt;- atoken; return (p, t) })
+lexer = many1 (do { p &lt;- getPosition; t &lt;- atoken; return (TPos (sourceName p) (sourceLine p) (sourceColumn p), t) })
 
 runLexer :: String -&gt; String -&gt; [Token]
 runLexer filename s = case parse lexer filename s of</diff>
      <filename>ActionhaXe/Lexer.hs</filename>
    </modified>
    <modified>
      <diff>@@ -155,7 +155,7 @@ methodAttributes = permute $ list &lt;$?&gt; (emptyctok, (try (kw &quot;public&quot;) &lt;|&gt; try (k
 signature = do{ lp &lt;- op &quot;(&quot;; a &lt;- sigargs; rp &lt;- op &quot;)&quot;; ret &lt;- optionMaybe ( do{ o &lt;- op &quot;:&quot;; r &lt;- datatype; return (o, r)}); return $ Signature lp a rp ret} -- missing return type means constructor
 
 sigargs = do{ s &lt;- many sigarg; return s}
-sigarg = try(do{ a &lt;- idn; o &lt;- op &quot;:&quot;; t &lt;- datatype; d &lt;- optionMaybe( do{ o' &lt;- op &quot;=&quot;; a &lt;- assignE; return $ (o, a)}); c &lt;- optionMaybe(op &quot;,&quot;); storeVar a t; return $ Arg a o t d c})
+sigarg = try(do{ a &lt;- idn; o &lt;- op &quot;:&quot;; t &lt;- datatype; d &lt;- optionMaybe( do{ o &lt;- op &quot;=&quot;; a &lt;- assignE; return $ (o, a)}); c &lt;- optionMaybe(op &quot;,&quot;); storeVar a t; return $ Arg a o t d c})
      &lt;|&gt;     do{ d &lt;- op &quot;...&quot;; i &lt;- idn; t &lt;- optionMaybe (do{ o &lt;- op &quot;:&quot;; t &lt;- datatype; return (o, t)}); storeVar i AsTypeRest; return $ RestArg d i t }
 
 {-</diff>
      <filename>ActionhaXe/Parser.hs</filename>
    </modified>
    <modified>
      <diff>@@ -21,13 +21,13 @@ import ActionhaXe.Lexer
 import ActionhaXe.Data
 import Text.Parsec
 import Text.Parsec.Prim
+import Text.Parsec.Pos
 
 mytoken :: (Token -&gt; Maybe a) -&gt; AsParser a
 mytoken test = token showTok posFromTok testTok
-             where
-                 showTok (pos, t)    = show t
-                 posFromTok (pos, t) = pos
-                 testTok t           = test t
+    where showTok (pos, t)    = show t
+          posFromTok a@(pos, t) = newPos (tokenSource a) (tokenLine a) (tokenCol a)
+          testTok t         = test t
 
 anytok' = mytoken $ \t -&gt; Just [t]
 
@@ -65,12 +65,6 @@ str' = mytoken $ \t -&gt; case tokenItem t of
                          TokenString x -&gt; Just [t]
                          _ -&gt; Nothing
 
-{-
-reg' = mytoken $ \t -&gt; case tokenItem t of
-                          TokenRegex x -&gt; Just [t]
-                          _ -&gt; Nothing
--}
-
 kw' k = mytoken $ \t -&gt; case tokenItem t of
                            TokenKw k'| k == k' -&gt; Just [t]
                            _ -&gt; Nothing
@@ -86,7 +80,6 @@ xml' = mytoken $ \t -&gt; case tokenItem t of
 idn = mylexeme $ id'
 num = mylexeme $ num'
 str = mylexeme $ str'
---reg = mylexeme $ reg'
 xml = mylexeme $ xml'
 
 mid i = mylexeme $ mid' i</diff>
      <filename>ActionhaXe/Prim.hs</filename>
    </modified>
    <modified>
      <diff>@@ -29,6 +29,7 @@ import Control.Monad.State
 import Data.Foldable (foldlM, foldrM)
 import Data.List (intercalate)
 import Data.Char (toUpper, isAlphaNum)
+import Data.Generics -- not Haskell 98
 
 -- flags
 mainPackage = &quot;mainPackage&quot;
@@ -245,7 +246,8 @@ signature (Signature l args r ret) = do{ a &lt;- showArgs args
 
 showArgs as = do{ as' &lt;- mapM showArg as; return $ concat as'}
     where showArg (Arg n c t i mc) = do{ i' &lt;- maybe (return &quot;&quot;) (\(o, e) -&gt; do{ e' &lt;- assignE e; return $ showb o ++ e'}) i
-                                       ; return $ (case i of{ Just d  -&gt; &quot;?&quot;; Nothing -&gt; &quot;&quot;}) ++ showb n ++ showb c ++ datatype t ++ i' ++ maybeEl showb mc
+                                       ; t' &lt;- datatypeiM t i
+                                       ; return $ (case i of{ Just d  -&gt; &quot;?&quot;; Nothing -&gt; &quot;&quot;}) ++ showb n ++ showb c ++ t' ++ i' ++ maybeEl showb mc
                                        }
           showArg (RestArg o n t) = do{ return $ showd n ++ &quot;:Array&lt;Dynamic&gt;&quot;}
 
@@ -260,8 +262,12 @@ varBinding :: VarBinding -&gt; Bool -&gt; StateT AsState IO String
 varBinding (VarBinding n c d i s) initMember = 
     do{ i' &lt;- maybe (return &quot;&quot;) (\(o, e) -&gt; do{ e' &lt;- assignE e; return $ showb o ++ e'}) i; 
       ; if i' /= &quot;&quot; &amp;&amp; initMember
-            then do{ insertInitMember $ showb n ++ (if last(showb n) == ' ' then &quot;&quot; else &quot; &quot;) ++ i' ++ &quot;;&quot;; return $ showl [n,c] ++ datatype d ++ maybeEl showb s}
-            else return $ showl [n,c] ++ datatype d ++ i' ++ maybeEl showb s
+            then do{ insertInitMember $ showb n ++ (if last(showb n) == ' ' then &quot;&quot; else &quot; &quot;) ++ i' ++ &quot;;&quot;
+                   ; d' &lt;- datatypeiM d i
+                   ; return $ showl [n,c] ++ d' ++ maybeEl showb s}
+            else do{ d' &lt;- datatypeiM d i
+                   ; return $ showl [n,c] ++ d' ++ i' ++ maybeEl showb s
+                   }
       }
 
 namespace ns = case ns of 
@@ -270,23 +276,60 @@ namespace ns = case ns of
 
 datatypet d = span (\c -&gt; isAlphaNum c || c =='&gt;' || c == '&lt;') (datatype d)
 
-datatype d = case d of
-                 AsType n -&gt; (case (showd n) of
-                                  &quot;void&quot;    -&gt; &quot;Void&quot;
-                                  &quot;Boolean&quot; -&gt; &quot;Bool&quot;
-                                  &quot;uint&quot;    -&gt; &quot;UInt&quot;
-                                  &quot;int&quot;     -&gt; &quot;Int&quot;
-                                  &quot;Number&quot;  -&gt; &quot;Float&quot;
-                                  &quot;String&quot;  -&gt; &quot;String&quot;
-                                  &quot;*&quot;       -&gt; &quot;Dynamic&quot;
-                                  &quot;Object&quot;  -&gt; &quot;Dynamic&quot;
-                                  &quot;Function&quot;-&gt; &quot;Dynamic&quot;
-                                  &quot;Array&quot;   -&gt; &quot;Array&lt;Dynamic&gt;&quot;
-                                  &quot;XML&quot;     -&gt; &quot;Xml&quot;
-                                  &quot;RegExp&quot;  -&gt; &quot;EReg&quot;
-                             ) ++ showw n
-                 AsTypeRest -&gt; &quot;Array&lt;Dynamic&gt;&quot;
-                 AsTypeUser n -&gt; showb n
+datatype d = 
+    case d of
+        AsType n -&gt; (case (showd n) of
+                         &quot;void&quot;    -&gt; &quot;Void&quot;
+                         &quot;Boolean&quot; -&gt; &quot;Bool&quot;
+                         &quot;uint&quot;    -&gt; &quot;UInt&quot;
+                         &quot;int&quot;     -&gt; &quot;Int&quot;
+                         &quot;Number&quot;  -&gt; &quot;Number&quot;
+                         &quot;String&quot;  -&gt; &quot;String&quot;
+                         &quot;*&quot;       -&gt; &quot;Dynamic&quot;
+                         &quot;Object&quot;  -&gt; &quot;Dynamic&quot;
+                         &quot;Function&quot;-&gt; &quot;Dynamic&quot;
+                         &quot;Array&quot;   -&gt; &quot;Array&lt;Dynamic&gt;&quot;
+                         &quot;XML&quot;     -&gt; &quot;XML&quot;
+                         &quot;RegExp&quot;  -&gt; &quot;EReg&quot;
+                      ) ++ showw n
+        AsTypeRest -&gt; &quot;Array&lt;Dynamic&gt;&quot;
+        AsTypeUser n -&gt; showb n
+
+datatypeiM d Nothing = return $ datatype d
+datatypeiM d i = 
+    case d of
+        AsType n -&gt; do{ r &lt;- case (showd n) of
+                            &quot;void&quot;    -&gt; return &quot;Void&quot;
+                            &quot;Boolean&quot; -&gt; return &quot;Bool&quot;
+                            &quot;uint&quot;    -&gt; return &quot;UInt&quot;
+                            &quot;int&quot;     -&gt; return &quot;Int&quot;
+                            &quot;Number&quot;  -&gt; do{ case i of
+                                                 Just (o, e) -&gt; do{ case (hasFloat e) of
+                                                                        True  -&gt; return &quot;Float&quot;
+                                                                        False -&gt; return &quot;Int&quot;
+                                                                  } 
+                                                 Nothing -&gt; return &quot;Float&quot;
+                                           }
+                            &quot;String&quot;  -&gt; return &quot;String&quot;
+                            &quot;*&quot;       -&gt; return &quot;Dynamic&quot;
+                            &quot;Object&quot;  -&gt; return &quot;Dynamic&quot;
+                            &quot;Function&quot;-&gt; return &quot;Dynamic&quot;
+                            &quot;Array&quot;   -&gt; return &quot;Array&lt;Dynamic&gt;&quot;
+                            &quot;XML&quot;     -&gt; return &quot;XML&quot;
+                            &quot;RegExp&quot;  -&gt; return &quot;EReg&quot;
+                      ; return $ r ++ showw n
+                      }
+        AsTypeRest -&gt; return $ &quot;Array&lt;Dynamic&gt;&quot;
+        AsTypeUser n -&gt; return $ showb n
+{-        AsTypeNone -&gt; case i of
+                          Just (o, e) -&gt;
+                          Nothing -&gt; &quot;Dynamic&quot;
+-}
+
+hasFloat = everything (||) (False `mkQ` isFloat)
+
+isFloat (TokenDouble x) = True
+isFloat _ = False
 
 primaryE x = case x of
                  PEThis x -&gt; do{ return $ showb x}
@@ -294,7 +337,6 @@ primaryE x = case x of
                  PELit x -&gt; do{ return $ showb x}
                  PEArray x -&gt; do{ r &lt;- arrayLit x; return r}
                  PEObject x -&gt; do{ r &lt;- objectLit x; return r}
---                 PERegex x -&gt; do{ return $ &quot;~&quot; ++ showb x}
                  PEXml x -&gt; do{ return $ &quot;Xml.parse(\&quot;&quot;++ showd x ++ &quot;\&quot;)&quot; ++ showw x}
                  PEFunc x -&gt; do{ r &lt;- funcE x; return r}
                  PEParens l x r -&gt; do{ v &lt;- listE x; return $ showb l ++ v ++ showd r ++ showw r}
@@ -381,6 +423,7 @@ aritENoIn = aritE
 
 binaryE (AEBinary o x y)  
 	| showd o == &quot;as&quot; = do{ x' &lt;- aritE x &gt;&gt;= (\c -&gt; return $ splitLR c); y' &lt;- aritE y &gt;&gt;= (\c -&gt; return $ splitLR c); return $ &quot;cast( &quot;++ (x'!!1) ++&quot;, &quot;++ (y'!!1) ++&quot;)&quot; ++ (y'!!2) }
+	| showd o == &quot;is&quot; = do{ x' &lt;- aritE x &gt;&gt;= (\c -&gt; return $ splitLR c); y' &lt;- aritE y &gt;&gt;= (\c -&gt; return $ splitLR c); return $ &quot;Std.is( &quot;++ (x'!!1) ++&quot;, &quot;++ (y'!!1) ++&quot;)&quot; ++ (y'!!2) }
     | otherwise       = do{ x' &lt;- aritE x; y' &lt;- aritE y; return $ x' ++ showb o ++ y'}
 
 </diff>
      <filename>ActionhaXe/Translator.hs</filename>
    </modified>
    <modified>
      <diff>@@ -18,16 +18,17 @@
 module Main where
 
 import ActionhaXe.Lexer
-import Text.Parsec.Pos
+
 import System.Environment (getArgs)
 import Text.PrettyPrint
 
-format s a = parens (hcat [text (sourceName s), space, int (sourceLine s), colon, int (sourceColumn s) ]) &lt;+&gt; text a
+format:: Token -&gt; Doc
+format t = parens (hcat [text (tokenSource t), space, int (tokenLine t), colon, int (tokenCol t) ]) &lt;+&gt; text (tokenItemS t)
 
-unknowns ts = [ format s a  | t@(s, TokenUnknown a) &lt;- ts]
-comments ts = [ format s a | t@(s, TokenComment a) &lt;- ts]
-strings ts = [ format s a | t@(s, TokenString a) &lt;- ts]
-xmls ts = [ format s a | t@(s, TokenXml a) &lt;- ts]
+unknowns ts = [ format t  | t@(s, TokenUnknown a) &lt;- ts]
+comments ts = [ format t | t@(s, TokenComment a) &lt;- ts]
+strings ts = [ format t | t@(s, TokenString a) &lt;- ts]
+xmls ts = [ format t | t@(s, TokenXml a) &lt;- ts]
 
 main = do args &lt;- getArgs
           let filename = args!!0</diff>
      <filename>Tokenize.hs</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>as3tohaxe</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>e28d78f96509867655b77b22d591886eb50a7d9d</id>
    </parent>
  </parents>
  <author>
    <name>Don-Duong Quach</name>
    <email>geekrelief@gmail.com</email>
  </author>
  <url>http://github.com/geekrelief/as3tohaxe/commit/634f524eb11229c429bf45d5a924cd2ee2539720</url>
  <id>634f524eb11229c429bf45d5a924cd2ee2539720</id>
  <committed-date>2008-10-22T23:16:29-07:00</committed-date>
  <authored-date>2008-10-22T23:16:29-07:00</authored-date>
  <message>Added generics support to dive throught the AST and Number translation with initializer hinting i.e. (a:Number = -1.0, b:Number = 10) =&gt; (a:Float = -1.0, b:Int = 10)</message>
  <tree>a61c724e35d97a4926eafb57fe98439d0cdfb661</tree>
  <committer>
    <name>Don-Duong Quach</name>
    <email>geekrelief@gmail.com</email>
  </committer>
</commit>
