Skip to content

Commit 427ff1b

Browse files
committed
if-else statement - refactor
1 parent d285a22 commit 427ff1b

1 file changed

Lines changed: 14 additions & 10 deletions

File tree

interpret.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,19 @@ varDefinition = (defObj, state) => {
3838

3939
varValue = (varKey, state) => { return state[varKey] }
4040

41+
let ifStatement = (stmt, key, state) => {
42+
let condition = stmt[key]
43+
if (exec(condition, state)) {
44+
let thenStatements = stmt['then']
45+
return interpret(thenStatements, state)
46+
} else {
47+
let elseStatements = stmt['else'];
48+
if (typeof elseStatements !== 'undefined') {
49+
return interpret(elseStatements, state)
50+
}
51+
}
52+
}
53+
4154
exec = (stmt, state) => {
4255

4356
if (typeof stmt === 'number' || typeof stmt === 'string') {
@@ -58,16 +71,7 @@ exec = (stmt, state) => {
5871
let firstArgument = stmt[key]
5972
return varValue(firstArgument, state)
6073
} else if (key === 'if') {
61-
let condition = stmt[key]
62-
if (exec(condition, state)) {
63-
let thenStatements = stmt['then']
64-
return interpret(thenStatements, state)
65-
} else {
66-
let elseStatements = stmt['else'];
67-
if (typeof elseStatements !== 'undefined') {
68-
return interpret(elseStatements, state)
69-
}
70-
}
74+
return ifStatement(stmt, key, state)
7175
} else {
7276
console.error('unknown instruction: ' + key)
7377
}

0 commit comments

Comments
 (0)