1
0
mirror of https://github.com/Ed94/gencpp.git synced 2025-07-28 07:56:59 -07:00

Updated AST_Types.md doc

This commit is contained in:
2023-11-22 15:03:24 -05:00
parent 91a3250d4c
commit 6b10cd2b3e
3 changed files with 186 additions and 164 deletions

@@ -19,13 +19,13 @@ These are containers representing a scope body of a definition that can be of th
Fields:
```cpp
Code Front;
Code Back;
Token* Token;
Code Parent;
StringCached Name;
CodeT Type;
s32 NumEntries;
Code Front;
Code Back;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
s32 NumEntries;
```
The `Front` member represents the start of the link list and `Back` the end.
@@ -49,12 +49,13 @@ Represent standard or vendor specific C/C++ attributes.
Fields:
```cpp
StringCached Content;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
StringCached Content;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
```
Serialization:
@@ -131,14 +132,15 @@ You'll notice that only one parent type is supported only with parent access. Th
Fields:
```cpp
CodeComment InlineCmt; // Only supported by forward declarations
Code InitializerList;
CodeParam Params;
Code Body;
Code Prev;
Code Next;
Code Parent;
CodeT Type;
CodeComment InlineCmt; // Only supported by forward declarations
Code InitializerList;
CodeParam Params;
Code Body;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
CodeT Type;
```
Serialization:
@@ -162,12 +164,13 @@ Represents a preprocessor define
Fields:
```cpp
StringCached Content;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
StringCached Content;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
```
Serialization:
@@ -186,6 +189,7 @@ CodeSpecifiers Specs;
Code Body;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
CodeT Type;
```
@@ -214,6 +218,7 @@ CodeType UnderlyingType;
CodeBody Body;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -241,12 +246,13 @@ Will be obsolute when function body parsing is implemented.
Fields:
```cpp
StringCached Content;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
StringCached Content;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
```
Serialization:
@@ -260,12 +266,13 @@ Serialization:
Fields:
```cpp
CodeBody Body;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
CodeBody Body;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
```
Serialization:
@@ -282,12 +289,13 @@ extern "<Name>"
Fields:
```cpp
StringCached Content;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
StringCached Content;
Code Prev;
Code Next;
Code Parent;
parser::Token* Tok;
StringCached Name;
CodeT Type;
```
Serialization:
@@ -303,13 +311,14 @@ This library (until its necessary become some third-party library to do otherwis
Fields:
```cpp
CodeComment InlineCmt;
Code Declaration;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
CodeComment InlineCmt;
Code Declaration;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
```
Serialization:
@@ -330,8 +339,9 @@ CodeType ReturnType;
CodeParam Params;
CodeBody Body;
Code Prev;
Code Parent;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
ModuleFlag ModuleFlags;
@@ -355,12 +365,13 @@ Serialization:
Fields:
```cpp
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
ModuleFlag ModuleFlags;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
ModuleFlag ModuleFlags;
```
Serialization:
@@ -374,13 +385,14 @@ Serialization:
Fields:
```cpp
CodeBody Body;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
ModuleFlag ModuleFlags;
CodeBody Body;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
ModuleFlag ModuleFlags;
```
Serialization:
@@ -405,6 +417,7 @@ CodeParam Params;
CodeBody Body;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -436,6 +449,7 @@ CodeType ValueType;
CodeBody Body;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -459,14 +473,15 @@ Serialization:
Fields:
```cpp
CodeType ValueType;
Code Value;
CodeParam Last;
CodeParam Next;
Code Parent;
StringCached Name;
CodeT Type;
s32 NumEntries;
CodeType ValueType;
Code Value;
CodeParam Last;
CodeParam Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
s32 NumEntries;
```
Serialization:
@@ -480,12 +495,13 @@ Serialization:
Fields:
```cpp
StringCached Content;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
StringCached Content;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
```
Serialization:
@@ -499,12 +515,13 @@ Serialization:
Fields:
```cpp
StringCached Content;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
StringCached Content;
Code Prev;
Code Next;
paser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
```
Serialization:
@@ -518,13 +535,15 @@ Serialization:
Fields:
```cpp
SpecifierT ArrSpecs[ AST::ArrSpecs_Cap ];
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
s32 NumEntries;
SpecifierT ArrSpecs[ AST::ArrSpecs_Cap ];
CodeSpecifiers NextSpecs;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
s32 NumEntries;
```
Serialization:
@@ -538,14 +557,15 @@ Serialization:
Fields:
```cpp
CodeParam Params;
Code Declaration;
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
ModuleFlag ModuleFlags;
CodeParam Params;
Code Declaration;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
ModuleFlag ModuleFlags;
```
Serialization:
@@ -570,6 +590,7 @@ CodeParam Params;
Code ArrExpr;
Code Prev;
Code Next;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -609,7 +630,8 @@ Serialization:
<ModuleFlags> typedef <UnderlyingType> <Name>; <InlineCmt>
// Functions
<ModuleFlags> typedef <Name>; <InlineCmt>
<ModuleFlags> typedef <ReturnType> <Name>( <Parameters> ); <InlineCmt>
<ModuleFlags> typedef <ReturnType> ( <Expression that yeilds an Identifier signature> )( <Parameters> ); <InlineCmt>
```
## Union

