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) {
|
void tz_tokenize(Tokenizer *tz) {
|
||||||
size_t len = string_len(tz->str);
|
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] == '\'') {
|
if (tz->str[i] == '\'') {
|
||||||
char *str = umalloc(TZ_MAX_TK);
|
char *str = umalloc(TZ_MAX_TK);
|
||||||
string_memset(str, 0, 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();
|
rt_init();
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
|
|
||||||
char *line = string_tokenizealloc(string, "\n");
|
char *line = string_tokenizealloc_linecontinue(string, "\n");
|
||||||
while (line != NULL) {
|
while (line != NULL) {
|
||||||
if (logcmds) {
|
if (logcmds) {
|
||||||
uprintf("+%s\n", line);
|
uprintf("+%s\n", line);
|
||||||
@ -176,7 +182,8 @@ bool interp_runstring(char *string, InterpResult **res, bool logcmds, bool inter
|
|||||||
bool skip;
|
bool skip;
|
||||||
STRING_CHECK_ALL(line, string_chr_isspace, skip);
|
STRING_CHECK_ALL(line, string_chr_isspace, skip);
|
||||||
if (skip) {
|
if (skip) {
|
||||||
line = string_tokenizealloc(NULL, "\n");
|
ufree(line);
|
||||||
|
line = string_tokenizealloc_linecontinue(NULL, "\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,7 +257,7 @@ bool interp_runstring(char *string, InterpResult **res, bool logcmds, bool inter
|
|||||||
next:
|
next:
|
||||||
tz_free(&tz);
|
tz_free(&tz);
|
||||||
ufree(line);
|
ufree(line);
|
||||||
line = string_tokenizealloc(NULL, "\n");
|
line = string_tokenizealloc_linecontinue(NULL, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
|
|||||||
Reference in New Issue
Block a user