WIP Ended up using new layout, made major changes to how asts are interacted with an iterated.

- Got rid of dynamic arrays for body entries, were using links only.
- Halfed the size of the ast from 256 to 128 bytes.
- Fields for different ast types are not accessed directly. Each type has a unique filtered AST for ease of use.
This commit is contained in:
Edward R. Gonzalez 2023-07-15 00:03:14 -04:00
parent 7133dc0a95
commit 9ce859ec64
3 changed files with 1871 additions and 976 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,8 @@
</Type> </Type>
<Type Name="gen::Array&lt;*&gt;"> <Type Name="gen::Array&lt;*&gt;">
<DisplayString>Num:{((Header*)((char*)Data - sizeof(Header)))->Num}, Capacity:{((Header*)((char*)Data - sizeof(Header)))->Capacity}</DisplayString> <DisplayString>Num:{((Header*)((char*)Data - sizeof(Header)))->Num},
Capacity:{((Header*)((char*)Data - sizeof(Header)))->Capacity}</DisplayString>
<Expand> <Expand>
<Synthetic Name="Header"> <Synthetic Name="Header">
<DisplayString>{(Header*)((char*)Data - sizeof(Header))}</DisplayString> <DisplayString>{(Header*)((char*)Data - sizeof(Header))}</DisplayString>
@ -52,42 +53,848 @@
</Type> </Type>
<Type Name="gen::AST"> <Type Name="gen::AST">
<DisplayString>AST: {Name}</DisplayString>
<Expand>
<Item Name="Parent">Parent</Item>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="Content != nullptr">
<Item Name="Content">Content</Item>
</Case>
<Case Condition="ArrSpecs != nullptr">
<ArrayItems Name="Specifiers" Condition="ArrSpecs != nullptr"
Size="{ArrSpecs_Cap}">
<ValuePointer>ArrSpecs</ValuePointer>
</ArrayItems>
</Case>
</Switch>
</Expand>
<Expand HideRawView="true">
<Switch>
<Case Condition="Prev != nullptr">
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Case>
<Case Condition="Front != nullptr">
<Item Name="Front">Front</Item>
<Item Name="Back">Back</Item>
</Case>
</Switch>
</Expand>
<Expand>
<Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="ParentType != nullptr">
<Item Name="ParentType">ParentType</Item>
</Case>
<Case Condition="ReturnType != nullptr">
<Item Name="ReturnType">ReturnType</Item>
</Case>
<Case Condition="UnderlyingType != nullptr">
<Item Name="UnderlyingType">UnderlyingType</Item>
</Case>
<Case Condition="ValueType != nullptr">
<Item Name="ValueType">ValueType</Item>
</Case>
</Switch>
</Expand>
<Item Name="Params">Params</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="ArrExpr != nullptr">
<Item Name="ArrExpr">ArrExpr</Item>
</Case>
<Case Condition="Body != nullptr">
<Item Name="Body">Body</Item>
</Case>
<Case Condition="Declaration != nullptr">
<Item Name="Declaration">Declaration</Item>
</Case>
<Case Condition="Value != nullptr">
<Item Name="Value">Value</Item>
</Case>
</Switch>
</Expand>
</Expand>
<Expand HideRawView="true">
<Switch>
<Case Condition="Op != nullptr">
<Item Name="Operator">Op</Item>
</Case>
<Case Condition="ParentAccess != nullptr">
<Item Name="ParentAccess">ParentAccess</Item>
</Case>
<Case Condition="NumEntries != nullptr">
<Item Name="NumEntries">NumEntries</Item>
</Case>
</Switch>
</Expand>
</Expand>
</Type>
<Type Name="gen::Code">
<DisplayString Condition="ast != nullptr">AST: {ast->Name} Type: {ast->Type}</DisplayString>
<Expand>
<Item Name="Parent">ast->Parent</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="Content != nullptr">
<Item Name="Content">ast->Content</Item>
</Case>
<Case Condition="ArrSpecs != nullptr">
<ArrayItems Name="Specifiers" Condition="ArrSpecs != nullptr"
Size="{ArrSpecs_Cap}">
<ValuePointer>ast->ArrSpecs</ValuePointer>
</ArrayItems>
</Case>
</Switch>
</Expand>
<Expand HideRawView="true">
<Switch>
<Case Condition="Prev != nullptr">
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
</Case>
<Case Condition="Front != nullptr">
<Item Name="Front">ast->Front</Item>
<Item Name="Back">ast->Back</Item>
</Case>
</Switch>
</Expand>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="ParentType != nullptr">
<Item Name="ParentType">ast->ParentType</Item>
</Case>
<Case Condition="ReturnType != nullptr">
<Item Name="ReturnType">ast->ReturnType</Item>
</Case>
<Case Condition="UnderlyingType != nullptr">
<Item Name="UnderlyingType">ast->UnderlyingType</Item>
</Case>
<Case Condition="ValueType != nullptr">
<Item Name="ValueType">ast->ValueType</Item>
</Case>
</Switch>
</Expand>
<Item Name="Params">ast->Params</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="ArrExpr != nullptr">
<Item Name="ArrExpr">ast->ArrExpr</Item>
</Case>
<Case Condition="Body != nullptr">
<Item Name="Body">ast->Body</Item>
</Case>
<Case Condition="Declaration != nullptr">
<Item Name="Declaration">ast->Declaration</Item>
</Case>
<Case Condition="Value != nullptr">
<Item Name="Value">ast->Value</Item>
</Case>
</Switch>
</Expand>
</Expand>
<Expand HideRawView="true">
<Switch>
<Case Condition="Op != nullptr">
<Item Name="Operator">ast->Op</Item>
</Case>
<Case Condition="ParentAccess != nullptr">
<Item Name="ParentAccess">ast->ParentAccess</Item>
</Case>
<Case Condition="NumEntries != nullptr">
<Item Name="NumEntries">ast->NumEntries</Item>
</Case>
</Switch>
</Expand>
</Expand>
</Type>
<Type Name="gen::AST_Body">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item> <Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Front">Front</Item>
<Item Name="Back">Back</Item>
</Expand>
</Type>
<Type Name="gen::AST_Attributes">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Content">Content</Item>
</Expand>
</Type>
<Type Name="gen::AST_Comment">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Content">Content</Item>
</Expand>
</Type>
<Type Name="gen::AST_Class">
<DisplayString Condition="Parent != nullptr">{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="ParentType">ParentType</Item>
<Item Name="Body">Body</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="ParentAccess">ParentAccess</Item>
</Expand>
</Type>
<Type Name="gen::AST_Exec">
<DisplayString Condition="Parent != nullptr">{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Body">Body</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand>
</Type>
<Type Name="gen::AST_Enum">
<DisplayString Condition="Parent != nullptr">{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="UnderlyingType">UnderlyingType</Item>
<Item Name="Body">Body</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand>
</Type>
<Type Name="gen::AST_Extern">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Body">Body</Item>
</Expand>
</Type>
<Type Name="gen::AST_Include">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Content">Content</Item>
</Expand>
</Type>
<Type Name="gen::AST_Friend">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Declaration">Declaration</Item>
</Expand>
</Type>
<Type Name="gen::AST_Fn">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item>
<Item Name="ReturnType">ReturnType</Item>
<Item Name="Params">Params</Item>
<Item Name="Body">Body</Item>
</Expand>
</Type>
<Type Name="gen::AST_Module">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand>
</Type>
<Type Name="gen::AST_Namespace">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Body">Body</Item>
</Expand>
</Type>
<Type Name="gen::AST_Operator">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item>
<Item Name="ReturnType">ReturnType</Item>
<Item Name="Params">Params</Item>
<Item Name="Body">Body</Item>
<Item Name="Op">Op</Item>
</Expand>
</Type>
<Type Name="gen::AST_OpCast">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="ValueType">ValueType</Item>
<Item Name="Body">Body</Item>
</Expand>
</Type>
<Type Name="gen::AST_Param">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="ValueType">ValueType</Item>
<Item Name="Value">Value</Item>
<Item Name="NumEntries">NumEntries</Item>
</Expand>
</Type>
<Type Name="gen::AST_Specifiers">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<ArrayItems Name="ArrSpecs" Count="AST::ArrSpecs_Cap">
<ValuePointer>ArrSpecs</ValuePointer>
</ArrayItems>
<Item Name="NumEntries">NumEntries</Item>
</Expand>
</Type>
<Type Name="gen::AST_Struct">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="ParentType">ParentType</Item>
<Item Name="Body">Body</Item>
<Item Name="ParentAccess">ParentAccess</Item>
</Expand>
</Type>
<Type Name="gen::AST_Template">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="ReturnType">ReturnType</Item>
<Item Name="Specs">Specs</Item>
<Item Name="Params">Params</Item>
<Item Name="Declaration">Declaration</Item>
</Expand>
</Type>
<Type Name="gen::AST_Type">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item> <Item Name="Name">Name</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Op" Condition="Op != 43">Op</Item> <Item Name="Prev">Prev</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="Next">Next</Item>
<Item Name="ParentAcess" Condition="ParentAccess != gen::AccessSpec::Invalid">ParentAccess</Item> <Item Name="Attributes">Attributes</Item>
<Item Name="ArrStatic" Condition="DynamicEntries == false">ArrStatic</Item> <Item Name="Specs">Specs</Item>
<Item Name="Index" Condition="DynamicEntries == false">StaticIndex</Item> <Item Name="ArrExpr">ArrExpr</Item>
<Item Name="ArrDyn" Condition="DynamicEntries == true">ArrDyn</Item>
<Item Name="Index" Condition="DynamicEntries == true">ArrDyn.num()</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::Code"> <Type Name="gen::AST_Typedef">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="UnderlyingType">UnderlyingType</Item>
</Expand>
</Type>
<Type Name="gen::AST_Union">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="Body">Body</Item>
</Expand>
</Type>
<Type Name="gen::AST_Using">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="UnderlyingType">UnderlyingType</Item>
<Item Name="Op">Op</Item>
<Item Name="ParentAccess">ParentAccess</Item>
<Item Name="NumEntries">NumEntries</Item>
</Expand>
</Type>
<Type Name="gen::AST_UsingNamespace">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand>
</Type>
<Type Name="gen::AST_Var">
<DisplayString>{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item>
<Item Name="ValueType">ValueType</Item>
<Item Name="Value">Value</Item>
<Item Name="Op">Op</Item>
<Item Name="ParentAccess">ParentAccess</Item>
<Item Name="NumEntries">NumEntries</Item>
</Expand>
</Type>
<Type Name="CodeBody">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Type">ast->Type</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="Name">ast->Name</Item> <Item Name="Specs">ast->Specs</Item>
<Item Name="Parent">ast->Parent</Item> <Item Name="Front">ast->Front</Item>
<Item Name="Op" Condition="ast->Op != 43">ast->Op</Item> <Item Name="Back">ast->Back</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="ParentAcess" Condition="ast->ParentAccess != gen::AccessSpec::Invalid">ast->ParentAccess</Item>
<Item Name="ArrStatic" Condition="ast->DynamicEntries == false">ast->ArrStatic</Item>
<Item Name="Index" Condition="ast->DynamicEntries == false">ast->StaticIndex</Item>
<Item Name="ArrDyn" Condition="ast->DynamicEntries == true">ast->ArrDyn</Item>
<Item Name="Index" Condition="ast->DynamicEntries == true">ast->ArrDyn.num()</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::Code"> <Type Name="CodeAttributes">
<DisplayString>{ast.Name} {ast.Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type> </Type>
<Type Name ="gen::Parser::Token"> <Type Name="gen::CodeComment">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Content">ast->Content</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand>
</Type>
<Type Name="gen::CodeClass">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="ParentType">ast->ParentType</Item>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="ParentAccess">ast->ParentAccess</Item>
</Expand>
</Type>
<Type Name="gen::CodeExec">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand>
</Type>
<Type Name="gen::CodeEnum">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="UnderlyingType">ast->UnderlyingType</Item>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeInclude">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Content">ast->Content</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand>
</Type>
<Type Name="gen::CodeFriend">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Declaration">ast->Declaration</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand>
</Type>
<Type Name="gen::CodeFn">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Item Name="ReturnType">ast->ReturnType</Item>
<Item Name="Params">ast->Params</Item>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeModule">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeNamespace">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeOperator">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Item Name="ReturnType">ast->ReturnType</Item>
<Item Name="Params">ast->Params</Item>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="Op">ast->Op</Item>
</Expand>
</Type>
<Type Name="gen::CodeOpCast">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="ValueType">ast->ValueType</Item>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeParam">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="ValueType">ast->ValueType</Item>
<Item Name="Value">ast->Value</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="NumEntries">ast->NumEntries</Item>
</Expand>
</Type>
<Type Name="gen::CodeSpecifiers">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<ArrayItems Name="ArrSpecs" Condition="ast != nullptr" Size="ast->NumEntries">
<ValuePointer>ast->ArrSpecs</ValuePointer>
</ArrayItems>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="NumEntries">ast->NumEntries</Item>
</Expand>
</Type>
<Type Name="gen::CodeStruct">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="ParentType">ast->ParentType</Item>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="ParentAccess">ast->ParentAccess</Item>
</Expand>
</Type>
<Type Name="gen::CodeVar">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Item Name="ValueType">ast->ValueType</Item>
<Item Name="Value">ast->Value</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeTemplate">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="ReturnType">ast->ReturnType</Item>
<Item Name="Specs">ast->Specs</Item>
<Item Name="Params">ast->Params</Item>
<Item Name="Declaration">ast->Declaration</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeType">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Item Name="ArrExpr">ast->ArrExpr</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand>
</Type>
<Type Name="gen::CodeTypedef">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="UnderlyingType">ast->UnderlyingType</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeUnion">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::CodeUsing">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="UnderlyingType">ast->UnderlyingType</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="Operator">ast->Op</Item>
<Item Name="Access">ast->ParentAccess</Item>
<Item Name="Entries">ast->NumEntries</Item>
</Expand>
</Type>
<Type Name="gen::CodeUsingNamespace">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand>
</Type>
<Type Name="gen::CodeVar">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Item Name="ValueType">ast->ValueType</Item>
<Item Name="Value">ast->Value</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand>
</Type>
<Type Name="gen::Parser::Token">
<DisplayString>Length:{Length} Text:{Text, [Length]s} Type:{Type}</DisplayString> <DisplayString>Length:{Length} Text:{Text, [Length]s} Type:{Type}</DisplayString>
</Type> </Type>