@@ -90,7 +90,7 @@ struct AST_Class
};
CodeType Prev;
CodeType Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -116,7 +116,7 @@ struct AST_Constructor
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
char _PAD_NAME_[ sizeof(StringCached) ];
CodeT Type;
@@ -132,7 +132,7 @@ struct AST_Define
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -156,7 +156,7 @@ struct AST_Destructor
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
char _PAD_NAME_[ sizeof(StringCached) ];
CodeT Type;
@@ -181,7 +181,7 @@ struct AST_Enum
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -198,7 +198,7 @@ struct AST_Exec
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -214,7 +214,7 @@ struct AST_Expr
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -229,7 +229,7 @@ struct AST_Expr_Assign
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -244,7 +244,7 @@ struct AST_Expr_Alignof
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -259,7 +259,7 @@ struct AST_Expr_Binary
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -274,7 +274,7 @@ struct AST_Expr_CStyleCast
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -289,7 +289,7 @@ struct AST_Expr_FunctionalCast
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -304,7 +304,7 @@ struct AST_Expr_CppCast
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -319,7 +319,7 @@ struct AST_Expr_ProcCall
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -334,7 +334,7 @@ struct AST_Expr_Decltype
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -349,7 +349,7 @@ struct AST_Expr_Comma
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -364,7 +364,7 @@ struct AST_Expr_AMS
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -379,7 +379,7 @@ struct AST_Expr_Sizeof
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -394,7 +394,7 @@ struct AST_Expr_Subscript
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -409,7 +409,7 @@ struct AST_Expr_Ternary
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -424,7 +424,7 @@ struct AST_Expr_UnaryPrefix
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -439,7 +439,7 @@ struct AST_Expr_UnaryPostfix
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -454,7 +454,7 @@ struct AST_Expr_Element
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -476,7 +476,7 @@ struct AST_Extern
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -492,7 +492,7 @@ struct AST_Include
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -514,7 +514,7 @@ struct AST_Friend
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -539,7 +539,7 @@ struct AST_Fn
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -553,7 +553,7 @@ struct AST_Module
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap + sizeof(AST*) ];
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -574,7 +574,7 @@ struct AST_NS
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -600,7 +600,7 @@ struct AST_Operator
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -626,7 +626,7 @@ struct AST_OpCast
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -649,7 +649,7 @@ struct AST_Param
};
CodeParam Last;
CodeParam Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -666,7 +666,7 @@ struct AST_Pragma
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -682,7 +682,7 @@ struct AST_PreprocessCond
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -696,7 +696,7 @@ struct AST_Specifiers
CodeSpecifiers NextSpecs;
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -713,7 +713,7 @@ struct AST_Stmt
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -728,7 +728,7 @@ struct AST_Stmt_Break
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -743,7 +743,7 @@ struct AST_Stmt_Case
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -758,7 +758,7 @@ struct AST_Stmt_Continue
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -773,7 +773,7 @@ struct AST_Stmt_Decl
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -788,7 +788,7 @@ struct AST_Stmt_Do
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -803,7 +803,7 @@ struct AST_Stmt_Expr
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -818,7 +818,7 @@ struct AST_Stmt_Else
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -833,7 +833,7 @@ struct AST_Stmt_If
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -848,7 +848,7 @@ struct AST_Stmt_For
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -863,7 +863,7 @@ struct AST_Stmt_Goto
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -878,7 +878,7 @@ struct AST_Stmt_Label
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -893,7 +893,7 @@ struct AST_Stmt_Switch
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -908,7 +908,7 @@ struct AST_Stmt_While
}
CodeExpr Prev;
CodeExpr Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -934,7 +934,7 @@ struct AST_Struct
};
CodeType Prev;
CodeType Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -957,7 +957,7 @@ struct AST_Template
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -986,7 +986,7 @@ struct AST_Type
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -1013,7 +1013,7 @@ struct AST_Type
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;
@@ -1036,7 +1036,7 @@ struct AST_Typedef
};
Code Prev;
Code Next;
parser::Token* Token;
parser::Token* Tok;
Code Parent;
StringCached Name;
CodeT Type;

@@ -166,16 +166,16 @@ namespace parser {
}
struct ParseInfo
{
Arena file_mem;
Arena token_mem;
Arena code_mem;
FileContents file_content;
Array<parser::Token> tokens;
Array<parser::Error> errors;
Arena FileMem;
Arena TokMem;
Arena CodeMem;
FileContents FileContent;
Array<parser::Token> Tokens;
Array<parser::Error> Errors;
// Errors are allocated to a dedicated general arena.
};
;
CodeBody parse_file( StrC path );
#endif