Added echo to output data wthout a newline. (0.36.2)
This commit is contained in:
parent
9dc8afc387
commit
b1e1160bff
6 changed files with 35 additions and 2 deletions
30
src/parser.c
30
src/parser.c
|
|
@ -2806,6 +2806,21 @@ static void parse_simple_statement(Bytecode *bc, const char *src, size_t len, si
|
|||
return;
|
||||
}
|
||||
|
||||
if (strcmp(name, "echo") == 0) {
|
||||
free(name);
|
||||
skip_spaces(src, len, &local_pos);
|
||||
(void)consume_char(src, len, &local_pos, '(');
|
||||
if (emit_expression(bc, src, len, &local_pos)) {
|
||||
(void)consume_char(src, len, &local_pos, ')');
|
||||
bytecode_add_instruction(bc, OP_ECHO, 0);
|
||||
} else {
|
||||
(void)consume_char(src, len, &local_pos, ')');
|
||||
}
|
||||
*pos = local_pos;
|
||||
skip_to_eol(src, len, pos);
|
||||
return;
|
||||
}
|
||||
|
||||
/* assignment or simple call */
|
||||
int lidx = local_find(name);
|
||||
int gi = (lidx < 0) ? sym_index(name) : -1;
|
||||
|
|
@ -3120,6 +3135,21 @@ static void parse_simple_statement(Bytecode *bc, const char *src, size_t len, si
|
|||
return;
|
||||
}
|
||||
|
||||
/* echo(expr): like print but does not add a newline (immediate output) */
|
||||
if (starts_with(src, len, *pos, "echo")) {
|
||||
*pos += 4;
|
||||
skip_spaces(src, len, pos);
|
||||
(void)consume_char(src, len, pos, '(');
|
||||
if (emit_expression(bc, src, len, pos)) {
|
||||
(void)consume_char(src, len, pos, ')');
|
||||
bytecode_add_instruction(bc, OP_ECHO, 0);
|
||||
} else {
|
||||
(void)consume_char(src, len, pos, ')');
|
||||
}
|
||||
skip_to_eol(src, len, pos);
|
||||
return;
|
||||
}
|
||||
|
||||
/* unknown token: report error */
|
||||
parser_fail(*pos, "Unknown token at start of statement");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue