Add a language.kl module which should contain builtin stuff

This commit is contained in:
Krzosa Karol
2022-06-18 19:42:59 +02:00
parent 649f37cb1b
commit c85fa02750
6 changed files with 102 additions and 78 deletions

67
programs/language.kl Normal file
View File

@@ -0,0 +1,67 @@
/*
String :: struct
str: *U8
len: S64
Slice :: struct
data: *void
len : S64
Any :: struct
data: *void
type: Type_ID
*/
Type_ID :: S32
Type_Info_Kind :: enum
TYPE_NONE
TYPE_S64 :: 7 // FIRST_NUMERIC
TYPE_S32
TYPE_S16
TYPE_S8
TYPE_INT
TYPE_CHAR
TYPE_U64
TYPE_U32
TYPE_U16
TYPE_U8
TYPE_F32
TYPE_F64
TYPE_POINTER
TYPE_BOOL // LAST_NUMERIC
TYPE_STRING
TYPE_VOID
TYPE_ARRAY
TYPE_LAMBDA
TYPE_STRUCT
TYPE_UNION
TYPE_ENUM
TYPE_TYPE
TYPE_SLICE
TYPE_TUPLE
TYPE_ANY
Type_Info_Struct_Member :: struct
name: String
type_id: Type_ID
offset: S32
Type_Info :: struct
kind: Type_Info_Kind
size: S32
align: S32
is_unsigned: Bool
type_id: Type_ID
base_type: Type_ID
array_size: S32
struct_member_count: S32
struct_members: *Type_Info_Struct_Member
lambda_argument_count: S32
lambda_arguments: *Type_Info
lambda_return: Type_ID
type_infos_len: U32 #foreign
type_infos : *Type_Info #foreign