add identifier to parser

This commit is contained in:
2025-06-01 02:28:27 +01:00
parent b7e9493171
commit d2518afb8e
20 changed files with 733 additions and 251 deletions

View File

@@ -6,69 +6,57 @@
const char *WHITE_SPACE = " \t\n\r\f\v";
char *cloneString(char *str)
{
if (str == NULL)
{
return NULL;
}
char *cloneString(char *str) {
if (str == NULL) {
return NULL;
}
size_t len = strlen(str);
char *clone = malloc((len + 1) * sizeof(char));
size_t len = strlen(str);
char *clone = malloc((len + 1) * sizeof(char));
if (clone == NULL)
{
return NULL;
}
if (clone == NULL) {
return NULL;
}
strcpy(clone, str);
return clone;
strcpy(clone, str);
return clone;
}
void stripString(char *str, const char *chars)
{
if (str == NULL || chars == NULL)
{
return;
}
size_t len = strlen(str);
size_t charsLen = strlen(chars);
if (len == 0 || charsLen == 0)
{
return;
}
size_t i = 0;
while (i < len)
{
if (strchr(chars, str[i]) == NULL)
{
break;
}
i++;
}
if (i > 0)
{
memmove(str, str + i, len - i + 1);
}
size_t j = len-i - 1;
while (j > 0)
{
if (strchr(chars, str[j]) == NULL)
{
break;
}
j--;
}
if (j < len)
{
str[j + 1] = '\0';
}
str = realloc(str, (j + 1) * sizeof(char));
void stripString(char *str, const char *chars) {
if (str == NULL || chars == NULL) {
return;
}
size_t len = strlen(str);
size_t charsLen = strlen(chars);
if (len == 0 || charsLen == 0) {
return;
}
size_t i = 0;
while (i < len) {
if (strchr(chars, str[i]) == NULL) {
break;
}
i++;
}
if (i > 0) {
memmove(str, str + i, len - i + 1);
}
size_t j = len - i - 1;
while (j > 0) {
if (strchr(chars, str[j]) == NULL) {
break;
}
j--;
}
if (j < len) {
str[j + 1] = '\0';
}
str = realloc(str, (j + 1) * sizeof(char));
return;
}

View File

@@ -1,11 +1,10 @@
#ifndef CLONESTRING_H
#define CLONESTRING_H
extern const char * WHITE_SPACE;
extern const char *WHITE_SPACE;
char* cloneString(char* str);
void stripString(char* str, const char* chars);
char *cloneString(char *str);
void stripString(char *str, const char *chars);
#endif // CLONESTRING_H