packages feed

glualint-1.26.0: src/GLua/AG/AST.hs

{-# LANGUAGE DeriveGeneric #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- UUAGC 0.9.55 (src/GLua/AG/AST.ag)
module GLua.AG.AST where

{-# LINE 10 "src/GLua/AG/AST.ag" #-}

import Data.Aeson
import GHC.Generics
import GLua.AG.Token
import GLua.TokenTypes ()
{-# LINE 15 "src/GLua/AG/AST.hs" #-}
-- AReturn -----------------------------------------------------
data AReturn
  = AReturn (Region) (MExprList)
  | NoReturn
  deriving (Generic, Show)

-- AST ---------------------------------------------------------
data AST = AST (([MToken])) (Block)
  deriving (Generic, Show)

-- Args --------------------------------------------------------
data Args
  = ListArgs (MExprList)
  | TableArg (FieldList)
  | StringArg (MToken)
  deriving (Generic, Show)

-- BinOp -------------------------------------------------------
data BinOp
  = AOr
  | AAnd
  | ALT
  | AGT
  | ALEQ
  | AGEQ
  | ANEq
  | AEq
  | AConcatenate
  | APlus
  | BinMinus
  | AMultiply
  | ADivide
  | AModulus
  | APower
  deriving (Eq, Generic, Ord, Show)

-- Block -------------------------------------------------------
data Block = Block (MStatList) (AReturn)
  deriving (Generic, Show)

-- Declaration -------------------------------------------------
type Declaration = (PrefixExp, MaybeMExpr)

-- Else --------------------------------------------------------
type Else = Maybe (MElse)

-- ElseIf ------------------------------------------------------
type ElseIf = (MExpr, Block)

-- ElseIfList --------------------------------------------------
type ElseIfList = [MElseIf]

-- Expr --------------------------------------------------------
data Expr
  = ANil
  | AFalse
  | ATrue
  | ANumber (String)
  | AString (MToken)
  | AVarArg
  | AnonymousFunc (([MToken])) (Block)
  | APrefixExpr (PrefixExp)
  | ATableConstructor (FieldList)
  | BinOpExpr (BinOp) (MExpr) (MExpr)
  | UnOpExpr (UnOp) (MExpr)
  deriving (Generic, Show)

-- ExprSuffixList ----------------------------------------------
type ExprSuffixList = [PFExprSuffix]

-- Field -------------------------------------------------------
data Field
  = ExprField (MExpr) (MExpr) (FieldSep)
  | NamedField (MToken) (MExpr) (FieldSep)
  | UnnamedField (MExpr) (FieldSep)
  deriving (Generic, Show)

-- FieldList ---------------------------------------------------
type FieldList = [Field]

-- FieldSep ----------------------------------------------------
data FieldSep
  = CommaSep
  | SemicolonSep
  | NoSep
  deriving (Eq, Generic, Show)

-- FuncName ----------------------------------------------------
data FuncName = FuncName (([MToken])) ((Maybe MToken))
  deriving (Generic, Show)

-- MElse -------------------------------------------------------
data MElse = MElse (Region) (Block)
  deriving (Generic, Show)

-- MElseIf -----------------------------------------------------
data MElseIf = MElseIf (Region) (ElseIf)
  deriving (Generic, Show)

-- MExpr -------------------------------------------------------
data MExpr = MExpr (Region) (Expr)
  deriving (Generic, Show)

-- MExprList ---------------------------------------------------
type MExprList = [MExpr]

-- MStat -------------------------------------------------------
data MStat = MStat (Region) (Stat)
  deriving (Generic, Show)

-- MStatList ---------------------------------------------------
type MStatList = [MStat]

-- MaybeMExpr --------------------------------------------------
type MaybeMExpr = Maybe (MExpr)

-- PFExprSuffix ------------------------------------------------
data PFExprSuffix
  = Call (Args)
  | MetaCall (MToken) (Args)
  | ExprIndex (MExpr)
  | DotIndex (MToken)
  deriving (Generic, Show)

-- PrefixExp ---------------------------------------------------
data PrefixExp
  = PFVar (MToken) (ExprSuffixList)
  | ExprVar (MExpr) (ExprSuffixList)
  deriving (Generic, Show)

-- Stat --------------------------------------------------------
data Stat
  = Def (VarsList)
  | LocDef (VarsList)
  | AFuncCall (PrefixExp)
  | ALabel (MToken)
  | ABreak
  | AContinue
  | AGoto (MToken)
  | ADo (Block)
  | AWhile (MExpr) (Block)
  | ARepeat (Block) (MExpr)
  | AIf (MExpr) (Block) (ElseIfList) (Else)
  | ANFor (MToken) (MExpr) (MExpr) (MExpr) (Block)
  | AGFor (([MToken])) (MExprList) (Block)
  | AFunc (FuncName) (([MToken])) (Block)
  | ALocFunc (FuncName) (([MToken])) (Block)
  deriving (Generic, Show)

-- UnOp --------------------------------------------------------
data UnOp
  = UnMinus
  | ANot
  | AHash
  deriving (Generic, Show)

-- VarsList ----------------------------------------------------
type VarsList = [Declaration]