From ce7652c6189b289ffbc749dc3d1ffb465c758c01 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 26 Jul 2024 12:22:07 +0200 Subject: Add types for name analysis --- lib/Language/Elna/AST.hs | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) (limited to 'lib/Language/Elna/AST.hs') diff --git a/lib/Language/Elna/AST.hs b/lib/Language/Elna/AST.hs index 3189469..189fcb5 100644 --- a/lib/Language/Elna/AST.hs +++ b/lib/Language/Elna/AST.hs @@ -12,34 +12,20 @@ module Language.Elna.AST import Data.Int (Int32) import Data.List (intercalate) -import Data.Word (Word16) -import Data.Text (Text) -import qualified Data.Text as Text +import Data.Word (Word16, Word32) import Data.Char (chr) -import Data.String (IsString(..)) +import Language.Elna.Location (Identifier(..), showArrayType) import Numeric (showHex) -newtype Identifier = Identifier { unIdentifier :: Text } - deriving Eq - -instance Show Identifier - where - show (Identifier identifier) = Text.unpack identifier - -instance IsString Identifier - where - fromString = Identifier . Text.pack - data TypeExpression = NamedType Identifier - | ArrayType TypeExpression Int32 + | ArrayType Word32 TypeExpression deriving Eq instance Show TypeExpression where show (NamedType typeName) = show typeName - show (ArrayType typeName elementCount) = concat - [show typeName, "[", show elementCount, "]"] + show (ArrayType elementCount typeName) = showArrayType elementCount typeName data Literal = IntegerLiteral Int32 -- cgit v1.2.3