summaryrefslogtreecommitdiff
path: root/src/interpreter/builtins.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/interpreter/builtins.ts')
-rw-r--r--src/interpreter/builtins.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/interpreter/builtins.ts b/src/interpreter/builtins.ts
index bc666e9..16322f1 100644
--- a/src/interpreter/builtins.ts
+++ b/src/interpreter/builtins.ts
@@ -202,6 +202,51 @@ const addBinaryArithmeticOperationsTo = (env: Environment) => {
return env;
};
+const addIdentityFunctionTo = (env: Environment) => {
+ env.set('id', {
+ type: 'function',
+ value: {
+ signatures: [
+ {
+ arguments: ['null'],
+ return: 'null',
+ },
+ {
+ arguments: ['int'],
+ return: 'int',
+ },
+ {
+ arguments: ['real'],
+ return: 'real',
+ },
+ {
+ arguments: ['bool'],
+ return: 'bool',
+ },
+ {
+ arguments: ['string'],
+ return: 'string',
+ },
+ {
+ arguments: ['bytearray'],
+ return: 'bytearray',
+ },
+ {
+ arguments: ['function'],
+ return: 'function',
+ },
+ {
+ arguments: ['reference'],
+ return: 'reference',
+ },
+ ],
+ body: ({ value }: Denotable) => value,
+ },
+ });
+
+ return env;
+};
+
export const putBuiltinsOnEnvironemtn = (env: Environment) => {
return [
addBinaryArithmeticOperationsTo,
@@ -210,5 +255,6 @@ export const putBuiltinsOnEnvironemtn = (env: Environment) => {
addNumberComparisonOperationsTo,
addBooleanAlgebraOperationsTo,
addEqualityOperationsTo,
+ addIdentityFunctionTo,
].reduce((acc, builtinsAdder) => builtinsAdder(acc), env);
};