Delete previous progress

This commit is contained in:
Krzosa Karol
2022-05-02 09:49:22 +02:00
parent 6d68fd07aa
commit 3c376bbe30
13 changed files with 81 additions and 1274 deletions

264
test.cc Normal file
View File

@@ -0,0 +1,264 @@
#if 0
OS_Memory:struct{
data: void*;
commit: SizeU;
reserve: SizeU;
}
Arena:struct{
@using memory: OS_Memory;
len: U64;
alignment: U64;
}
String:struct{
str: U8*;
len: S64;
}
Intern_String:typedef String;
@stringify
@prefix="TK_"
Token_Kind:enum{
@str="End of stream" End,
@str="*" Mul,
@str="/" Div,
@str="+" Add,
@str="-" Sub,
@str="%" Mod,
@str="&" BitAnd,
@str="|" BitOr,
@str="^" BitXor,
@str="~" Neg,
@str="!" Not,
@str="(" OpenParen,
@str=" " CloseParen,
@str="{" OpenBrace,
@str="}" CloseBrace,
@str="[" OpenBracket,
@str="]" CloseBracket,
@str="," Comma,
@str="#" Pound,
@str="?" Question,
@str="..." ThreeDots,
@str=";" Semicolon,
@str="." Dot,
@str="<" LesserThen,
@str=">" GreaterThen,
@str=":" Colon,
@str="=" Assign,
@str="/=" DivAssign,
@str="*=" MulAssign,
@str="%=" ModAssign,
@str="-=" SubAssign,
@str="+=" AddAssign,
@str="&=" AndAssign,
@str="|=" OrAssign,
@str="^=" XorAssign,
@str="<<=" LeftShiftAssign,
@str=">>=" RightShiftAssign,
@str="::" DoubleColon,
@str="@" At,
@str="--" Decrement,
@str="++" Increment,
@str="--" PostDecrement,
@str="++" PostIncrement,
@str="<=" LesserThenOrEqual,
@str=">=" GreaterThenOrEqual,
@str="==" Equals,
@str="&&" And,
@str="||" Or,
@str="!=" NotEquals,
@str="<<" LeftShift,
@str=">>" RightShift,
@str="->" Arrow,
@str="sizeof" ExprSizeof,
DocComment,
Comment,
Identifier,
StringLit,
U8Lit,
Character,
Error,
Float,
Int,
Keyword,
}
Token:struct{
kind:Token_Kind;
@using string:String;
union:{
int_val:S64;
error_val:String;
intern_val:Intern_String;
}
file:String;
line:S64;
line_begin:U8*;
}
Tokens:struct{
@array tokens: Token*;
iter : S64;
}
Lex_Stream:struct{
stream: U8*;
line_begin: U8*;
filename: String;
line: S64;
}
@prefix="EK_"
Expr_Kind: enum{
None,
Atom,
Unary,
Binary,
Ternary,
Cast,
List,
Call,
Index,
}
/*
Expr: struct{
kind: Expr_Kind;
token: Token*;
next : Expr*;
union:{
cast: struct{
type: AST_Node*;
expr: Expr*;
}
list: struct{
first: Expr *;
last: Expr *;
}
call: struct{
atom: Expr *;
list: Expr *;
}
index: struct{
atom: Expr *;
index: Expr *;
}
unary: struct{
expr: Expr* ;
}
binary: struct{
left: Expr* ;
right: Expr* ;
}
ternary: struct{
cond: Expr* ;
on_true: Expr*;
on_false: Expr*;
}
}
}
*/
@prefix="AK_"
AST_Kind:enum{
None,
BaseType,
Typedef,
Enum,
Struct,
Union,
Note,
List,
Pointer,
Array,
Function,
Variable,
EnumChild,
}
AST_Node:struct{
kind: AST_Kind;
pos : Token*;
name: Intern_String;
next: AST_Node*;
next_scope: AST_Node*;
first_note: AST_Node*;
last_note: AST_Node*;
first_child: AST_Node*;
last_child: AST_Node*;
union:{
base_type_size: SizeU;
pointer: AST_Node*;
typedef_type: AST_Node*;
variable_type: AST_Node*;
func_return_type: AST_Node*;
}
}
Parser_Error: struct{
next: Parser_Error*;
message: String;
token : Token *;
}
Scope: struct{
next : Scope*;
first: AST_Node*;
last : AST_Node*;
}
Parser: struct{
main_arena: Arena;
intern_table_arena: Arena;
symbol_table_arena: Arena;
scope_free_list: Scope *;
scope_stack: Scope *;
global_scope: Scope *;
symbols_inserted: S64;
symbols_count: S64;
symbols: AST_Node *;
interns: Intern_String *;
interns_in_bytes: S64;
interns_inserted: S64;
interns_count: S64;
first_keyword: U8 *;
last_keyword: U8 *;
//@map(type="sparse") symbols: AST_Node;
// @Todo(Krzosa): This adds default to function name currently
// And it's hard to anything else sort of except adding
// a variable of _var_name_lower_with_ or something
@sllqueue default: Parser_Error;
// This works ok
@sllqueue error: Parser_Error;
@using token_array: Tokens;
}
/*
@register_tag(sllqueue)
@params(next=next,last=last,first=first)
function void
struct_type_lower_var_name_lower_push(struct_type *parent, var_type *child){
if(parent->first == 0){
- parent->first = parent->last = child;
}
else{
- parent->last = parent->last->next = child;
}
}
*/
#endif