From: Brendan Hansen Date: Thu, 23 Jul 2020 22:16:08 +0000 (-0500) Subject: small changes; setup sublime debugging X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=5750c06c5f693bb227f428398b07cf322316e72c;p=onyx.git small changes; setup sublime debugging --- diff --git a/.gitignore b/.gitignore index 75ef5be4..6dc7d768 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ test *.wasm *.html session.vim +*.sublime-project +*.sublime-workspace \ No newline at end of file diff --git a/docs/plan b/docs/plan index b9e28abf..57afcee5 100644 --- a/docs/plan +++ b/docs/plan @@ -115,6 +115,8 @@ HOW: - Foreign functions will rename in the code because it is turning out to be a nightmare to remove them. Lot's of refactoring... ugh + [ ] Package system + [ ] Enum types [ ] Static pointers to sized data diff --git a/include/onyxlex.h b/include/onyxlex.h index e82c3fb1..cc27be0f 100644 --- a/include/onyxlex.h +++ b/include/onyxlex.h @@ -11,53 +11,54 @@ typedef enum TokenType { Token_Type_Comment = 258, Token_Type_Keyword_Struct = 259, - Token_Type_Keyword_Use = 260, - Token_Type_Keyword_Export = 261, - Token_Type_Keyword_If = 262, - Token_Type_Keyword_Else = 263, - Token_Type_Keyword_Elseif = 264, - Token_Type_Keyword_Return = 265, - Token_Type_Keyword_Global = 266, - Token_Type_Keyword_Proc = 267, - Token_Type_Keyword_Cast = 268, - Token_Type_Keyword_While = 269, - Token_Type_Keyword_For = 270, - Token_Type_Keyword_Break = 271, - Token_Type_Keyword_Continue = 272, - Token_Type_Keyword_Sizeof = 273, - - Token_Type_Right_Arrow = 274, - Token_Type_Left_Arrow = 275, - Token_Type_Empty_Block = 276, - - Token_Type_Greater_Equal = 277, - Token_Type_Less_Equal = 278, - Token_Type_Equal_Equal = 279, - Token_Type_Not_Equal = 280, - Token_Type_Plus_Equal = 281, - Token_Type_Minus_Equal = 282, - Token_Type_Star_Equal = 283, - Token_Type_Fslash_Equal = 284, - Token_Type_Percent_Equal = 285, - Token_Type_And_Equal = 286, - Token_Type_Or_Equal = 287, - Token_Type_Xor_Equal = 288, - Token_Type_And_And = 289, - Token_Type_Or_Or = 290, - Token_Type_Shift_Left = 291, - Token_Type_Shift_Right = 292, - Token_Type_Shift_Arith_Right = 293, - Token_Type_Shl_Equal = 294, - Token_Type_Shr_Equal = 295, - Token_Type_Sar_Equal = 296, - - Token_Type_Symbol = 297, - Token_Type_Literal_String = 298, - Token_Type_Literal_Numeric = 299, - Token_Type_Literal_True = 300, - Token_Type_Literal_False = 301, - - Token_Type_Count = 302, + Token_Type_Keyword_Enum = 260, + Token_Type_Keyword_Use = 261, + Token_Type_Keyword_Export = 262, + Token_Type_Keyword_If = 263, + Token_Type_Keyword_Else = 264, + Token_Type_Keyword_Elseif = 265, + Token_Type_Keyword_Return = 266, + Token_Type_Keyword_Global = 267, + Token_Type_Keyword_Proc = 268, + Token_Type_Keyword_Cast = 269, + Token_Type_Keyword_While = 270, + Token_Type_Keyword_For = 271, + Token_Type_Keyword_Break = 272, + Token_Type_Keyword_Continue = 273, + Token_Type_Keyword_Sizeof = 274, + + Token_Type_Right_Arrow = 275, + Token_Type_Left_Arrow = 276, + Token_Type_Empty_Block = 277, + + Token_Type_Greater_Equal = 278, + Token_Type_Less_Equal = 279, + Token_Type_Equal_Equal = 280, + Token_Type_Not_Equal = 281, + Token_Type_Plus_Equal = 282, + Token_Type_Minus_Equal = 283, + Token_Type_Star_Equal = 284, + Token_Type_Fslash_Equal = 285, + Token_Type_Percent_Equal = 286, + Token_Type_And_Equal = 287, + Token_Type_Or_Equal = 288, + Token_Type_Xor_Equal = 289, + Token_Type_And_And = 290, + Token_Type_Or_Or = 291, + Token_Type_Shift_Left = 292, + Token_Type_Shift_Right = 293, + Token_Type_Shift_Arith_Right = 294, + Token_Type_Shl_Equal = 295, + Token_Type_Shr_Equal = 296, + Token_Type_Sar_Equal = 297, + + Token_Type_Symbol = 298, + Token_Type_Literal_String = 299, + Token_Type_Literal_Numeric = 300, + Token_Type_Literal_True = 301, + Token_Type_Literal_False = 302, + + Token_Type_Count = 303, } TokenType; typedef struct OnyxFilePos { diff --git a/misc/onyx.sublime-syntax b/misc/onyx.sublime-syntax index ad937c44..24416dce 100644 --- a/misc/onyx.sublime-syntax +++ b/misc/onyx.sublime-syntax @@ -23,11 +23,11 @@ contexts: # strings in YAML. When using single quoted strings, only single quotes # need to be escaped: this is done by using two single quotes next to each # other. - - match: '\b(struct|proc|use|global|if|elseif|else|for|while|do|break|continue|return|as|sizeof)\b' + - match: '\b(struct|proc|use|global|enum|if|elseif|else|for|while|do|break|continue|return|as|sizeof)\b' scope: keyword.control.onyx - match: '\b(unknown|bool|void|i8|u8|i16|u16|i32|u32|i64|u64|f32|f64|rawptr)\b' - scope: keyword.type.onyx + scope: constant.type.onyx - match: '\b(true|false)\b' scope: constant.boolean.onyx diff --git a/onyx b/onyx index 3d51e398..650cbc1f 100755 Binary files a/onyx and b/onyx differ diff --git a/progs/ufc.onyx b/progs/ufc.onyx index 2a0103ed..5ab2af79 100644 --- a/progs/ufc.onyx +++ b/progs/ufc.onyx @@ -62,6 +62,10 @@ dot :: proc (v: Vec2, u: Vec2) -> f32 { return v.x * u.x + v.y * u.y; } + +// SomeType :: enum (u32) { Value1, Value2 } + + proc #export "main" { vec := alloc(sizeof Vec2) as ^Vec2; vec.x = 5.0f; diff --git a/src/onyxlex.c b/src/onyxlex.c index 75eafd58..43a4dab6 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -143,6 +143,7 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { } LITERAL_TOKEN("struct", 1, Token_Type_Keyword_Struct); + LITERAL_TOKEN("enum" , 1, Token_Type_Keyword_Enum); LITERAL_TOKEN("use", 1, Token_Type_Keyword_Use); LITERAL_TOKEN("if", 1, Token_Type_Keyword_If); LITERAL_TOKEN("elseif", 1, Token_Type_Keyword_Elseif); diff --git a/src/onyxparser.c b/src/onyxparser.c index 9e46d397..f27fb0a9 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -1056,6 +1056,10 @@ static AstTyped* parse_top_level_expression(OnyxParser* parser) { else if (parser->curr->type == Token_Type_Keyword_Struct) { return (AstTyped *) parse_struct(parser); } + else if (parser->curr->type == Token_Type_Keyword_Enum) { + consume_token(parser); + return (AstTyped *) &error_node; + } else { return parse_expression(parser); }