summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/Frontend/SymbolTable.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-10-04 18:26:10 +0200
committerEugen Wissner <belka@caraus.de>2024-10-04 18:26:10 +0200
commit35742aa52587400950cf25170c2247f98f498d4d (patch)
tree78d0fd208e2e08d30c18ada33c52bc76a91267d6 /lib/Language/Elna/Frontend/SymbolTable.hs
parentfdf56ce9d0de459dc5bd65537847ded7b02ad5c2 (diff)
downloadelna-35742aa52587400950cf25170c2247f98f498d4d.tar.gz
Add printc and exit builtin functions
Diffstat (limited to 'lib/Language/Elna/Frontend/SymbolTable.hs')
-rw-r--r--lib/Language/Elna/Frontend/SymbolTable.hs15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/Language/Elna/Frontend/SymbolTable.hs b/lib/Language/Elna/Frontend/SymbolTable.hs
index 9ace33f..e90a942 100644
--- a/lib/Language/Elna/Frontend/SymbolTable.hs
+++ b/lib/Language/Elna/Frontend/SymbolTable.hs
@@ -40,9 +40,22 @@ scope parent (SymbolTable _ mappings) = SymbolTable (Just parent) mappings
builtInSymbolTable :: SymbolTable
builtInSymbolTable = SymbolTable Nothing $ HashMap.fromList
- [ ("printi", ProcedureInfo empty Vector.empty)
+ [ ("printi", ProcedureInfo empty (Vector.singleton printiX))
+ , ("printc", ProcedureInfo empty (Vector.singleton printcI))
+ , ("exit", ProcedureInfo empty Vector.empty)
, ("int", TypeInfo intType)
]
+ where
+ printiX = ParameterInfo
+ { name = "x"
+ , type' = intType
+ , isReferenceParameter = False
+ }
+ printcI = ParameterInfo
+ { name = "i"
+ , type' = intType
+ , isReferenceParameter = False
+ }
toMap :: SymbolTable -> HashMap Identifier Info
toMap (SymbolTable _ map') = map'