Chapter 24.6
This commit is contained in:
parent
410f30ef93
commit
baedf99f63
1 changed files with 16 additions and 0 deletions
|
@ -444,6 +444,20 @@ static void printStatement() {
|
|||
emitByte(OP_PRINT);
|
||||
}
|
||||
|
||||
static void returnStatement() {
|
||||
if (current->type == TYPE_SCRIPT) {
|
||||
error("Can't return from top-level code.");
|
||||
}
|
||||
|
||||
if (match(TOKEN_SEMICOLON)) {
|
||||
emitReturn();
|
||||
} else {
|
||||
expression();
|
||||
consume(TOKEN_SEMICOLON, "Expect ';' after return value.");
|
||||
emitByte(OP_RETURN);
|
||||
}
|
||||
}
|
||||
|
||||
static void whileStatement() {
|
||||
int loopStart = currentChunk()->count;
|
||||
consume(TOKEN_LEFT_PAREN, "Expect '(' after 'while'.");
|
||||
|
@ -503,6 +517,8 @@ static void statement() {
|
|||
forStatement();
|
||||
} else if (match(TOKEN_IF)) {
|
||||
ifStatement();
|
||||
} else if (match(TOKEN_RETURN)) {
|
||||
returnStatement();
|
||||
} else if (match(TOKEN_WHILE)) {
|
||||
whileStatement();
|
||||
} else if (match(TOKEN_LEFT_BRACE)) {
|
||||
|
|
Loading…
Reference in a new issue