Dec 2, 2023
String parsing is working now! Still missing the first character tho, which is wierd. I'm going to debug some more.
Enjoy some {C} (the current repl evironment):
/* clang-format off */
int slen(char *s) { int i = 0; while (s[i] && s[++i]) { i = i; } return i; } /* string length */
char *ccat(char *dst, char c) { int len = slen(dst); dst[len] = c; dst[len + 1] = 0; return dst; } /* char concatenate */
int scmp(char *a, char *b) { int i = 0; while(a[i] == b[i]) if(!a[i++]) return 1; return 0; } /* string compare */
int ssin(char *s, char *ss) { int a = 0; int b = 0; while(s[a]) { if(s[a] == ss[b]) { if(!ss[b + 1]) return a - b; b++; } else b = 0; a++; } return -1; } /* string substring index */
/* clang-format on */
#define BUFLEN 100
char getc()
{
return fgetc(Console());
}
void print_str(char *s)
{
int i = 0;
char c = s[0];
while (c != 0)
{
fputc(s[i], Console());
c = s[++i];
}
}
char strbuf[BUFLEN];
char *readl()
{
char c;
int len = 0;
char *str = strbuf;
while (len < BUFLEN)
{
c = getc();
ccat(str, c);
len++;
if (len >= 99)
{
return str;
}
if (c == 10)
{
return str;
}
}
}
char *eval(char *input)
{
return input;
}
char *print(char *input)
{
// puts(") ");
print_str(input);
return input;
}
void repl()
{
int i;
char *str = strbuf;
while (ssin(str, ",q") >= 0)
{
memset((int *)strbuf, 0, BUFLEN);
print(eval(readl()));
}
}