diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-08-04 12:23:19 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-08-04 12:23:19 +0200 |
| commit | 9cb9ab536f51978b8251a651d77d955cb8b794e1 (patch) | |
| tree | 872e398f23726d80afea7079c6951d2d9baccc02 /lib/Language/Elna/SymbolTable.hs | |
| parent | 5f8d9abe76187669cd7d4f691a2c40db2b4c8a6f (diff) | |
| download | elna-9cb9ab536f51978b8251a651d77d955cb8b794e1.tar.gz | |
Create procedure local symbol table
Diffstat (limited to 'lib/Language/Elna/SymbolTable.hs')
| -rw-r--r-- | lib/Language/Elna/SymbolTable.hs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/Language/Elna/SymbolTable.hs b/lib/Language/Elna/SymbolTable.hs index f1c6534..b8892c9 100644 --- a/lib/Language/Elna/SymbolTable.hs +++ b/lib/Language/Elna/SymbolTable.hs @@ -4,8 +4,9 @@ module Language.Elna.SymbolTable , SymbolTable , empty , enter + , fromList , lookup - , symbolTable + , builtInSymbolTable ) where import Data.HashMap.Strict (HashMap) @@ -26,8 +27,8 @@ instance Monoid SymbolTable where mempty = SymbolTable HashMap.empty -symbolTable :: SymbolTable -symbolTable = SymbolTable $ HashMap.fromList +builtInSymbolTable :: SymbolTable +builtInSymbolTable = SymbolTable $ HashMap.fromList [ ("boolean", TypeInfo booleanType) , ("int", TypeInfo intType) ] @@ -42,6 +43,9 @@ enter identifier info (SymbolTable table) = SymbolTable lookup :: Identifier -> SymbolTable -> Maybe Info lookup identifier (SymbolTable table) = HashMap.lookup identifier table +fromList :: [(Identifier, Info)] -> SymbolTable +fromList = SymbolTable . HashMap.fromList + data ParameterInfo = ParameterInfo { name :: Identifier , type' :: Type |
