module Carrie.Parser.CarrieStructs where  

  data CrValue = CrStringT -- String type
               | CrIntT -- Int type
               | CrFloatT -- Float type
               | CrBoolT -- Boolean type
               | CrNothingT -- Nothing type (void)
               | CrUnknownT -- Unknown type (null)
               | CrListT CrValue -- List type
               | CrString String -- String value
               | CrInt Int -- Int value
               | CrFloat Float -- Float value
  Boolean value
               | CrNothing () -- Nothing value
               | CrVar String CrValue -- var-name value
               | Greater String String -- val1 val2
               | Lesser String String -- val1 val2
               | Equal String String -- val1 val2
               deriving (Show, Eq)

  data CrStmt = CrAssign String CrStmt -- variable-name and value
              | CrFuncCall String [String] -- func-name and args
              | CrBind String String String -- func-name var output
              | CrDec String CrValue -- var-name type
              | Add String String -- num num
              | Sub String String -- num num
              | Mul String String -- num num
              | Div String String -- num num
              | Return String -- return var
              | If CrValue [CrStmt] -- cond code
              | While CrValue [CrStmt] -- cond code 
              | Comment String -- comment content
              | CrFunc String [CrPair] CrValue [CrStmt] -- name args return-type code
              | CrPrint String -- std print function
              | CrError String -- error for bad parsing results
              | CrList [String] -- List values  
              | CrLiteral String -- Literal value
  MapFunction function list output
              deriving (Show, Eq)

 name

 String type
 Int type
 Float type
 Boolean type
 Nothing type (void)
 Unknown type (null)
 List type
 String value
 Int value
 Float value
 Nothing value
 var-name value
 val1 val2
 val1 val2
 val1 val2
 variable-name and value
 func-name and args
 func-name var output
 var-name type
 num num
 num num
 num num
 num num
 return var
 cond code
 cond code 
 comment content
 name args return-type code
 std print function
 error for bad parsing results
 List values  
 Literal value
module Carrie.Parser.CarrieStructs where  

  Boolean value
               deriving (Show, Eq)

  MapFunction function list output
              deriving (Show, Eq)

 name
