marko/compiler/ast/BinaryExpression.js
Patrick Steele-Idem d621ef13df Various cleanup
2015-12-11 09:08:27 -07:00

52 lines
1.2 KiB
JavaScript

'use strict';
var Node = require('./Node');
class BinaryExpression extends Node {
constructor(def) {
super('BinaryExpression');
this.left = def.left;
this.operator = def.operator;
this.right = def.right;
this.parens = def.parens === true;
}
generateCode(generator) {
var left = this.left;
var right = this.right;
var parens = this.parens || this.data.isSubExpression;
if (left instanceof Node) {
left.data.isSubExpression = true;
}
if (right instanceof Node) {
right.data.isSubExpression = true;
}
if (parens) {
generator.write('(');
}
generator.generateCode(this.left);
generator.write(' ');
generator.generateCode(this.operator);
generator.write(' ');
generator.generateCode(this.right);
if (parens) {
generator.write(')');
}
}
toJSON() {
return {
type: 'BinaryExpression',
left: this.left,
operator: this.operator,
right: this.right
};
}
}
module.exports = BinaryExpression;