From e2d8e385f0b2a562c4f3bfa16080b7490fb99eb2 Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Wed, 29 Apr 2026 20:28:52 +0200 Subject: [PATCH] Add basic var tokens --- specs/VARIABLES.md | 24 ++++++++++++++++++++++++ v0/token.c | 4 ++++ v0/token.h | 3 +++ 3 files changed, 31 insertions(+) create mode 100644 specs/VARIABLES.md diff --git a/specs/VARIABLES.md b/specs/VARIABLES.md new file mode 100644 index 0000000..f3956a0 --- /dev/null +++ b/specs/VARIABLES.md @@ -0,0 +1,24 @@ +# Variables +Variables can be defined in the global scope, in structs and classes, and in functions. + +## Global variables +Global variables can be defined as such: + +```c2 +// Defines a global variable called my_var. +int32 my_var; + +// Defines a const variable. +const int32 my_var; + +// Defines a global variable whose type is determined automatically. +// The value will be determined at runtime. +var my_var = 123; + +// Defines a const variable whose type is determined automatically. +const my_var = 123; + +// Defines a global variable whose initial value is computed at compile-time. +// If it cannot be computed at compile-time, an error is thrown. +static my_var = 123; +``` \ No newline at end of file diff --git a/v0/token.c b/v0/token.c index dadf73e..d4147d9 100644 --- a/v0/token.c +++ b/v0/token.c @@ -31,6 +31,10 @@ static const KeywordMap keywords[] = { {"import", TOKEN_IMPORT}, {"alias", TOKEN_ALIAS}, {"public", TOKEN_PUBLIC}, + {"var", TOKEN_VAR}, + {"const", TOKEN_CONST}, + {"static", TOKEN_STATIC}, + {"void", TOKEN_VOID}, {"i8", TOKEN_I8}, {"i16", TOKEN_I16}, diff --git a/v0/token.h b/v0/token.h index 69a4141..b067bb6 100644 --- a/v0/token.h +++ b/v0/token.h @@ -16,6 +16,9 @@ typedef enum { TOKEN_SEMICOLON, TOKEN_ALIAS, TOKEN_PUBLIC, + TOKEN_VAR, + TOKEN_CONST, + TOKEN_STATIC, /* Symbols */ TOKEN_PARENT_OPEN,