-
Notifications
You must be signed in to change notification settings - Fork 70
/
Copy pathkwnodese.js
40 lines (31 loc) · 1.24 KB
/
kwnodese.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const constants = require("../../constants.js");
const BaseNode = require("../basenode.js");
const bracketExpressionNl = require("../nodeLiterals/bracketexpressionnl.js");
const feedbackMessages = require("../../feedbackMessages.js");
class KwNodeSe extends BaseNode {
constructor () {
super();
if (!(bracketExpressionNl instanceof BaseNode)) {
throw new Error(feedbackMessages.baseNodeType("Dependency brackExpressionNl"));
}
}
getNode () {
this.skipKeyword(constants.KW.SE);
const node = {};
node.operation = constants.KW.SE;
node.condition = bracketExpressionNl.getNode.call(this, { isArithmeticExpression: false, isBracketExpected: true, });
node.then = this.parseBlock(constants.KW.SE);
if (this.isNextTokenKeyword(constants.KW.TABI)) {
node.else = KwNodeSe.getTabiNode(this);
}
return node;
}
static getTabiNode (context) {
context.skipKeyword(constants.KW.TABI);
if (context.isNextTokenKeyword(constants.KW.SE)) { // cater for 'tabi se' block
return new KwNodeSe().getNode.call(context);
}
return context.parseBlock(constants.KW.TABI);
}
}
module.exports = new KwNodeSe();