packages feed

cao-0.1: src/Language/CAO/Parser/Tokens.hs

{-
Module      :  $Header$
Description :  CAO language tokens.
Copyright   :  (c) SMART Team / HASLab
License     :  GPL

Maintainer  :  Paulo Silva <paufil@di.uminho.pt>
Stability   :  experimental
Portability :  non-portable

-}

module Language.CAO.Parser.Tokens where

import Language.CAO.Common.SrcLoc

data TokenInfo
    = TokenInfo 
        { tSymb :: Token
        , tText :: !String
        , tLoc  :: SrcLoc
        }

data Token 
    = TokenDef
    | TokenTypedef
    | TokenConst
    | TokenOfType
    | TokenOf
    | TokenAssign
    | TokenReturn
    | TokenOSB
    | TokenCSB
    | TokenOCB
    | TokenCCB
    | TokenSemiColon
    | TokenComma
    | TokenDoublePeriod
    | TokenPeriod
    | TokenTrue
    | TokenFalse
    | TokenVoid
    | TokenUnsigned
    | TokenSigned
    | TokenRegister
    | TokenInt
    | TokenBits
    | TokenBool
    | TokenVector
    | TokenMatrix
    | TokenMod
    | TokenStruct
    | TokenIf
    | TokenElse
    | TokenWhile
    | TokenSeq
    | TokenTo
    | TokenBy
    | TokenEq
    | TokenAnd
    | TokenOr
    | TokenGET
    | TokenLET
    | TokenGT
    | TokenLT
    | TokenNot
    | TokenNotEqual
    | TokenXor
    | TokenPlus
    | TokenMinus
    | TokenTimes
    | TokenDiv
    | TokenPower
    | TokenRemainder
    | TokenBitNot
    | TokenBitAnd
    | TokenBitOr
    | TokenBitXor
    | TokenShiftUp
    | TokenShiftDown
    | TokenRotUp
    | TokenRotDown
    | TokenConcat
    | TokenOB
    | TokenCB
    | TokenIntValue          { int_value :: Integer }
    | TokenUnsignedBitsValue { bit_value :: ![Bool] }
    | TokenSignBitsValue     { bit_value :: ![Bool] }
    | TokenStr               { str_value :: !String }
    | TokenTypeAlias         { str_value :: !String }
    | TokenEOF
    | TokenError