tb Handle line continuation and left trim lines before tokenizing
This commit is contained in:
@ -28,7 +28,13 @@ void tz_free(Tokenizer *tz) {
|
||||
|
||||
void tz_tokenize(Tokenizer *tz) {
|
||||
size_t len = string_len(tz->str);
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
size_t i = 0;
|
||||
|
||||
while (i < len && string_chr_isspace(tz->str[i])) {
|
||||
i++;
|
||||
}
|
||||
|
||||
for (; i < len; i++) {
|
||||
if (tz->str[i] == '\'') {
|
||||
char *str = umalloc(TZ_MAX_TK);
|
||||
string_memset(str, 0, TZ_MAX_TK);
|
||||
@ -167,7 +173,7 @@ bool interp_runstring(char *string, InterpResult **res, bool logcmds, bool inter
|
||||
rt_init();
|
||||
bool ok = true;
|
||||
|
||||
char *line = string_tokenizealloc(string, "\n");
|
||||
char *line = string_tokenizealloc_linecontinue(string, "\n");
|
||||
while (line != NULL) {
|
||||
if (logcmds) {
|
||||
uprintf("+%s\n", line);
|
||||
@ -176,7 +182,8 @@ bool interp_runstring(char *string, InterpResult **res, bool logcmds, bool inter
|
||||
bool skip;
|
||||
STRING_CHECK_ALL(line, string_chr_isspace, skip);
|
||||
if (skip) {
|
||||
line = string_tokenizealloc(NULL, "\n");
|
||||
ufree(line);
|
||||
line = string_tokenizealloc_linecontinue(NULL, "\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -250,7 +257,7 @@ bool interp_runstring(char *string, InterpResult **res, bool logcmds, bool inter
|
||||
next:
|
||||
tz_free(&tz);
|
||||
ufree(line);
|
||||
line = string_tokenizealloc(NULL, "\n");
|
||||
line = string_tokenizealloc_linecontinue(NULL, "\n");
|
||||
}
|
||||
|
||||
return ok;
|
||||
|
||||
Reference in New Issue
Block a user