WIP: getting function parameter parse to work

Will continue prob next week or two
This commit is contained in:
Edward R. Gonzalez 2023-07-09 13:07:30 -04:00
parent 6da615e6da
commit 9df177edf4
2 changed files with 14 additions and 10 deletions

View File

@ -3140,7 +3140,7 @@ namespace gen
Entry( Type_Long, "long" ) \ Entry( Type_Long, "long" ) \
Entry( Type_char, "char" ) \ Entry( Type_char, "char" ) \
Entry( Type_int, "int" ) \ Entry( Type_int, "int" ) \
Entry( Type_double, "double" ) \ Entry( Type_double, "double" )
enum class TokType : u32 enum class TokType : u32
{ {
@ -3175,18 +3175,21 @@ namespace gen
TokType get_tok_type( char const* word, s32 length ) TokType get_tok_type( char const* word, s32 length )
{ {
local_persist local_persist
char const* lookup[(u32)TokType::Num] = StrC lookup[(u32)TokType::Num] =
{ {
# define Entry( Name_, Str_ ) Str_, # define Entry( Name_, Str_ ) { sizeof(Str_), Str_ },
Define_TokType Define_TokType
# undef Entry # undef Entry
Attribute::Keyword, { sizeof(Attribute::Keyword), Attribute::Keyword },
}; };
for ( u32 index = 0; index < (u32)TokType::Num; index++ ) for ( u32 index = 0; index < (u32)TokType::Num; index++ )
{ {
if ( str_compare( word, lookup[index], length ) == 0 ) s32 lookup_len = lookup[index].Len - 1;
char const* lookup_str = lookup[index].Ptr;
if ( str_compare( word, lookup_str, lookup_len ) == 0 )
return scast(TokType, index); return scast(TokType, index);
} }
@ -3940,7 +3943,9 @@ namespace gen
param->add_entry( value ); param->add_entry( value );
result->add_entry( param ); result->add_entry( param );
eat( TokType::Comma );
if ( check( TokType::Comma ) )
eat( TokType::Comma );
} }
eat( TokType::Capture_End ); eat( TokType::Capture_End );
@ -4735,7 +4740,7 @@ namespace gen
if ( toks.Arr == nullptr ) if ( toks.Arr == nullptr )
return Code::Invalid; return Code::Invalid;
return parse_extern_link( toks, txt(parse_export_body) ); return parse_export_body( toks, txt(parse_export_body) );
} }
internal internal

View File

@ -172,14 +172,13 @@ u32 gen_sanity()
gen_sanity_file.print_fmt("\n"); gen_sanity_file.print_fmt("\n");
// Parameters // Parameters
if (0)
{ {
Code fwd = parse_function( code( Code fwd = parse_function( code(
void test_function( int a ); void test_function_param( int a );
)); ));
Code def = parse_function( code( Code def = parse_function( code(
void test_function( int a, int b ) void test_function_param2( int a, int b )
{ {
} }
)); ));