{- CAO Compiler
Copyright (C) 2014 Cryptography and Information Security Group, HASLab - INESC TEC and Universidade do Minho
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see . -}
{-
Module : $Header$
Description : CAO language tokens.
Copyright : (C) 2014 Cryptography and Information Security Group, HASLab - INESC TEC and Universidade do Minho
License : GPL
Maintainer : Paulo Silva
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