Fix for wrong tokens for GNU/MSVC attribute captures (parse_attributes)

Also a fix for a typo in the readme...
This commit is contained in:
Edward R. Gonzalez 2023-08-08 15:35:06 -04:00
parent c7647ab00f
commit 67d02c1f62
4 changed files with 13 additions and 11 deletions

View File

@ -6,7 +6,7 @@ The library API is a composition of code element constructors.
These build up a code AST to then serialize with a file builder. These build up a code AST to then serialize with a file builder.
This code base attempts follow the [handmade philosophy](https://handmade.network/manifesto), This code base attempts follow the [handmade philosophy](https://handmade.network/manifesto),
its not meant to be a black box metaprogramming utility, it should be easy to intergrate into a user's their project domain. its not meant to be a black box metaprogramming utility, it should be easy to intergrate into a user's project domain.
## Notes ## Notes

View File

@ -1428,16 +1428,16 @@ CodeAttributes parse_attributes()
else if ( check(TokType::Decl_GNU_Attribute) ) else if ( check(TokType::Decl_GNU_Attribute) )
{ {
eat(TokType::BraceCurly_Open); eat(TokType::Capture_Start);
eat(TokType::BraceCurly_Open); eat(TokType::Capture_Start);
while ( left && currtok.Type != TokType::BraceCurly_Close ) while ( left && currtok.Type != TokType::Capture_End )
{ {
eat(currtok.Type); eat(currtok.Type);
} }
eat(TokType::BraceCurly_Close); eat(TokType::Capture_End);
eat(TokType::BraceCurly_Close); eat(TokType::Capture_End);
s32 len = ( (sptr)prevtok.Text + prevtok.Length ) - (sptr)start.Text; s32 len = ( (sptr)prevtok.Text + prevtok.Length ) - (sptr)start.Text;
} }
@ -1445,14 +1445,14 @@ CodeAttributes parse_attributes()
else if ( check(TokType::Decl_MSVC_Attribute) ) else if ( check(TokType::Decl_MSVC_Attribute) )
{ {
eat( TokType::Decl_MSVC_Attribute ); eat( TokType::Decl_MSVC_Attribute );
eat( TokType::BraceCurly_Open); eat( TokType::Capture_Start);
while ( left && currtok.Type != TokType::BraceCurly_Close ) while ( left && currtok.Type != TokType::Capture_End )
{ {
eat(currtok.Type); eat(currtok.Type);
} }
eat(TokType::BraceCurly_Close); eat(TokType::Capture_End);
s32 len = ( (sptr)prevtok.Text + prevtok.Length ) - (sptr)start.Text; s32 len = ( (sptr)prevtok.Text + prevtok.Length ) - (sptr)start.Text;
} }

View File

@ -118,8 +118,9 @@ void check_SOA()
{ {
log_fmt("\ncheck_SOA:"); log_fmt("\ncheck_SOA:");
gen::init(); gen::init();
Builder soa_test = Builder::open( "SOA.gen.hpp" ); Builder soa_test = Builder::open( "SOA.gen.hpp" );
soa_test.print( parse_using( code( soa_test.print( parse_using( code(
using u16 = unsigned short; using u16 = unsigned short;
))); )));
@ -136,6 +137,7 @@ void check_SOA()
u64 D; u64 D;
}; };
)) ))
, 100
)); ));
soa_test.write(); soa_test.write();

View File

@ -18,7 +18,7 @@ int gen_main()
check_SOA(); check_SOA();
check_singleheader_ast(); // check_singleheader_ast();
return 0; return 0;
} }