add new function gettok_node_br which adds braces { } on its list

of ignored characters.
This commit is contained in:
Holger Vogt 2025-09-19 16:53:11 +02:00
parent 85a04c5693
commit e25c70b2bb
2 changed files with 52 additions and 0 deletions

View File

@ -236,6 +236,7 @@ extern FILE *newfopen(const char *fn, const char* md);
void findtok_noparen(char **p_str, char **p_token, char **p_token_end);
extern char *gettok_noparens(char **s);
extern char *gettok_node(char **s);
extern char *gettok_node_br(char **s);
extern char *gettok_iv(char **s);
extern char *nexttok(const char *s);
extern char *nexttok_noparens(const char *s);

View File

@ -861,6 +861,57 @@ gettok_node(char **s)
return copy_substring(token, token_e);
}
/*-------------------------------------------------------------------------*
* gettok_node_br acts like gettok_node, including braces { }.
*-------------------------------------------------------------------------*/
char*
gettok_node_br(char** s)
{
char c;
const char* token, * token_e;
if (*s == NULL)
return NULL;
while (isspace_c(**s) ||
(**s == '(') ||
(**s == ')') ||
(**s == '{') ||
(**s == '}') ||
(**s == ',')
)
(*s)++; /* iterate over whitespace and ( , ) */
if (!**s)
return NULL; /* return NULL if we come to end of line */
token = *s;
while ((c = **s) != '\0' &&
!isspace_c(c) &&
(**s != '(') &&
(**s != ')') &&
(**s != '{') &&
(**s != '}') &&
(**s != ',')
) /* collect chars until whitespace or ( , ) */
(*s)++;
token_e = *s;
/* Now iterate up to next non-whitespace char */
while (isspace_c(**s) ||
(**s == '(') ||
(**s == ')') ||
(**s == '{') ||
(**s == '}') ||
(**s == ',')
)
(*s)++; /* iterate over whitespace and ( , ) */
return copy_substring(token, token_e);
}
/*-------------------------------------------------------------------------*
* get_l_paren iterates the pointer forward in a string until it hits